diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e9bf4b538..deb4e63935 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,7 @@ if(CURA_DEBUGMODE) set(_cura_debugmode "ON") endif() +set(CURA_APP_DISPLAY_NAME "Ultimaker Cura" CACHE STRING "Display name of Cura") set(CURA_VERSION "master" CACHE STRING "Version name of Cura") set(CURA_BUILDTYPE "" CACHE STRING "Build type of Cura, eg. 'PPA'") set(CURA_SDK_VERSION "" CACHE STRING "SDK version of Cura") diff --git a/Jenkinsfile b/Jenkinsfile index f9a3a9864a..a345ebbd05 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -38,20 +38,9 @@ parallel_nodes(['linux && cura', 'windows && cura']) { if (isUnix()) { - // For Linux to show everything - def branch = env.BRANCH_NAME - if(!fileExists("${env.CURA_ENVIRONMENT_PATH}/${branch}")) - { - branch = "master" - } - def uranium_dir = get_workspace_dir("Ultimaker/Uranium/${branch}") - + // For Linux try { - sh """ - cd .. - export PYTHONPATH=.:"${uranium_dir}" - ${env.CURA_ENVIRONMENT_PATH}/${branch}/bin/pytest -x --verbose --full-trace --capture=no ./tests - """ + sh 'make CTEST_OUTPUT_ON_FAILURE=TRUE test' } catch(e) { currentBuild.result = "UNSTABLE" @@ -70,34 +59,6 @@ parallel_nodes(['linux && cura', 'windows && cura']) } } } - - stage('Code Style') - { - if (isUnix()) - { - // For Linux to show everything. - // CMake also runs this test, but if it fails then the test just shows "failed" without details of what exactly failed. - def branch = env.BRANCH_NAME - if(!fileExists("${env.CURA_ENVIRONMENT_PATH}/${branch}")) - { - branch = "master" - } - def uranium_dir = get_workspace_dir("Ultimaker/Uranium/${branch}") - - try - { - sh """ - cd .. - export PYTHONPATH=.:"${uranium_dir}" - ${env.CURA_ENVIRONMENT_PATH}/${branch}/bin/python3 run_mypy.py - """ - } - catch(e) - { - currentBuild.result = "UNSTABLE" - } - } - } } } diff --git a/README.md b/README.md index 70466e9c22..93abcc0c61 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,9 @@ Dependencies ------------ * [Uranium](https://github.com/Ultimaker/Uranium) Cura is built on top of the Uranium framework. * [CuraEngine](https://github.com/Ultimaker/CuraEngine) This will be needed at runtime to perform the actual slicing. +* [fdm_materials](https://github.com/Ultimaker/fdm_materials) Required to load a printer that has swappable material profiles. * [PySerial](https://github.com/pyserial/pyserial) Only required for USB printing support. -* [python-zeroconf](https://github.com/jstasiak/python-zeroconf) Only required to detect mDNS-enabled printers +* [python-zeroconf](https://github.com/jstasiak/python-zeroconf) Only required to detect mDNS-enabled printers. Build scripts ------------- diff --git a/cmake/CuraTests.cmake b/cmake/CuraTests.cmake index f2ee92d65b..b6d04de036 100644 --- a/cmake/CuraTests.cmake +++ b/cmake/CuraTests.cmake @@ -6,6 +6,8 @@ include(CMakeParseArguments) find_package(PythonInterp 3.5.0 REQUIRED) +add_custom_target(test-verbose COMMAND ${CMAKE_CTEST_COMMAND} --verbose) + function(cura_add_test) set(_single_args NAME DIRECTORY PYTHONPATH) cmake_parse_arguments("" "" "${_single_args}" "" ${ARGN}) diff --git a/cura.desktop.in b/cura.desktop.in index fbe8b30fed..b0195015a5 100644 --- a/cura.desktop.in +++ b/cura.desktop.in @@ -13,6 +13,6 @@ TryExec=@CMAKE_INSTALL_FULL_BINDIR@/cura Icon=cura-icon Terminal=false Type=Application -MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png;model/x3d+xml; +MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png;model/x3d+xml;text/x-gcode; Categories=Graphics; Keywords=3D;Printing;Slicer; diff --git a/cura.sharedmimeinfo b/cura.sharedmimeinfo index 23d38795eb..ed9099d425 100644 --- a/cura.sharedmimeinfo +++ b/cura.sharedmimeinfo @@ -19,4 +19,12 @@ + + + Gcode file + + + + + \ No newline at end of file diff --git a/cura/API/Account.py b/cura/API/Account.py index 397e220478..be77a6307b 100644 --- a/cura/API/Account.py +++ b/cura/API/Account.py @@ -44,7 +44,7 @@ class Account(QObject): OAUTH_SERVER_URL= self._oauth_root, CALLBACK_PORT=self._callback_port, CALLBACK_URL="http://localhost:{}/callback".format(self._callback_port), - CLIENT_ID="um---------------ultimaker_cura_drive_plugin", + CLIENT_ID="um----------------------------ultimaker_cura", CLIENT_SCOPES="account.user.read drive.backup.read drive.backup.write packages.download packages.rating.read packages.rating.write", AUTH_DATA_PREFERENCE_KEY="general/ultimaker_auth_data", AUTH_SUCCESS_REDIRECT="{}/app/auth-success".format(self._oauth_root), diff --git a/cura/API/Interface/__init__.py b/cura/API/Interface/__init__.py index 742254a1a4..cec174bf0a 100644 --- a/cura/API/Interface/__init__.py +++ b/cura/API/Interface/__init__.py @@ -3,7 +3,6 @@ from typing import TYPE_CHECKING -from UM.PluginRegistry import PluginRegistry from cura.API.Interface.Settings import Settings if TYPE_CHECKING: @@ -23,9 +22,6 @@ if TYPE_CHECKING: class Interface: - # For now we use the same API version to be consistent. - VERSION = PluginRegistry.APIVersion - def __init__(self, application: "CuraApplication") -> None: # API methods specific to the settings portion of the UI self.settings = Settings(application) diff --git a/cura/API/__init__.py b/cura/API/__init__.py index ad07452c1a..b3e702263a 100644 --- a/cura/API/__init__.py +++ b/cura/API/__init__.py @@ -4,7 +4,6 @@ from typing import Optional, TYPE_CHECKING from PyQt5.QtCore import QObject, pyqtProperty -from UM.PluginRegistry import PluginRegistry from cura.API.Backups import Backups from cura.API.Interface import Interface from cura.API.Account import Account @@ -22,7 +21,6 @@ if TYPE_CHECKING: class CuraAPI(QObject): # For now we use the same API version to be consistent. - VERSION = PluginRegistry.APIVersion __instance = None # type: "CuraAPI" _application = None # type: CuraApplication @@ -62,4 +60,4 @@ class CuraAPI(QObject): @property def interface(self) -> "Interface": - return self._interface \ No newline at end of file + return self._interface diff --git a/cura/Arranging/Arrange.py b/cura/Arranging/Arrange.py index 5657ee991a..32796005c8 100644 --- a/cura/Arranging/Arrange.py +++ b/cura/Arranging/Arrange.py @@ -66,6 +66,11 @@ class Arrange: continue vertices = vertices.getMinkowskiHull(Polygon.approximatedCircle(min_offset)) points = copy.deepcopy(vertices._points) + + # After scaling (like up to 0.1 mm) the node might not have points + if len(points) == 0: + continue + shape_arr = ShapeArray.fromPolygon(points, scale = scale) arranger.place(0, 0, shape_arr) diff --git a/cura/Backups/Backup.py b/cura/Backups/Backup.py index 897d5fa979..714d6527fe 100644 --- a/cura/Backups/Backup.py +++ b/cura/Backups/Backup.py @@ -46,12 +46,13 @@ class Backup: # We copy the preferences file to the user data directory in Linux as it's in a different location there. # When restoring a backup on Linux, we move it back. - if Platform.isLinux(): + if Platform.isLinux(): #TODO: This should check for the config directory not being the same as the data directory, rather than hard-coding that to Linux systems. preferences_file_name = self._application.getApplicationName() preferences_file = Resources.getPath(Resources.Preferences, "{}.cfg".format(preferences_file_name)) backup_preferences_file = os.path.join(version_data_dir, "{}.cfg".format(preferences_file_name)) - Logger.log("d", "Copying preferences file from %s to %s", preferences_file, backup_preferences_file) - shutil.copyfile(preferences_file, backup_preferences_file) + if os.path.exists(preferences_file) and (not os.path.exists(backup_preferences_file) or not os.path.samefile(preferences_file, backup_preferences_file)): + Logger.log("d", "Copying preferences file from %s to %s", preferences_file, backup_preferences_file) + shutil.copyfile(preferences_file, backup_preferences_file) # Create an empty buffer and write the archive to it. buffer = io.BytesIO() diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 547c3dae71..aa1f170707 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -83,7 +83,14 @@ class BuildVolume(SceneNode): " with printed models."), title = catalog.i18nc("@info:title", "Build Volume")) self._global_container_stack = None + + self._stack_change_timer = QTimer() + self._stack_change_timer.setInterval(100) + self._stack_change_timer.setSingleShot(True) + self._stack_change_timer.timeout.connect(self._onStackChangeTimerFinished) + self._application.globalContainerStackChanged.connect(self._onStackChanged) + self._onStackChanged() self._engine_ready = False @@ -105,6 +112,8 @@ class BuildVolume(SceneNode): self._setting_change_timer.setSingleShot(True) self._setting_change_timer.timeout.connect(self._onSettingChangeTimerFinished) + + # Must be after setting _build_volume_message, apparently that is used in getMachineManager. # activeQualityChanged is always emitted after setActiveVariant, setActiveMaterial and setActiveQuality. # Therefore this works. @@ -479,6 +488,8 @@ class BuildVolume(SceneNode): maximum = Vector(max_w - bed_adhesion_size - 1, max_h - self._raft_thickness - self._extra_z_clearance, max_d - disallowed_area_size + bed_adhesion_size - 1) ) + self._application.getController().getScene()._maximum_bounds = scale_to_max_bounds + self.updateNodeBoundaryCheck() def getBoundingBox(self) -> AxisAlignedBox: @@ -489,7 +500,9 @@ class BuildVolume(SceneNode): def _updateRaftThickness(self): old_raft_thickness = self._raft_thickness - self._adhesion_type = self._global_container_stack.getProperty("adhesion_type", "value") + if self._global_container_stack.extruders: + # This might be called before the extruder stacks have initialised, in which case getting the adhesion_type fails + self._adhesion_type = self._global_container_stack.getProperty("adhesion_type", "value") self._raft_thickness = 0.0 if self._adhesion_type == "raft": self._raft_thickness = ( @@ -522,8 +535,11 @@ class BuildVolume(SceneNode): if extra_z != self._extra_z_clearance: self._extra_z_clearance = extra_z - ## Update the build volume visualization def _onStackChanged(self): + self._stack_change_timer.start() + + ## Update the build volume visualization + def _onStackChangeTimerFinished(self): if self._global_container_stack: self._global_container_stack.propertyChanged.disconnect(self._onSettingPropertyChanged) extruders = ExtruderManager.getInstance().getActiveExtruderStacks() diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py index 46544ca0ef..d43743bc37 100644 --- a/cura/CrashHandler.py +++ b/cura/CrashHandler.py @@ -36,18 +36,14 @@ else: except ImportError: CuraDebugMode = False # [CodeStyle: Reflecting imported value] -# List of exceptions that should be considered "fatal" and abort the program. -# These are primarily some exception types that we simply cannot really recover from -# (MemoryError and SystemError) and exceptions that indicate grave errors in the -# code that cause the Python interpreter to fail (SyntaxError, ImportError). -fatal_exception_types = [ - MemoryError, - SyntaxError, - ImportError, - SystemError, +# List of exceptions that should not be considered "fatal" and abort the program. +# These are primarily some exception types that we simply skip +skip_exception_types = [ + SystemExit, + KeyboardInterrupt, + GeneratorExit ] - class CrashHandler: crash_url = "https://stats.ultimaker.com/api/cura" @@ -70,7 +66,7 @@ class CrashHandler: # If Cura has fully started, we only show fatal errors. # If Cura has not fully started yet, we always show the early crash dialog. Otherwise, Cura will just crash # without any information. - if has_started and exception_type not in fatal_exception_types: + if has_started and exception_type in skip_exception_types: return if not has_started: @@ -387,7 +383,7 @@ class CrashHandler: Application.getInstance().callLater(self._show) def _show(self): - # When the exception is not in the fatal_exception_types list, the dialog is not created, so we don't need to show it + # When the exception is in the skip_exception_types list, the dialog is not created, so we don't need to show it if self.dialog: self.dialog.exec_() os._exit(1) diff --git a/cura/CuraActions.py b/cura/CuraActions.py index 93a18318df..91e0966fed 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -3,7 +3,7 @@ from PyQt5.QtCore import QObject, QUrl from PyQt5.QtGui import QDesktopServices -from typing import List, TYPE_CHECKING +from typing import List, TYPE_CHECKING, cast from UM.Event import CallFunctionEvent from UM.FlameProfiler import pyqtSlot @@ -36,12 +36,12 @@ class CuraActions(QObject): # Starting a web browser from a signal handler connected to a menu will crash on windows. # So instead, defer the call to the next run of the event loop, since that does work. # Note that weirdly enough, only signal handlers that open a web browser fail like that. - event = CallFunctionEvent(self._openUrl, [QUrl("http://ultimaker.com/en/support/software")], {}) + event = CallFunctionEvent(self._openUrl, [QUrl("https://ultimaker.com/en/resources/manuals/software")], {}) cura.CuraApplication.CuraApplication.getInstance().functionEvent(event) @pyqtSlot() def openBugReportPage(self) -> None: - event = CallFunctionEvent(self._openUrl, [QUrl("http://github.com/Ultimaker/Cura/issues")], {}) + event = CallFunctionEvent(self._openUrl, [QUrl("https://github.com/Ultimaker/Cura/issues")], {}) cura.CuraApplication.CuraApplication.getInstance().functionEvent(event) ## Reset camera position and direction to default @@ -61,8 +61,10 @@ class CuraActions(QObject): operation = GroupedOperation() for node in Selection.getAllSelectedObjects(): current_node = node - while current_node.getParent() and current_node.getParent().callDecoration("isGroup"): - current_node = current_node.getParent() + parent_node = current_node.getParent() + while parent_node and parent_node.callDecoration("isGroup"): + current_node = parent_node + parent_node = current_node.getParent() # This was formerly done with SetTransformOperation but because of # unpredictable matrix deconstruction it was possible that mirrors @@ -150,13 +152,13 @@ class CuraActions(QObject): root = cura.CuraApplication.CuraApplication.getInstance().getController().getScene().getRoot() - nodes_to_change = [] + nodes_to_change = [] # type: List[SceneNode] for node in Selection.getAllSelectedObjects(): parent_node = node # Find the parent node to change instead while parent_node.getParent() != root: - parent_node = parent_node.getParent() + parent_node = cast(SceneNode, parent_node.getParent()) - for single_node in BreadthFirstIterator(parent_node): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for single_node in BreadthFirstIterator(parent_node): # type: ignore #Ignore type error because iter() should get called automatically by Python syntax. nodes_to_change.append(single_node) if not nodes_to_change: diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index fc9ba1ebf4..9855bbe7de 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -4,7 +4,7 @@ import os import sys import time -from typing import cast, TYPE_CHECKING, Optional, Callable +from typing import cast, TYPE_CHECKING, Optional, Callable, List import numpy @@ -51,6 +51,7 @@ from cura.Arranging.ArrangeObjectsJob import ArrangeObjectsJob from cura.Arranging.ArrangeObjectsAllBuildPlatesJob import ArrangeObjectsAllBuildPlatesJob from cura.Arranging.ShapeArray import ShapeArray from cura.MultiplyObjectsJob import MultiplyObjectsJob +from cura.GlobalStacksModel import GlobalStacksModel from cura.Scene.ConvexHullDecorator import ConvexHullDecorator from cura.Operations.SetParentOperation import SetParentOperation from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator @@ -113,6 +114,7 @@ from cura.Settings.CuraFormulaFunctions import CuraFormulaFunctions from cura.ObjectsModel import ObjectsModel +from cura.PrinterOutputDevice import PrinterOutputDevice from cura.PrinterOutput.NetworkMJPGImage import NetworkMJPGImage from UM.FlameProfiler import pyqtSlot @@ -128,19 +130,20 @@ if TYPE_CHECKING: numpy.seterr(all = "ignore") try: - from cura.CuraVersion import CuraVersion, CuraBuildType, CuraDebugMode, CuraSDKVersion + from cura.CuraVersion import CuraAppDisplayName, CuraVersion, CuraBuildType, CuraDebugMode, CuraSDKVersion # type: ignore except ImportError: + CuraAppDisplayName = "Ultimaker Cura" CuraVersion = "master" # [CodeStyle: Reflecting imported value] CuraBuildType = "" CuraDebugMode = False - CuraSDKVersion = "" + CuraSDKVersion = "6.0.0" class CuraApplication(QtApplication): # SettingVersion represents the set of settings available in the machine/extruder definitions. # You need to make sure that this version number needs to be increased if there is any non-backwards-compatible # changes of the settings. - SettingVersion = 5 + SettingVersion = 6 Created = False @@ -161,7 +164,9 @@ class CuraApplication(QtApplication): def __init__(self, *args, **kwargs): super().__init__(name = "cura", + app_display_name = CuraAppDisplayName, version = CuraVersion, + api_version = CuraSDKVersion, buildtype = CuraBuildType, is_debug_mode = CuraDebugMode, tray_icon_name = "cura-icon-32.png", @@ -178,7 +183,6 @@ class CuraApplication(QtApplication): # Variables set from CLI self._files_to_open = [] self._use_single_instance = False - self._trigger_early_crash = False # For debug only self._single_instance = None @@ -203,6 +207,8 @@ class CuraApplication(QtApplication): self._container_manager = None self._object_manager = None + self._extruders_model = None + self._extruders_model_with_optional = None self._build_plate_model = None self._multi_build_plate_model = None self._setting_visibility_presets_model = None @@ -289,7 +295,10 @@ class CuraApplication(QtApplication): sys.exit(0) self._use_single_instance = self._cli_args.single_instance - self._trigger_early_crash = self._cli_args.trigger_early_crash + # FOR TESTING ONLY + if self._cli_args.trigger_early_crash: + assert not "This crash is triggered by the trigger_early_crash command line argument." + for filename in self._cli_args.file: self._files_to_open.append(os.path.abspath(filename)) @@ -425,7 +434,8 @@ class CuraApplication(QtApplication): def startSplashWindowPhase(self) -> None: super().startSplashWindowPhase() - self.setWindowIcon(QIcon(Resources.getPath(Resources.Images, "cura-icon.png"))) + if not self.getIsHeadLess(): + self.setWindowIcon(QIcon(Resources.getPath(Resources.Images, "cura-icon.png"))) self.setRequiredPlugins([ # Misc.: @@ -436,6 +446,7 @@ class CuraApplication(QtApplication): "XmlMaterialProfile", #Cura crashes without this one. "Toolbox", #This contains the interface to enable/disable plug-ins, so if you disable it you can't enable it back. "PrepareStage", #Cura is useless without this one since you can't load models. + "PreviewStage", #This shows the list of the plugin views that are installed in Cura. "MonitorStage", #Major part of Cura's functionality. "LocalFileOutputDevice", #Major part of Cura's functionality. "LocalContainerProvider", #Cura is useless without any profiles or setting definitions. @@ -489,7 +500,8 @@ class CuraApplication(QtApplication): preferences.addPreference("cura/choice_on_profile_override", "always_ask") preferences.addPreference("cura/choice_on_open_project", "always_ask") preferences.addPreference("cura/use_multi_build_plate", False) - + preferences.addPreference("view/settings_list_height", 600) + preferences.addPreference("view/settings_visible", False) preferences.addPreference("cura/currency", "€") preferences.addPreference("cura/material_settings", "{}") @@ -628,9 +640,7 @@ class CuraApplication(QtApplication): self._message_box_callback(button, *self._message_box_callback_arguments) self._message_box_callback = None self._message_box_callback_arguments = [] - - showPrintMonitor = pyqtSignal(bool, arguments = ["show"]) - + def setSaveDataEnabled(self, enabled: bool) -> None: self._save_data_enabled = enabled @@ -656,12 +666,12 @@ class CuraApplication(QtApplication): ## Handle loading of all plugin types (and the backend explicitly) # \sa PluginRegistry - def _loadPlugins(self): + def _loadPlugins(self) -> None: self._plugin_registry.addType("profile_reader", self._addProfileReader) self._plugin_registry.addType("profile_writer", self._addProfileWriter) if Platform.isLinux(): - lib_suffixes = {"", "64", "32", "x32"} #A few common ones on different distributions. + lib_suffixes = {"", "64", "32", "x32"} # A few common ones on different distributions. else: lib_suffixes = {""} for suffix in lib_suffixes: @@ -858,6 +868,19 @@ class CuraApplication(QtApplication): self._object_manager = ObjectsModel.createObjectsModel() return self._object_manager + @pyqtSlot(result = QObject) + def getExtrudersModel(self, *args) -> "ExtrudersModel": + if self._extruders_model is None: + self._extruders_model = ExtrudersModel(self) + return self._extruders_model + + @pyqtSlot(result = QObject) + def getExtrudersModelWithOptional(self, *args) -> "ExtrudersModel": + if self._extruders_model_with_optional is None: + self._extruders_model_with_optional = ExtrudersModel(self) + self._extruders_model_with_optional.setAddOptionalExtruder(True) + return self._extruders_model_with_optional + @pyqtSlot(result = QObject) def getMultiBuildPlateModel(self, *args) -> MultiBuildPlateModel: if self._multi_build_plate_model is None: @@ -950,6 +973,7 @@ class CuraApplication(QtApplication): qmlRegisterType(MultiBuildPlateModel, "Cura", 1, 0, "MultiBuildPlateModel") qmlRegisterType(InstanceContainer, "Cura", 1, 0, "InstanceContainer") qmlRegisterType(ExtrudersModel, "Cura", 1, 0, "ExtrudersModel") + qmlRegisterType(GlobalStacksModel, "Cura", 1, 0, "GlobalStacksModel") qmlRegisterType(FavoriteMaterialsModel, "Cura", 1, 0, "FavoriteMaterialsModel") qmlRegisterType(GenericMaterialsModel, "Cura", 1, 0, "GenericMaterialsModel") @@ -971,6 +995,8 @@ class CuraApplication(QtApplication): qmlRegisterSingletonType(ContainerManager, "Cura", 1, 0, "ContainerManager", ContainerManager.getInstance) qmlRegisterType(SidebarCustomMenuItemsModel, "Cura", 1, 0, "SidebarCustomMenuItemsModel") + qmlRegisterType(PrinterOutputDevice, "Cura", 1, 0, "PrinterOutputDevice") + from cura.API import CuraAPI qmlRegisterSingletonType(CuraAPI, "Cura", 1, 1, "API", self.getCuraAPI) @@ -1081,88 +1107,6 @@ class CuraApplication(QtApplication): self._platform_activity = True if count > 0 else False self.activityChanged.emit() - # Remove all selected objects from the scene. - @pyqtSlot() - @deprecated("Moved to CuraActions", "2.6") - def deleteSelection(self): - if not self.getController().getToolsEnabled(): - return - removed_group_nodes = [] - op = GroupedOperation() - nodes = Selection.getAllSelectedObjects() - for node in nodes: - op.addOperation(RemoveSceneNodeOperation(node)) - group_node = node.getParent() - if group_node and group_node.callDecoration("isGroup") and group_node not in removed_group_nodes: - remaining_nodes_in_group = list(set(group_node.getChildren()) - set(nodes)) - if len(remaining_nodes_in_group) == 1: - removed_group_nodes.append(group_node) - op.addOperation(SetParentOperation(remaining_nodes_in_group[0], group_node.getParent())) - op.addOperation(RemoveSceneNodeOperation(group_node)) - op.push() - - ## Remove an object from the scene. - # Note that this only removes an object if it is selected. - @pyqtSlot("quint64") - @deprecated("Use deleteSelection instead", "2.6") - def deleteObject(self, object_id): - if not self.getController().getToolsEnabled(): - return - - node = self.getController().getScene().findObject(object_id) - - if not node and object_id != 0: # Workaround for tool handles overlapping the selected object - node = Selection.getSelectedObject(0) - - if node: - op = GroupedOperation() - op.addOperation(RemoveSceneNodeOperation(node)) - - group_node = node.getParent() - if group_node: - # Note that at this point the node has not yet been deleted - if len(group_node.getChildren()) <= 2 and group_node.callDecoration("isGroup"): - op.addOperation(SetParentOperation(group_node.getChildren()[0], group_node.getParent())) - op.addOperation(RemoveSceneNodeOperation(group_node)) - - op.push() - - ## Create a number of copies of existing object. - # \param object_id - # \param count number of copies - # \param min_offset minimum offset to other objects. - @pyqtSlot("quint64", int) - @deprecated("Use CuraActions::multiplySelection", "2.6") - def multiplyObject(self, object_id, count, min_offset = 8): - node = self.getController().getScene().findObject(object_id) - if not node: - node = Selection.getSelectedObject(0) - - while node.getParent() and node.getParent().callDecoration("isGroup"): - node = node.getParent() - - job = MultiplyObjectsJob([node], count, min_offset) - job.start() - return - - ## Center object on platform. - @pyqtSlot("quint64") - @deprecated("Use CuraActions::centerSelection", "2.6") - def centerObject(self, object_id): - node = self.getController().getScene().findObject(object_id) - if not node and object_id != 0: # Workaround for tool handles overlapping the selected object - node = Selection.getSelectedObject(0) - - if not node: - return - - if node.getParent() and node.getParent().callDecoration("isGroup"): - node = node.getParent() - - if node: - op = SetTransformOperation(node, Vector()) - op.push() - ## Select all nodes containing mesh data in the scene. @pyqtSlot() def selectAll(self): @@ -1242,62 +1186,75 @@ class CuraApplication(QtApplication): ## Arrange all objects. @pyqtSlot() - def arrangeObjectsToAllBuildPlates(self): - nodes = [] - for node in DepthFirstIterator(self.getController().getScene().getRoot()): + def arrangeObjectsToAllBuildPlates(self) -> None: + nodes_to_arrange = [] + for node in DepthFirstIterator(self.getController().getScene().getRoot()): # type: ignore if not isinstance(node, SceneNode): continue + if not node.getMeshData() and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. - if node.getParent() and node.getParent().callDecoration("isGroup"): - continue # Grouped nodes don't need resetting as their parent (the group) is resetted) + + parent_node = node.getParent() + if parent_node and parent_node.callDecoration("isGroup"): + continue # Grouped nodes don't need resetting as their parent (the group) is reset) + if not node.callDecoration("isSliceable") and not node.callDecoration("isGroup"): continue # i.e. node with layer data + + bounding_box = node.getBoundingBox() # Skip nodes that are too big - if node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: - nodes.append(node) - job = ArrangeObjectsAllBuildPlatesJob(nodes) + if bounding_box is None or bounding_box.width < self._volume.getBoundingBox().width or bounding_box.depth < self._volume.getBoundingBox().depth: + nodes_to_arrange.append(node) + job = ArrangeObjectsAllBuildPlatesJob(nodes_to_arrange) job.start() self.getCuraSceneController().setActiveBuildPlate(0) # Select first build plate # Single build plate @pyqtSlot() - def arrangeAll(self): - nodes = [] + def arrangeAll(self) -> None: + nodes_to_arrange = [] active_build_plate = self.getMultiBuildPlateModel().activeBuildPlate - for node in DepthFirstIterator(self.getController().getScene().getRoot()): + for node in DepthFirstIterator(self.getController().getScene().getRoot()): # type: ignore if not isinstance(node, SceneNode): continue + if not node.getMeshData() and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. - if node.getParent() and node.getParent().callDecoration("isGroup"): + + parent_node = node.getParent() + if parent_node and parent_node.callDecoration("isGroup"): continue # Grouped nodes don't need resetting as their parent (the group) is resetted) + if not node.isSelectable(): continue # i.e. node with layer data + if not node.callDecoration("isSliceable") and not node.callDecoration("isGroup"): continue # i.e. node with layer data + if node.callDecoration("getBuildPlateNumber") == active_build_plate: # Skip nodes that are too big - if node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: - nodes.append(node) - self.arrange(nodes, fixed_nodes = []) + bounding_box = node.getBoundingBox() + if bounding_box is None or bounding_box.width < self._volume.getBoundingBox().width or bounding_box.depth < self._volume.getBoundingBox().depth: + nodes_to_arrange.append(node) + self.arrange(nodes_to_arrange, fixed_nodes = []) ## Arrange a set of nodes given a set of fixed nodes # \param nodes nodes that we have to place # \param fixed_nodes nodes that are placed in the arranger before finding spots for nodes - def arrange(self, nodes, fixed_nodes): + def arrange(self, nodes: List[SceneNode], fixed_nodes: List[SceneNode]) -> None: min_offset = self.getBuildVolume().getEdgeDisallowedSize() + 2 # Allow for some rounding errors job = ArrangeObjectsJob(nodes, fixed_nodes, min_offset = max(min_offset, 8)) job.start() ## Reload all mesh data on the screen from file. @pyqtSlot() - def reloadAll(self): + def reloadAll(self) -> None: Logger.log("i", "Reloading all loaded mesh data.") nodes = [] has_merged_nodes = False - for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if not isinstance(node, CuraSceneNode) or not node.getMeshData() : + for node in DepthFirstIterator(self.getController().getScene().getRoot()): # type: ignore + if not isinstance(node, CuraSceneNode) or not node.getMeshData(): if node.getName() == "MergedMesh": has_merged_nodes = True continue @@ -1311,7 +1268,7 @@ class CuraApplication(QtApplication): file_name = node.getMeshData().getFileName() if file_name: job = ReadMeshJob(file_name) - job._node = node + job._node = node # type: ignore job.finished.connect(self._reloadMeshFinished) if has_merged_nodes: job.finished.connect(self.updateOriginOfMergedMeshes) @@ -1320,20 +1277,8 @@ class CuraApplication(QtApplication): else: Logger.log("w", "Unable to reload data because we don't have a filename.") - - ## Get logging data of the backend engine - # \returns \type{string} Logging data - @pyqtSlot(result = str) - def getEngineLog(self): - log = "" - - for entry in self.getBackend().getLog(): - log += entry.decode() - - return log - @pyqtSlot("QStringList") - def setExpandedCategories(self, categories): + def setExpandedCategories(self, categories: List[str]) -> None: categories = list(set(categories)) categories.sort() joined = ";".join(categories) @@ -1344,7 +1289,7 @@ class CuraApplication(QtApplication): expandedCategoriesChanged = pyqtSignal() @pyqtProperty("QStringList", notify = expandedCategoriesChanged) - def expandedCategories(self): + def expandedCategories(self) -> List[str]: return self.getPreferences().getValue("cura/categories_expanded").split(";") @pyqtSlot() @@ -1394,13 +1339,12 @@ class CuraApplication(QtApplication): ## Updates origin position of all merged meshes - # \param jobNode \type{Job} empty object which passed which is required by JobQueue - def updateOriginOfMergedMeshes(self, jobNode): + def updateOriginOfMergedMeshes(self, _): group_nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): if isinstance(node, CuraSceneNode) and node.getName() == "MergedMesh": - #checking by name might be not enough, the merged mesh should has "GroupDecorator" decorator + # Checking by name might be not enough, the merged mesh should has "GroupDecorator" decorator for decorator in node.getDecorators(): if isinstance(decorator, GroupDecorator): group_nodes.append(node) @@ -1444,7 +1388,7 @@ class CuraApplication(QtApplication): @pyqtSlot() - def groupSelected(self): + def groupSelected(self) -> None: # Create a group-node group_node = CuraSceneNode() group_decorator = GroupDecorator() @@ -1460,7 +1404,8 @@ class CuraApplication(QtApplication): # Remove nodes that are directly parented to another selected node from the selection so they remain parented selected_nodes = Selection.getAllSelectedObjects().copy() for node in selected_nodes: - if node.getParent() in selected_nodes and not node.getParent().callDecoration("isGroup"): + parent = node.getParent() + if parent is not None and parent in selected_nodes and not parent.callDecoration("isGroup"): Selection.remove(node) # Move selected nodes into the group-node @@ -1472,7 +1417,7 @@ class CuraApplication(QtApplication): Selection.add(group_node) @pyqtSlot() - def ungroupSelected(self): + def ungroupSelected(self) -> None: selected_objects = Selection.getAllSelectedObjects().copy() for node in selected_objects: if node.callDecoration("isGroup"): @@ -1495,7 +1440,7 @@ class CuraApplication(QtApplication): # Note: The group removes itself from the scene once all its children have left it, # see GroupDecorator._onChildrenChanged - def _createSplashScreen(self): + def _createSplashScreen(self) -> Optional[CuraSplashScreen.CuraSplashScreen]: if self._is_headless: return None return CuraSplashScreen.CuraSplashScreen() @@ -1661,7 +1606,9 @@ class CuraApplication(QtApplication): is_non_sliceable = "." + file_extension in self._non_sliceable_extensions if is_non_sliceable: - self.callLater(lambda: self.getController().setActiveView("SimulationView")) + # Need to switch first to the preview stage and then to layer view + self.callLater(lambda: (self.getController().setActiveStage("PreviewStage"), + self.getController().setActiveView("SimulationView"))) block_slicing_decorator = BlockSlicingDecorator() node.addDecorator(block_slicing_decorator) diff --git a/cura/CuraVersion.py.in b/cura/CuraVersion.py.in index 226b2183f2..7c6304231d 100644 --- a/cura/CuraVersion.py.in +++ b/cura/CuraVersion.py.in @@ -1,6 +1,7 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +CuraAppDisplayName = "@CURA_APP_DISPLAY_NAME@" CuraVersion = "@CURA_VERSION@" CuraBuildType = "@CURA_BUILDTYPE@" CuraDebugMode = True if "@_cura_debugmode@" == "ON" else False diff --git a/cura/CuraView.py b/cura/CuraView.py new file mode 100644 index 0000000000..978c651b43 --- /dev/null +++ b/cura/CuraView.py @@ -0,0 +1,24 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import pyqtProperty, QUrl + +from UM.View.View import View + + +# Since Cura has a few pre-defined "space claims" for the locations of certain components, we've provided some structure +# to indicate this. +# MainComponent works in the same way the MainComponent of a stage. +# the stageMenuComponent returns an item that should be used somehwere in the stage menu. It's up to the active stage +# to actually do something with this. +class CuraView(View): + def __init__(self, parent = None) -> None: + super().__init__(parent) + + @pyqtProperty(QUrl, constant = True) + def mainComponent(self) -> QUrl: + return self.getDisplayComponent("main") + + @pyqtProperty(QUrl, constant = True) + def stageMenuComponent(self) -> QUrl: + return self.getDisplayComponent("menu") \ No newline at end of file diff --git a/cura/GlobalStacksModel.py b/cura/GlobalStacksModel.py new file mode 100644 index 0000000000..939809151d --- /dev/null +++ b/cura/GlobalStacksModel.py @@ -0,0 +1,63 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Qt.ListModel import ListModel + +from PyQt5.QtCore import pyqtProperty, Qt, pyqtSignal + +from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Settings.ContainerStack import ContainerStack + +from cura.PrinterOutputDevice import ConnectionType + +from cura.Settings.GlobalStack import GlobalStack + + +class GlobalStacksModel(ListModel): + NameRole = Qt.UserRole + 1 + IdRole = Qt.UserRole + 2 + HasRemoteConnectionRole = Qt.UserRole + 3 + ConnectionTypeRole = Qt.UserRole + 4 + MetaDataRole = Qt.UserRole + 5 + + def __init__(self, parent = None): + super().__init__(parent) + self.addRoleName(self.NameRole, "name") + self.addRoleName(self.IdRole, "id") + self.addRoleName(self.HasRemoteConnectionRole, "hasRemoteConnection") + self.addRoleName(self.ConnectionTypeRole, "connectionType") + self.addRoleName(self.MetaDataRole, "metadata") + self._container_stacks = [] + + # Listen to changes + ContainerRegistry.getInstance().containerAdded.connect(self._onContainerChanged) + ContainerRegistry.getInstance().containerMetaDataChanged.connect(self._onContainerChanged) + ContainerRegistry.getInstance().containerRemoved.connect(self._onContainerChanged) + self._filter_dict = {} + self._update() + + ## Handler for container added/removed events from registry + def _onContainerChanged(self, container): + # We only need to update when the added / removed container GlobalStack + if isinstance(container, GlobalStack): + self._update() + + def _update(self) -> None: + items = [] + + container_stacks = ContainerRegistry.getInstance().findContainerStacks(type = "machine") + + for container_stack in container_stacks: + connection_type = int(container_stack.getMetaDataEntry("connection_type", ConnectionType.NotConnected.value)) + has_remote_connection = connection_type in [ConnectionType.NetworkConnection.value, ConnectionType.CloudConnection.value] + if container_stack.getMetaDataEntry("hidden", False) in ["True", True]: + continue + + # TODO: Remove reference to connect group name. + items.append({"name": container_stack.getMetaDataEntry("connect_group_name", container_stack.getName()), + "id": container_stack.getId(), + "hasRemoteConnection": has_remote_connection, + "connectionType": connection_type, + "metadata": container_stack.getMetaData().copy()}) + items.sort(key=lambda i: not i["hasRemoteConnection"]) + self.setItems(items) \ No newline at end of file diff --git a/cura/Machines/MachineErrorChecker.py b/cura/Machines/MachineErrorChecker.py index 06f064315b..fb11123af6 100644 --- a/cura/Machines/MachineErrorChecker.py +++ b/cura/Machines/MachineErrorChecker.py @@ -64,21 +64,21 @@ class MachineErrorChecker(QObject): def _onMachineChanged(self) -> None: if self._global_stack: - self._global_stack.propertyChanged.disconnect(self.startErrorCheck) + self._global_stack.propertyChanged.disconnect(self.startErrorCheckPropertyChanged) self._global_stack.containersChanged.disconnect(self.startErrorCheck) for extruder in self._global_stack.extruders.values(): - extruder.propertyChanged.disconnect(self.startErrorCheck) + extruder.propertyChanged.disconnect(self.startErrorCheckPropertyChanged) extruder.containersChanged.disconnect(self.startErrorCheck) self._global_stack = self._machine_manager.activeMachine if self._global_stack: - self._global_stack.propertyChanged.connect(self.startErrorCheck) + self._global_stack.propertyChanged.connect(self.startErrorCheckPropertyChanged) self._global_stack.containersChanged.connect(self.startErrorCheck) for extruder in self._global_stack.extruders.values(): - extruder.propertyChanged.connect(self.startErrorCheck) + extruder.propertyChanged.connect(self.startErrorCheckPropertyChanged) extruder.containersChanged.connect(self.startErrorCheck) hasErrorUpdated = pyqtSignal() @@ -93,6 +93,13 @@ class MachineErrorChecker(QObject): def needToWaitForResult(self) -> bool: return self._need_to_check or self._check_in_progress + # Start the error check for property changed + # this is seperate from the startErrorCheck because it ignores a number property types + def startErrorCheckPropertyChanged(self, key, property_name): + if property_name != "value": + return + self.startErrorCheck() + # Starts the error check timer to schedule a new error check. def startErrorCheck(self, *args) -> None: if not self._check_in_progress: diff --git a/cura/Machines/MaterialManager.py b/cura/Machines/MaterialManager.py index 1a204c020b..aee96f3153 100644 --- a/cura/Machines/MaterialManager.py +++ b/cura/Machines/MaterialManager.py @@ -21,6 +21,7 @@ from .VariantType import VariantType if TYPE_CHECKING: from UM.Settings.DefinitionContainer import DefinitionContainer + from UM.Settings.InstanceContainer import InstanceContainer from cura.Settings.GlobalStack import GlobalStack from cura.Settings.ExtruderStack import ExtruderStack @@ -298,7 +299,7 @@ class MaterialManager(QObject): def getRootMaterialIDWithoutDiameter(self, root_material_id: str) -> str: return self._diameter_material_map.get(root_material_id, "") - def getMaterialGroupListByGUID(self, guid: str) -> Optional[list]: + def getMaterialGroupListByGUID(self, guid: str) -> Optional[List[MaterialGroup]]: return self._guid_material_groups_map.get(guid) # @@ -446,6 +447,28 @@ class MaterialManager(QObject): material_diameter, root_material_id) return node + # There are 2 ways to get fallback materials; + # - A fallback by type (@sa getFallbackMaterialIdByMaterialType), which adds the generic version of this material + # - A fallback by GUID; If a material has been duplicated, it should also check if the original materials do have + # a GUID. This should only be done if the material itself does not have a quality just yet. + def getFallBackMaterialIdsByMaterial(self, material: "InstanceContainer") -> List[str]: + results = [] # type: List[str] + + material_groups = self.getMaterialGroupListByGUID(material.getMetaDataEntry("GUID")) + for material_group in material_groups: # type: ignore + if material_group.name != material.getId(): + # If the material in the group is read only, put it at the front of the list (since that is the most + # likely one to get a result) + if material_group.is_read_only: + results.insert(0, material_group.name) + else: + results.append(material_group.name) + + fallback = self.getFallbackMaterialIdByMaterialType(material.getMetaDataEntry("material")) + if fallback is not None: + results.append(fallback) + return results + # # Used by QualityManager. Built-in quality profiles may be based on generic material IDs such as "generic_pla". # For materials such as ultimaker_pla_orange, no quality profiles may be found, so we should fall back to use @@ -602,7 +625,6 @@ class MaterialManager(QObject): container_to_add.setDirty(True) self._container_registry.addContainer(container_to_add) - # if the duplicated material was favorite then the new material should also be added to favorite. if root_material_id in self.getFavorites(): self.addFavorite(new_base_id) @@ -622,8 +644,11 @@ class MaterialManager(QObject): machine_manager = self._application.getMachineManager() extruder_stack = machine_manager.activeStack + machine_definition = self._application.getGlobalContainerStack().definition + preferred_material = machine_definition.getMetaDataEntry("preferred_material") + approximate_diameter = str(extruder_stack.approximateMaterialDiameter) - root_material_id = "generic_pla" + root_material_id = preferred_material if preferred_material else "generic_pla" root_material_id = self.getRootMaterialIDForDiameter(root_material_id, approximate_diameter) material_group = self.getMaterialGroup(root_material_id) diff --git a/cura/Machines/Models/BaseMaterialsModel.py b/cura/Machines/Models/BaseMaterialsModel.py index ef2e760330..212e4fcf1e 100644 --- a/cura/Machines/Models/BaseMaterialsModel.py +++ b/cura/Machines/Models/BaseMaterialsModel.py @@ -1,5 +1,6 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Optional, Dict, Set from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty from UM.Qt.ListModel import ListModel @@ -9,6 +10,9 @@ from UM.Qt.ListModel import ListModel # Those 2 models are used by the material drop down menu to show generic materials and branded materials separately. # The extruder position defined here is being used to bound a menu to the correct extruder. This is used in the top # bar menu "Settings" -> "Extruder nr" -> "Material" -> this menu +from cura.Machines.MaterialNode import MaterialNode + + class BaseMaterialsModel(ListModel): extruderPositionChanged = pyqtSignal() @@ -54,8 +58,8 @@ class BaseMaterialsModel(ListModel): self._extruder_position = 0 self._extruder_stack = None - self._available_materials = None - self._favorite_ids = None + self._available_materials = None # type: Optional[Dict[str, MaterialNode]] + self._favorite_ids = set() # type: Set[str] def _updateExtruderStack(self): global_stack = self._machine_manager.activeMachine @@ -102,7 +106,6 @@ class BaseMaterialsModel(ListModel): return False extruder_stack = global_stack.extruders[extruder_position] - self._available_materials = self._material_manager.getAvailableMaterialsForMachineExtruder(global_stack, extruder_stack) if self._available_materials is None: return False diff --git a/cura/Machines/Models/FavoriteMaterialsModel.py b/cura/Machines/Models/FavoriteMaterialsModel.py index 18fe310c44..98a2a01597 100644 --- a/cura/Machines/Models/FavoriteMaterialsModel.py +++ b/cura/Machines/Models/FavoriteMaterialsModel.py @@ -1,20 +1,16 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from UM.Logger import Logger from cura.Machines.Models.BaseMaterialsModel import BaseMaterialsModel +## Model that shows the list of favorite materials. class FavoriteMaterialsModel(BaseMaterialsModel): - def __init__(self, parent = None): super().__init__(parent) self._update() def _update(self): - - # Perform standard check and reset if the check fails if not self._canUpdate(): - self.setItems([]) return # Get updated list of favorites diff --git a/cura/Machines/Models/GenericMaterialsModel.py b/cura/Machines/Models/GenericMaterialsModel.py index c276b865bf..8f41dd6a70 100644 --- a/cura/Machines/Models/GenericMaterialsModel.py +++ b/cura/Machines/Models/GenericMaterialsModel.py @@ -11,10 +11,7 @@ class GenericMaterialsModel(BaseMaterialsModel): self._update() def _update(self): - - # Perform standard check and reset if the check fails if not self._canUpdate(): - self.setItems([]) return # Get updated list of favorites diff --git a/cura/Machines/Models/MaterialBrandsModel.py b/cura/Machines/Models/MaterialBrandsModel.py index 458e4d9b47..ac82cf6670 100644 --- a/cura/Machines/Models/MaterialBrandsModel.py +++ b/cura/Machines/Models/MaterialBrandsModel.py @@ -28,12 +28,8 @@ class MaterialBrandsModel(BaseMaterialsModel): self._update() def _update(self): - - # Perform standard check and reset if the check fails if not self._canUpdate(): - self.setItems([]) return - # Get updated list of favorites self._favorite_ids = self._material_manager.getFavorites() diff --git a/cura/Machines/Models/NozzleModel.py b/cura/Machines/Models/NozzleModel.py index 9d97106d6b..785ff5b9b9 100644 --- a/cura/Machines/Models/NozzleModel.py +++ b/cura/Machines/Models/NozzleModel.py @@ -33,8 +33,6 @@ class NozzleModel(ListModel): def _update(self): Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) - self.items.clear() - global_stack = self._machine_manager.activeMachine if global_stack is None: self.setItems([]) diff --git a/cura/Machines/Models/QualityProfilesDropDownMenuModel.py b/cura/Machines/Models/QualityProfilesDropDownMenuModel.py index a01cc1194f..7ccc886bfe 100644 --- a/cura/Machines/Models/QualityProfilesDropDownMenuModel.py +++ b/cura/Machines/Models/QualityProfilesDropDownMenuModel.py @@ -1,7 +1,7 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import Qt +from PyQt5.QtCore import Qt, QTimer from UM.Application import Application from UM.Logger import Logger @@ -21,6 +21,7 @@ class QualityProfilesDropDownMenuModel(ListModel): AvailableRole = Qt.UserRole + 5 QualityGroupRole = Qt.UserRole + 6 QualityChangesGroupRole = Qt.UserRole + 7 + IsExperimentalRole = Qt.UserRole + 8 def __init__(self, parent = None): super().__init__(parent) @@ -32,20 +33,29 @@ class QualityProfilesDropDownMenuModel(ListModel): self.addRoleName(self.AvailableRole, "available") #Whether the quality profile is available in our current nozzle + material. self.addRoleName(self.QualityGroupRole, "quality_group") self.addRoleName(self.QualityChangesGroupRole, "quality_changes_group") + self.addRoleName(self.IsExperimentalRole, "is_experimental") self._application = Application.getInstance() self._machine_manager = self._application.getMachineManager() self._quality_manager = Application.getInstance().getQualityManager() - self._application.globalContainerStackChanged.connect(self._update) - self._machine_manager.activeQualityGroupChanged.connect(self._update) - self._machine_manager.extruderChanged.connect(self._update) - self._quality_manager.qualitiesUpdated.connect(self._update) + self._application.globalContainerStackChanged.connect(self._onChange) + self._machine_manager.activeQualityGroupChanged.connect(self._onChange) + self._machine_manager.extruderChanged.connect(self._onChange) + self._quality_manager.qualitiesUpdated.connect(self._onChange) self._layer_height_unit = "" # This is cached + self._update_timer = QTimer() # type: QTimer + self._update_timer.setInterval(100) + self._update_timer.setSingleShot(True) + self._update_timer.timeout.connect(self._update) + self._update() + def _onChange(self) -> None: + self._update_timer.start() + def _update(self): Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) @@ -74,7 +84,8 @@ class QualityProfilesDropDownMenuModel(ListModel): "layer_height": layer_height, "layer_height_unit": self._layer_height_unit, "available": quality_group.is_available, - "quality_group": quality_group} + "quality_group": quality_group, + "is_experimental": quality_group.is_experimental} item_list.append(item) diff --git a/cura/Machines/Models/SettingVisibilityPresetsModel.py b/cura/Machines/Models/SettingVisibilityPresetsModel.py index 2702001d8a..baa8e3ed29 100644 --- a/cura/Machines/Models/SettingVisibilityPresetsModel.py +++ b/cura/Machines/Models/SettingVisibilityPresetsModel.py @@ -6,6 +6,7 @@ from typing import Optional, List from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject from UM.Logger import Logger +from UM.Preferences import Preferences from UM.Resources import Resources from UM.i18n import i18nCatalog @@ -18,14 +19,20 @@ class SettingVisibilityPresetsModel(QObject): onItemsChanged = pyqtSignal() activePresetChanged = pyqtSignal() - def __init__(self, preferences, parent = None): + def __init__(self, preferences: Preferences, parent = None) -> None: super().__init__(parent) self._items = [] # type: List[SettingVisibilityPreset] + self._custom_preset = SettingVisibilityPreset(preset_id = "custom", name = "Custom selection", weight = -100) + self._populate() basic_item = self.getVisibilityPresetById("basic") - basic_visibile_settings = ";".join(basic_item.settings) + if basic_item is not None: + basic_visibile_settings = ";".join(basic_item.settings) + else: + Logger.log("w", "Unable to find the basic visiblity preset.") + basic_visibile_settings = "" self._preferences = preferences @@ -42,7 +49,8 @@ class SettingVisibilityPresetsModel(QObject): visible_settings = self._preferences.getValue("general/visible_settings") if not visible_settings: - self._preferences.setValue("general/visible_settings", ";".join(self._active_preset_item.settings)) + new_visible_settings = self._active_preset_item.settings if self._active_preset_item is not None else [] + self._preferences.setValue("general/visible_settings", ";".join(new_visible_settings)) else: self._onPreferencesChanged("general/visible_settings") @@ -59,9 +67,7 @@ class SettingVisibilityPresetsModel(QObject): def _populate(self) -> None: from cura.CuraApplication import CuraApplication items = [] # type: List[SettingVisibilityPreset] - - custom_preset = SettingVisibilityPreset(preset_id="custom", name ="Custom selection", weight = -100) - items.append(custom_preset) + items.append(self._custom_preset) for file_path in Resources.getAllResourcesOfType(CuraApplication.ResourceTypes.SettingVisibilityPreset): setting_visibility_preset = SettingVisibilityPreset() try: @@ -77,7 +83,7 @@ class SettingVisibilityPresetsModel(QObject): self.setItems(items) @pyqtProperty("QVariantList", notify = onItemsChanged) - def items(self): + def items(self) -> List[SettingVisibilityPreset]: return self._items def setItems(self, items: List[SettingVisibilityPreset]) -> None: @@ -87,7 +93,7 @@ class SettingVisibilityPresetsModel(QObject): @pyqtSlot(str) def setActivePreset(self, preset_id: str) -> None: - if preset_id == self._active_preset_item.presetId: + if self._active_preset_item is not None and preset_id == self._active_preset_item.presetId: Logger.log("d", "Same setting visibility preset [%s] selected, do nothing.", preset_id) return @@ -96,7 +102,7 @@ class SettingVisibilityPresetsModel(QObject): Logger.log("w", "Tried to set active preset to unknown id [%s]", preset_id) return - need_to_save_to_custom = self._active_preset_item.presetId == "custom" and preset_id != "custom" + need_to_save_to_custom = self._active_preset_item is None or (self._active_preset_item.presetId == "custom" and preset_id != "custom") if need_to_save_to_custom: # Save the current visibility settings to custom current_visibility_string = self._preferences.getValue("general/visible_settings") @@ -117,7 +123,9 @@ class SettingVisibilityPresetsModel(QObject): @pyqtProperty(str, notify = activePresetChanged) def activePreset(self) -> str: - return self._active_preset_item.presetId + if self._active_preset_item is not None: + return self._active_preset_item.presetId + return "" def _onPreferencesChanged(self, name: str) -> None: if name != "general/visible_settings": @@ -140,7 +148,7 @@ class SettingVisibilityPresetsModel(QObject): item_to_set = self._active_preset_item if matching_preset_item is None: # The new visibility setup is "custom" should be custom - if self._active_preset_item.presetId == "custom": + if self._active_preset_item is None or self._active_preset_item.presetId == "custom": # We are already in custom, just save the settings self._preferences.setValue("cura/custom_visible_settings", visibility_string) else: @@ -149,7 +157,12 @@ class SettingVisibilityPresetsModel(QObject): else: item_to_set = matching_preset_item + # If we didn't find a matching preset, fallback to custom. + if item_to_set is None: + item_to_set = self._custom_preset + if self._active_preset_item is None or self._active_preset_item.presetId != item_to_set.presetId: self._active_preset_item = item_to_set - self._preferences.setValue("cura/active_setting_visibility_preset", self._active_preset_item.presetId) + if self._active_preset_item is not None: + self._preferences.setValue("cura/active_setting_visibility_preset", self._active_preset_item.presetId) self.activePresetChanged.emit() diff --git a/cura/Machines/QualityGroup.py b/cura/Machines/QualityGroup.py index 535ba453f8..f5bcbb0de8 100644 --- a/cura/Machines/QualityGroup.py +++ b/cura/Machines/QualityGroup.py @@ -4,6 +4,9 @@ from typing import Dict, Optional, List, Set from PyQt5.QtCore import QObject, pyqtSlot + +from UM.Util import parseBool + from cura.Machines.ContainerNode import ContainerNode @@ -29,6 +32,7 @@ class QualityGroup(QObject): self.nodes_for_extruders = {} # type: Dict[int, ContainerNode] self.quality_type = quality_type self.is_available = False + self.is_experimental = False @pyqtSlot(result = str) def getName(self) -> str: @@ -51,3 +55,17 @@ class QualityGroup(QObject): for extruder_node in self.nodes_for_extruders.values(): result.append(extruder_node) return result + + def setGlobalNode(self, node: "ContainerNode") -> None: + self.node_for_global = node + + # Update is_experimental flag + is_experimental = parseBool(node.getMetaDataEntry("is_experimental", False)) + self.is_experimental |= is_experimental + + def setExtruderNode(self, position: int, node: "ContainerNode") -> None: + self.nodes_for_extruders[position] = node + + # Update is_experimental flag + is_experimental = parseBool(node.getMetaDataEntry("is_experimental", False)) + self.is_experimental |= is_experimental diff --git a/cura/Machines/QualityManager.py b/cura/Machines/QualityManager.py index ce19624c21..34cc9ce4b2 100644 --- a/cura/Machines/QualityManager.py +++ b/cura/Machines/QualityManager.py @@ -1,7 +1,7 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import TYPE_CHECKING, Optional, cast, Dict, List +from typing import TYPE_CHECKING, Optional, cast, Dict, List, Set from PyQt5.QtCore import QObject, QTimer, pyqtSignal, pyqtSlot @@ -16,7 +16,7 @@ from .QualityGroup import QualityGroup from .QualityNode import QualityNode if TYPE_CHECKING: - from UM.Settings.DefinitionContainer import DefinitionContainer + from UM.Settings.Interfaces import DefinitionContainerInterface from cura.Settings.GlobalStack import GlobalStack from .QualityChangesGroup import QualityChangesGroup from cura.CuraApplication import CuraApplication @@ -235,7 +235,7 @@ class QualityManager(QObject): for quality_type, quality_node in node.quality_type_map.items(): quality_group = QualityGroup(quality_node.getMetaDataEntry("name", ""), quality_type) - quality_group.node_for_global = quality_node + quality_group.setGlobalNode(quality_node) quality_group_dict[quality_type] = quality_group break @@ -259,11 +259,15 @@ class QualityManager(QObject): root_material_id = self._material_manager.getRootMaterialIDWithoutDiameter(root_material_id) root_material_id_list.append(root_material_id) - # Also try to get the fallback material - material_type = extruder.material.getMetaDataEntry("material") - fallback_root_material_id = self._material_manager.getFallbackMaterialIdByMaterialType(material_type) - if fallback_root_material_id: - root_material_id_list.append(fallback_root_material_id) + # Also try to get the fallback materials + fallback_ids = self._material_manager.getFallBackMaterialIdsByMaterial(extruder.material) + + if fallback_ids: + root_material_id_list.extend(fallback_ids) + + # Weed out duplicates while preserving the order. + seen = set() # type: Set[str] + root_material_id_list = [x for x in root_material_id_list if x not in seen and not seen.add(x)] # type: ignore # Here we construct a list of nodes we want to look for qualities with the highest priority first. # The use case is that, when we look for qualities for a machine, we first want to search in the following @@ -333,7 +337,7 @@ class QualityManager(QObject): quality_group = quality_group_dict[quality_type] if position not in quality_group.nodes_for_extruders: - quality_group.nodes_for_extruders[position] = quality_node + quality_group.setExtruderNode(position, quality_node) # If the machine has its own specific qualities, for extruders, it should skip the global qualities # and use the material/variant specific qualities. @@ -363,7 +367,7 @@ class QualityManager(QObject): if node and node.quality_type_map: for quality_type, quality_node in node.quality_type_map.items(): quality_group = QualityGroup(quality_node.getMetaDataEntry("name", ""), quality_type) - quality_group.node_for_global = quality_node + quality_group.setGlobalNode(quality_node) quality_group_dict[quality_type] = quality_group break @@ -534,7 +538,7 @@ class QualityManager(QObject): # Example: for an Ultimaker 3 Extended, it has "quality_definition = ultimaker3". This means Ultimaker 3 Extended # shares the same set of qualities profiles as Ultimaker 3. # -def getMachineDefinitionIDForQualitySearch(machine_definition: "DefinitionContainer", +def getMachineDefinitionIDForQualitySearch(machine_definition: "DefinitionContainerInterface", default_definition_id: str = "fdmprinter") -> str: machine_definition_id = default_definition_id if parseBool(machine_definition.getMetaDataEntry("has_machine_quality", False)): diff --git a/cura/Machines/VariantManager.py b/cura/Machines/VariantManager.py index f6feb70e09..eaaa9fc5f0 100644 --- a/cura/Machines/VariantManager.py +++ b/cura/Machines/VariantManager.py @@ -107,7 +107,7 @@ class VariantManager: break return variant_node - return self._machine_to_variant_dict_map[machine_definition_id].get(variant_type, {}).get(variant_name) + return self._machine_to_variant_dict_map.get(machine_definition_id, {}).get(variant_type, {}).get(variant_name) def getVariantNodes(self, machine: "GlobalStack", variant_type: "VariantType") -> Dict[str, ContainerNode]: machine_definition_id = machine.definition.getId() diff --git a/cura/OAuth2/AuthorizationHelpers.py b/cura/OAuth2/AuthorizationHelpers.py index f75ad9c9f9..762d0db069 100644 --- a/cura/OAuth2/AuthorizationHelpers.py +++ b/cura/OAuth2/AuthorizationHelpers.py @@ -81,9 +81,14 @@ class AuthorizationHelpers: # \param access_token: The encoded JWT token. # \return: Dict containing some profile data. def parseJWT(self, access_token: str) -> Optional["UserProfile"]: - token_request = requests.get("{}/check-token".format(self._settings.OAUTH_SERVER_URL), headers = { - "Authorization": "Bearer {}".format(access_token) - }) + try: + token_request = requests.get("{}/check-token".format(self._settings.OAUTH_SERVER_URL), headers = { + "Authorization": "Bearer {}".format(access_token) + }) + except ConnectionError: + # Connection was suddenly dropped. Nothing we can do about that. + Logger.logException("e", "Something failed while attempting to parse the JWT token") + return None if token_request.status_code not in (200, 201): Logger.log("w", "Could not retrieve token data from auth server: %s", token_request.text) return None diff --git a/cura/OAuth2/AuthorizationService.py b/cura/OAuth2/AuthorizationService.py index 65b31f1ed7..a055254891 100644 --- a/cura/OAuth2/AuthorizationService.py +++ b/cura/OAuth2/AuthorizationService.py @@ -83,9 +83,11 @@ class AuthorizationService: if not self.getUserProfile(): # We check if we can get the user profile. # If we can't get it, that means the access token (JWT) was invalid or expired. + Logger.log("w", "Unable to get the user profile.") return None if self._auth_data is None: + Logger.log("d", "No auth data to retrieve the access_token from") return None return self._auth_data.access_token @@ -120,7 +122,7 @@ class AuthorizationService: "redirect_uri": self._settings.CALLBACK_URL, "scope": self._settings.CLIENT_SCOPES, "response_type": "code", - "state": "CuraDriveIsAwesome", + "state": "(.Y.)", "code_challenge": challenge_code, "code_challenge_method": "S512" }) diff --git a/cura/OAuth2/Models.py b/cura/OAuth2/Models.py index 83fc22554f..0515e789e6 100644 --- a/cura/OAuth2/Models.py +++ b/cura/OAuth2/Models.py @@ -1,4 +1,6 @@ # Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + from typing import Optional diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index 21b57d0806..e863689e21 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -14,8 +14,7 @@ from UM.Logger import Logger from UM.Qt.Duration import Duration from UM.Scene.SceneNode import SceneNode from UM.i18n import i18nCatalog -from UM.MimeTypeDatabase import MimeTypeDatabase - +from UM.MimeTypeDatabase import MimeTypeDatabase, MimeTypeNotFoundError from typing import TYPE_CHECKING @@ -361,7 +360,7 @@ class PrintInformation(QObject): try: mime_type = MimeTypeDatabase.getMimeTypeForFile(name) data = mime_type.stripExtension(name) - except: + except MimeTypeNotFoundError: Logger.log("w", "Unsupported Mime Type Database file extension %s", name) if data is not None and check_name is not None: @@ -369,6 +368,16 @@ class PrintInformation(QObject): else: self._base_name = "" + # Strip the old "curaproject" extension from the name + OLD_CURA_PROJECT_EXT = ".curaproject" + if self._base_name.lower().endswith(OLD_CURA_PROJECT_EXT): + self._base_name = self._base_name[:len(self._base_name) - len(OLD_CURA_PROJECT_EXT)] + + # CURA-5896 Try to strip extra extensions with an infinite amount of ".curaproject.3mf". + OLD_CURA_PROJECT_3MF_EXT = ".curaproject.3mf" + while self._base_name.lower().endswith(OLD_CURA_PROJECT_3MF_EXT): + self._base_name = self._base_name[:len(self._base_name) - len(OLD_CURA_PROJECT_3MF_EXT)] + self._updateJobName() @pyqtProperty(str, fset = setBaseName, notify = baseNameChanged) @@ -385,28 +394,14 @@ class PrintInformation(QObject): return active_machine_type_name = global_container_stack.definition.getName() - abbr_machine = "" - for word in re.findall(r"[\w']+", active_machine_type_name): - if word.lower() == "ultimaker": - abbr_machine += "UM" - elif word.isdigit(): - abbr_machine += word - else: - stripped_word = self._stripAccents(word.upper()) - # - use only the first character if the word is too long (> 3 characters) - # - use the whole word if it's not too long (<= 3 characters) - if len(stripped_word) > 3: - stripped_word = stripped_word[0] - abbr_machine += stripped_word - - self._abbr_machine = abbr_machine + self._abbr_machine = self._application.getMachineManager().getAbbreviatedMachineName(active_machine_type_name) ## Utility method that strips accents from characters (eg: â -> a) def _stripAccents(self, to_strip: str) -> str: return ''.join(char for char in unicodedata.normalize('NFD', to_strip) if unicodedata.category(char) != 'Mn') @pyqtSlot(result = "QVariantMap") - def getFeaturePrintTimes(self): + def getFeaturePrintTimes(self) -> Dict[str, Duration]: result = {} if self._active_build_plate not in self._print_times_per_feature: self._initPrintTimesPerFeature(self._active_build_plate) diff --git a/cura/PrinterOutput/NetworkedPrinterOutputDevice.py b/cura/PrinterOutput/NetworkedPrinterOutputDevice.py index f7c7f5d233..14f1364601 100644 --- a/cura/PrinterOutput/NetworkedPrinterOutputDevice.py +++ b/cura/PrinterOutput/NetworkedPrinterOutputDevice.py @@ -6,7 +6,7 @@ from UM.Logger import Logger from UM.Scene.SceneNode import SceneNode #For typing. from cura.CuraApplication import CuraApplication -from cura.PrinterOutputDevice import PrinterOutputDevice, ConnectionState +from cura.PrinterOutputDevice import PrinterOutputDevice, ConnectionState, ConnectionType from PyQt5.QtNetwork import QHttpMultiPart, QHttpPart, QNetworkRequest, QNetworkAccessManager, QNetworkReply, QAuthenticator from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject, QUrl, QCoreApplication @@ -28,8 +28,8 @@ class AuthState(IntEnum): class NetworkedPrinterOutputDevice(PrinterOutputDevice): authenticationStateChanged = pyqtSignal() - def __init__(self, device_id, address: str, properties: Dict[bytes, bytes], parent: QObject = None) -> None: - super().__init__(device_id = device_id, parent = parent) + def __init__(self, device_id, address: str, properties: Dict[bytes, bytes], connection_type: ConnectionType = ConnectionType.NetworkConnection, parent: QObject = None) -> None: + super().__init__(device_id = device_id, connection_type = connection_type, parent = parent) self._manager = None # type: Optional[QNetworkAccessManager] self._last_manager_create_time = None # type: Optional[float] self._recreate_network_manager_time = 30 @@ -125,7 +125,7 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): if self._connection_state_before_timeout is None: self._connection_state_before_timeout = self._connection_state - self.setConnectionState(ConnectionState.closed) + self.setConnectionState(ConnectionState.Closed) # We need to check if the manager needs to be re-created. If we don't, we get some issues when OSX goes to # sleep. @@ -133,7 +133,7 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): if self._last_manager_create_time is None or time() - self._last_manager_create_time > self._recreate_network_manager_time: self._createNetworkManager() assert(self._manager is not None) - elif self._connection_state == ConnectionState.closed: + elif self._connection_state == ConnectionState.Closed: # Go out of timeout. if self._connection_state_before_timeout is not None: # sanity check, but it should never be None here self.setConnectionState(self._connection_state_before_timeout) @@ -147,6 +147,9 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): request.setHeader(QNetworkRequest.UserAgentHeader, self._user_agent) return request + def createFormPart(self, content_header: str, data: bytes, content_type: Optional[str] = None) -> QHttpPart: + return self._createFormPart(content_header, data, content_type) + def _createFormPart(self, content_header: str, data: bytes, content_type: Optional[str] = None) -> QHttpPart: part = QHttpPart() @@ -213,7 +216,7 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): request = self._createEmptyRequest(target) self._last_request_time = time() if self._manager is not None: - reply = self._manager.post(request, data) + reply = self._manager.post(request, data.encode()) if on_progress is not None: reply.uploadProgress.connect(on_progress) self._registerOnFinishedCallback(reply, on_finished) @@ -282,8 +285,8 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): self._last_response_time = time() - if self._connection_state == ConnectionState.connecting: - self.setConnectionState(ConnectionState.connected) + if self._connection_state == ConnectionState.Connecting: + self.setConnectionState(ConnectionState.Connected) callback_key = reply.url().toString() + str(reply.operation()) try: diff --git a/cura/PrinterOutput/PrintJobOutputModel.py b/cura/PrinterOutput/PrintJobOutputModel.py index 25b168e6fd..256c9dffe9 100644 --- a/cura/PrinterOutput/PrintJobOutputModel.py +++ b/cura/PrinterOutput/PrintJobOutputModel.py @@ -118,17 +118,40 @@ class PrintJobOutputModel(QObject): self.nameChanged.emit() @pyqtProperty(int, notify = timeTotalChanged) - def timeTotal(self): + def timeTotal(self) -> int: return self._time_total @pyqtProperty(int, notify = timeElapsedChanged) - def timeElapsed(self): + def timeElapsed(self) -> int: return self._time_elapsed + @pyqtProperty(int, notify = timeElapsedChanged) + def timeRemaining(self) -> int: + # Never get a negative time remaining + return max(self.timeTotal - self.timeElapsed, 0) + + @pyqtProperty(float, notify = timeElapsedChanged) + def progress(self) -> float: + result = self.timeElapsed / self.timeTotal + # Never get a progress past 1.0 + return min(result, 1.0) + @pyqtProperty(str, notify=stateChanged) - def state(self): + def state(self) -> str: return self._state + @pyqtProperty(bool, notify=stateChanged) + def isActive(self) -> bool: + inactiveStates = [ + "pausing", + "paused", + "resuming", + "wait_cleanup" + ] + if self.state in inactiveStates and self.timeRemaining > 0: + return False + return True + def updateTimeTotal(self, new_time_total): if self._time_total != new_time_total: self._time_total = new_time_total diff --git a/cura/PrinterOutputDevice.py b/cura/PrinterOutputDevice.py index 969aa3c460..99e8835c2f 100644 --- a/cura/PrinterOutputDevice.py +++ b/cura/PrinterOutputDevice.py @@ -4,7 +4,7 @@ from UM.Decorators import deprecated from UM.i18n import i18nCatalog from UM.OutputDevice.OutputDevice import OutputDevice -from PyQt5.QtCore import pyqtProperty, pyqtSignal, QObject, QTimer, QUrl +from PyQt5.QtCore import pyqtProperty, pyqtSignal, QObject, QTimer, QUrl, Q_ENUMS from PyQt5.QtWidgets import QMessageBox from UM.Logger import Logger @@ -28,11 +28,18 @@ i18n_catalog = i18nCatalog("cura") ## The current processing state of the backend. class ConnectionState(IntEnum): - closed = 0 - connecting = 1 - connected = 2 - busy = 3 - error = 4 + Closed = 0 + Connecting = 1 + Connected = 2 + Busy = 3 + Error = 4 + + +class ConnectionType(IntEnum): + NotConnected = 0 + UsbConnection = 1 + NetworkConnection = 2 + CloudConnection = 3 ## Printer output device adds extra interface options on top of output device. @@ -46,6 +53,11 @@ class ConnectionState(IntEnum): # For all other uses it should be used in the same way as a "regular" OutputDevice. @signalemitter class PrinterOutputDevice(QObject, OutputDevice): + + # Put ConnectionType here with Q_ENUMS() so it can be registered as a QML type and accessible via QML, and there is + # no need to remember what those Enum integer values mean. + Q_ENUMS(ConnectionType) + printersChanged = pyqtSignal() connectionStateChanged = pyqtSignal(str) acceptsCommandsChanged = pyqtSignal() @@ -62,7 +74,7 @@ class PrinterOutputDevice(QObject, OutputDevice): # Signal to indicate that the configuration of one of the printers has changed. uniqueConfigurationsChanged = pyqtSignal() - def __init__(self, device_id: str, parent: QObject = None) -> None: + def __init__(self, device_id: str, connection_type: "ConnectionType" = ConnectionType.NotConnected, parent: QObject = None) -> None: super().__init__(device_id = device_id, parent = parent) # type: ignore # MyPy complains with the multiple inheritance self._printers = [] # type: List[PrinterOutputModel] @@ -83,7 +95,8 @@ class PrinterOutputDevice(QObject, OutputDevice): self._update_timer.setSingleShot(False) self._update_timer.timeout.connect(self._update) - self._connection_state = ConnectionState.closed #type: ConnectionState + self._connection_state = ConnectionState.Closed #type: ConnectionState + self._connection_type = connection_type self._firmware_updater = None #type: Optional[FirmwareUpdater] self._firmware_name = None #type: Optional[str] @@ -110,15 +123,18 @@ class PrinterOutputDevice(QObject, OutputDevice): callback(QMessageBox.Yes) def isConnected(self) -> bool: - return self._connection_state != ConnectionState.closed and self._connection_state != ConnectionState.error + return self._connection_state != ConnectionState.Closed and self._connection_state != ConnectionState.Error - def setConnectionState(self, connection_state: ConnectionState) -> None: + def setConnectionState(self, connection_state: "ConnectionState") -> None: if self._connection_state != connection_state: self._connection_state = connection_state self.connectionStateChanged.emit(self._id) + def getConnectionType(self) -> "ConnectionType": + return self._connection_type + @pyqtProperty(str, notify = connectionStateChanged) - def connectionState(self) -> ConnectionState: + def connectionState(self) -> "ConnectionState": return self._connection_state def _update(self) -> None: @@ -174,13 +190,13 @@ class PrinterOutputDevice(QObject, OutputDevice): ## Attempt to establish connection def connect(self) -> None: - self.setConnectionState(ConnectionState.connecting) + self.setConnectionState(ConnectionState.Connecting) self._update_timer.start() ## Attempt to close the connection def close(self) -> None: self._update_timer.stop() - self.setConnectionState(ConnectionState.closed) + self.setConnectionState(ConnectionState.Closed) ## Ensure that close gets called when object is destroyed def __del__(self) -> None: @@ -211,6 +227,11 @@ class PrinterOutputDevice(QObject, OutputDevice): self._unique_configurations.sort(key = lambda k: k.printerType) self.uniqueConfigurationsChanged.emit() + # Returns the unique configurations of the printers within this output device + @pyqtProperty("QStringList", notify = uniqueConfigurationsChanged) + def uniquePrinterTypes(self) -> List[str]: + return list(sorted(set([configuration.printerType for configuration in self._unique_configurations]))) + def _onPrintersChanged(self) -> None: for printer in self._printers: printer.configurationChanged.connect(self._updateUniqueConfigurations) @@ -238,4 +259,4 @@ class PrinterOutputDevice(QObject, OutputDevice): if not self._firmware_updater: return - self._firmware_updater.updateFirmware(firmware_file) \ No newline at end of file + self._firmware_updater.updateFirmware(firmware_file) diff --git a/cura/Scene/ConvexHullDecorator.py b/cura/Scene/ConvexHullDecorator.py index 52e687832c..661106dec7 100644 --- a/cura/Scene/ConvexHullDecorator.py +++ b/cura/Scene/ConvexHullDecorator.py @@ -142,6 +142,12 @@ class ConvexHullDecorator(SceneNodeDecorator): controller = Application.getInstance().getController() root = controller.getScene().getRoot() if self._node is None or controller.isToolOperationActive() or not self.__isDescendant(root, self._node): + # If the tool operation is still active, we need to compute the convex hull later after the controller is + # no longer active. + if controller.isToolOperationActive(): + self.recomputeConvexHullDelayed() + return + if self._convex_hull_node: self._convex_hull_node.setParent(None) self._convex_hull_node = None @@ -181,7 +187,10 @@ class ConvexHullDecorator(SceneNodeDecorator): for child in self._node.getChildren(): child_hull = child.callDecoration("_compute2DConvexHull") if child_hull: - points = numpy.append(points, child_hull.getPoints(), axis = 0) + try: + points = numpy.append(points, child_hull.getPoints(), axis = 0) + except ValueError: + pass if points.size < 3: return None @@ -266,7 +275,7 @@ class ConvexHullDecorator(SceneNodeDecorator): head_and_fans = self._getHeadAndFans().intersectionConvexHulls(mirrored) # Min head hull is used for the push free - convex_hull = self._compute2DConvexHeadFull() + convex_hull = self._compute2DConvexHull() if convex_hull: return convex_hull.getMinkowskiHull(head_and_fans) return None diff --git a/cura/Scene/ConvexHullNode.py b/cura/Scene/ConvexHullNode.py index 4c79c7d5dc..886ed93ad3 100644 --- a/cura/Scene/ConvexHullNode.py +++ b/cura/Scene/ConvexHullNode.py @@ -1,7 +1,10 @@ # Copyright (c) 2015 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Optional from UM.Application import Application +from UM.Math.Polygon import Polygon +from UM.Qt.QtApplication import QtApplication from UM.Scene.SceneNode import SceneNode from UM.Resources import Resources from UM.Math.Color import Color @@ -16,7 +19,7 @@ class ConvexHullNode(SceneNode): # location an object uses on the buildplate. This area (or area's in case of one at a time printing) is # then displayed as a transparent shadow. If the adhesion type is set to raft, the area is extruded # to represent the raft as well. - def __init__(self, node, hull, thickness, parent = None): + def __init__(self, node: SceneNode, hull: Optional[Polygon], thickness: float, parent: Optional[SceneNode] = None) -> None: super().__init__(parent) self.setCalculateBoundingBox(False) @@ -25,7 +28,11 @@ class ConvexHullNode(SceneNode): # Color of the drawn convex hull if not Application.getInstance().getIsHeadLess(): - self._color = Color(*Application.getInstance().getTheme().getColor("convex_hull").getRgb()) + theme = QtApplication.getInstance().getTheme() + if theme: + self._color = Color(*theme.getColor("convex_hull").getRgb()) + else: + self._color = Color(0, 0, 0) else: self._color = Color(0, 0, 0) @@ -75,7 +82,7 @@ class ConvexHullNode(SceneNode): return True - def _onNodeDecoratorsChanged(self, node): + def _onNodeDecoratorsChanged(self, node: SceneNode) -> None: convex_hull_head = self._node.callDecoration("getConvexHullHead") if convex_hull_head: convex_hull_head_builder = MeshBuilder() diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 3cfca1a944..133e04e8fc 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -419,13 +419,13 @@ class ContainerManager(QObject): self._container_name_filters[name_filter] = entry ## Import single profile, file_url does not have to end with curaprofile - @pyqtSlot(QUrl, result="QVariantMap") - def importProfile(self, file_url: QUrl): + @pyqtSlot(QUrl, result = "QVariantMap") + def importProfile(self, file_url: QUrl) -> Dict[str, str]: if not file_url.isValid(): - return + return {"status": "error", "message": catalog.i18nc("@info:status", "Invalid file URL:") + " " + str(file_url)} path = file_url.toLocalFile() if not path: - return + return {"status": "error", "message": catalog.i18nc("@info:status", "Invalid file URL:") + " " + str(file_url)} return self._container_registry.importProfile(path) @pyqtSlot(QObject, QUrl, str) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 11640adc0f..9f44d075e0 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -5,12 +5,12 @@ import os import re import configparser -from typing import cast, Optional - +from typing import cast, Dict, Optional from PyQt5.QtWidgets import QMessageBox from UM.Decorators import override from UM.Settings.ContainerFormatError import ContainerFormatError +from UM.Settings.Interfaces import ContainerInterface from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.ContainerStack import ContainerStack from UM.Settings.InstanceContainer import InstanceContainer @@ -28,7 +28,7 @@ from . import GlobalStack import cura.CuraApplication from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch -from cura.ReaderWriters.ProfileReader import NoProfileException +from cura.ReaderWriters.ProfileReader import NoProfileException, ProfileReader from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") @@ -161,20 +161,20 @@ class CuraContainerRegistry(ContainerRegistry): ## Imports a profile from a file # - # \param file_name \type{str} the full path and filename of the profile to import - # \return \type{Dict} dict with a 'status' key containing the string 'ok' or 'error', and a 'message' key - # containing a message for the user - def importProfile(self, file_name): + # \param file_name The full path and filename of the profile to import. + # \return Dict with a 'status' key containing the string 'ok' or 'error', + # and a 'message' key containing a message for the user. + def importProfile(self, file_name: str) -> Dict[str, str]: Logger.log("d", "Attempting to import profile %s", file_name) if not file_name: - return { "status": "error", "message": catalog.i18nc("@info:status Don't translate the XML tags or !", "Failed to import profile from {0}: {1}", file_name, "Invalid path")} + return { "status": "error", "message": catalog.i18nc("@info:status Don't translate the XML tags !", "Failed to import profile from {0}: {1}", file_name, "Invalid path")} plugin_registry = PluginRegistry.getInstance() extension = file_name.split(".")[-1] global_stack = Application.getInstance().getGlobalContainerStack() if not global_stack: - return + return {"status": "error", "message": catalog.i18nc("@info:status Don't translate the XML tags !", "Can't import profile from {0} before a printer is added.", file_name)} machine_extruders = [] for position in sorted(global_stack.extruders): @@ -183,7 +183,7 @@ class CuraContainerRegistry(ContainerRegistry): for plugin_id, meta_data in self._getIOPlugins("profile_reader"): if meta_data["profile_reader"][0]["extension"] != extension: continue - profile_reader = plugin_registry.getPluginObject(plugin_id) + profile_reader = cast(ProfileReader, plugin_registry.getPluginObject(plugin_id)) try: profile_or_list = profile_reader.read(file_name) # Try to open the file with the profile reader. except NoProfileException: @@ -221,13 +221,13 @@ class CuraContainerRegistry(ContainerRegistry): # Make sure we have a profile_definition in the file: if profile_definition is None: break - machine_definition = self.findDefinitionContainers(id = profile_definition) - if not machine_definition: + machine_definitions = self.findDefinitionContainers(id = profile_definition) + if not machine_definitions: Logger.log("e", "Incorrect profile [%s]. Unknown machine type [%s]", file_name, profile_definition) return {"status": "error", "message": catalog.i18nc("@info:status Don't translate the XML tags !", "This profile {0} contains incorrect data, could not import it.", file_name) } - machine_definition = machine_definition[0] + machine_definition = machine_definitions[0] # Get the expected machine definition. # i.e.: We expect gcode for a UM2 Extended to be defined as normal UM2 gcode... @@ -274,11 +274,12 @@ class CuraContainerRegistry(ContainerRegistry): setting_value = global_profile.getProperty(qc_setting_key, "value") setting_definition = global_stack.getSettingDefinition(qc_setting_key) - new_instance = SettingInstance(setting_definition, profile) - new_instance.setProperty("value", setting_value) - new_instance.resetState() # Ensure that the state is not seen as a user state. - profile.addInstance(new_instance) - profile.setDirty(True) + if setting_definition is not None: + new_instance = SettingInstance(setting_definition, profile) + new_instance.setProperty("value", setting_value) + new_instance.resetState() # Ensure that the state is not seen as a user state. + profile.addInstance(new_instance) + profile.setDirty(True) global_profile.removeInstance(qc_setting_key, postpone_emit=True) extruder_profiles.append(profile) @@ -290,7 +291,7 @@ class CuraContainerRegistry(ContainerRegistry): for profile_index, profile in enumerate(profile_or_list): if profile_index == 0: # This is assumed to be the global profile - profile_id = (global_stack.getBottom().getId() + "_" + name_seed).lower().replace(" ", "_") + profile_id = (cast(ContainerInterface, global_stack.getBottom()).getId() + "_" + name_seed).lower().replace(" ", "_") elif profile_index < len(machine_extruders) + 1: # This is assumed to be an extruder profile diff --git a/cura/Settings/CuraFormulaFunctions.py b/cura/Settings/CuraFormulaFunctions.py index 1db01857f8..9ef80bd3d4 100644 --- a/cura/Settings/CuraFormulaFunctions.py +++ b/cura/Settings/CuraFormulaFunctions.py @@ -5,6 +5,7 @@ from typing import Any, List, Optional, TYPE_CHECKING from UM.Settings.PropertyEvaluationContext import PropertyEvaluationContext from UM.Settings.SettingFunction import SettingFunction +from UM.Logger import Logger if TYPE_CHECKING: from cura.CuraApplication import CuraApplication @@ -38,7 +39,11 @@ class CuraFormulaFunctions: extruder_position = int(machine_manager.defaultExtruderPosition) global_stack = machine_manager.activeMachine - extruder_stack = global_stack.extruders[str(extruder_position)] + try: + extruder_stack = global_stack.extruders[str(extruder_position)] + except KeyError: + Logger.log("w", "Value for %s of extruder %s was requested, but that extruder is not available" % (property_key, extruder_position)) + return None value = extruder_stack.getRawProperty(property_key, "value", context = context) if isinstance(value, SettingFunction): diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 9089ba96e9..a459d65ba3 100755 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -63,7 +63,7 @@ class ExtruderManager(QObject): if not self._application.getGlobalContainerStack(): return None # No active machine, so no active extruder. try: - return self._extruder_trains[self._application.getGlobalContainerStack().getId()][str(self._active_extruder_index)].getId() + return self._extruder_trains[self._application.getGlobalContainerStack().getId()][str(self.activeExtruderIndex)].getId() except KeyError: # Extruder index could be -1 if the global tab is selected, or the entry doesn't exist if the machine definition is wrong. return None @@ -83,8 +83,9 @@ class ExtruderManager(QObject): # \param index The index of the new active extruder. @pyqtSlot(int) def setActiveExtruderIndex(self, index: int) -> None: - self._active_extruder_index = index - self.activeExtruderChanged.emit() + if self._active_extruder_index != index: + self._active_extruder_index = index + self.activeExtruderChanged.emit() @pyqtProperty(int, notify = activeExtruderChanged) def activeExtruderIndex(self) -> int: @@ -144,7 +145,7 @@ class ExtruderManager(QObject): @pyqtSlot(result = QObject) def getActiveExtruderStack(self) -> Optional["ExtruderStack"]: - return self.getExtruderStack(self._active_extruder_index) + return self.getExtruderStack(self.activeExtruderIndex) ## Get an extruder stack by index def getExtruderStack(self, index) -> Optional["ExtruderStack"]: @@ -300,12 +301,7 @@ class ExtruderManager(QObject): global_stack = self._application.getGlobalContainerStack() if not global_stack: return [] - - result_tuple_list = sorted(list(global_stack.extruders.items()), key = lambda x: int(x[0])) - result_list = [item[1] for item in result_tuple_list] - - machine_extruder_count = global_stack.getProperty("machine_extruder_count", "value") - return result_list[:machine_extruder_count] + return global_stack.extruderList def _globalContainerStackChanged(self) -> None: # If the global container changed, the machine changed and might have extruders that were not registered yet @@ -344,6 +340,7 @@ class ExtruderManager(QObject): if extruders_changed: self.extrudersChanged.emit(global_stack_id) self.setActiveExtruderIndex(0) + self.activeExtruderChanged.emit() # After 3.4, all single-extrusion machines have their own extruder definition files instead of reusing # "fdmextruder". We need to check a machine here so its extruder definition is correct according to this. diff --git a/cura/Settings/ExtruderStack.py b/cura/Settings/ExtruderStack.py index d7faedb71c..edb0e7d41f 100644 --- a/cura/Settings/ExtruderStack.py +++ b/cura/Settings/ExtruderStack.py @@ -52,8 +52,8 @@ class ExtruderStack(CuraContainerStack): return super().getNextStack() def setEnabled(self, enabled: bool) -> None: - if "enabled" not in self._metadata: - self.setMetaDataEntry("enabled", "True") + if self.getMetaDataEntry("enabled", True) == enabled: # No change. + return # Don't emit a signal then. self.setMetaDataEntry("enabled", str(enabled)) self.enabledChanged.emit() diff --git a/cura/Settings/ExtrudersModel.py b/cura/Settings/ExtrudersModel.py index 52fc502bfc..076cebf60d 100644 --- a/cura/Settings/ExtrudersModel.py +++ b/cura/Settings/ExtrudersModel.py @@ -1,7 +1,7 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot, pyqtProperty, QTimer +from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty, QTimer from typing import Iterable from UM.i18n import i18nCatalog @@ -24,8 +24,6 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): ## Human-readable name of the extruder. NameRole = Qt.UserRole + 2 - ## Is the extruder enabled? - EnabledRole = Qt.UserRole + 9 ## Colour of the material loaded in the extruder. ColorRole = Qt.UserRole + 3 @@ -47,6 +45,12 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): VariantRole = Qt.UserRole + 7 StackRole = Qt.UserRole + 8 + MaterialBrandRole = Qt.UserRole + 9 + ColorNameRole = Qt.UserRole + 10 + + ## Is the extruder enabled? + EnabledRole = Qt.UserRole + 11 + ## List of colours to display if there is no material or the material has no known # colour. defaultColors = ["#ffc924", "#86ec21", "#22eeee", "#245bff", "#9124ff", "#ff24c8"] @@ -67,14 +71,13 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): self.addRoleName(self.MaterialRole, "material") self.addRoleName(self.VariantRole, "variant") self.addRoleName(self.StackRole, "stack") - + self.addRoleName(self.MaterialBrandRole, "material_brand") + self.addRoleName(self.ColorNameRole, "color_name") self._update_extruder_timer = QTimer() self._update_extruder_timer.setInterval(100) self._update_extruder_timer.setSingleShot(True) self._update_extruder_timer.timeout.connect(self.__updateExtruders) - self._simple_names = False - self._active_machine_extruders = [] # type: Iterable[ExtruderStack] self._add_optional_extruder = False @@ -96,21 +99,6 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): def addOptionalExtruder(self): return self._add_optional_extruder - ## Set the simpleNames property. - def setSimpleNames(self, simple_names): - if simple_names != self._simple_names: - self._simple_names = simple_names - self.simpleNamesChanged.emit() - self._updateExtruders() - - ## Emitted when the simpleNames property changes. - simpleNamesChanged = pyqtSignal() - - ## Whether or not the model should show all definitions regardless of visibility. - @pyqtProperty(bool, fset = setSimpleNames, notify = simpleNamesChanged) - def simpleNames(self): - return self._simple_names - ## Links to the stack-changed signal of the new extruders when an extruder # is swapped out or added in the current machine. # @@ -160,7 +148,7 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): def __updateExtruders(self): extruders_changed = False - if self.rowCount() != 0: + if self.count != 0: extruders_changed = True items = [] @@ -172,7 +160,7 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): machine_extruder_count = global_container_stack.getProperty("machine_extruder_count", "value") for extruder in Application.getInstance().getExtruderManager().getActiveExtruderStacks(): - position = extruder.getMetaDataEntry("position", default = "0") # Get the position + position = extruder.getMetaDataEntry("position", default = "0") try: position = int(position) except ValueError: @@ -183,7 +171,8 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): default_color = self.defaultColors[position] if 0 <= position < len(self.defaultColors) else self.defaultColors[0] color = extruder.material.getMetaDataEntry("color_code", default = default_color) if extruder.material else default_color - + material_brand = extruder.material.getMetaDataEntry("brand", default = "generic") + color_name = extruder.material.getMetaDataEntry("color_name") # construct an item with only the relevant information item = { "id": extruder.getId(), @@ -195,6 +184,8 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): "material": extruder.material.getName() if extruder.material else "", "variant": extruder.variant.getName() if extruder.variant else "", # e.g. print core "stack": extruder, + "material_brand": material_brand, + "color_name": color_name } items.append(item) @@ -213,9 +204,14 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): "enabled": True, "color": "#ffffff", "index": -1, - "definition": "" + "definition": "", + "material": "", + "variant": "", + "stack": None, + "material_brand": "", + "color_name": "", } items.append(item) - - self.setItems(items) - self.modelChanged.emit() + if self._items != items: + self.setItems(items) + self.modelChanged.emit() diff --git a/cura/Settings/GlobalStack.py b/cura/Settings/GlobalStack.py index da1ec61254..8dba0f5204 100755 --- a/cura/Settings/GlobalStack.py +++ b/cura/Settings/GlobalStack.py @@ -3,8 +3,8 @@ from collections import defaultdict import threading -from typing import Any, Dict, Optional, Set, TYPE_CHECKING -from PyQt5.QtCore import pyqtProperty, pyqtSlot +from typing import Any, Dict, Optional, Set, TYPE_CHECKING, List +from PyQt5.QtCore import pyqtProperty, pyqtSlot, pyqtSignal from UM.Decorators import override from UM.MimeTypeDatabase import MimeType, MimeTypeDatabase @@ -42,13 +42,23 @@ class GlobalStack(CuraContainerStack): # Per thread we have our own resolving_settings, or strange things sometimes occur. self._resolving_settings = defaultdict(set) #type: Dict[str, Set[str]] # keys are thread names + extrudersChanged = pyqtSignal() + ## Get the list of extruders of this stack. # # \return The extruders registered with this stack. - @pyqtProperty("QVariantMap") + @pyqtProperty("QVariantMap", notify = extrudersChanged) def extruders(self) -> Dict[str, "ExtruderStack"]: return self._extruders + @pyqtProperty("QVariantList", notify = extrudersChanged) + def extruderList(self) -> List["ExtruderStack"]: + result_tuple_list = sorted(list(self.extruders.items()), key=lambda x: int(x[0])) + result_list = [item[1] for item in result_tuple_list] + + machine_extruder_count = self.getProperty("machine_extruder_count", "value") + return result_list[:machine_extruder_count] + @classmethod def getLoadingPriority(cls) -> int: return 2 @@ -87,6 +97,7 @@ class GlobalStack(CuraContainerStack): return self._extruders[position] = extruder + self.extrudersChanged.emit() Logger.log("i", "Extruder[%s] added to [%s] at position [%s]", extruder.id, self.id, position) ## Overridden from ContainerStack diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index f321ce94a6..dec2524e6b 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -3,6 +3,8 @@ import collections import time +import re +import unicodedata from typing import Any, Callable, List, Dict, TYPE_CHECKING, Optional, cast from UM.ConfigurationErrorMessage import ConfigurationErrorMessage @@ -21,7 +23,7 @@ from UM.Settings.SettingFunction import SettingFunction from UM.Signal import postponeSignals, CompressTechnique from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch -from cura.PrinterOutputDevice import PrinterOutputDevice +from cura.PrinterOutputDevice import PrinterOutputDevice, ConnectionType from cura.PrinterOutput.ConfigurationModel import ConfigurationModel from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel from cura.PrinterOutput.MaterialOutputModel import MaterialOutputModel @@ -62,9 +64,7 @@ class MachineManager(QObject): self._default_extruder_position = "0" # to be updated when extruders are switched on and off - self.machine_extruder_material_update_dict = collections.defaultdict(list) #type: Dict[str, List[Callable[[], None]]] - - self._instance_container_timer = QTimer() #type: QTimer + self._instance_container_timer = QTimer() # type: QTimer self._instance_container_timer.setInterval(250) self._instance_container_timer.setSingleShot(True) self._instance_container_timer.timeout.connect(self.__emitChangedSignals) @@ -74,7 +74,7 @@ class MachineManager(QObject): self._application.globalContainerStackChanged.connect(self._onGlobalContainerChanged) self._container_registry.containerLoadComplete.connect(self._onContainersChanged) - ## When the global container is changed, active material probably needs to be updated. + # When the global container is changed, active material probably needs to be updated. self.globalContainerChanged.connect(self.activeMaterialChanged) self.globalContainerChanged.connect(self.activeVariantChanged) self.globalContainerChanged.connect(self.activeQualityChanged) @@ -86,12 +86,14 @@ class MachineManager(QObject): self._onGlobalContainerChanged() - ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged) + extruder_manager = self._application.getExtruderManager() + + extruder_manager.activeExtruderChanged.connect(self._onActiveExtruderStackChanged) self._onActiveExtruderStackChanged() - ExtruderManager.getInstance().activeExtruderChanged.connect(self.activeMaterialChanged) - ExtruderManager.getInstance().activeExtruderChanged.connect(self.activeVariantChanged) - ExtruderManager.getInstance().activeExtruderChanged.connect(self.activeQualityChanged) + extruder_manager.activeExtruderChanged.connect(self.activeMaterialChanged) + extruder_manager.activeExtruderChanged.connect(self.activeVariantChanged) + extruder_manager.activeExtruderChanged.connect(self.activeQualityChanged) self.globalContainerChanged.connect(self.activeStackChanged) self.globalValueChanged.connect(self.activeStackValueChanged) @@ -115,15 +117,15 @@ class MachineManager(QObject): self._material_incompatible_message = Message(catalog.i18nc("@info:status", "The selected material is incompatible with the selected machine or configuration."), - title = catalog.i18nc("@info:title", "Incompatible Material")) #type: Message + title = catalog.i18nc("@info:title", "Incompatible Material")) # type: Message - containers = CuraContainerRegistry.getInstance().findInstanceContainers(id = self.activeMaterialId) #type: List[InstanceContainer] + containers = CuraContainerRegistry.getInstance().findInstanceContainers(id = self.activeMaterialId) # type: List[InstanceContainer] if containers: containers[0].nameChanged.connect(self._onMaterialNameChanged) - self._material_manager = self._application.getMaterialManager() #type: MaterialManager - self._variant_manager = self._application.getVariantManager() #type: VariantManager - self._quality_manager = self._application.getQualityManager() #type: QualityManager + self._material_manager = self._application.getMaterialManager() # type: MaterialManager + self._variant_manager = self._application.getVariantManager() # type: VariantManager + self._quality_manager = self._application.getQualityManager() # type: QualityManager # When the materials lookup table gets updated, it can mean that a material has its name changed, which should # be reflected on the GUI. This signal emission makes sure that it happens. @@ -156,7 +158,7 @@ class MachineManager(QObject): blurSettings = pyqtSignal() # Emitted to force fields in the advanced sidebar to un-focus, so they update properly outputDevicesChanged = pyqtSignal() - currentConfigurationChanged = pyqtSignal() # Emitted every time the current configurations of the machine changes + currentConfigurationChanged = pyqtSignal() # Emitted every time the current configurations of the machine changes printerConnectedStatusChanged = pyqtSignal() # Emitted every time the active machine change or the outputdevices change rootMaterialChanged = pyqtSignal() @@ -201,7 +203,7 @@ class MachineManager(QObject): extruder_configuration.hotendID = extruder.variant.getName() if extruder.variant != empty_variant_container else None self._current_printer_configuration.extruderConfigurations.append(extruder_configuration) - # an empty build plate configuration from the network printer is presented as an empty string, so use "" for an + # An empty build plate configuration from the network printer is presented as an empty string, so use "" for an # empty build plate. self._current_printer_configuration.buildplateConfiguration = self._global_container_stack.getProperty("machine_buildplate_type", "value") if self._global_container_stack.variant != empty_variant_container else "" self.currentConfigurationChanged.emit() @@ -247,7 +249,7 @@ class MachineManager(QObject): self.updateNumberExtrudersEnabled() self.globalContainerChanged.emit() - # after switching the global stack we reconnect all the signals and set the variant and material references + # After switching the global stack we reconnect all the signals and set the variant and material references if self._global_container_stack: self._application.getPreferences().setValue("cura/active_machine", self._global_container_stack.getId()) @@ -261,7 +263,7 @@ class MachineManager(QObject): if global_variant.getMetaDataEntry("hardware_type") != "buildplate": self._global_container_stack.setVariant(empty_variant_container) - # set the global material to empty as we now use the extruder stack at all times - CURA-4482 + # Set the global material to empty as we now use the extruder stack at all times - CURA-4482 global_material = self._global_container_stack.material if global_material != empty_material_container: self._global_container_stack.setMaterial(empty_material_container) @@ -271,11 +273,6 @@ class MachineManager(QObject): extruder_stack.propertyChanged.connect(self._onPropertyChanged) extruder_stack.containersChanged.connect(self._onContainersChanged) - if self._global_container_stack.getId() in self.machine_extruder_material_update_dict: - for func in self.machine_extruder_material_update_dict[self._global_container_stack.getId()]: - self._application.callLater(func) - del self.machine_extruder_material_update_dict[self._global_container_stack.getId()] - self.activeQualityGroupChanged.emit() def _onActiveExtruderStackChanged(self) -> None: @@ -295,6 +292,7 @@ class MachineManager(QObject): self.activeMaterialChanged.emit() self.rootMaterialChanged.emit() + self.numberExtrudersEnabledChanged.emit() def _onContainersChanged(self, container: ContainerInterface) -> None: self._instance_container_timer.start() @@ -419,7 +417,7 @@ class MachineManager(QObject): # Not a very pretty solution, but the extruder manager doesn't really know how many extruders there are machine_extruder_count = self._global_container_stack.getProperty("machine_extruder_count", "value") extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - count = 1 # we start with the global stack + count = 1 # We start with the global stack for stack in extruder_stacks: md = stack.getMetaData() if "position" in md and int(md["position"]) >= machine_extruder_count: @@ -438,12 +436,12 @@ class MachineManager(QObject): if not self._global_container_stack: return False - if self._global_container_stack.getTop().findInstances(): + if self._global_container_stack.getTop().getNumInstances() != 0: return True stacks = ExtruderManager.getInstance().getActiveExtruderStacks() for stack in stacks: - if stack.getTop().findInstances(): + if stack.getTop().getNumInstances() != 0: return True return False @@ -453,10 +451,10 @@ class MachineManager(QObject): if not self._global_container_stack: return 0 num_user_settings = 0 - num_user_settings += len(self._global_container_stack.getTop().findInstances()) - stacks = ExtruderManager.getInstance().getActiveExtruderStacks() + num_user_settings += self._global_container_stack.getTop().getNumInstances() + stacks = self._global_container_stack.extruderList for stack in stacks: - num_user_settings += len(stack.getTop().findInstances()) + num_user_settings += stack.getTop().getNumInstances() return num_user_settings ## Delete a user setting from the global stack and all extruder stacks. @@ -519,7 +517,13 @@ class MachineManager(QObject): def printerConnected(self): return bool(self._printer_output_devices) - @pyqtProperty(str, notify = printerConnectedStatusChanged) + @pyqtProperty(bool, notify = printerConnectedStatusChanged) + def activeMachineHasRemoteConnection(self) -> bool: + if self._global_container_stack: + connection_type = int(self._global_container_stack.getMetaDataEntry("connection_type", ConnectionType.NotConnected.value)) + return connection_type in [ConnectionType.NetworkConnection.value, ConnectionType.CloudConnection.value] + return False + def activeMachineNetworkKey(self) -> str: if self._global_container_stack: return self._global_container_stack.getMetaDataEntry("um_network_key", "") @@ -616,6 +620,14 @@ class MachineManager(QObject): is_supported = self._current_quality_group.is_available return is_supported + @pyqtProperty(bool, notify = activeQualityGroupChanged) + def isActiveQualityExperimental(self) -> bool: + is_experimental = False + if self._global_container_stack: + if self._current_quality_group: + is_experimental = self._current_quality_group.is_experimental + return is_experimental + ## Returns whether there is anything unsupported in the current set-up. # # The current set-up signifies the global stack and all extruder stacks, @@ -646,7 +658,7 @@ class MachineManager(QObject): new_value = self._active_container_stack.getProperty(key, "value") extruder_stacks = [stack for stack in ExtruderManager.getInstance().getActiveExtruderStacks()] - # check in which stack the value has to be replaced + # Check in which stack the value has to be replaced for extruder_stack in extruder_stacks: if extruder_stack != self._active_container_stack and extruder_stack.getProperty(key, "value") != new_value: extruder_stack.userChanges.setProperty(key, "value", new_value) # TODO: nested property access, should be improved @@ -662,7 +674,7 @@ class MachineManager(QObject): for key in self._active_container_stack.userChanges.getAllKeys(): new_value = self._active_container_stack.getProperty(key, "value") - # check if the value has to be replaced + # Check if the value has to be replaced extruder_stack.userChanges.setProperty(key, "value", new_value) @pyqtProperty(str, notify = activeVariantChanged) @@ -731,7 +743,7 @@ class MachineManager(QObject): # If the machine that is being removed is the currently active machine, set another machine as the active machine. activate_new_machine = (self._global_container_stack and self._global_container_stack.getId() == machine_id) - # activate a new machine before removing a machine because this is safer + # Activate a new machine before removing a machine because this is safer if activate_new_machine: machine_stacks = CuraContainerRegistry.getInstance().findContainerStacksMetadata(type = "machine") other_machine_stacks = [s for s in machine_stacks if s["id"] != machine_id] @@ -739,7 +751,7 @@ class MachineManager(QObject): self.setActiveMachine(other_machine_stacks[0]["id"]) metadata = CuraContainerRegistry.getInstance().findContainerStacksMetadata(id = machine_id)[0] - network_key = metadata["um_network_key"] if "um_network_key" in metadata else None + network_key = metadata.get("um_network_key", None) ExtruderManager.getInstance().removeMachineExtruders(machine_id) containers = CuraContainerRegistry.getInstance().findInstanceContainersMetadata(type = "user", machine = machine_id) for container in containers: @@ -864,7 +876,7 @@ class MachineManager(QObject): caution_message = Message(catalog.i18nc( "@info:generic", "Settings have been changed to match the current availability of extruders: [%s]" % ", ".join(add_user_changes)), - lifetime=0, + lifetime = 0, title = catalog.i18nc("@info:title", "Settings updated")) caution_message.show() @@ -909,21 +921,18 @@ class MachineManager(QObject): # After CURA-4482 this should not be the case anymore, but we still want to support older project files. global_user_container = self._global_container_stack.userChanges - # Make sure extruder_stacks exists - extruder_stacks = [] #type: List[ExtruderStack] - - if previous_extruder_count == 1: - extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - global_user_container = self._global_container_stack.userChanges - for setting_instance in global_user_container.findInstances(): setting_key = setting_instance.definition.key settable_per_extruder = self._global_container_stack.getProperty(setting_key, "settable_per_extruder") if settable_per_extruder: limit_to_extruder = int(self._global_container_stack.getProperty(setting_key, "limit_to_extruder")) - extruder_stack = extruder_stacks[max(0, limit_to_extruder)] - extruder_stack.userChanges.setProperty(setting_key, "value", global_user_container.getProperty(setting_key, "value")) + extruder_position = max(0, limit_to_extruder) + extruder_stack = self.getExtruder(extruder_position) + if extruder_stack: + extruder_stack.userChanges.setProperty(setting_key, "value", global_user_container.getProperty(setting_key, "value")) + else: + Logger.log("e", "Unable to find extruder on position %s", extruder_position) global_user_container.removeInstance(setting_key) # Signal that the global stack has changed @@ -932,10 +941,9 @@ class MachineManager(QObject): @pyqtSlot(int, result = QObject) def getExtruder(self, position: int) -> Optional[ExtruderStack]: - extruder = None if self._global_container_stack: - extruder = self._global_container_stack.extruders.get(str(position)) - return extruder + return self._global_container_stack.extruders.get(str(position)) + return None def updateDefaultExtruder(self) -> None: if self._global_container_stack is None: @@ -1001,12 +1009,12 @@ class MachineManager(QObject): if not enabled and position == ExtruderManager.getInstance().activeExtruderIndex: ExtruderManager.getInstance().setActiveExtruderIndex(int(self._default_extruder_position)) - # ensure that the quality profile is compatible with current combination, or choose a compatible one if available + # Ensure that the quality profile is compatible with current combination, or choose a compatible one if available self._updateQualityWithMaterial() self.extruderChanged.emit() - # update material compatibility color + # Update material compatibility color self.activeQualityGroupChanged.emit() - # update items in SettingExtruder + # Update items in SettingExtruder ExtruderManager.getInstance().extrudersChanged.emit(self._global_container_stack.getId()) # Make sure the front end reflects changes self.forceUpdateAllSettings() @@ -1080,7 +1088,6 @@ class MachineManager(QObject): return result - # # Sets all quality and quality_changes containers to empty_quality and empty_quality_changes containers # for all stacks in the currently active machine. # @@ -1139,7 +1146,7 @@ class MachineManager(QObject): def _setQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup") -> None: if self._global_container_stack is None: - return #Can't change that. + return # Can't change that. quality_type = quality_changes_group.quality_type # A custom quality can be created based on "not supported". # In that case, do not set quality containers to empty. @@ -1209,7 +1216,7 @@ class MachineManager(QObject): self.rootMaterialChanged.emit() def activeMaterialsCompatible(self) -> bool: - # check material - variant compatibility + # Check material - variant compatibility if self._global_container_stack is not None: if Util.parseBool(self._global_container_stack.getMetaDataEntry("has_materials", False)): for position, extruder in self._global_container_stack.extruders.items(): @@ -1310,17 +1317,18 @@ class MachineManager(QObject): # Get the definition id corresponding to this machine name machine_definition_id = CuraContainerRegistry.getInstance().findDefinitionContainers(name = machine_name)[0].getId() # Try to find a machine with the same network key - new_machine = self.getMachine(machine_definition_id, metadata_filter = {"um_network_key": self.activeMachineNetworkKey}) + new_machine = self.getMachine(machine_definition_id, metadata_filter = {"um_network_key": self.activeMachineNetworkKey()}) # If there is no machine, then create a new one and set it to the non-hidden instance if not new_machine: new_machine = CuraStackBuilder.createMachine(machine_definition_id + "_sync", machine_definition_id) if not new_machine: return - new_machine.setMetaDataEntry("um_network_key", self.activeMachineNetworkKey) + new_machine.setMetaDataEntry("um_network_key", self.activeMachineNetworkKey()) new_machine.setMetaDataEntry("connect_group_name", self.activeMachineNetworkGroupName) new_machine.setMetaDataEntry("hidden", False) + new_machine.setMetaDataEntry("connection_type", self._global_container_stack.getMetaDataEntry("connection_type")) else: - Logger.log("i", "Found a %s with the key %s. Let's use it!", machine_name, self.activeMachineNetworkKey) + Logger.log("i", "Found a %s with the key %s. Let's use it!", machine_name, self.activeMachineNetworkKey()) new_machine.setMetaDataEntry("hidden", False) # Set the current printer instance to hidden (the metadata entry must exist) @@ -1380,10 +1388,10 @@ class MachineManager(QObject): # After updating from 3.2 to 3.3 some group names may be temporary. If there is a mismatch in the name of the group # then all the container stacks are updated, both the current and the hidden ones. def checkCorrectGroupName(self, device_id: str, group_name: str) -> None: - if self._global_container_stack and device_id == self.activeMachineNetworkKey: + if self._global_container_stack and device_id == self.activeMachineNetworkKey(): # Check if the connect_group_name is correct. If not, update all the containers connected to the same printer if self.activeMachineNetworkGroupName != group_name: - metadata_filter = {"um_network_key": self.activeMachineNetworkKey} + metadata_filter = {"um_network_key": self.activeMachineNetworkKey()} containers = CuraContainerRegistry.getInstance().findContainerStacks(type = "machine", **metadata_filter) for container in containers: container.setMetaDataEntry("connect_group_name", group_name) @@ -1419,7 +1427,7 @@ class MachineManager(QObject): material_diameter, root_material_id) self.setMaterial(position, material_node) - ## global_stack: if you want to provide your own global_stack instead of the current active one + ## Global_stack: if you want to provide your own global_stack instead of the current active one # if you update an active machine, special measures have to be taken. @pyqtSlot(str, "QVariant") def setMaterial(self, position: str, container_node, global_stack: Optional["GlobalStack"] = None) -> None: @@ -1522,6 +1530,10 @@ class MachineManager(QObject): def activeQualityChangesGroup(self) -> Optional["QualityChangesGroup"]: return self._current_quality_changes_group + @pyqtProperty(bool, notify = activeQualityChangesGroupChanged) + def hasCustomQuality(self) -> bool: + return self._current_quality_changes_group is not None + @pyqtProperty(str, notify = activeQualityGroupChanged) def activeQualityOrQualityChangesName(self) -> str: name = empty_quality_container.getName() @@ -1531,9 +1543,32 @@ class MachineManager(QObject): name = self._current_quality_group.name return name + @pyqtProperty(bool, notify = activeQualityGroupChanged) + def hasNotSupportedQuality(self) -> bool: + return self._current_quality_group is None and self._current_quality_changes_group is None + def _updateUponMaterialMetadataChange(self) -> None: if self._global_container_stack is None: return with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): self.updateMaterialWithVariant(None) self._updateQualityWithMaterial() + + ## This function will translate any printer type name to an abbreviated printer type name + @pyqtSlot(str, result = str) + def getAbbreviatedMachineName(self, machine_type_name: str) -> str: + abbr_machine = "" + for word in re.findall(r"[\w']+", machine_type_name): + if word.lower() == "ultimaker": + abbr_machine += "UM" + elif word.isdigit(): + abbr_machine += word + else: + stripped_word = "".join(char for char in unicodedata.normalize("NFD", word.upper()) if unicodedata.category(char) != "Mn") + # - use only the first character if the word is too long (> 3 characters) + # - use the whole word if it's not too long (<= 3 characters) + if len(stripped_word) > 3: + stripped_word = stripped_word[0] + abbr_machine += stripped_word + + return abbr_machine diff --git a/cura/Settings/SimpleModeSettingsManager.py b/cura/Settings/SimpleModeSettingsManager.py index fce43243bd..b1896a9205 100644 --- a/cura/Settings/SimpleModeSettingsManager.py +++ b/cura/Settings/SimpleModeSettingsManager.py @@ -1,7 +1,8 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Set -from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty +from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty, pyqtSlot from UM.Application import Application @@ -16,15 +17,11 @@ class SimpleModeSettingsManager(QObject): self._is_profile_user_created = False # True when profile was custom created by user self._machine_manager.activeStackValueChanged.connect(self._updateIsProfileCustomized) - self._machine_manager.activeQualityGroupChanged.connect(self._updateIsProfileUserCreated) - self._machine_manager.activeQualityChangesGroupChanged.connect(self._updateIsProfileUserCreated) # update on create as the activeQualityChanged signal is emitted before this manager is created when Cura starts self._updateIsProfileCustomized() - self._updateIsProfileUserCreated() isProfileCustomizedChanged = pyqtSignal() - isProfileUserCreatedChanged = pyqtSignal() @pyqtProperty(bool, notify = isProfileCustomizedChanged) def isProfileCustomized(self): @@ -57,33 +54,6 @@ class SimpleModeSettingsManager(QObject): self._is_profile_customized = has_customized_user_settings self.isProfileCustomizedChanged.emit() - @pyqtProperty(bool, notify = isProfileUserCreatedChanged) - def isProfileUserCreated(self): - return self._is_profile_user_created - - def _updateIsProfileUserCreated(self): - quality_changes_keys = set() - - if not self._machine_manager.activeMachine: - return False - - global_stack = self._machine_manager.activeMachine - - # check quality changes settings in the global stack - quality_changes_keys.update(global_stack.qualityChanges.getAllKeys()) - - # check quality changes settings in the extruder stacks - if global_stack.extruders: - for extruder_stack in global_stack.extruders.values(): - quality_changes_keys.update(extruder_stack.qualityChanges.getAllKeys()) - - # check if the qualityChanges container is not empty (meaning it is a user created profile) - has_quality_changes = len(quality_changes_keys) > 0 - - if has_quality_changes != self._is_profile_user_created: - self._is_profile_user_created = has_quality_changes - self.isProfileUserCreatedChanged.emit() - # These are the settings included in the Simple ("Recommended") Mode, so only when the other settings have been # changed, we consider it as a user customized profile in the Simple ("Recommended") Mode. __ignored_custom_setting_keys = ["support_enable", diff --git a/cura/Stages/CuraStage.py b/cura/Stages/CuraStage.py index b2f6d61799..844b0d0768 100644 --- a/cura/Stages/CuraStage.py +++ b/cura/Stages/CuraStage.py @@ -1,23 +1,29 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. + from PyQt5.QtCore import pyqtProperty, QUrl from UM.Stage import Stage +# Since Cura has a few pre-defined "space claims" for the locations of certain components, we've provided some structure +# to indicate this. +# * The StageMenuComponent is the horizontal area below the stage bar. This should be used to show stage specific +# buttons and elements. This component will be drawn over the bar & main component. +# * The MainComponent is the component that will be drawn starting from the bottom of the stageBar and fills the rest +# of the screen. class CuraStage(Stage): - - def __init__(self, parent = None): + def __init__(self, parent = None) -> None: super().__init__(parent) @pyqtProperty(str, constant = True) - def stageId(self): + def stageId(self) -> str: return self.getPluginId() @pyqtProperty(QUrl, constant = True) - def mainComponent(self): + def mainComponent(self) -> QUrl: return self.getDisplayComponent("main") @pyqtProperty(QUrl, constant = True) - def sidebarComponent(self): - return self.getDisplayComponent("sidebar") + def stageMenuComponent(self) -> QUrl: + return self.getDisplayComponent("menu") \ No newline at end of file diff --git a/cura_app.py b/cura_app.py index 164e32e738..8df12d771a 100755 --- a/cura_app.py +++ b/cura_app.py @@ -17,12 +17,6 @@ parser.add_argument("--debug", default = False, help = "Turn on the debug mode by setting this option." ) -parser.add_argument("--trigger-early-crash", - dest = "trigger_early_crash", - action = "store_true", - default = False, - help = "FOR TESTING ONLY. Trigger an early crash to show the crash dialog." - ) known_args = vars(parser.parse_known_args()[0]) if not known_args["debug"]: diff --git a/installer.nsi b/installer.nsi deleted file mode 100644 index 7516f733a1..0000000000 --- a/installer.nsi +++ /dev/null @@ -1,156 +0,0 @@ -!ifndef VERSION - !define VERSION '15.09.80' -!endif - -; The name of the installer -Name "Cura ${VERSION}" - -; The file to write -OutFile "Cura_${VERSION}.exe" - -; The default installation directory -InstallDir $PROGRAMFILES\Cura_${VERSION} - -; Registry key to check for directory (so if you install again, it will -; overwrite the old one automatically) -InstallDirRegKey HKLM "Software\Cura_${VERSION}" "Install_Dir" - -; Request application privileges for Windows Vista -RequestExecutionLevel admin - -; Set the LZMA compressor to reduce size. -SetCompressor /SOLID lzma -;-------------------------------- - -!include "MUI2.nsh" -!include "Library.nsh" - -; !define MUI_ICON "dist/resources/cura.ico" -!define MUI_BGCOLOR FFFFFF - -; Directory page defines -!define MUI_DIRECTORYPAGE_VERIFYONLEAVE - -; Header -; Don't show the component description box -!define MUI_COMPONENTSPAGE_NODESC - -;Do not leave (Un)Installer page automaticly -!define MUI_FINISHPAGE_NOAUTOCLOSE -!define MUI_UNFINISHPAGE_NOAUTOCLOSE - -;Run Cura after installing -!define MUI_FINISHPAGE_RUN -!define MUI_FINISHPAGE_RUN_TEXT "Start Cura ${VERSION}" -!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink" - -;Add an option to show release notes -!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\plugins\ChangeLogPlugin\changelog.txt" - -; Pages -;!insertmacro MUI_PAGE_WELCOME -!insertmacro MUI_PAGE_DIRECTORY -!insertmacro MUI_PAGE_COMPONENTS -!insertmacro MUI_PAGE_INSTFILES -!insertmacro MUI_PAGE_FINISH -!insertmacro MUI_UNPAGE_CONFIRM -!insertmacro MUI_UNPAGE_INSTFILES -!insertmacro MUI_UNPAGE_FINISH - -; Languages -!insertmacro MUI_LANGUAGE "English" - -; Reserve Files -!insertmacro MUI_RESERVEFILE_LANGDLL -ReserveFile '${NSISDIR}\Plugins\InstallOptions.dll' - -;-------------------------------- - -; The stuff to install -Section "Cura ${VERSION}" - - SectionIn RO - - ; Set output path to the installation directory. - SetOutPath $INSTDIR - - ; Put file there - File /r "dist\" - - ; Write the installation path into the registry - WriteRegStr HKLM "SOFTWARE\Cura_${VERSION}" "Install_Dir" "$INSTDIR" - - ; Write the uninstall keys for Windows - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cura_${VERSION}" "DisplayName" "Cura ${VERSION}" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cura_${VERSION}" "UninstallString" '"$INSTDIR\uninstall.exe"' - WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cura_${VERSION}" "NoModify" 1 - WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cura_${VERSION}" "NoRepair" 1 - WriteUninstaller "uninstall.exe" - - ; Write start menu entries for all users - SetShellVarContext all - - CreateDirectory "$SMPROGRAMS\Cura ${VERSION}" - CreateShortCut "$SMPROGRAMS\Cura ${VERSION}\Uninstall Cura ${VERSION}.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 - CreateShortCut "$SMPROGRAMS\Cura ${VERSION}\Cura ${VERSION}.lnk" "$INSTDIR\Cura.exe" '' "$INSTDIR\Cura.exe" 0 - -SectionEnd - -Function LaunchLink - ; Write start menu entries for all users - SetShellVarContext all - Exec '"$WINDIR\explorer.exe" "$SMPROGRAMS\Cura ${VERSION}\Cura ${VERSION}.lnk"' -FunctionEnd - -Section "Install Visual Studio 2010 Redistributable" - SetOutPath "$INSTDIR" - File "vcredist_2010_20110908_x86.exe" - - IfSilent +2 - ExecWait '"$INSTDIR\vcredist_2010_20110908_x86.exe" /q /norestart' - -SectionEnd - -Section "Install Arduino Drivers" - ; Set output path to the driver directory. - SetOutPath "$INSTDIR\drivers\" - File /r "drivers\" - - ${If} ${RunningX64} - IfSilent +2 - ExecWait '"$INSTDIR\drivers\dpinst64.exe" /lm' - ${Else} - IfSilent +2 - ExecWait '"$INSTDIR\drivers\dpinst32.exe" /lm' - ${EndIf} -SectionEnd - -Section "Open STL files with Cura" - ${registerExtension} "$INSTDIR\Cura.exe" ".stl" "STL_File" -SectionEnd - -Section /o "Open OBJ files with Cura" - WriteRegStr HKCR .obj "" "Cura OBJ model file" - DeleteRegValue HKCR .obj "Content Type" - WriteRegStr HKCR "Cura OBJ model file\DefaultIcon" "" "$INSTDIR\Cura.exe,0" - WriteRegStr HKCR "Cura OBJ model file\shell" "" "open" - WriteRegStr HKCR "Cura OBJ model file\shell\open\command" "" '"$INSTDIR\Cura.exe" "%1"' -SectionEnd - -;-------------------------------- - -; Uninstaller - -Section "Uninstall" - - ; Remove registry keys - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cura_${VERSION}" - DeleteRegKey HKLM "SOFTWARE\Cura_${VERSION}" - - ; Write start menu entries for all users - SetShellVarContext all - ; Remove directories used - RMDir /r "$SMPROGRAMS\Cura ${VERSION}" - RMDir /r "$INSTDIR" - -SectionEnd diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index e994e1a817..55296979b5 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -298,7 +298,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): values = parser["values"] if parser.has_section("values") else dict() num_settings_overriden_by_quality_changes += len(values) # Check if quality changes already exists. - quality_changes = self._container_registry.findInstanceContainers(id = container_id) + quality_changes = self._container_registry.findInstanceContainers(name = custom_quality_name, + type = "quality_changes") if quality_changes: containers_found_dict["quality_changes"] = True # Check if there really is a conflict by comparing the values @@ -793,7 +794,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Clear all existing containers quality_changes_info.global_info.container.clear() for container_info in quality_changes_info.extruder_info_dict.values(): - container_info.container.clear() + if container_info.container: + container_info.container.clear() # Loop over everything and override the existing containers global_info = quality_changes_info.global_info diff --git a/plugins/3MFReader/plugin.json b/plugins/3MFReader/plugin.json index 5e41975752..5af21a7033 100644 --- a/plugins/3MFReader/plugin.json +++ b/plugins/3MFReader/plugin.json @@ -1,8 +1,8 @@ { "name": "3MF Reader", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides support for reading 3MF files.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/3MFWriter/plugin.json b/plugins/3MFWriter/plugin.json index 9ec4fb0c20..3820ebd2e7 100644 --- a/plugins/3MFWriter/plugin.json +++ b/plugins/3MFWriter/plugin.json @@ -1,8 +1,8 @@ { "name": "3MF Writer", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides support for writing 3MF files.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/ChangeLogPlugin/ChangeLog.py b/plugins/ChangeLogPlugin/ChangeLog.py index 723c83a021..eeec5edf9b 100644 --- a/plugins/ChangeLogPlugin/ChangeLog.py +++ b/plugins/ChangeLogPlugin/ChangeLog.py @@ -1,4 +1,4 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from UM.i18n import i18nCatalog @@ -29,6 +29,7 @@ class ChangeLog(Extension, QObject,): self._change_logs = None Application.getInstance().engineCreatedSignal.connect(self._onEngineCreated) Application.getInstance().getPreferences().addPreference("general/latest_version_changelog_shown", "2.0.0") #First version of CURA with uranium + self.setMenuName(catalog.i18nc("@item:inmenu", "Changelog")) self.addMenuItem(catalog.i18nc("@item:inmenu", "Show Changelog"), self.showChangelog) def getChangeLogs(self): diff --git a/plugins/ChangeLogPlugin/ChangeLog.txt b/plugins/ChangeLogPlugin/ChangeLog.txt index 266442473c..7e5cf2dd3b 100755 --- a/plugins/ChangeLogPlugin/ChangeLog.txt +++ b/plugins/ChangeLogPlugin/ChangeLog.txt @@ -11,8 +11,8 @@ It is now possible to specify the cooling fan to use if your printer has multipl *Settings refactor The CuraEngine has been refactored to create a more testable, future-proof way of storing and representing settings. This makes slicing faster, and future development easier. -*Print core CC Red 0.6 -The new print core CC Red 0.6 is selectable when the Ultimaker S5 profile is active. This print core is optimized for use with abrasive materials and composites. +*Print core CC 0.6 +The new print core CC 0.6 is selectable when the Ultimaker S5 profile is active. This print core is optimized for use with abrasive materials and composites. *File name and layer display Added M117 commands to GCODE to give real-time information about the print job file name and layer number shown on the printer’s display when printing via USB. Contributed by adecastilho. diff --git a/plugins/ChangeLogPlugin/plugin.json b/plugins/ChangeLogPlugin/plugin.json index e09a08564a..92041d1543 100644 --- a/plugins/ChangeLogPlugin/plugin.json +++ b/plugins/ChangeLogPlugin/plugin.json @@ -1,8 +1,8 @@ { "name": "Changelog", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Shows changes since latest checked version.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 58bc74f3f1..f12a5b1222 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -86,8 +86,8 @@ class CuraEngineBackend(QObject, Backend): self._layer_view_active = False #type: bool self._onActiveViewChanged() - self._stored_layer_data = [] #type: List[Arcus.PythonMessage] - self._stored_optimized_layer_data = {} #type: Dict[int, List[Arcus.PythonMessage]] # key is build plate number, then arrays are stored until they go to the ProcessSlicesLayersJob + self._stored_layer_data = [] # type: List[Arcus.PythonMessage] + self._stored_optimized_layer_data = {} # type: Dict[int, List[Arcus.PythonMessage]] # key is build plate number, then arrays are stored until they go to the ProcessSlicesLayersJob self._scene = self._application.getController().getScene() #type: Scene self._scene.sceneChanged.connect(self._onSceneChanged) @@ -203,7 +203,7 @@ class CuraEngineBackend(QObject, Backend): @pyqtSlot() def stopSlicing(self) -> None: - self.backendStateChange.emit(BackendState.NotStarted) + self.setState(BackendState.NotStarted) if self._slicing: # We were already slicing. Stop the old job. self._terminate() self._createSocket() @@ -229,6 +229,7 @@ class CuraEngineBackend(QObject, Backend): if not self._build_plates_to_be_sliced: self.processingProgress.emit(1.0) Logger.log("w", "Slice unnecessary, nothing has changed that needs reslicing.") + self.setState(BackendState.Done) return if self._process_layers_job: @@ -245,7 +246,7 @@ class CuraEngineBackend(QObject, Backend): num_objects = self._numObjectsPerBuildPlate() self._stored_layer_data = [] - self._stored_optimized_layer_data[build_plate_to_be_sliced] = [] + if build_plate_to_be_sliced not in num_objects or num_objects[build_plate_to_be_sliced] == 0: self._scene.gcode_dict[build_plate_to_be_sliced] = [] #type: ignore #Because we created this attribute above. @@ -253,7 +254,7 @@ class CuraEngineBackend(QObject, Backend): if self._build_plates_to_be_sliced: self.slice() return - + self._stored_optimized_layer_data[build_plate_to_be_sliced] = [] if self._application.getPrintInformation() and build_plate_to_be_sliced == active_build_plate: self._application.getPrintInformation().setToZeroPrintInformation(build_plate_to_be_sliced) @@ -322,7 +323,7 @@ class CuraEngineBackend(QObject, Backend): self._start_slice_job = None if job.isCancelled() or job.getError() or job.getResult() == StartJobResult.Error: - self.backendStateChange.emit(BackendState.Error) + self.setState(BackendState.Error) self.backendError.emit(job) return @@ -331,10 +332,10 @@ class CuraEngineBackend(QObject, Backend): self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice with the current material as it is incompatible with the selected machine or configuration."), title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() - self.backendStateChange.emit(BackendState.Error) + self.setState(BackendState.Error) self.backendError.emit(job) else: - self.backendStateChange.emit(BackendState.NotStarted) + self.setState(BackendState.NotStarted) return if job.getResult() == StartJobResult.SettingError: @@ -362,10 +363,10 @@ class CuraEngineBackend(QObject, Backend): self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice with the current settings. The following settings have errors: {0}").format(", ".join(error_labels)), title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() - self.backendStateChange.emit(BackendState.Error) + self.setState(BackendState.Error) self.backendError.emit(job) else: - self.backendStateChange.emit(BackendState.NotStarted) + self.setState(BackendState.NotStarted) return elif job.getResult() == StartJobResult.ObjectSettingError: @@ -386,7 +387,7 @@ class CuraEngineBackend(QObject, Backend): self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}").format(error_labels = ", ".join(errors.values())), title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() - self.backendStateChange.emit(BackendState.Error) + self.setState(BackendState.Error) self.backendError.emit(job) return @@ -395,28 +396,28 @@ class CuraEngineBackend(QObject, Backend): self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice because the prime tower or prime position(s) are invalid."), title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() - self.backendStateChange.emit(BackendState.Error) + self.setState(BackendState.Error) self.backendError.emit(job) else: - self.backendStateChange.emit(BackendState.NotStarted) + self.setState(BackendState.NotStarted) if job.getResult() == StartJobResult.ObjectsWithDisabledExtruder: self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice because there are objects associated with disabled Extruder %s." % job.getMessage()), title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() - self.backendStateChange.emit(BackendState.Error) + self.setState(BackendState.Error) self.backendError.emit(job) return if job.getResult() == StartJobResult.NothingToSlice: if self._application.platformActivity: - self._error_message = Message(catalog.i18nc("@info:status", "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit."), + self._error_message = Message(catalog.i18nc("@info:status", "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder."), title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() - self.backendStateChange.emit(BackendState.Error) + self.setState(BackendState.Error) self.backendError.emit(job) else: - self.backendStateChange.emit(BackendState.NotStarted) + self.setState(BackendState.NotStarted) self._invokeSlice() return @@ -424,7 +425,7 @@ class CuraEngineBackend(QObject, Backend): self._socket.sendMessage(job.getSliceMessage()) # Notify the user that it's now up to the backend to do it's job - self.backendStateChange.emit(BackendState.Processing) + self.setState(BackendState.Processing) if self._slice_start_time: Logger.log("d", "Sending slice message took %s seconds", time() - self._slice_start_time ) @@ -442,7 +443,7 @@ class CuraEngineBackend(QObject, Backend): for node in DepthFirstIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. if node.callDecoration("isBlockSlicing"): enable_timer = False - self.backendStateChange.emit(BackendState.Disabled) + self.setState(BackendState.Disabled) self._is_disabled = True gcode_list = node.callDecoration("getGCodeList") if gcode_list is not None: @@ -451,7 +452,7 @@ class CuraEngineBackend(QObject, Backend): if self._use_timer == enable_timer: return self._use_timer if enable_timer: - self.backendStateChange.emit(BackendState.NotStarted) + self.setState(BackendState.NotStarted) self.enableTimer() return True else: @@ -518,7 +519,7 @@ class CuraEngineBackend(QObject, Backend): self._build_plates_to_be_sliced.append(build_plate_number) self.printDurationMessage.emit(source_build_plate_number, {}, []) self.processingProgress.emit(0.0) - self.backendStateChange.emit(BackendState.NotStarted) + self.setState(BackendState.NotStarted) # if not self._use_timer: # With manually having to slice, we want to clear the old invalid layer data. self._clearLayerData(build_plate_changed) @@ -567,7 +568,7 @@ class CuraEngineBackend(QObject, Backend): self.stopSlicing() self.markSliceAll() self.processingProgress.emit(0.0) - self.backendStateChange.emit(BackendState.NotStarted) + self.setState(BackendState.NotStarted) if not self._use_timer: # With manually having to slice, we want to clear the old invalid layer data. self._clearLayerData() @@ -613,7 +614,7 @@ class CuraEngineBackend(QObject, Backend): # \param message The protobuf message containing the slicing progress. def _onProgressMessage(self, message: Arcus.PythonMessage) -> None: self.processingProgress.emit(message.amount) - self.backendStateChange.emit(BackendState.Processing) + self.setState(BackendState.Processing) def _invokeSlice(self) -> None: if self._use_timer: @@ -632,7 +633,7 @@ class CuraEngineBackend(QObject, Backend): # # \param message The protobuf message signalling that slicing is finished. def _onSlicingFinishedMessage(self, message: Arcus.PythonMessage) -> None: - self.backendStateChange.emit(BackendState.Done) + self.setState(BackendState.Done) self.processingProgress.emit(1.0) gcode_list = self._scene.gcode_dict[self._start_slice_job_build_plate] #type: ignore #Because we generate this attribute dynamically. diff --git a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py index 594bf3a43e..71c96880e8 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py @@ -195,7 +195,7 @@ class ProcessSlicedLayersJob(Job): if extruders: material_color_map = numpy.zeros((len(extruders), 4), dtype=numpy.float32) for extruder in extruders: - position = int(extruder.getMetaDataEntry("position", default="0")) # Get the position + position = int(extruder.getMetaDataEntry("position", default = "0")) try: default_color = ExtrudersModel.defaultColors[position] except IndexError: diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 79b1e5249c..d3882a1209 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -66,11 +66,19 @@ class GcodeStartEndFormatter(Formatter): return "{" + key + "}" key = key_fragments[0] - try: - return kwargs[str(extruder_nr)][key] - except KeyError: + + default_value_str = "{" + key + "}" + value = default_value_str + # "-1" is global stack, and if the setting value exists in the global stack, use it as the fallback value. + if key in kwargs["-1"]: + value = kwargs["-1"] + if str(extruder_nr) in kwargs and key in kwargs[str(extruder_nr)]: + value = kwargs[str(extruder_nr)][key] + + if value == default_value_str: Logger.log("w", "Unable to replace '%s' placeholder in start/end g-code", key) - return "{" + key + "}" + + return value ## Job class that builds up the message of scene data to send to CuraEngine. @@ -315,7 +323,7 @@ class StartSliceJob(Job): value = stack.getProperty(key, "value") result[key] = value Job.yieldThread() - + result["print_bed_temperature"] = result["material_bed_temperature"] # Renamed settings. result["print_temperature"] = result["material_print_temperature"] result["time"] = time.strftime("%H:%M:%S") #Some extra settings. diff --git a/plugins/CuraEngineBackend/plugin.json b/plugins/CuraEngineBackend/plugin.json index 111698d8d1..28f0e294e7 100644 --- a/plugins/CuraEngineBackend/plugin.json +++ b/plugins/CuraEngineBackend/plugin.json @@ -2,7 +2,7 @@ "name": "CuraEngine Backend", "author": "Ultimaker B.V.", "description": "Provides the link to the CuraEngine slicing backend.", - "api": 5, - "version": "1.0.0", + "api": "6.0", + "version": "1.0.1", "i18n-catalog": "cura" } diff --git a/plugins/CuraProfileReader/plugin.json b/plugins/CuraProfileReader/plugin.json index 66a2a6a56b..169fb43360 100644 --- a/plugins/CuraProfileReader/plugin.json +++ b/plugins/CuraProfileReader/plugin.json @@ -1,8 +1,8 @@ { "name": "Cura Profile Reader", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides support for importing Cura profiles.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/CuraProfileWriter/plugin.json b/plugins/CuraProfileWriter/plugin.json index 16c8c34152..9627c754d7 100644 --- a/plugins/CuraProfileWriter/plugin.json +++ b/plugins/CuraProfileWriter/plugin.json @@ -1,8 +1,8 @@ { "name": "Cura Profile Writer", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides support for exporting Cura profiles.", - "api": 5, + "api": "6.0", "i18n-catalog":"cura" } diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index 4c60b95824..9efd3e956a 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -93,6 +93,11 @@ class FirmwareUpdateCheckerJob(Job): current_version = self.getCurrentVersion() + # This case indicates that was an error checking the version. + # It happens for instance when not connected to internet. + if current_version == self.ZERO_VERSION: + return + # If it is the first time the version is checked, the checked_version is "" setting_key_str = getSettingsKeyForMachine(machine_id) checked_version = Version(Application.getInstance().getPreferences().getValue(setting_key_str)) diff --git a/plugins/FirmwareUpdateChecker/plugin.json b/plugins/FirmwareUpdateChecker/plugin.json index cbbd41e420..6c55d77fd8 100644 --- a/plugins/FirmwareUpdateChecker/plugin.json +++ b/plugins/FirmwareUpdateChecker/plugin.json @@ -1,8 +1,8 @@ { "name": "Firmware Update Checker", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Checks for firmware updates.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml b/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml index 9a56dbb20a..b5b6c15f50 100644 --- a/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml +++ b/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml @@ -22,7 +22,7 @@ Cura.MachineAction { id: firmwareUpdaterMachineAction anchors.fill: parent; - UM.I18nCatalog { id: catalog; name:"cura"} + UM.I18nCatalog { id: catalog; name: "cura"} spacing: UM.Theme.getSize("default_margin").height Label diff --git a/plugins/FirmwareUpdater/plugin.json b/plugins/FirmwareUpdater/plugin.json index 3e09eab2b5..c1034e5e42 100644 --- a/plugins/FirmwareUpdater/plugin.json +++ b/plugins/FirmwareUpdater/plugin.json @@ -1,8 +1,8 @@ { "name": "Firmware Updater", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides a machine actions for updating firmware.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeGzReader/plugin.json b/plugins/GCodeGzReader/plugin.json index 3bd6a4097d..d4f281682f 100644 --- a/plugins/GCodeGzReader/plugin.json +++ b/plugins/GCodeGzReader/plugin.json @@ -1,8 +1,8 @@ { "name": "Compressed G-code Reader", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Reads g-code from a compressed archive.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeGzWriter/plugin.json b/plugins/GCodeGzWriter/plugin.json index 4c6497317b..b0e6f8d605 100644 --- a/plugins/GCodeGzWriter/plugin.json +++ b/plugins/GCodeGzWriter/plugin.json @@ -1,8 +1,8 @@ { "name": "Compressed G-code Writer", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Writes g-code to a compressed archive.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeProfileReader/plugin.json b/plugins/GCodeProfileReader/plugin.json index 9677628c85..af1c2d1827 100644 --- a/plugins/GCodeProfileReader/plugin.json +++ b/plugins/GCodeProfileReader/plugin.json @@ -1,8 +1,8 @@ { "name": "G-code Profile Reader", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides support for importing profiles from g-code files.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeReader/FlavorParser.py b/plugins/GCodeReader/FlavorParser.py index 6fe2cb5260..baf21d47ce 100644 --- a/plugins/GCodeReader/FlavorParser.py +++ b/plugins/GCodeReader/FlavorParser.py @@ -364,6 +364,8 @@ class FlavorParser: self._layer_type = LayerPolygon.SupportType elif type == "FILL": self._layer_type = LayerPolygon.InfillType + elif type == "SUPPORT-INTERFACE": + self._layer_type = LayerPolygon.SupportInterfaceType else: Logger.log("w", "Encountered a unknown type (%s) while parsing g-code.", type) diff --git a/plugins/GCodeReader/plugin.json b/plugins/GCodeReader/plugin.json index 75b4d0cd4f..bbc94fa917 100644 --- a/plugins/GCodeReader/plugin.json +++ b/plugins/GCodeReader/plugin.json @@ -1,8 +1,8 @@ { "name": "G-code Reader", - "author": "Victor Larchenko", - "version": "1.0.0", + "author": "Victor Larchenko, Ultimaker", + "version": "1.0.1", "description": "Allows loading and displaying G-code files.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeWriter/plugin.json b/plugins/GCodeWriter/plugin.json index 3bbbab8b95..f3a95ddb78 100644 --- a/plugins/GCodeWriter/plugin.json +++ b/plugins/GCodeWriter/plugin.json @@ -1,8 +1,8 @@ { "name": "G-code Writer", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Writes g-code to a file.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/ImageReader/ConfigUI.qml b/plugins/ImageReader/ConfigUI.qml index 12c6aa8dde..b9ff2e4453 100644 --- a/plugins/ImageReader/ConfigUI.qml +++ b/plugins/ImageReader/ConfigUI.qml @@ -20,7 +20,7 @@ UM.Dialog GridLayout { - UM.I18nCatalog{id: catalog; name:"cura"} + UM.I18nCatalog{id: catalog; name: "cura"} anchors.fill: parent; Layout.fillWidth: true columnSpacing: 16 * screenScaleFactor diff --git a/plugins/ImageReader/plugin.json b/plugins/ImageReader/plugin.json index 08195863e8..d966537d99 100644 --- a/plugins/ImageReader/plugin.json +++ b/plugins/ImageReader/plugin.json @@ -1,8 +1,8 @@ { "name": "Image Reader", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Enables ability to generate printable geometry from 2D image files.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/LegacyProfileReader/DictionaryOfDoom.json b/plugins/LegacyProfileReader/DictionaryOfDoom.json index 0be413dd2c..f65cc271d1 100644 --- a/plugins/LegacyProfileReader/DictionaryOfDoom.json +++ b/plugins/LegacyProfileReader/DictionaryOfDoom.json @@ -1,6 +1,6 @@ { "source_version": "15.04", - "target_version": 3, + "target_version": "4.5", "translation": { "machine_nozzle_size": "nozzle_size", diff --git a/plugins/LegacyProfileReader/LegacyProfileReader.py b/plugins/LegacyProfileReader/LegacyProfileReader.py index cd577218d5..013bab6f11 100644 --- a/plugins/LegacyProfileReader/LegacyProfileReader.py +++ b/plugins/LegacyProfileReader/LegacyProfileReader.py @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import configparser # For reading the legacy profile INI files. @@ -6,6 +6,7 @@ import io import json # For reading the Dictionary of Doom. import math # For mathematical operations included in the Dictionary of Doom. import os.path # For concatenating the path to the plugin and the relative path to the Dictionary of Doom. +from typing import Dict from UM.Application import Application # To get the machine manager to create the new profile in. from UM.Logger import Logger # Logging errors. @@ -33,10 +34,11 @@ class LegacyProfileReader(ProfileReader): # \param json The JSON file to load the default setting values from. This # should not be a URL but a pre-loaded JSON handle. # \return A dictionary of the default values of the legacy Cura version. - def prepareDefaults(self, json): + def prepareDefaults(self, json: Dict[str, Dict[str, str]]) -> Dict[str, str]: defaults = {} - for key in json["defaults"]: # We have to copy over all defaults from the JSON handle to a normal dict. - defaults[key] = json["defaults"][key] + if "defaults" in json: + for key in json["defaults"]: # We have to copy over all defaults from the JSON handle to a normal dict. + defaults[key] = json["defaults"][key] return defaults ## Prepares the local variables that can be used in evaluation of computing @@ -80,11 +82,10 @@ class LegacyProfileReader(ProfileReader): Logger.log("i", "Importing legacy profile from file " + file_name + ".") container_registry = ContainerRegistry.getInstance() profile_id = container_registry.uniqueName("Imported Legacy Profile") - profile = InstanceContainer(profile_id) # Create an empty profile. - parser = configparser.ConfigParser(interpolation = None) + input_parser = configparser.ConfigParser(interpolation = None) try: - parser.read([file_name]) # Parse the INI file. + input_parser.read([file_name]) # Parse the INI file. except Exception as e: Logger.log("e", "Unable to open legacy profile %s: %s", file_name, str(e)) return None @@ -92,7 +93,7 @@ class LegacyProfileReader(ProfileReader): # Legacy Cura saved the profile under the section "profile_N" where N is the ID of a machine, except when you export in which case it saves it in the section "profile". # Since importing multiple machine profiles is out of scope, just import the first section we find. section = "" - for found_section in parser.sections(): + for found_section in input_parser.sections(): if found_section.startswith("profile"): section = found_section break @@ -110,15 +111,13 @@ class LegacyProfileReader(ProfileReader): return None defaults = self.prepareDefaults(dict_of_doom) - legacy_settings = self.prepareLocals(parser, section, defaults) #Gets the settings from the legacy profile. + legacy_settings = self.prepareLocals(input_parser, section, defaults) #Gets the settings from the legacy profile. - #Check the target version in the Dictionary of Doom with this application version. - if "target_version" not in dict_of_doom: - Logger.log("e", "Dictionary of Doom has no target version. Is it the correct JSON file?") - return None - if InstanceContainer.Version != dict_of_doom["target_version"]: - Logger.log("e", "Dictionary of Doom of legacy profile reader (version %s) is not in sync with the current instance container version (version %s)!", dict_of_doom["target_version"], str(InstanceContainer.Version)) - return None + # Serialised format into version 4.5. Do NOT upgrade this, let the version upgrader handle it. + output_parser = configparser.ConfigParser(interpolation = None) + output_parser.add_section("general") + output_parser.add_section("metadata") + output_parser.add_section("values") if "translation" not in dict_of_doom: Logger.log("e", "Dictionary of Doom has no translation. Is it the correct JSON file?") @@ -127,7 +126,7 @@ class LegacyProfileReader(ProfileReader): quality_definition = current_printer_definition.getMetaDataEntry("quality_definition") if not quality_definition: quality_definition = current_printer_definition.getId() - profile.setDefinition(quality_definition) + output_parser["general"]["definition"] = quality_definition for new_setting in dict_of_doom["translation"]: # Evaluate all new settings that would get a value from the translations. old_setting_expression = dict_of_doom["translation"][new_setting] compiled = compile(old_setting_expression, new_setting, "eval") @@ -140,37 +139,34 @@ class LegacyProfileReader(ProfileReader): definitions = current_printer_definition.findDefinitions(key = new_setting) if definitions: if new_value != value_using_defaults and definitions[0].default_value != new_value: # Not equal to the default in the new Cura OR the default in the legacy Cura. - profile.setProperty(new_setting, "value", new_value) # Store the setting in the profile! + output_parser["values"][new_setting] = str(new_value) # Store the setting in the profile! - if len(profile.getAllKeys()) == 0: + if len(output_parser["values"]) == 0: Logger.log("i", "A legacy profile was imported but everything evaluates to the defaults, creating an empty profile.") - profile.setMetaDataEntry("type", "profile") - # don't know what quality_type it is based on, so use "normal" by default - profile.setMetaDataEntry("quality_type", "normal") - profile.setName(profile_id) - profile.setDirty(True) + output_parser["general"]["version"] = "4" + output_parser["general"]["name"] = profile_id + output_parser["metadata"]["type"] = "quality_changes" + output_parser["metadata"]["quality_type"] = "normal" # Don't know what quality_type it is based on, so use "normal" by default. + output_parser["metadata"]["position"] = "0" # We only support single extrusion. + output_parser["metadata"]["setting_version"] = "5" # What the dictionary of doom is made for. - #Serialise and deserialise in order to perform the version upgrade. - parser = configparser.ConfigParser(interpolation = None) - data = profile.serialize() - parser.read_string(data) - parser["general"]["version"] = "1" - if parser.has_section("values"): - parser["settings"] = parser["values"] - del parser["values"] + # Serialise in order to perform the version upgrade. stream = io.StringIO() - parser.write(stream) + output_parser.write(stream) data = stream.getvalue() - profile.deserialize(data) - # The definition can get reset to fdmprinter during the deserialization's upgrade. Here we set the definition - # again. - profile.setDefinition(quality_definition) + profile = InstanceContainer(profile_id) + profile.deserialize(data) # Also performs the version upgrade. + profile.setDirty(True) #We need to return one extruder stack and one global stack. global_container_id = container_registry.uniqueName("Global Imported Legacy Profile") + # We duplicate the extruder profile into the global stack. + # This may introduce some settings that are global in the extruder stack and some settings that are per-extruder in the global stack. + # We don't care about that. The engine will ignore them anyway. global_profile = profile.duplicate(new_id = global_container_id, new_name = profile_id) #Needs to have the same name as the extruder profile. + del global_profile.getMetaData()["position"] # Has no position because it's global. global_profile.setDirty(True) profile_definition = "fdmprinter" diff --git a/plugins/LegacyProfileReader/plugin.json b/plugins/LegacyProfileReader/plugin.json index 179f5444e0..2f5264ad37 100644 --- a/plugins/LegacyProfileReader/plugin.json +++ b/plugins/LegacyProfileReader/plugin.json @@ -1,8 +1,8 @@ { "name": "Legacy Cura Profile Reader", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides support for importing profiles from legacy Cura versions.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py b/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py new file mode 100644 index 0000000000..480a61f301 --- /dev/null +++ b/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py @@ -0,0 +1,190 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import configparser # An input for some functions we're testing. +import os.path # To find the integration test .ini files. +import pytest # To register tests with. +import unittest.mock # To mock the application, plug-in and container registry out. + +import UM.Application # To mock the application out. +import UM.PluginRegistry # To mock the plug-in registry out. +import UM.Settings.ContainerRegistry # To mock the container registry out. +import UM.Settings.InstanceContainer # To intercept the serialised data from the read() function. + +import LegacyProfileReader as LegacyProfileReaderModule # To get the directory of the module. +from LegacyProfileReader import LegacyProfileReader # The module we're testing. + +@pytest.fixture +def legacy_profile_reader(): + return LegacyProfileReader() + +test_prepareDefaultsData = [ + { + "defaults": + { + "foo": "bar" + }, + "cheese": "delicious" + }, + { + "cat": "fluffy", + "dog": "floofy" + } +] + +@pytest.mark.parametrize("input", test_prepareDefaultsData) +def test_prepareDefaults(legacy_profile_reader, input): + output = legacy_profile_reader.prepareDefaults(input) + if "defaults" in input: + assert input["defaults"] == output + else: + assert output == {} + +test_prepareLocalsData = [ + ( # Ordinary case. + { # Parser data. + "profile": + { + "layer_height": "0.2", + "infill_density": "30" + } + }, + { # Defaults. + "layer_height": "0.1", + "infill_density": "20", + "line_width": "0.4" + } + ), + ( # Empty data. + { # Parser data. + "profile": + { + } + }, + { # Defaults. + } + ), + ( # All defaults. + { # Parser data. + "profile": + { + } + }, + { # Defaults. + "foo": "bar", + "boo": "far" + } + ), + ( # Multiple config sections. + { # Parser data. + "some_other_name": + { + "foo": "bar" + }, + "profile": + { + "foo": "baz" #Not the same as in some_other_name + } + }, + { # Defaults. + "foo": "bla" + } + ) +] + +@pytest.mark.parametrize("parser_data, defaults", test_prepareLocalsData) +def test_prepareLocals(legacy_profile_reader, parser_data, defaults): + parser = configparser.ConfigParser() + parser.read_dict(parser_data) + + output = legacy_profile_reader.prepareLocals(parser, "profile", defaults) + + assert set(defaults.keys()) <= set(output.keys()) # All defaults must be in there. + assert set(parser_data["profile"]) <= set(output.keys()) # All overwritten values must be in there. + for key in output: + if key in parser_data["profile"]: + assert output[key] == parser_data["profile"][key] # If overwritten, must be the overwritten value. + else: + assert output[key] == defaults[key] # Otherwise must be equal to the default. + +test_prepareLocalsNoSectionErrorData = [ + ( # Section does not exist. + { # Parser data. + "some_other_name": + { + "foo": "bar" + }, + }, + { # Defaults. + "foo": "baz" + } + ) +] + +## Test cases where a key error is expected. +@pytest.mark.parametrize("parser_data, defaults", test_prepareLocalsNoSectionErrorData) +def test_prepareLocalsNoSectionError(legacy_profile_reader, parser_data, defaults): + parser = configparser.ConfigParser() + parser.read_dict(parser_data) + + with pytest.raises(configparser.NoSectionError): + legacy_profile_reader.prepareLocals(parser, "profile", defaults) + +intercepted_data = "" + +@pytest.mark.parametrize("file_name", ["normal_case.ini"]) +def test_read(legacy_profile_reader, file_name): + # Mock out all dependencies. Quite a lot! + global_stack = unittest.mock.MagicMock() + global_stack.getProperty = unittest.mock.MagicMock(return_value = 1) # For machine_extruder_count setting. + def getMetaDataEntry(key, default_value = ""): + if key == "quality_definition": + return "mocked_quality_definition" + if key == "has_machine_quality": + return "True" + global_stack.definition.getMetaDataEntry = getMetaDataEntry + global_stack.definition.getId = unittest.mock.MagicMock(return_value = "mocked_global_definition") + application = unittest.mock.MagicMock() + application.getGlobalContainerStack = unittest.mock.MagicMock(return_value = global_stack) + application_getInstance = unittest.mock.MagicMock(return_value = application) + container_registry = unittest.mock.MagicMock() + container_registry_getInstance = unittest.mock.MagicMock(return_value = container_registry) + container_registry.uniqueName = unittest.mock.MagicMock(return_value = "Imported Legacy Profile") + container_registry.findDefinitionContainers = unittest.mock.MagicMock(return_value = [global_stack.definition]) + UM.Settings.InstanceContainer.setContainerRegistry(container_registry) + plugin_registry = unittest.mock.MagicMock() + plugin_registry_getInstance = unittest.mock.MagicMock(return_value = plugin_registry) + plugin_registry.getPluginPath = unittest.mock.MagicMock(return_value = os.path.dirname(LegacyProfileReaderModule.__file__)) + + # Mock out the resulting InstanceContainer so that we can intercept the data before it's passed through the version upgrader. + def deserialize(self, data): # Intercepts the serialised data that we'd perform the version upgrade from when deserializing. + global intercepted_data + intercepted_data = data + + parser = configparser.ConfigParser() + parser.read_string(data) + self._metadata["position"] = parser["metadata"]["position"] + def duplicate(self, new_id, new_name): + self._metadata["id"] = new_id + self._metadata["name"] = new_name + return self + + with unittest.mock.patch.object(UM.Application.Application, "getInstance", application_getInstance): + with unittest.mock.patch.object(UM.Settings.ContainerRegistry.ContainerRegistry, "getInstance", container_registry_getInstance): + with unittest.mock.patch.object(UM.PluginRegistry.PluginRegistry, "getInstance", plugin_registry_getInstance): + with unittest.mock.patch.object(UM.Settings.InstanceContainer.InstanceContainer, "deserialize", deserialize): + with unittest.mock.patch.object(UM.Settings.InstanceContainer.InstanceContainer, "duplicate", duplicate): + result = legacy_profile_reader.read(os.path.join(os.path.dirname(__file__), file_name)) + + assert len(result) == 1 + + # Let's see what's inside the actual output file that we generated. + parser = configparser.ConfigParser() + parser.read_string(intercepted_data) + assert parser["general"]["definition"] == "mocked_quality_definition" + assert parser["general"]["version"] == "4" # Yes, before we upgraded. + assert parser["general"]["name"] == "Imported Legacy Profile" # Because we overwrote uniqueName. + assert parser["metadata"]["type"] == "quality_changes" + assert parser["metadata"]["quality_type"] == "normal" + assert parser["metadata"]["position"] == "0" + assert parser["metadata"]["setting_version"] == "5" # Yes, before we upgraded. \ No newline at end of file diff --git a/plugins/LegacyProfileReader/tests/normal_case.ini b/plugins/LegacyProfileReader/tests/normal_case.ini new file mode 100644 index 0000000000..213444d2d3 --- /dev/null +++ b/plugins/LegacyProfileReader/tests/normal_case.ini @@ -0,0 +1,7 @@ +[profile] +foo = bar +boo = far +fill_overlap = 3 + +[alterations] +some = values diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.qml b/plugins/MachineSettingsAction/MachineSettingsAction.qml index 004b4e3cfc..ef8fda224a 100644 --- a/plugins/MachineSettingsAction/MachineSettingsAction.qml +++ b/plugins/MachineSettingsAction/MachineSettingsAction.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -13,7 +13,8 @@ import Cura 1.0 as Cura Cura.MachineAction { id: base - property var extrudersModel: Cura.ExtrudersModel{} + property var extrudersModel: Cura.ExtrudersModel{} // Do not retrieve the Model from a backend. Otherwise the tabs + // in tabView will not removed/updated. Probably QML bug property int extruderTabsCount: 0 property var activeMachineId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.id : "" @@ -23,7 +24,7 @@ Cura.MachineAction target: base.extrudersModel onModelChanged: { - var extruderCount = base.extrudersModel.rowCount(); + var extruderCount = base.extrudersModel.count; base.extruderTabsCount = extruderCount; } } diff --git a/plugins/MachineSettingsAction/plugin.json b/plugins/MachineSettingsAction/plugin.json index 571658e40a..d734c1adf5 100644 --- a/plugins/MachineSettingsAction/plugin.json +++ b/plugins/MachineSettingsAction/plugin.json @@ -1,8 +1,8 @@ { "name": "Machine Settings action", "author": "fieldOfView", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides a way to change machine settings (such as build volume, nozzle size, etc.).", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/ModelChecker/ModelChecker.qml b/plugins/ModelChecker/ModelChecker.qml index 98db233bf8..ddeed063b1 100644 --- a/plugins/ModelChecker/ModelChecker.qml +++ b/plugins/ModelChecker/ModelChecker.qml @@ -4,19 +4,19 @@ import QtQuick 2.2 import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Dialogs 1.1 -import QtQuick.Window 2.2 import UM 1.2 as UM -import Cura 1.0 as Cura Button { id: modelCheckerButton - UM.I18nCatalog{id: catalog; name:"cura"} + UM.I18nCatalog + { + id: catalog + name: "cura" + } visible: manager.hasWarnings tooltip: catalog.i18nc("@info:tooltip", "Some things could be problematic in this print. Click to see tips for adjustment.") @@ -25,6 +25,8 @@ Button width: UM.Theme.getSize("save_button_specs_icons").width height: UM.Theme.getSize("save_button_specs_icons").height + anchors.verticalCenter: parent ? parent.verticalCenter : undefined + style: ButtonStyle { background: Item @@ -33,7 +35,6 @@ Button { width: UM.Theme.getSize("save_button_specs_icons").width; height: UM.Theme.getSize("save_button_specs_icons").height; - sourceSize.width: width; sourceSize.height: width; color: control.hovered ? UM.Theme.getColor("text_scene_hover") : UM.Theme.getColor("text_scene"); source: "model_checker.svg" diff --git a/plugins/ModelChecker/plugin.json b/plugins/ModelChecker/plugin.json index 3753c0cc88..59be5bbf0a 100644 --- a/plugins/ModelChecker/plugin.json +++ b/plugins/ModelChecker/plugin.json @@ -1,8 +1,8 @@ { "name": "Model Checker", "author": "Ultimaker B.V.", - "version": "0.1", - "api": 5, + "version": "1.0.1", + "api": "6.0", "description": "Checks models and print configuration for possible printing issues and give suggestions.", "i18n-catalog": "cura" } diff --git a/plugins/MonitorStage/MonitorMainView.qml b/plugins/MonitorStage/MonitorMain.qml similarity index 66% rename from plugins/MonitorStage/MonitorMainView.qml rename to plugins/MonitorStage/MonitorMain.qml index c48f6d0aab..34cf4ad801 100644 --- a/plugins/MonitorStage/MonitorMainView.qml +++ b/plugins/MonitorStage/MonitorMain.qml @@ -1,45 +1,48 @@ -// Copyright (c) 2017 Ultimaker B.V. - -import QtQuick 2.2 -import QtQuick.Controls 1.1 - -import UM 1.3 as UM -import Cura 1.0 as Cura - -Item -{ - // parent could be undefined as this component is not visible at all times - width: parent ? parent.width : 0 - height: parent ? parent.height : 0 - - // We show a nice overlay on the 3D viewer when the current output device has no monitor view - Rectangle - { - id: viewportOverlay - - color: UM.Theme.getColor("viewport_overlay") - width: parent.width - height: parent.height - - MouseArea - { - anchors.fill: parent - acceptedButtons: Qt.AllButtons - onWheel: wheel.accepted = true - } - } - - Loader - { - id: monitorViewComponent - - width: parent.width - height: parent.height - - property real maximumWidth: parent.width - property real maximumHeight: parent.height - - sourceComponent: Cura.MachineManager.printerOutputDevices.length > 0 ? Cura.MachineManager.printerOutputDevices[0].monitorItem: null - visible: sourceComponent != null - } -} +// Copyright (c) 2017 Ultimaker B.V. + +import QtQuick 2.10 +import QtQuick.Controls 1.4 + +import UM 1.3 as UM +import Cura 1.0 as Cura + + +Item +{ + // We show a nice overlay on the 3D viewer when the current output device has no monitor view + Rectangle + { + id: viewportOverlay + + color: UM.Theme.getColor("viewport_overlay") + anchors.fill: parent + + // This mouse area is to prevent mouse clicks to be passed onto the scene. + MouseArea + { + anchors.fill: parent + acceptedButtons: Qt.AllButtons + onWheel: wheel.accepted = true + } + + // Disable dropping files into Cura when the monitor page is active + DropArea + { + anchors.fill: parent + } + } + + Loader + { + id: monitorViewComponent + + anchors.fill: parent + + height: parent.height + + property real maximumWidth: parent.width + property real maximumHeight: parent.height + + sourceComponent: Cura.MachineManager.printerOutputDevices.length > 0 ? Cura.MachineManager.printerOutputDevices[0].monitorItem : null + } +} diff --git a/plugins/MonitorStage/MonitorMenu.qml b/plugins/MonitorStage/MonitorMenu.qml new file mode 100644 index 0000000000..bc95c276e8 --- /dev/null +++ b/plugins/MonitorStage/MonitorMenu.qml @@ -0,0 +1,23 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + +Item +{ + signal showTooltip(Item item, point location, string text) + signal hideTooltip() + + Cura.MachineSelector + { + id: machineSelection + headerCornerSide: Cura.RoundedRectangle.Direction.All + width: UM.Theme.getSize("machine_selector_widget").width + height: parent.height + anchors.centerIn: parent + } +} \ No newline at end of file diff --git a/plugins/MonitorStage/MonitorStage.py b/plugins/MonitorStage/MonitorStage.py index ace201e994..69b7f20f4e 100644 --- a/plugins/MonitorStage/MonitorStage.py +++ b/plugins/MonitorStage/MonitorStage.py @@ -65,15 +65,10 @@ class MonitorStage(CuraStage): # We can only connect now, as we need to be sure that everything is loaded (plugins get created quite early) Application.getInstance().getMachineManager().outputDevicesChanged.connect(self._onOutputDevicesChanged) self._onOutputDevicesChanged() - self._updateMainOverlay() - self._updateSidebar() - def _updateMainOverlay(self): - main_component_path = os.path.join(PluginRegistry.getInstance().getPluginPath("MonitorStage"), - "MonitorMainView.qml") - self.addDisplayComponent("main", main_component_path) - - def _updateSidebar(self): - sidebar_component_path = os.path.join(Resources.getPath(Application.getInstance().ResourceTypes.QmlFiles), - "MonitorSidebar.qml") - self.addDisplayComponent("sidebar", sidebar_component_path) + plugin_path = Application.getInstance().getPluginRegistry().getPluginPath(self.getPluginId()) + if plugin_path is not None: + menu_component_path = os.path.join(plugin_path, "MonitorMenu.qml") + main_component_path = os.path.join(plugin_path, "MonitorMain.qml") + self.addDisplayComponent("menu", menu_component_path) + self.addDisplayComponent("main", main_component_path) diff --git a/plugins/MonitorStage/__init__.py b/plugins/MonitorStage/__init__.py index bdaf53a36c..0468e6319b 100644 --- a/plugins/MonitorStage/__init__.py +++ b/plugins/MonitorStage/__init__.py @@ -7,14 +7,16 @@ from . import MonitorStage from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") + def getMetaData(): return { "stage": { "name": i18n_catalog.i18nc("@item:inmenu", "Monitor"), - "weight": 1 + "weight": 2 } } + def register(app): return { "stage": MonitorStage.MonitorStage() diff --git a/plugins/MonitorStage/plugin.json b/plugins/MonitorStage/plugin.json index 88b53840e0..95e4b86f36 100644 --- a/plugins/MonitorStage/plugin.json +++ b/plugins/MonitorStage/plugin.json @@ -1,8 +1,8 @@ { "name": "Monitor Stage", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides a monitor stage in Cura.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 5d4e17a102..0e2bd88619 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -265,7 +265,6 @@ Item { anchors.verticalCenter: parent.verticalCenter width: parent.width height: width - sourceSize.width: width sourceSize.height: width color: control.hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button") source: UM.Theme.getIcon("minus") diff --git a/plugins/PerObjectSettingsTool/plugin.json b/plugins/PerObjectSettingsTool/plugin.json index 15fde63387..f272abf06a 100644 --- a/plugins/PerObjectSettingsTool/plugin.json +++ b/plugins/PerObjectSettingsTool/plugin.json @@ -1,8 +1,8 @@ { "name": "Per Model Settings Tool", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides the Per Model Settings.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/PostProcessingPlugin/PostProcessingPlugin.py b/plugins/PostProcessingPlugin/PostProcessingPlugin.py index 1a1ea92d10..78f9cc0516 100644 --- a/plugins/PostProcessingPlugin/PostProcessingPlugin.py +++ b/plugins/PostProcessingPlugin/PostProcessingPlugin.py @@ -32,7 +32,8 @@ class PostProcessingPlugin(QObject, Extension): def __init__(self, parent = None) -> None: QObject.__init__(self, parent) Extension.__init__(self) - self.addMenuItem(i18n_catalog.i18n("Modify G-Code"), self.showPopup) + self.setMenuName(i18n_catalog.i18nc("@item:inmenu", "Post Processing")) + self.addMenuItem(i18n_catalog.i18nc("@item:inmenu", "Modify G-Code"), self.showPopup) self._view = None # Loaded scripts are all scripts that can be used @@ -54,14 +55,14 @@ class PostProcessingPlugin(QObject, Extension): def selectedScriptDefinitionId(self) -> Optional[str]: try: return self._script_list[self._selected_script_index].getDefinitionId() - except: + except IndexError: return "" @pyqtProperty(str, notify=selectedIndexChanged) def selectedScriptStackId(self) -> Optional[str]: try: return self._script_list[self._selected_script_index].getStackId() - except: + except IndexError: return "" ## Execute all post-processing scripts on the gcode. diff --git a/plugins/PostProcessingPlugin/PostProcessingPlugin.qml b/plugins/PostProcessingPlugin/PostProcessingPlugin.qml index d492e06462..d5fe618b2d 100644 --- a/plugins/PostProcessingPlugin/PostProcessingPlugin.qml +++ b/plugins/PostProcessingPlugin/PostProcessingPlugin.qml @@ -25,13 +25,13 @@ UM.Dialog { if(!visible) //Whenever the window is closed (either via the "Close" button or the X on the window frame), we want to update it in the stack. { - manager.writeScriptsToStack(); + manager.writeScriptsToStack() } } Item { - UM.I18nCatalog{id: catalog; name:"cura"} + UM.I18nCatalog{id: catalog; name: "cura"} id: base property int columnWidth: Math.round((base.width / 2) - UM.Theme.getSize("default_margin").width) property int textMargin: Math.round(UM.Theme.getSize("default_margin").width / 2) @@ -61,18 +61,23 @@ UM.Dialog anchors.leftMargin: base.textMargin anchors.right: parent.right anchors.rightMargin: base.textMargin - font: UM.Theme.getFont("large") + font: UM.Theme.getFont("large_bold") elide: Text.ElideRight } ListView { id: activeScriptsList - anchors.top: activeScriptsHeader.bottom - anchors.topMargin: base.textMargin - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.right: parent.right - anchors.rightMargin: base.textMargin + + anchors + { + top: activeScriptsHeader.bottom + left: parent.left + right: parent.right + rightMargin: base.textMargin + topMargin: base.textMargin + leftMargin: UM.Theme.getSize("default_margin").width + } + height: childrenRect.height model: manager.scriptList delegate: Item @@ -84,8 +89,12 @@ UM.Dialog id: activeScriptButton text: manager.getScriptLabelByKey(modelData.toString()) exclusiveGroup: selectedScriptGroup + width: parent.width + height: UM.Theme.getSize("setting").height checkable: true - checked: { + + checked: + { if (manager.selectedScriptIndex == index) { base.activeScriptName = manager.getScriptLabelByKey(modelData.toString()) @@ -102,8 +111,7 @@ UM.Dialog manager.setSelectedScriptIndex(index) base.activeScriptName = manager.getScriptLabelByKey(modelData.toString()) } - width: parent.width - height: UM.Theme.getSize("setting").height + style: ButtonStyle { background: Rectangle @@ -121,6 +129,7 @@ UM.Dialog } } } + Button { id: removeButton @@ -141,7 +150,6 @@ UM.Dialog anchors.horizontalCenter: parent.horizontalCenter width: Math.round(control.width / 2.7) height: Math.round(control.height / 2.7) - sourceSize.width: width sourceSize.height: width color: palette.text source: UM.Theme.getIcon("cross1") @@ -176,7 +184,6 @@ UM.Dialog anchors.horizontalCenter: parent.horizontalCenter width: Math.round(control.width / 2.5) height: Math.round(control.height / 2.5) - sourceSize.width: width sourceSize.height: width color: control.enabled ? palette.text : disabledPalette.text source: UM.Theme.getIcon("arrow_bottom") @@ -211,7 +218,6 @@ UM.Dialog anchors.horizontalCenter: parent.horizontalCenter width: Math.round(control.width / 2.5) height: Math.round(control.height / 2.5) - sourceSize.width: width sourceSize.height: width color: control.enabled ? palette.text : disabledPalette.text source: UM.Theme.getIcon("arrow_top") @@ -252,15 +258,15 @@ UM.Dialog onTriggered: manager.addScriptToList(modelData.toString()) } - onObjectAdded: scriptsMenu.insertItem(index, object); - onObjectRemoved: scriptsMenu.removeItem(object); + onObjectAdded: scriptsMenu.insertItem(index, object) + onObjectRemoved: scriptsMenu.removeItem(object) } } } Rectangle { - color: UM.Theme.getColor("sidebar") + color: UM.Theme.getColor("main_background") anchors.left: activeScripts.right anchors.leftMargin: UM.Theme.getSize("default_margin").width anchors.right: parent.right @@ -271,26 +277,35 @@ UM.Dialog { id: scriptSpecsHeader text: manager.selectedScriptIndex == -1 ? catalog.i18nc("@label", "Settings") : base.activeScriptName - anchors.top: parent.top - anchors.topMargin: base.textMargin - anchors.left: parent.left - anchors.leftMargin: base.textMargin - anchors.right: parent.right - anchors.rightMargin: base.textMargin + anchors + { + top: parent.top + topMargin: base.textMargin + left: parent.left + leftMargin: base.textMargin + right: parent.right + rightMargin: base.textMargin + } + elide: Text.ElideRight height: 20 * screenScaleFactor - font: UM.Theme.getFont("large") + font: UM.Theme.getFont("large_bold") color: UM.Theme.getColor("text") } ScrollView { id: scrollView - anchors.top: scriptSpecsHeader.bottom - anchors.topMargin: settingsPanel.textMargin - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom + anchors + { + top: scriptSpecsHeader.bottom + topMargin: settingsPanel.textMargin + left: parent.left + leftMargin: UM.Theme.getSize("default_margin").width + right: parent.right + bottom: parent.bottom + } + visible: manager.selectedScriptDefinitionId != "" style: UM.Theme.styles.scrollview; @@ -300,11 +315,12 @@ UM.Dialog spacing: UM.Theme.getSize("default_lining").height model: UM.SettingDefinitionsModel { - id: definitionsModel; + id: definitionsModel containerId: manager.selectedScriptDefinitionId showAll: true } - delegate:Loader + + delegate: Loader { id: settingLoader @@ -315,23 +331,24 @@ UM.Dialog { if(model.type != undefined) { - return UM.Theme.getSize("section").height; + return UM.Theme.getSize("section").height } else { - return 0; + return 0 } } else { - return 0; + return 0 } - } Behavior on height { NumberAnimation { duration: 100 } } opacity: provider.properties.enabled == "True" ? 1 : 0 + Behavior on opacity { NumberAnimation { duration: 100 } } enabled: opacity > 0 + property var definition: model property var settingDefinitionsModel: definitionsModel property var propertyProvider: provider @@ -342,11 +359,12 @@ UM.Dialog //causing nasty issues when selecting different options. So disable asynchronous loading of enum type completely. asynchronous: model.type != "enum" && model.type != "extruder" - onLoaded: { + onLoaded: + { settingLoader.item.showRevertButton = false settingLoader.item.showInheritButton = false settingLoader.item.showLinkedSettingIcon = false - settingLoader.item.doDepthIndentation = true + settingLoader.item.doDepthIndentation = false settingLoader.item.doQualityUserSettingEmphasis = false } @@ -398,24 +416,20 @@ UM.Dialog onShowTooltip: { - tooltip.text = text; - var position = settingLoader.mapToItem(settingsPanel, settingsPanel.x, 0); - tooltip.show(position); + tooltip.text = text + var position = settingLoader.mapToItem(settingsPanel, settingsPanel.x, 0) + tooltip.show(position) tooltip.target.x = position.x + 1 } - onHideTooltip: - { - tooltip.hide(); - } + onHideTooltip: tooltip.hide() } - } } } } - Cura.SidebarTooltip + Cura.PrintSetupTooltip { id: tooltip } @@ -462,6 +476,7 @@ UM.Dialog Cura.SettingUnknown { } } } + rightButtons: Button { text: catalog.i18nc("@action:button", "Close") @@ -469,44 +484,15 @@ UM.Dialog onClicked: dialog.accept() } - Button { + Cura.SecondaryButton + { objectName: "postProcessingSaveAreaButton" visible: activeScriptsList.count > 0 height: UM.Theme.getSize("save_button_save_to_button").height width: height tooltip: catalog.i18nc("@info:tooltip", "Change active post-processing scripts") onClicked: dialog.show() - - style: ButtonStyle { - background: Rectangle { - id: deviceSelectionIcon - border.width: UM.Theme.getSize("default_lining").width - border.color: !control.enabled ? UM.Theme.getColor("action_button_disabled_border") : - control.pressed ? UM.Theme.getColor("action_button_active_border") : - control.hovered ? UM.Theme.getColor("action_button_hovered_border") : UM.Theme.getColor("action_button_border") - color: !control.enabled ? UM.Theme.getColor("action_button_disabled") : - control.pressed ? UM.Theme.getColor("action_button_active") : - control.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button") - Behavior on color { ColorAnimation { duration: 50; } } - anchors.left: parent.left - anchors.leftMargin: Math.round(UM.Theme.getSize("save_button_text_margin").width / 2); - width: parent.height - height: parent.height - - UM.RecolorImage { - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - width: Math.round(parent.width / 2) - height: Math.round(parent.height / 2) - sourceSize.width: width - sourceSize.height: height - color: !control.enabled ? UM.Theme.getColor("action_button_disabled_text") : - control.pressed ? UM.Theme.getColor("action_button_active_text") : - control.hovered ? UM.Theme.getColor("action_button_hovered_text") : UM.Theme.getColor("action_button_text"); - source: "postprocessing.svg" - } - } - label: Label{ } - } + iconSource: "postprocessing.svg" + fixedWidthMode: true } } \ No newline at end of file diff --git a/plugins/PostProcessingPlugin/plugin.json b/plugins/PostProcessingPlugin/plugin.json index fea061e93b..1e73133c53 100644 --- a/plugins/PostProcessingPlugin/plugin.json +++ b/plugins/PostProcessingPlugin/plugin.json @@ -1,8 +1,8 @@ { "name": "Post Processing", "author": "Ultimaker", - "version": "2.2", - "api": 5, + "version": "2.2.1", + "api": "6.0", "description": "Extension that allows for user created scripts for post processing", "catalog": "cura" } \ No newline at end of file diff --git a/plugins/PostProcessingPlugin/scripts/ExampleScript.md b/plugins/PostProcessingPlugin/scripts/ExampleScript.md new file mode 100644 index 0000000000..08652132aa --- /dev/null +++ b/plugins/PostProcessingPlugin/scripts/ExampleScript.md @@ -0,0 +1,3 @@ +A good example script is SearchAndReplace.py. +If you have any questions please ask them at: +https://github.com/Ultimaker/Cura/issues \ No newline at end of file diff --git a/plugins/PostProcessingPlugin/scripts/ExampleScript.py b/plugins/PostProcessingPlugin/scripts/ExampleScript.py deleted file mode 100644 index 416a5f5404..0000000000 --- a/plugins/PostProcessingPlugin/scripts/ExampleScript.py +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) 2015 Jaime van Kessel, Ultimaker B.V. -# The PostProcessingPlugin is released under the terms of the AGPLv3 or higher. -from ..Script import Script - -class ExampleScript(Script): - def __init__(self): - super().__init__() - - def getSettingDataString(self): - return """{ - "name":"Example script", - "key": "ExampleScript", - "metadata": {}, - "version": 2, - "settings": - { - "test": - { - "label": "Test", - "description": "None", - "unit": "mm", - "type": "float", - "default_value": 0.5, - "minimum_value": "0", - "minimum_value_warning": "0.1", - "maximum_value_warning": "1" - }, - "derp": - { - "label": "zomg", - "description": "afgasgfgasfgasf", - "unit": "mm", - "type": "float", - "default_value": 0.5, - "minimum_value": "0", - "minimum_value_warning": "0.1", - "maximum_value_warning": "1" - } - } - }""" - - def execute(self, data): - return data \ No newline at end of file diff --git a/plugins/PrepareStage/PrepareMenu.qml b/plugins/PrepareStage/PrepareMenu.qml new file mode 100644 index 0000000000..b62d65254d --- /dev/null +++ b/plugins/PrepareStage/PrepareMenu.qml @@ -0,0 +1,134 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + +import QtGraphicalEffects 1.0 // For the dropshadow + +Item +{ + id: prepareMenu + + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + // Item to ensure that all of the buttons are nicely centered. + Item + { + anchors.horizontalCenter: parent.horizontalCenter + width: openFileButton.width + itemRow.width + UM.Theme.getSize("default_margin").width + height: parent.height + + RowLayout + { + id: itemRow + + anchors.left: openFileButton.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + + width: Math.round(0.9 * prepareMenu.width) + height: parent.height + spacing: 0 + + Cura.MachineSelector + { + id: machineSelection + headerCornerSide: Cura.RoundedRectangle.Direction.Left + Layout.minimumWidth: UM.Theme.getSize("machine_selector_widget").width + Layout.maximumWidth: UM.Theme.getSize("machine_selector_widget").width + Layout.fillWidth: true + Layout.fillHeight: true + } + + // Separator line + Rectangle + { + height: parent.height + width: UM.Theme.getSize("default_lining").width + color: UM.Theme.getColor("lining") + } + + Cura.ConfigurationMenu + { + Layout.fillHeight: true + Layout.fillWidth: true + Layout.preferredWidth: itemRow.width - machineSelection.width - printSetupSelectorItem.width - 2 * UM.Theme.getSize("default_lining").width + } + + // Separator line + Rectangle + { + height: parent.height + width: UM.Theme.getSize("default_lining").width + color: UM.Theme.getColor("lining") + } + + Item + { + id: printSetupSelectorItem + // This is a work around to prevent the printSetupSelector from having to be re-loaded every time + // a stage switch is done. + children: [printSetupSelector] + height: childrenRect.height + width: childrenRect.width + } + } + + Button + { + id: openFileButton + height: UM.Theme.getSize("stage_menu").height + width: UM.Theme.getSize("stage_menu").height + onClicked: Cura.Actions.open.trigger() + hoverEnabled: true + + contentItem: Item + { + anchors.fill: parent + UM.RecolorImage + { + id: buttonIcon + anchors.centerIn: parent + source: UM.Theme.getIcon("load") + width: UM.Theme.getSize("button_icon").width + height: UM.Theme.getSize("button_icon").height + color: UM.Theme.getColor("icon") + + sourceSize.height: height + } + } + + background: Rectangle + { + id: background + height: UM.Theme.getSize("stage_menu").height + width: UM.Theme.getSize("stage_menu").height + + radius: UM.Theme.getSize("default_radius").width + color: openFileButton.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button") + } + + DropShadow + { + id: shadow + // Don't blur the shadow + radius: 0 + anchors.fill: background + source: background + verticalOffset: 2 + visible: true + color: UM.Theme.getColor("action_button_shadow") + // Should always be drawn behind the background. + z: background.z - 1 + } + } + } +} diff --git a/plugins/PrepareStage/PrepareStage.py b/plugins/PrepareStage/PrepareStage.py index c3c9f0a1f8..b0f862dc48 100644 --- a/plugins/PrepareStage/PrepareStage.py +++ b/plugins/PrepareStage/PrepareStage.py @@ -1,19 +1,19 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import os.path from UM.Application import Application +from UM.PluginRegistry import PluginRegistry from UM.Resources import Resources from cura.Stages.CuraStage import CuraStage + ## Stage for preparing model (slicing). class PrepareStage(CuraStage): - def __init__(self, parent = None): super().__init__(parent) Application.getInstance().engineCreatedSignal.connect(self._engineCreated) def _engineCreated(self): - sidebar_component_path = os.path.join(Resources.getPath(Application.getInstance().ResourceTypes.QmlFiles), - "PrepareSidebar.qml") - self.addDisplayComponent("sidebar", sidebar_component_path) + menu_component_path = os.path.join(PluginRegistry.getInstance().getPluginPath("PrepareStage"), "PrepareMenu.qml") + self.addDisplayComponent("menu", menu_component_path) diff --git a/plugins/PrepareStage/plugin.json b/plugins/PrepareStage/plugin.json index f0464313c7..dc5c68ce16 100644 --- a/plugins/PrepareStage/plugin.json +++ b/plugins/PrepareStage/plugin.json @@ -1,8 +1,8 @@ { "name": "Prepare Stage", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides a prepare stage in Cura.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/PreviewStage/PreviewMain.qml b/plugins/PreviewStage/PreviewMain.qml new file mode 100644 index 0000000000..04241783e9 --- /dev/null +++ b/plugins/PreviewStage/PreviewMain.qml @@ -0,0 +1,18 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.4 +import QtQuick.Controls 1.2 +import QtQuick.Layouts 1.1 +import QtQuick.Controls.Styles 1.1 + +import UM 1.0 as UM +import Cura 1.0 as Cura + + +Loader +{ + id: previewMain + + source: UM.Controller.activeView != null && UM.Controller.activeView.mainComponent != null ? UM.Controller.activeView.mainComponent : "" +} \ No newline at end of file diff --git a/plugins/PreviewStage/PreviewMenu.qml b/plugins/PreviewStage/PreviewMenu.qml new file mode 100644 index 0000000000..62f814aac9 --- /dev/null +++ b/plugins/PreviewStage/PreviewMenu.qml @@ -0,0 +1,79 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + +Item +{ + id: previewMenu + + property real itemHeight: height - 2 * UM.Theme.getSize("default_lining").width + + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + Row + { + id: stageMenuRow + anchors.centerIn: parent + height: parent.height + width: childrenRect.width + + // We want this row to have a preferred with equals to the 85% of the parent + property int preferredWidth: Math.round(0.85 * previewMenu.width) + + Cura.ViewsSelector + { + id: viewsSelector + height: parent.height + width: UM.Theme.getSize("views_selector").width + headerCornerSide: Cura.RoundedRectangle.Direction.Left + } + + // Separator line + Rectangle + { + height: parent.height + // If there is no viewPanel, we only need a single spacer, so hide this one. + visible: viewPanel.source != "" + width: visible ? UM.Theme.getSize("default_lining").width : 0 + + color: UM.Theme.getColor("lining") + } + + // This component will grow freely up to complete the preferredWidth of the row. + Loader + { + id: viewPanel + height: parent.height + width: source != "" ? (stageMenuRow.preferredWidth - viewsSelector.width - printSetupSelectorItem.width - 2 * UM.Theme.getSize("default_lining").width) : 0 + source: UM.Controller.activeView != null && UM.Controller.activeView.stageMenuComponent != null ? UM.Controller.activeView.stageMenuComponent : "" + } + + // Separator line + Rectangle + { + height: parent.height + width: UM.Theme.getSize("default_lining").width + color: UM.Theme.getColor("lining") + } + + Item + { + id: printSetupSelectorItem + // This is a work around to prevent the printSetupSelector from having to be re-loaded every time + // a stage switch is done. + children: [printSetupSelector] + height: childrenRect.height + width: childrenRect.width + } + } +} diff --git a/plugins/PreviewStage/PreviewStage.py b/plugins/PreviewStage/PreviewStage.py new file mode 100644 index 0000000000..1c487c8340 --- /dev/null +++ b/plugins/PreviewStage/PreviewStage.py @@ -0,0 +1,51 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import os.path + +from UM.Qt.QtApplication import QtApplication +from cura.Stages.CuraStage import CuraStage + +from typing import TYPE_CHECKING, Optional + +if TYPE_CHECKING: + from UM.View.View import View + + +## Displays a preview of what you're about to print. +# +# The Python component of this stage just loads PreviewMain.qml for display +# when the stage is selected, and makes sure that it reverts to the previous +# view when the previous stage is activated. +class PreviewStage(CuraStage): + def __init__(self, application: QtApplication, parent = None) -> None: + super().__init__(parent) + self._application = application + self._application.engineCreatedSignal.connect(self._engineCreated) + self._previously_active_view = None # type: Optional[View] + + ## When selecting the stage, remember which was the previous view so that + # we can revert to that view when we go out of the stage later. + def onStageSelected(self) -> None: + self._previously_active_view = self._application.getController().getActiveView() + + ## Called when going to a different stage (away from the Preview Stage). + # + # When going to a different stage, the view should be reverted to what it + # was before. Normally, that just reverts it to solid view. + def onStageDeselected(self) -> None: + if self._previously_active_view is not None: + self._application.getController().setActiveView(self._previously_active_view.getPluginId()) + self._previously_active_view = None + + ## Delayed load of the QML files. + # + # We need to make sure that the QML engine is running before we can load + # these. + def _engineCreated(self) -> None: + plugin_path = self._application.getPluginRegistry().getPluginPath(self.getPluginId()) + if plugin_path is not None: + menu_component_path = os.path.join(plugin_path, "PreviewMenu.qml") + main_component_path = os.path.join(plugin_path, "PreviewMain.qml") + self.addDisplayComponent("menu", menu_component_path) + self.addDisplayComponent("main", main_component_path) diff --git a/plugins/PreviewStage/__init__.py b/plugins/PreviewStage/__init__.py new file mode 100644 index 0000000000..424f573e4a --- /dev/null +++ b/plugins/PreviewStage/__init__.py @@ -0,0 +1,22 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from . import PreviewStage + +from UM.i18n import i18nCatalog +i18n_catalog = i18nCatalog("cura") + + +def getMetaData(): + return { + "stage": { + "name": i18n_catalog.i18nc("@item:inmenu", "Preview"), + "weight": 1 + } + } + + +def register(app): + return { + "stage": PreviewStage.PreviewStage(app) + } diff --git a/plugins/PreviewStage/plugin.json b/plugins/PreviewStage/plugin.json new file mode 100644 index 0000000000..e1e4288bae --- /dev/null +++ b/plugins/PreviewStage/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Preview Stage", + "author": "Ultimaker B.V.", + "version": "1.0.1", + "description": "Provides a preview stage in Cura.", + "api": "6.0", + "i18n-catalog": "cura" +} \ No newline at end of file diff --git a/plugins/RemovableDriveOutputDevice/plugin.json b/plugins/RemovableDriveOutputDevice/plugin.json index 36bb9ae186..5523d6b1c1 100644 --- a/plugins/RemovableDriveOutputDevice/plugin.json +++ b/plugins/RemovableDriveOutputDevice/plugin.json @@ -2,7 +2,7 @@ "name": "Removable Drive Output Device Plugin", "author": "Ultimaker B.V.", "description": "Provides removable drive hotplugging and writing support.", - "version": "1.0.0", - "api": 5, + "version": "1.0.1", + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/SimulationView/LayerSlider.qml b/plugins/SimulationView/LayerSlider.qml index 1552506969..88f298d1f5 100644 --- a/plugins/SimulationView/LayerSlider.qml +++ b/plugins/SimulationView/LayerSlider.qml @@ -13,23 +13,20 @@ Item { id: sliderRoot - // handle properties - property real handleSize: 10 + // Handle properties + property real handleSize: UM.Theme.getSize("slider_handle").width property real handleRadius: handleSize / 2 property real minimumRangeHandleSize: handleSize / 2 - property color upperHandleColor: "black" - property color lowerHandleColor: "black" - property color rangeHandleColor: "black" - property color handleActiveColor: "white" - property real handleLabelWidth: width + property color upperHandleColor: UM.Theme.getColor("slider_handle") + property color lowerHandleColor: UM.Theme.getColor("slider_handle") + property color rangeHandleColor: UM.Theme.getColor("slider_groove_fill") + property color handleActiveColor: UM.Theme.getColor("slider_handle_active") property var activeHandle: upperHandle - // track properties - property real trackThickness: 4 // width of the slider track - property real trackRadius: trackThickness / 2 - property color trackColor: "white" - property real trackBorderWidth: 1 // width of the slider track border - property color trackBorderColor: "black" + // Track properties + property real trackThickness: UM.Theme.getSize("slider_groove").width // width of the slider track + property real trackRadius: UM.Theme.getSize("slider_groove_radius").width + property color trackColor: UM.Theme.getColor("slider_groove") // value properties property real maximumValue: 100 @@ -80,7 +77,7 @@ Item return Math.min(Math.max(value, sliderRoot.minimumValue), sliderRoot.maximumValue) } - // slider track + // Slider track Rectangle { id: track @@ -90,8 +87,6 @@ Item radius: sliderRoot.trackRadius anchors.centerIn: sliderRoot color: sliderRoot.trackColor - border.width: sliderRoot.trackBorderWidth - border.color: sliderRoot.trackBorderColor visible: sliderRoot.layersVisible } @@ -106,7 +101,7 @@ Item anchors.horizontalCenter: sliderRoot.horizontalCenter visible: sliderRoot.layersVisible - // set the new value when dragging + // Set the new value when dragging function onHandleDragged() { sliderRoot.manuallyChanged = true @@ -140,9 +135,10 @@ Item Rectangle { - width: sliderRoot.trackThickness - 2 * sliderRoot.trackBorderWidth + width: sliderRoot.trackThickness height: parent.height + sliderRoot.handleSize anchors.centerIn: parent + radius: sliderRoot.trackRadius color: sliderRoot.rangeHandleColor } @@ -275,7 +271,7 @@ Item id: upperHandleLabel height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height - x: parent.x - width - UM.Theme.getSize("default_margin").width + x: parent.x - parent.width - width anchors.verticalCenter: parent.verticalCenter target: Qt.point(sliderRoot.width, y + height / 2) visible: sliderRoot.activeHandle == parent @@ -385,9 +381,9 @@ Item id: lowerHandleLabel height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height - x: parent.x - width - UM.Theme.getSize("default_margin").width + x: parent.x - parent.width - width anchors.verticalCenter: parent.verticalCenter - target: Qt.point(sliderRoot.width, y + height / 2) + target: Qt.point(sliderRoot.width + width, y + height / 2) visible: sliderRoot.activeHandle == parent // custom properties diff --git a/plugins/SimulationView/PathSlider.qml b/plugins/SimulationView/PathSlider.qml index f3c28fb5f7..c7a43c6407 100644 --- a/plugins/SimulationView/PathSlider.qml +++ b/plugins/SimulationView/PathSlider.qml @@ -14,19 +14,17 @@ Item id: sliderRoot // handle properties - property real handleSize: 10 + property real handleSize: UM.Theme.getSize("slider_handle").width property real handleRadius: handleSize / 2 - property color handleColor: "black" - property color handleActiveColor: "white" - property color rangeColor: "black" + property color handleColor: UM.Theme.getColor("slider_handle") + property color handleActiveColor: UM.Theme.getColor("slider_handle_active") + property color rangeColor: UM.Theme.getColor("slider_groove_fill") property real handleLabelWidth: width // track properties - property real trackThickness: 4 // width of the slider track - property real trackRadius: trackThickness / 2 - property color trackColor: "white" - property real trackBorderWidth: 1 // width of the slider track border - property color trackBorderColor: "black" + property real trackThickness: UM.Theme.getSize("slider_groove").width + property real trackRadius: UM.Theme.getSize("slider_groove_radius").width + property color trackColor: UM.Theme.getColor("slider_groove") // value properties property real maximumValue: 100 @@ -68,8 +66,6 @@ Item radius: sliderRoot.trackRadius anchors.centerIn: sliderRoot color: sliderRoot.trackColor - border.width: sliderRoot.trackBorderWidth - border.color: sliderRoot.trackBorderColor visible: sliderRoot.pathsVisible } @@ -86,9 +82,10 @@ Item Rectangle { - height: sliderRoot.trackThickness - 2 * sliderRoot.trackBorderWidth + height: sliderRoot.trackThickness width: parent.width + sliderRoot.handleSize anchors.centerIn: parent + radius: sliderRoot.trackRadius color: sliderRoot.rangeColor } } diff --git a/plugins/SimulationView/SimulationSliderLabel.qml b/plugins/SimulationView/SimulationSliderLabel.qml index b69fede243..06c6a51b44 100644 --- a/plugins/SimulationView/SimulationSliderLabel.qml +++ b/plugins/SimulationView/SimulationSliderLabel.qml @@ -48,7 +48,7 @@ UM.PointingRectangle { horizontalCenter: parent.horizontalCenter } - width: (maximumValue.toString().length + 1) * 10 * screenScaleFactor + width: ((maximumValue + 1).toString().length + 1) * 10 * screenScaleFactor text: sliderLabelRoot.value + startFrom // the current handle value, add 1 because layers is an array horizontalAlignment: TextInput.AlignRight diff --git a/plugins/SimulationView/SimulationView.py b/plugins/SimulationView/SimulationView.py index 0ae8b4d9e4..3b2db2efac 100644 --- a/plugins/SimulationView/SimulationView.py +++ b/plugins/SimulationView/SimulationView.py @@ -16,6 +16,7 @@ from UM.Mesh.MeshBuilder import MeshBuilder from UM.Message import Message from UM.Platform import Platform from UM.PluginRegistry import PluginRegistry +from UM.Qt.QtApplication import QtApplication from UM.Resources import Resources from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator @@ -26,8 +27,8 @@ from UM.View.GL.OpenGL import OpenGL from UM.View.GL.OpenGLContext import OpenGLContext from UM.View.GL.ShaderProgram import ShaderProgram -from UM.View.View import View from UM.i18n import i18nCatalog +from cura.CuraView import CuraView from cura.Scene.ConvexHullNode import ConvexHullNode from cura.CuraApplication import CuraApplication @@ -48,15 +49,15 @@ catalog = i18nCatalog("cura") ## View used to display g-code paths. -class SimulationView(View): - # Must match SimulationView.qml +class SimulationView(CuraView): + # Must match SimulationViewMenuComponent.qml LAYER_VIEW_TYPE_MATERIAL_TYPE = 0 LAYER_VIEW_TYPE_LINE_TYPE = 1 LAYER_VIEW_TYPE_FEEDRATE = 2 LAYER_VIEW_TYPE_THICKNESS = 3 - def __init__(self) -> None: - super().__init__() + def __init__(self, parent = None) -> None: + super().__init__(parent) self._max_layers = 0 self._current_layer_num = 0 @@ -113,6 +114,16 @@ class SimulationView(View): self._wireprint_warning_message = Message(catalog.i18nc("@info:status", "Cura does not accurately display layers when Wire Printing is enabled"), title = catalog.i18nc("@info:title", "Simulation View")) + QtApplication.getInstance().engineCreatedSignal.connect(self._onEngineCreated) + + def _onEngineCreated(self) -> None: + plugin_path = PluginRegistry.getInstance().getPluginPath(self.getPluginId()) + if plugin_path: + self.addDisplayComponent("main", os.path.join(plugin_path, "SimulationViewMainComponent.qml")) + self.addDisplayComponent("menu", os.path.join(plugin_path, "SimulationViewMenuComponent.qml")) + else: + Logger.log("e", "Unable to find the path for %s", self.getPluginId()) + def _evaluateCompatibilityMode(self) -> bool: return OpenGLContext.isLegacyOpenGL() or bool(Application.getInstance().getPreferences().getValue("view/force_layer_view_compatibility_mode")) @@ -331,12 +342,16 @@ class SimulationView(View): return self._extruder_count def getMinFeedrate(self) -> float: + if abs(self._min_feedrate - sys.float_info.max) < 10: # Some lenience due to floating point rounding. + return 0.0 # If it's still max-float, there are no measurements. Use 0 then. return self._min_feedrate def getMaxFeedrate(self) -> float: return self._max_feedrate def getMinThickness(self) -> float: + if abs(self._min_thickness - sys.float_info.max) < 10: # Some lenience due to floating point rounding. + return 0.0 # If it's still max-float, there are no measurements. Use 0 then. return self._min_thickness def getMaxThickness(self) -> float: diff --git a/plugins/SimulationView/SimulationView.qml b/plugins/SimulationView/SimulationView.qml deleted file mode 100644 index be124157fb..0000000000 --- a/plugins/SimulationView/SimulationView.qml +++ /dev/null @@ -1,808 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.4 -import QtQuick.Controls 1.2 -import QtQuick.Layouts 1.1 -import QtQuick.Controls.Styles 1.1 - -import UM 1.0 as UM -import Cura 1.0 as Cura - -Item -{ - id: base - width: - { - if (UM.SimulationView.compatibilityMode) - { - return UM.Theme.getSize("layerview_menu_size_compatibility").width; - } - else - { - return UM.Theme.getSize("layerview_menu_size").width; - } - } - height: { - if (viewSettings.collapsed) - { - if (UM.SimulationView.compatibilityMode) - { - return UM.Theme.getSize("layerview_menu_size_compatibility_collapsed").height; - } - return UM.Theme.getSize("layerview_menu_size_collapsed").height; - } - else if (UM.SimulationView.compatibilityMode) - { - return UM.Theme.getSize("layerview_menu_size_compatibility").height; - } - else if (UM.Preferences.getValue("layerview/layer_view_type") == 0) - { - return UM.Theme.getSize("layerview_menu_size_material_color_mode").height + UM.SimulationView.extruderCount * (UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("layerview_row_spacing").height) - } - else - { - return UM.Theme.getSize("layerview_menu_size").height + UM.SimulationView.extruderCount * (UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("layerview_row_spacing").height) - } - } - Behavior on height { NumberAnimation { duration: 100 } } - - property var buttonTarget: - { - if(parent != null) - { - var force_binding = parent.y; // ensure this gets reevaluated when the panel moves - return base.mapFromItem(parent.parent, parent.buttonTarget.x, parent.buttonTarget.y) - } - return Qt.point(0,0) - } - - Rectangle - { - id: layerViewMenu - anchors.right: parent.right - anchors.top: parent.top - width: parent.width - height: parent.height - clip: true - z: layerSlider.z - 1 - color: UM.Theme.getColor("tool_panel_background") - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("lining") - - Button { - id: collapseButton - anchors.top: parent.top - anchors.topMargin: Math.round(UM.Theme.getSize("default_margin").height + (UM.Theme.getSize("layerview_row").height - UM.Theme.getSize("default_margin").height) / 2) - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width - - width: UM.Theme.getSize("standard_arrow").width - height: UM.Theme.getSize("standard_arrow").height - - onClicked: viewSettings.collapsed = !viewSettings.collapsed - - style: ButtonStyle - { - background: UM.RecolorImage - { - width: control.width - height: control.height - sourceSize.width: width - sourceSize.height: width - color: UM.Theme.getColor("setting_control_text") - source: viewSettings.collapsed ? UM.Theme.getIcon("arrow_left") : UM.Theme.getIcon("arrow_bottom") - } - label: Label{ } - } - } - - ColumnLayout - { - id: viewSettings - - property bool collapsed: false - property var extruder_opacities: UM.Preferences.getValue("layerview/extruder_opacities").split("|") - property bool show_travel_moves: UM.Preferences.getValue("layerview/show_travel_moves") - property bool show_helpers: UM.Preferences.getValue("layerview/show_helpers") - property bool show_skin: UM.Preferences.getValue("layerview/show_skin") - property bool show_infill: UM.Preferences.getValue("layerview/show_infill") - // if we are in compatibility mode, we only show the "line type" - property bool show_legend: UM.SimulationView.compatibilityMode ? true : UM.Preferences.getValue("layerview/layer_view_type") == 1 - property bool show_gradient: UM.SimulationView.compatibilityMode ? false : UM.Preferences.getValue("layerview/layer_view_type") == 2 || UM.Preferences.getValue("layerview/layer_view_type") == 3 - property bool show_feedrate_gradient: show_gradient && UM.Preferences.getValue("layerview/layer_view_type") == 2 - property bool show_thickness_gradient: show_gradient && UM.Preferences.getValue("layerview/layer_view_type") == 3 - property bool only_show_top_layers: UM.Preferences.getValue("view/only_show_top_layers") - property int top_layer_count: UM.Preferences.getValue("view/top_layer_count") - - anchors.top: parent.top - anchors.topMargin: UM.Theme.getSize("default_margin").height - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width - spacing: UM.Theme.getSize("layerview_row_spacing").height - - Label - { - id: layerViewTypesLabel - anchors.left: parent.left - text: catalog.i18nc("@label","Color scheme") - font: UM.Theme.getFont("default"); - visible: !UM.SimulationView.compatibilityMode - Layout.fillWidth: true - color: UM.Theme.getColor("setting_control_text") - } - - ListModel // matches SimulationView.py - { - id: layerViewTypes - } - - Component.onCompleted: - { - layerViewTypes.append({ - text: catalog.i18nc("@label:listbox", "Material Color"), - type_id: 0 - }) - layerViewTypes.append({ - text: catalog.i18nc("@label:listbox", "Line Type"), - type_id: 1 - }) - layerViewTypes.append({ - text: catalog.i18nc("@label:listbox", "Feedrate"), - type_id: 2 - }) - layerViewTypes.append({ - text: catalog.i18nc("@label:listbox", "Layer thickness"), - type_id: 3 // these ids match the switching in the shader - }) - } - - ComboBox - { - id: layerTypeCombobox - anchors.left: parent.left - Layout.fillWidth: true - Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - model: layerViewTypes - visible: !UM.SimulationView.compatibilityMode - style: UM.Theme.styles.combobox - anchors.right: parent.right - - onActivated: - { - UM.Preferences.setValue("layerview/layer_view_type", index); - } - - Component.onCompleted: - { - currentIndex = UM.SimulationView.compatibilityMode ? 1 : UM.Preferences.getValue("layerview/layer_view_type"); - updateLegends(currentIndex); - } - - function updateLegends(type_id) - { - // update visibility of legends - viewSettings.show_legend = UM.SimulationView.compatibilityMode || (type_id == 1); - viewSettings.show_gradient = !UM.SimulationView.compatibilityMode && (type_id == 2 || type_id == 3); - viewSettings.show_feedrate_gradient = viewSettings.show_gradient && (type_id == 2); - viewSettings.show_thickness_gradient = viewSettings.show_gradient && (type_id == 3); - } - } - - Label - { - id: compatibilityModeLabel - anchors.left: parent.left - text: catalog.i18nc("@label","Compatibility Mode") - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - visible: UM.SimulationView.compatibilityMode - Layout.fillWidth: true - Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - } - - Item - { - height: Math.round(UM.Theme.getSize("default_margin").width / 2) - width: width - } - - Connections - { - target: UM.Preferences - onPreferenceChanged: - { - layerTypeCombobox.currentIndex = UM.SimulationView.compatibilityMode ? 1 : UM.Preferences.getValue("layerview/layer_view_type"); - layerTypeCombobox.updateLegends(layerTypeCombobox.currentIndex); - playButton.pauseSimulation(); - viewSettings.extruder_opacities = UM.Preferences.getValue("layerview/extruder_opacities").split("|"); - viewSettings.show_travel_moves = UM.Preferences.getValue("layerview/show_travel_moves"); - viewSettings.show_helpers = UM.Preferences.getValue("layerview/show_helpers"); - viewSettings.show_skin = UM.Preferences.getValue("layerview/show_skin"); - viewSettings.show_infill = UM.Preferences.getValue("layerview/show_infill"); - viewSettings.only_show_top_layers = UM.Preferences.getValue("view/only_show_top_layers"); - viewSettings.top_layer_count = UM.Preferences.getValue("view/top_layer_count"); - } - } - - Repeater - { - model: Cura.ExtrudersModel{} - CheckBox - { - id: extrudersModelCheckBox - checked: viewSettings.extruder_opacities[index] > 0.5 || viewSettings.extruder_opacities[index] == undefined || viewSettings.extruder_opacities[index] == "" - onClicked: - { - viewSettings.extruder_opacities[index] = checked ? 1.0 : 0.0 - UM.Preferences.setValue("layerview/extruder_opacities", viewSettings.extruder_opacities.join("|")); - } - visible: !UM.SimulationView.compatibilityMode - enabled: index + 1 <= 4 - Rectangle - { - anchors.verticalCenter: parent.verticalCenter - anchors.right: extrudersModelCheckBox.right - width: UM.Theme.getSize("layerview_legend_size").width - height: UM.Theme.getSize("layerview_legend_size").height - color: model.color - radius: Math.round(width / 2) - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("lining") - visible: !viewSettings.show_legend & !viewSettings.show_gradient - } - Layout.fillWidth: true - Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height - Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - style: UM.Theme.styles.checkbox - Label - { - text: model.name - elide: Text.ElideRight - color: UM.Theme.getColor("setting_control_text") - font: UM.Theme.getFont("default") - anchors.verticalCenter: parent.verticalCenter - anchors.left: extrudersModelCheckBox.left; - anchors.right: extrudersModelCheckBox.right; - anchors.leftMargin: UM.Theme.getSize("checkbox").width + Math.round(UM.Theme.getSize("default_margin").width/2) - anchors.rightMargin: UM.Theme.getSize("default_margin").width * 2 - } - } - } - - Repeater - { - model: ListModel - { - id: typesLegendModel - Component.onCompleted: - { - typesLegendModel.append({ - label: catalog.i18nc("@label", "Show Travels"), - initialValue: viewSettings.show_travel_moves, - preference: "layerview/show_travel_moves", - colorId: "layerview_move_combing" - }); - typesLegendModel.append({ - label: catalog.i18nc("@label", "Show Helpers"), - initialValue: viewSettings.show_helpers, - preference: "layerview/show_helpers", - colorId: "layerview_support" - }); - typesLegendModel.append({ - label: catalog.i18nc("@label", "Show Shell"), - initialValue: viewSettings.show_skin, - preference: "layerview/show_skin", - colorId: "layerview_inset_0" - }); - typesLegendModel.append({ - label: catalog.i18nc("@label", "Show Infill"), - initialValue: viewSettings.show_infill, - preference: "layerview/show_infill", - colorId: "layerview_infill" - }); - } - } - - CheckBox - { - id: legendModelCheckBox - checked: model.initialValue - onClicked: - { - UM.Preferences.setValue(model.preference, checked); - } - Rectangle - { - anchors.verticalCenter: parent.verticalCenter - anchors.right: legendModelCheckBox.right - width: UM.Theme.getSize("layerview_legend_size").width - height: UM.Theme.getSize("layerview_legend_size").height - color: UM.Theme.getColor(model.colorId) - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("lining") - visible: viewSettings.show_legend - } - Layout.fillWidth: true - Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height - Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - style: UM.Theme.styles.checkbox - Label - { - text: label - font: UM.Theme.getFont("default") - elide: Text.ElideRight - color: UM.Theme.getColor("setting_control_text") - anchors.verticalCenter: parent.verticalCenter - anchors.left: legendModelCheckBox.left; - anchors.right: legendModelCheckBox.right; - anchors.leftMargin: UM.Theme.getSize("checkbox").width + Math.round(UM.Theme.getSize("default_margin").width/2) - anchors.rightMargin: UM.Theme.getSize("default_margin").width * 2 - } - } - } - - CheckBox - { - checked: viewSettings.only_show_top_layers - onClicked: - { - UM.Preferences.setValue("view/only_show_top_layers", checked ? 1.0 : 0.0); - } - text: catalog.i18nc("@label", "Only Show Top Layers") - visible: UM.SimulationView.compatibilityMode - style: UM.Theme.styles.checkbox - } - CheckBox - { - checked: viewSettings.top_layer_count == 5 - onClicked: - { - UM.Preferences.setValue("view/top_layer_count", checked ? 5 : 1); - } - text: catalog.i18nc("@label", "Show 5 Detailed Layers On Top") - visible: UM.SimulationView.compatibilityMode - style: UM.Theme.styles.checkbox - } - - Repeater - { - model: ListModel - { - id: typesLegendModelNoCheck - Component.onCompleted: - { - typesLegendModelNoCheck.append({ - label: catalog.i18nc("@label", "Top / Bottom"), - colorId: "layerview_skin", - }); - typesLegendModelNoCheck.append({ - label: catalog.i18nc("@label", "Inner Wall"), - colorId: "layerview_inset_x", - }); - } - } - - Label - { - text: label - visible: viewSettings.show_legend - id: typesLegendModelLabel - Rectangle - { - anchors.verticalCenter: parent.verticalCenter - anchors.right: typesLegendModelLabel.right - width: UM.Theme.getSize("layerview_legend_size").width - height: UM.Theme.getSize("layerview_legend_size").height - color: UM.Theme.getColor(model.colorId) - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("lining") - visible: viewSettings.show_legend - } - Layout.fillWidth: true - Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height - Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - color: UM.Theme.getColor("setting_control_text") - font: UM.Theme.getFont("default") - } - } - - // Text for the minimum, maximum and units for the feedrates and layer thickness - Item - { - id: gradientLegend - visible: viewSettings.show_gradient - width: parent.width - height: UM.Theme.getSize("layerview_row").height - anchors - { - topMargin: UM.Theme.getSize("slider_layerview_margin").height - horizontalCenter: parent.horizontalCenter - } - - Label - { - text: minText() - anchors.left: parent.left - color: UM.Theme.getColor("setting_control_text") - font: UM.Theme.getFont("default") - - function minText() - { - if (UM.SimulationView.layerActivity && CuraApplication.platformActivity) - { - // Feedrate selected - if (UM.Preferences.getValue("layerview/layer_view_type") == 2) - { - return parseFloat(UM.SimulationView.getMinFeedrate()).toFixed(2) - } - // Layer thickness selected - if (UM.Preferences.getValue("layerview/layer_view_type") == 3) - { - return parseFloat(UM.SimulationView.getMinThickness()).toFixed(2) - } - } - return catalog.i18nc("@label","min") - } - } - - Label - { - text: unitsText() - anchors.horizontalCenter: parent.horizontalCenter - color: UM.Theme.getColor("setting_control_text") - font: UM.Theme.getFont("default") - - function unitsText() - { - if (UM.SimulationView.layerActivity && CuraApplication.platformActivity) - { - // Feedrate selected - if (UM.Preferences.getValue("layerview/layer_view_type") == 2) - { - return "mm/s" - } - // Layer thickness selected - if (UM.Preferences.getValue("layerview/layer_view_type") == 3) - { - return "mm" - } - } - return "" - } - } - - Label - { - text: maxText() - anchors.right: parent.right - color: UM.Theme.getColor("setting_control_text") - font: UM.Theme.getFont("default") - - function maxText() - { - if (UM.SimulationView.layerActivity && CuraApplication.platformActivity) - { - // Feedrate selected - if (UM.Preferences.getValue("layerview/layer_view_type") == 2) - { - return parseFloat(UM.SimulationView.getMaxFeedrate()).toFixed(2) - } - // Layer thickness selected - if (UM.Preferences.getValue("layerview/layer_view_type") == 3) - { - return parseFloat(UM.SimulationView.getMaxThickness()).toFixed(2) - } - } - return catalog.i18nc("@label","max") - } - } - } - - // Gradient colors for feedrate - Rectangle - { // In QML 5.9 can be changed by LinearGradient - // Invert values because then the bar is rotated 90 degrees - id: feedrateGradient - visible: viewSettings.show_feedrate_gradient - anchors.left: parent.right - height: parent.width - width: Math.round(UM.Theme.getSize("layerview_row").height * 1.5) - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("lining") - transform: Rotation {origin.x: 0; origin.y: 0; angle: 90} - gradient: Gradient - { - GradientStop - { - position: 0.000 - color: Qt.rgba(1, 0.5, 0, 1) - } - GradientStop - { - position: 0.625 - color: Qt.rgba(0.375, 0.5, 0, 1) - } - GradientStop - { - position: 0.75 - color: Qt.rgba(0.25, 1, 0, 1) - } - GradientStop - { - position: 1.0 - color: Qt.rgba(0, 0, 1, 1) - } - } - } - - // Gradient colors for layer thickness (similar to parula colormap) - Rectangle // In QML 5.9 can be changed by LinearGradient - { - // Invert values because then the bar is rotated 90 degrees - id: thicknessGradient - visible: viewSettings.show_thickness_gradient - anchors.left: parent.right - height: parent.width - width: Math.round(UM.Theme.getSize("layerview_row").height * 1.5) - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("lining") - transform: Rotation {origin.x: 0; origin.y: 0; angle: 90} - gradient: Gradient - { - GradientStop - { - position: 0.000 - color: Qt.rgba(1, 1, 0, 1) - } - GradientStop - { - position: 0.25 - color: Qt.rgba(1, 0.75, 0.25, 1) - } - GradientStop - { - position: 0.5 - color: Qt.rgba(0, 0.75, 0.5, 1) - } - GradientStop - { - position: 0.75 - color: Qt.rgba(0, 0.375, 0.75, 1) - } - GradientStop - { - position: 1.0 - color: Qt.rgba(0, 0, 0.5, 1) - } - } - } - } - } - - Item - { - id: slidersBox - - width: parent.width - visible: UM.SimulationView.layerActivity && CuraApplication.platformActivity - - anchors - { - top: parent.bottom - topMargin: UM.Theme.getSize("slider_layerview_margin").height - left: parent.left - } - - PathSlider - { - id: pathSlider - - height: UM.Theme.getSize("slider_handle").width - anchors.left: playButton.right - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.right: parent.right - visible: !UM.SimulationView.compatibilityMode - - // custom properties - handleValue: UM.SimulationView.currentPath - maximumValue: UM.SimulationView.numPaths - handleSize: UM.Theme.getSize("slider_handle").width - trackThickness: UM.Theme.getSize("slider_groove").width - trackColor: UM.Theme.getColor("slider_groove") - trackBorderColor: UM.Theme.getColor("slider_groove_border") - handleColor: UM.Theme.getColor("slider_handle") - handleActiveColor: UM.Theme.getColor("slider_handle_active") - rangeColor: UM.Theme.getColor("slider_groove_fill") - - // update values when layer data changes - Connections - { - target: UM.SimulationView - onMaxPathsChanged: pathSlider.setHandleValue(UM.SimulationView.currentPath) - onCurrentPathChanged: - { - // Only pause the simulation when the layer was changed manually, not when the simulation is running - if (pathSlider.manuallyChanged) - { - playButton.pauseSimulation() - } - pathSlider.setHandleValue(UM.SimulationView.currentPath) - } - } - - // make sure the slider handlers show the correct value after switching views - Component.onCompleted: - { - pathSlider.setHandleValue(UM.SimulationView.currentPath) - } - } - - LayerSlider - { - id: layerSlider - - width: UM.Theme.getSize("slider_handle").width - height: UM.Theme.getSize("layerview_menu_size").height - - anchors - { - top: !UM.SimulationView.compatibilityMode ? pathSlider.bottom : parent.top - topMargin: !UM.SimulationView.compatibilityMode ? UM.Theme.getSize("default_margin").height : 0 - right: parent.right - rightMargin: UM.Theme.getSize("slider_layerview_margin").width - } - - // custom properties - upperValue: UM.SimulationView.currentLayer - lowerValue: UM.SimulationView.minimumLayer - maximumValue: UM.SimulationView.numLayers - handleSize: UM.Theme.getSize("slider_handle").width - trackThickness: UM.Theme.getSize("slider_groove").width - trackColor: UM.Theme.getColor("slider_groove") - trackBorderColor: UM.Theme.getColor("slider_groove_border") - upperHandleColor: UM.Theme.getColor("slider_handle") - lowerHandleColor: UM.Theme.getColor("slider_handle") - rangeHandleColor: UM.Theme.getColor("slider_groove_fill") - handleActiveColor: UM.Theme.getColor("slider_handle_active") - handleLabelWidth: UM.Theme.getSize("slider_layerview_background").width - - // update values when layer data changes - Connections - { - target: UM.SimulationView - onMaxLayersChanged: layerSlider.setUpperValue(UM.SimulationView.currentLayer) - onMinimumLayerChanged: layerSlider.setLowerValue(UM.SimulationView.minimumLayer) - onCurrentLayerChanged: - { - // Only pause the simulation when the layer was changed manually, not when the simulation is running - if (layerSlider.manuallyChanged) - { - playButton.pauseSimulation() - } - layerSlider.setUpperValue(UM.SimulationView.currentLayer) - } - } - - // make sure the slider handlers show the correct value after switching views - Component.onCompleted: - { - layerSlider.setLowerValue(UM.SimulationView.minimumLayer) - layerSlider.setUpperValue(UM.SimulationView.currentLayer) - } - } - - // Play simulation button - Button - { - id: playButton - iconSource: "./resources/simulation_resume.svg" - style: UM.Theme.styles.small_tool_button - visible: !UM.SimulationView.compatibilityMode - anchors - { - verticalCenter: pathSlider.verticalCenter - } - - property var status: 0 // indicates if it's stopped (0) or playing (1) - - onClicked: - { - switch(status) - { - case 0: - { - resumeSimulation() - break - } - case 1: - { - pauseSimulation() - break - } - } - } - - function pauseSimulation() - { - UM.SimulationView.setSimulationRunning(false) - iconSource = "./resources/simulation_resume.svg" - simulationTimer.stop() - status = 0 - layerSlider.manuallyChanged = true - pathSlider.manuallyChanged = true - } - - function resumeSimulation() - { - UM.SimulationView.setSimulationRunning(true) - iconSource = "./resources/simulation_pause.svg" - simulationTimer.start() - layerSlider.manuallyChanged = false - pathSlider.manuallyChanged = false - } - } - - Timer - { - id: simulationTimer - interval: 100 - running: false - repeat: true - onTriggered: - { - var currentPath = UM.SimulationView.currentPath - var numPaths = UM.SimulationView.numPaths - var currentLayer = UM.SimulationView.currentLayer - var numLayers = UM.SimulationView.numLayers - // When the user plays the simulation, if the path slider is at the end of this layer, we start - // the simulation at the beginning of the current layer. - if (playButton.status == 0) - { - if (currentPath >= numPaths) - { - UM.SimulationView.setCurrentPath(0) - } - else - { - UM.SimulationView.setCurrentPath(currentPath+1) - } - } - // If the simulation is already playing and we reach the end of a layer, then it automatically - // starts at the beginning of the next layer. - else - { - if (currentPath >= numPaths) - { - // At the end of the model, the simulation stops - if (currentLayer >= numLayers) - { - playButton.pauseSimulation() - } - else - { - UM.SimulationView.setCurrentLayer(currentLayer+1) - UM.SimulationView.setCurrentPath(0) - } - } - else - { - UM.SimulationView.setCurrentPath(currentPath+1) - } - } - // The status must be set here instead of in the resumeSimulation function otherwise it won't work - // correctly, because part of the logic is in this trigger function. - playButton.status = 1 - } - } - } - - FontMetrics - { - id: fontMetrics - font: UM.Theme.getFont("default") - } -} diff --git a/plugins/SimulationView/SimulationViewMainComponent.qml b/plugins/SimulationView/SimulationViewMainComponent.qml new file mode 100644 index 0000000000..16b049c921 --- /dev/null +++ b/plugins/SimulationView/SimulationViewMainComponent.qml @@ -0,0 +1,211 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.4 +import QtQuick.Controls 1.2 +import QtQuick.Layouts 1.1 +import QtQuick.Controls.Styles 1.1 + +import UM 1.4 as UM +import Cura 1.0 as Cura + +Item +{ + property bool is_simulation_playing: false + visible: UM.SimulationView.layerActivity && CuraApplication.platformActivity + + PathSlider + { + id: pathSlider + height: UM.Theme.getSize("slider_handle").width + width: UM.Theme.getSize("slider_layerview_size").height + + anchors.bottom: parent.bottom + anchors.bottomMargin: UM.Theme.getSize("default_margin").height + + anchors.horizontalCenter: parent.horizontalCenter + + visible: !UM.SimulationView.compatibilityMode + + // Custom properties + handleValue: UM.SimulationView.currentPath + maximumValue: UM.SimulationView.numPaths + + // Update values when layer data changes. + Connections + { + target: UM.SimulationView + onMaxPathsChanged: pathSlider.setHandleValue(UM.SimulationView.currentPath) + onCurrentPathChanged: + { + // Only pause the simulation when the layer was changed manually, not when the simulation is running + if (pathSlider.manuallyChanged) + { + playButton.pauseSimulation() + } + pathSlider.setHandleValue(UM.SimulationView.currentPath) + } + } + + // Ensure that the slider handlers show the correct value after switching views. + Component.onCompleted: + { + pathSlider.setHandleValue(UM.SimulationView.currentPath) + } + + } + + UM.SimpleButton + { + id: playButton + iconSource: !is_simulation_playing ? "./resources/simulation_resume.svg": "./resources/simulation_pause.svg" + width: UM.Theme.getSize("small_button").width + height: UM.Theme.getSize("small_button").height + hoverColor: UM.Theme.getColor("slider_handle_active") + color: UM.Theme.getColor("slider_handle") + iconMargin: UM.Theme.getSize("thick_lining").width + visible: !UM.SimulationView.compatibilityMode + + Connections + { + target: UM.Preferences + onPreferenceChanged: + { + playButton.pauseSimulation() + } + } + + anchors + { + right: pathSlider.left + verticalCenter: pathSlider.verticalCenter + } + + onClicked: + { + if(is_simulation_playing) + { + pauseSimulation() + } + else + { + resumeSimulation() + } + } + + function pauseSimulation() + { + UM.SimulationView.setSimulationRunning(false) + simulationTimer.stop() + is_simulation_playing = false + layerSlider.manuallyChanged = true + pathSlider.manuallyChanged = true + } + + function resumeSimulation() + { + UM.SimulationView.setSimulationRunning(true) + simulationTimer.start() + layerSlider.manuallyChanged = false + pathSlider.manuallyChanged = false + } + } + + Timer + { + id: simulationTimer + interval: 100 + running: false + repeat: true + onTriggered: + { + var currentPath = UM.SimulationView.currentPath + var numPaths = UM.SimulationView.numPaths + var currentLayer = UM.SimulationView.currentLayer + var numLayers = UM.SimulationView.numLayers + + // When the user plays the simulation, if the path slider is at the end of this layer, we start + // the simulation at the beginning of the current layer. + if (!is_simulation_playing) + { + if (currentPath >= numPaths) + { + UM.SimulationView.setCurrentPath(0) + } + else + { + UM.SimulationView.setCurrentPath(currentPath + 1) + } + } + // If the simulation is already playing and we reach the end of a layer, then it automatically + // starts at the beginning of the next layer. + else + { + if (currentPath >= numPaths) + { + // At the end of the model, the simulation stops + if (currentLayer >= numLayers) + { + playButton.pauseSimulation() + } + else + { + UM.SimulationView.setCurrentLayer(currentLayer + 1) + UM.SimulationView.setCurrentPath(0) + } + } + else + { + UM.SimulationView.setCurrentPath(currentPath + 1) + } + } + // The status must be set here instead of in the resumeSimulation function otherwise it won't work + // correctly, because part of the logic is in this trigger function. + is_simulation_playing = true + } + } + + LayerSlider + { + id: layerSlider + + width: UM.Theme.getSize("slider_handle").width + height: UM.Theme.getSize("slider_layerview_size").height + + anchors + { + right: parent.right + verticalCenter: parent.verticalCenter + rightMargin: UM.Theme.getSize("default_margin").width + } + + // Custom properties + upperValue: UM.SimulationView.currentLayer + lowerValue: UM.SimulationView.minimumLayer + maximumValue: UM.SimulationView.numLayers + + // Update values when layer data changes + Connections + { + target: UM.SimulationView + onMaxLayersChanged: layerSlider.setUpperValue(UM.SimulationView.currentLayer) + onMinimumLayerChanged: layerSlider.setLowerValue(UM.SimulationView.minimumLayer) + onCurrentLayerChanged: + { + // Only pause the simulation when the layer was changed manually, not when the simulation is running + if (layerSlider.manuallyChanged) + { + playButton.pauseSimulation() + } + layerSlider.setUpperValue(UM.SimulationView.currentLayer) + } + } + + // Make sure the slider handlers show the correct value after switching views + Component.onCompleted: + { + layerSlider.setLowerValue(UM.SimulationView.minimumLayer) + layerSlider.setUpperValue(UM.SimulationView.currentLayer) + } + } +} \ No newline at end of file diff --git a/plugins/SimulationView/SimulationViewMenuComponent.qml b/plugins/SimulationView/SimulationViewMenuComponent.qml new file mode 100644 index 0000000000..4c952d4c43 --- /dev/null +++ b/plugins/SimulationView/SimulationViewMenuComponent.qml @@ -0,0 +1,551 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.4 +import QtQuick.Controls 1.2 +import QtQuick.Layouts 1.1 +import QtQuick.Controls.Styles 1.1 +import QtGraphicalEffects 1.0 + +import UM 1.0 as UM +import Cura 1.0 as Cura + + +Cura.ExpandableComponent +{ + id: base + + contentHeaderTitle: catalog.i18nc("@label", "Color scheme") + + Connections + { + target: UM.Preferences + onPreferenceChanged: + { + layerTypeCombobox.currentIndex = UM.SimulationView.compatibilityMode ? 1 : UM.Preferences.getValue("layerview/layer_view_type") + layerTypeCombobox.updateLegends(layerTypeCombobox.currentIndex) + viewSettings.extruder_opacities = UM.Preferences.getValue("layerview/extruder_opacities").split("|") + viewSettings.show_travel_moves = UM.Preferences.getValue("layerview/show_travel_moves") + viewSettings.show_helpers = UM.Preferences.getValue("layerview/show_helpers") + viewSettings.show_skin = UM.Preferences.getValue("layerview/show_skin") + viewSettings.show_infill = UM.Preferences.getValue("layerview/show_infill") + viewSettings.only_show_top_layers = UM.Preferences.getValue("view/only_show_top_layers") + viewSettings.top_layer_count = UM.Preferences.getValue("view/top_layer_count") + } + } + + headerItem: Item + { + Label + { + id: colorSchemeLabel + text: catalog.i18nc("@label", "Color scheme") + verticalAlignment: Text.AlignVCenter + height: parent.height + elide: Text.ElideRight + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text_medium") + renderType: Text.NativeRendering + } + + Label + { + text: layerTypeCombobox.currentText + verticalAlignment: Text.AlignVCenter + anchors + { + left: colorSchemeLabel.right + leftMargin: UM.Theme.getSize("default_margin").width + right: parent.right + } + height: parent.height + elide: Text.ElideRight + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + } + + contentItem: Column + { + id: viewSettings + + property var extruder_opacities: UM.Preferences.getValue("layerview/extruder_opacities").split("|") + property bool show_travel_moves: UM.Preferences.getValue("layerview/show_travel_moves") + property bool show_helpers: UM.Preferences.getValue("layerview/show_helpers") + property bool show_skin: UM.Preferences.getValue("layerview/show_skin") + property bool show_infill: UM.Preferences.getValue("layerview/show_infill") + + // If we are in compatibility mode, we only show the "line type" + property bool show_legend: UM.SimulationView.compatibilityMode ? true : UM.Preferences.getValue("layerview/layer_view_type") == 1 + property bool show_gradient: UM.SimulationView.compatibilityMode ? false : UM.Preferences.getValue("layerview/layer_view_type") == 2 || UM.Preferences.getValue("layerview/layer_view_type") == 3 + property bool show_feedrate_gradient: show_gradient && UM.Preferences.getValue("layerview/layer_view_type") == 2 + property bool show_thickness_gradient: show_gradient && UM.Preferences.getValue("layerview/layer_view_type") == 3 + property bool only_show_top_layers: UM.Preferences.getValue("view/only_show_top_layers") + property int top_layer_count: UM.Preferences.getValue("view/top_layer_count") + + width: UM.Theme.getSize("layerview_menu_size").width - 2 * UM.Theme.getSize("default_margin").width + height: implicitHeight + + spacing: UM.Theme.getSize("layerview_row_spacing").height + + ListModel // matches SimulationView.py + { + id: layerViewTypes + } + + Component.onCompleted: + { + layerViewTypes.append({ + text: catalog.i18nc("@label:listbox", "Material Color"), + type_id: 0 + }) + layerViewTypes.append({ + text: catalog.i18nc("@label:listbox", "Line Type"), + type_id: 1 + }) + layerViewTypes.append({ + text: catalog.i18nc("@label:listbox", "Feedrate"), + type_id: 2 + }) + layerViewTypes.append({ + text: catalog.i18nc("@label:listbox", "Layer thickness"), + type_id: 3 // these ids match the switching in the shader + }) + } + + ComboBox + { + id: layerTypeCombobox + width: parent.width + model: layerViewTypes + visible: !UM.SimulationView.compatibilityMode + style: UM.Theme.styles.combobox + + onActivated: + { + UM.Preferences.setValue("layerview/layer_view_type", index); + } + + Component.onCompleted: + { + currentIndex = UM.SimulationView.compatibilityMode ? 1 : UM.Preferences.getValue("layerview/layer_view_type"); + updateLegends(currentIndex); + } + + function updateLegends(type_id) + { + // Update the visibility of the legends. + viewSettings.show_legend = UM.SimulationView.compatibilityMode || (type_id == 1); + viewSettings.show_gradient = !UM.SimulationView.compatibilityMode && (type_id == 2 || type_id == 3); + viewSettings.show_feedrate_gradient = viewSettings.show_gradient && (type_id == 2); + viewSettings.show_thickness_gradient = viewSettings.show_gradient && (type_id == 3); + } + } + + Label + { + id: compatibilityModeLabel + text: catalog.i18nc("@label", "Compatibility Mode") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + visible: UM.SimulationView.compatibilityMode + height: UM.Theme.getSize("layerview_row").height + width: parent.width + renderType: Text.NativeRendering + } + + Item // Spacer + { + height: UM.Theme.getSize("narrow_margin").width + width: width + } + + Repeater + { + model: CuraApplication.getExtrudersModel() + + CheckBox + { + id: extrudersModelCheckBox + checked: viewSettings.extruder_opacities[index] > 0.5 || viewSettings.extruder_opacities[index] == undefined || viewSettings.extruder_opacities[index] == "" + height: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height + width: parent.width + visible: !UM.SimulationView.compatibilityMode + enabled: index < 4 + + onClicked: + { + viewSettings.extruder_opacities[index] = checked ? 1.0 : 0.0 + UM.Preferences.setValue("layerview/extruder_opacities", viewSettings.extruder_opacities.join("|")); + } + + style: UM.Theme.styles.checkbox + + + UM.RecolorImage + { + id: swatch + anchors.verticalCenter: parent.verticalCenter + anchors.right: extrudersModelCheckBox.right + width: UM.Theme.getSize("layerview_legend_size").width + height: UM.Theme.getSize("layerview_legend_size").height + source: UM.Theme.getIcon("extruder_button") + color: model.color + } + + Label + { + text: model.name + elide: Text.ElideRight + color: UM.Theme.getColor("setting_control_text") + font: UM.Theme.getFont("default") + anchors + { + verticalCenter: parent.verticalCenter + left: extrudersModelCheckBox.left + right: extrudersModelCheckBox.right + leftMargin: UM.Theme.getSize("checkbox").width + Math.round(UM.Theme.getSize("default_margin").width / 2) + rightMargin: UM.Theme.getSize("default_margin").width * 2 + } + renderType: Text.NativeRendering + } + } + } + + Repeater + { + model: ListModel + { + id: typesLegendModel + Component.onCompleted: + { + typesLegendModel.append({ + label: catalog.i18nc("@label", "Travels"), + initialValue: viewSettings.show_travel_moves, + preference: "layerview/show_travel_moves", + colorId: "layerview_move_combing" + }); + typesLegendModel.append({ + label: catalog.i18nc("@label", "Helpers"), + initialValue: viewSettings.show_helpers, + preference: "layerview/show_helpers", + colorId: "layerview_support" + }); + typesLegendModel.append({ + label: catalog.i18nc("@label", "Shell"), + initialValue: viewSettings.show_skin, + preference: "layerview/show_skin", + colorId: "layerview_inset_0" + }); + typesLegendModel.append({ + label: catalog.i18nc("@label", "Infill"), + initialValue: viewSettings.show_infill, + preference: "layerview/show_infill", + colorId: "layerview_infill" + }); + } + } + + CheckBox + { + id: legendModelCheckBox + checked: model.initialValue + onClicked: UM.Preferences.setValue(model.preference, checked) + height: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height + width: parent.width + + style: UM.Theme.styles.checkbox + + Rectangle + { + anchors.verticalCenter: parent.verticalCenter + anchors.right: legendModelCheckBox.right + width: UM.Theme.getSize("layerview_legend_size").width + height: UM.Theme.getSize("layerview_legend_size").height + color: UM.Theme.getColor(model.colorId) + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + visible: viewSettings.show_legend + } + + Label + { + text: label + font: UM.Theme.getFont("default") + elide: Text.ElideRight + renderType: Text.NativeRendering + color: UM.Theme.getColor("setting_control_text") + anchors.verticalCenter: parent.verticalCenter + anchors.left: legendModelCheckBox.left + anchors.right: legendModelCheckBox.right + anchors.leftMargin: UM.Theme.getSize("checkbox").width + Math.round(UM.Theme.getSize("default_margin").width / 2) + anchors.rightMargin: UM.Theme.getSize("default_margin").width * 2 + } + } + } + + CheckBox + { + checked: viewSettings.only_show_top_layers + onClicked: UM.Preferences.setValue("view/only_show_top_layers", checked ? 1.0 : 0.0) + text: catalog.i18nc("@label", "Only Show Top Layers") + visible: UM.SimulationView.compatibilityMode + style: UM.Theme.styles.checkbox + width: parent.width + } + + CheckBox + { + checked: viewSettings.top_layer_count == 5 + onClicked: UM.Preferences.setValue("view/top_layer_count", checked ? 5 : 1) + text: catalog.i18nc("@label", "Show 5 Detailed Layers On Top") + width: parent.width + visible: UM.SimulationView.compatibilityMode + style: UM.Theme.styles.checkbox + } + + Repeater + { + model: ListModel + { + id: typesLegendModelNoCheck + Component.onCompleted: + { + typesLegendModelNoCheck.append({ + label: catalog.i18nc("@label", "Top / Bottom"), + colorId: "layerview_skin", + }); + typesLegendModelNoCheck.append({ + label: catalog.i18nc("@label", "Inner Wall"), + colorId: "layerview_inset_x", + }); + } + } + + Label + { + text: label + visible: viewSettings.show_legend + id: typesLegendModelLabel + + height: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height + width: parent.width + color: UM.Theme.getColor("setting_control_text") + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + Rectangle + { + anchors.verticalCenter: parent.verticalCenter + anchors.right: typesLegendModelLabel.right + + width: UM.Theme.getSize("layerview_legend_size").width + height: UM.Theme.getSize("layerview_legend_size").height + + color: UM.Theme.getColor(model.colorId) + + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + } + } + } + + // Text for the minimum, maximum and units for the feedrates and layer thickness + Item + { + id: gradientLegend + visible: viewSettings.show_gradient + width: parent.width + height: UM.Theme.getSize("layerview_row").height + + Label //Minimum value. + { + text: + { + if (UM.SimulationView.layerActivity && CuraApplication.platformActivity) + { + // Feedrate selected + if (UM.Preferences.getValue("layerview/layer_view_type") == 2) + { + return parseFloat(UM.SimulationView.getMinFeedrate()).toFixed(2) + } + // Layer thickness selected + if (UM.Preferences.getValue("layerview/layer_view_type") == 3) + { + return parseFloat(UM.SimulationView.getMinThickness()).toFixed(2) + } + } + return catalog.i18nc("@label","min") + } + anchors.left: parent.left + color: UM.Theme.getColor("setting_control_text") + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + } + + Label //Unit in the middle. + { + text: + { + if (UM.SimulationView.layerActivity && CuraApplication.platformActivity) + { + // Feedrate selected + if (UM.Preferences.getValue("layerview/layer_view_type") == 2) + { + return "mm/s" + } + // Layer thickness selected + if (UM.Preferences.getValue("layerview/layer_view_type") == 3) + { + return "mm" + } + } + return "" + } + + anchors.horizontalCenter: parent.horizontalCenter + color: UM.Theme.getColor("setting_control_text") + font: UM.Theme.getFont("default") + } + + Label //Maximum value. + { + text: { + if (UM.SimulationView.layerActivity && CuraApplication.platformActivity) + { + // Feedrate selected + if (UM.Preferences.getValue("layerview/layer_view_type") == 2) + { + return parseFloat(UM.SimulationView.getMaxFeedrate()).toFixed(2) + } + // Layer thickness selected + if (UM.Preferences.getValue("layerview/layer_view_type") == 3) + { + return parseFloat(UM.SimulationView.getMaxThickness()).toFixed(2) + } + } + return catalog.i18nc("@label","max") + } + + anchors.right: parent.right + color: UM.Theme.getColor("setting_control_text") + font: UM.Theme.getFont("default") + } + } + + // Gradient colors for feedrate + Rectangle + { + id: feedrateGradient + visible: viewSettings.show_feedrate_gradient + anchors.left: parent.left + anchors.right: parent.right + height: Math.round(UM.Theme.getSize("layerview_row").height * 1.5) + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + + LinearGradient + { + anchors + { + left: parent.left + leftMargin: UM.Theme.getSize("default_lining").width + right: parent.right + rightMargin: UM.Theme.getSize("default_lining").width + top: parent.top + topMargin: UM.Theme.getSize("default_lining").width + bottom: parent.bottom + bottomMargin: UM.Theme.getSize("default_lining").width + } + start: Qt.point(0, 0) + end: Qt.point(parent.width, 0) + gradient: Gradient + { + GradientStop + { + position: 0.000 + color: Qt.rgba(0, 0, 1, 1) + } + GradientStop + { + position: 0.25 + color: Qt.rgba(0.25, 1, 0, 1) + } + GradientStop + { + position: 0.375 + color: Qt.rgba(0.375, 0.5, 0, 1) + } + GradientStop + { + position: 1.0 + color: Qt.rgba(1, 0.5, 0, 1) + } + } + } + } + + // Gradient colors for layer thickness (similar to parula colormap) + Rectangle + { + id: thicknessGradient + visible: viewSettings.show_thickness_gradient + anchors.left: parent.left + anchors.right: parent.right + height: Math.round(UM.Theme.getSize("layerview_row").height * 1.5) + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + + LinearGradient + { + anchors + { + left: parent.left + leftMargin: UM.Theme.getSize("default_lining").width + right: parent.right + rightMargin: UM.Theme.getSize("default_lining").width + top: parent.top + topMargin: UM.Theme.getSize("default_lining").width + bottom: parent.bottom + bottomMargin: UM.Theme.getSize("default_lining").width + } + start: Qt.point(0, 0) + end: Qt.point(parent.width, 0) + gradient: Gradient + { + GradientStop + { + position: 0.000 + color: Qt.rgba(0, 0, 0.5, 1) + } + GradientStop + { + position: 0.25 + color: Qt.rgba(0, 0.375, 0.75, 1) + } + GradientStop + { + position: 0.5 + color: Qt.rgba(0, 0.75, 0.5, 1) + } + GradientStop + { + position: 0.75 + color: Qt.rgba(1, 0.75, 0.25, 1) + } + GradientStop + { + position: 1.0 + color: Qt.rgba(1, 1, 0, 1) + } + } + } + } + } + + FontMetrics + { + id: fontMetrics + font: UM.Theme.getFont("default") + } +} diff --git a/plugins/SimulationView/__init__.py b/plugins/SimulationView/__init__.py index 360fdc1de9..420ee60660 100644 --- a/plugins/SimulationView/__init__.py +++ b/plugins/SimulationView/__init__.py @@ -8,19 +8,21 @@ from . import SimulationViewProxy, SimulationView catalog = i18nCatalog("cura") + def getMetaData(): return { "view": { "name": catalog.i18nc("@item:inlistbox", "Layer view"), - "view_panel": "SimulationView.qml", - "weight": 2 + "weight": 0 } } + def createSimulationViewProxy(engine, script_engine): return SimulationViewProxy.SimulationViewProxy() + def register(app): simulation_view = SimulationView.SimulationView() qmlRegisterSingletonType(SimulationViewProxy.SimulationViewProxy, "UM", 1, 0, "SimulationView", simulation_view.getProxy) - return { "view": SimulationView.SimulationView()} + return { "view": simulation_view} diff --git a/plugins/SimulationView/plugin.json b/plugins/SimulationView/plugin.json index 93df98068f..3ccf91b9e6 100644 --- a/plugins/SimulationView/plugin.json +++ b/plugins/SimulationView/plugin.json @@ -1,8 +1,8 @@ { "name": "Simulation View", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides the Simulation view.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/SliceInfoPlugin/plugin.json b/plugins/SliceInfoPlugin/plugin.json index 939e5ff235..8ff0e194fb 100644 --- a/plugins/SliceInfoPlugin/plugin.json +++ b/plugins/SliceInfoPlugin/plugin.json @@ -1,8 +1,8 @@ { "name": "Slice info", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Submits anonymous slice info. Can be disabled through preferences.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/SolidView/SolidView.py b/plugins/SolidView/SolidView.py index b9ad5c8829..797d6dabec 100644 --- a/plugins/SolidView/SolidView.py +++ b/plugins/SolidView/SolidView.py @@ -12,7 +12,6 @@ from UM.Math.Color import Color from UM.View.GL.OpenGL import OpenGL from cura.Settings.ExtruderManager import ExtruderManager -from cura.Settings.ExtrudersModel import ExtrudersModel import math @@ -29,13 +28,16 @@ class SolidView(View): self._non_printing_shader = None self._support_mesh_shader = None - self._extruders_model = ExtrudersModel() + self._extruders_model = None self._theme = None def beginRendering(self): scene = self.getController().getScene() renderer = self.getRenderer() + if not self._extruders_model: + self._extruders_model = Application.getInstance().getExtrudersModel() + if not self._theme: self._theme = Application.getInstance().getTheme() diff --git a/plugins/SolidView/__init__.py b/plugins/SolidView/__init__.py index db2e48f489..34148fcf05 100644 --- a/plugins/SolidView/__init__.py +++ b/plugins/SolidView/__init__.py @@ -10,7 +10,8 @@ def getMetaData(): return { "view": { "name": i18n_catalog.i18nc("@item:inmenu", "Solid view"), - "weight": 0 + "weight": 0, + "visible": False } } diff --git a/plugins/SolidView/plugin.json b/plugins/SolidView/plugin.json index e70ec224dd..b3f62221c5 100644 --- a/plugins/SolidView/plugin.json +++ b/plugins/SolidView/plugin.json @@ -1,8 +1,8 @@ { "name": "Solid View", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides a normal solid mesh view.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/SupportEraser/plugin.json b/plugins/SupportEraser/plugin.json index 7af35e0fb5..fa6d6d230e 100644 --- a/plugins/SupportEraser/plugin.json +++ b/plugins/SupportEraser/plugin.json @@ -1,8 +1,8 @@ { "name": "Support Eraser", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Creates an eraser mesh to block the printing of support in certain places", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/Toolbox/plugin.json b/plugins/Toolbox/plugin.json index 2557185524..61dc0429f5 100644 --- a/plugins/Toolbox/plugin.json +++ b/plugins/Toolbox/plugin.json @@ -1,7 +1,7 @@ { "name": "Toolbox", "author": "Ultimaker B.V.", - "version": "1.0.0", - "api": 5, + "version": "1.0.1", + "api": "6.0", "description": "Find, manage and install new Cura packages." } diff --git a/plugins/Toolbox/resources/qml/RatingWidget.qml b/plugins/Toolbox/resources/qml/RatingWidget.qml new file mode 100644 index 0000000000..441cf238f7 --- /dev/null +++ b/plugins/Toolbox/resources/qml/RatingWidget.qml @@ -0,0 +1,106 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.1 +import UM 1.0 as UM +import Cura 1.1 as Cura +Item +{ + id: ratingWidget + + property real rating: 0 + property int indexHovered: -1 + property string packageId: "" + + property int userRating: 0 + property bool canRate: false + + signal rated(int rating) + + width: contentRow.width + height: contentRow.height + MouseArea + { + id: mouseArea + anchors.fill: parent + hoverEnabled: ratingWidget.canRate + acceptedButtons: Qt.NoButton + onExited: + { + if(ratingWidget.canRate) + { + ratingWidget.indexHovered = -1 + } + } + + Row + { + id: contentRow + height: childrenRect.height + Repeater + { + model: 5 // We need to get 5 stars + Button + { + id: control + hoverEnabled: true + onHoveredChanged: + { + if(hovered && ratingWidget.canRate) + { + indexHovered = index + } + } + + ToolTip.visible: control.hovered && !ratingWidget.canRate + ToolTip.text: !Cura.API.account.isLoggedIn ? catalog.i18nc("@label", "You need to login first before you can rate"): catalog.i18nc("@label", "You need to install the package before you can rate") + + property bool isStarFilled: + { + // If the entire widget is hovered, override the actual rating. + if(ratingWidget.indexHovered >= 0) + { + return indexHovered >= index + } + + if(ratingWidget.userRating > 0) + { + return userRating >= index +1 + } + + return rating >= index + 1 + } + + contentItem: Item {} + height: UM.Theme.getSize("rating_star").height + width: UM.Theme.getSize("rating_star").width + background: UM.RecolorImage + { + source: UM.Theme.getIcon(control.isStarFilled ? "star_filled" : "star_empty") + sourceSize.width: width + sourceSize.height: height + + // Unfilled stars should always have the default color. Only filled stars should change on hover + color: + { + if(!ratingWidget.canRate) + { + return UM.Theme.getColor("rating_star") + } + if((ratingWidget.indexHovered >= 0 || ratingWidget.userRating > 0) && isStarFilled) + { + return UM.Theme.getColor("primary") + } + return UM.Theme.getColor("rating_star") + } + } + onClicked: + { + if(ratingWidget.canRate) + { + rated(index + 1) // Notify anyone who cares about this. + } + } + } + } + } + } +} \ No newline at end of file diff --git a/plugins/Toolbox/resources/qml/SmallRatingWidget.qml b/plugins/Toolbox/resources/qml/SmallRatingWidget.qml new file mode 100644 index 0000000000..965b81dc0f --- /dev/null +++ b/plugins/Toolbox/resources/qml/SmallRatingWidget.qml @@ -0,0 +1,36 @@ +import QtQuick 2.3 +import QtQuick.Controls 1.4 +import UM 1.1 as UM +import Cura 1.1 as Cura + +Row +{ + id: rating + height: UM.Theme.getSize("rating_star").height + visible: model.average_rating > 0 //Has a rating at all. + spacing: UM.Theme.getSize("thick_lining").width + width: starIcon.width + spacing + numRatingsLabel.width + UM.RecolorImage + { + id: starIcon + source: UM.Theme.getIcon("star_filled") + color: model.user_rating == 0 ? UM.Theme.getColor("rating_star") : UM.Theme.getColor("primary") + height: UM.Theme.getSize("rating_star").height + width: UM.Theme.getSize("rating_star").width + sourceSize.height: height + sourceSize.width: width + } + + Label + { + id: numRatingsLabel + text: model.average_rating != undefined ? model.average_rating.toFixed(1) + " (" + model.num_ratings + " " + catalog.i18nc("@label", "ratings") + ")": "" + verticalAlignment: Text.AlignVCenter + height: starIcon.height + width: contentWidth + anchors.verticalCenter: starIcon.verticalCenter + color: starIcon.color + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + } +} \ No newline at end of file diff --git a/plugins/Toolbox/resources/qml/Toolbox.qml b/plugins/Toolbox/resources/qml/Toolbox.qml index 9a98c998b0..9ede2a6bda 100644 --- a/plugins/Toolbox/resources/qml/Toolbox.qml +++ b/plugins/Toolbox/resources/qml/Toolbox.qml @@ -14,17 +14,17 @@ Window modality: Qt.ApplicationModal flags: Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowCloseButtonHint - width: 720 * screenScaleFactor - height: 640 * screenScaleFactor + width: Math.floor(720 * screenScaleFactor) + height: Math.floor(640 * screenScaleFactor) minimumWidth: width maximumWidth: minimumWidth minimumHeight: height maximumHeight: minimumHeight - color: UM.Theme.getColor("sidebar") + color: UM.Theme.getColor("main_background") UM.I18nCatalog { id: catalog - name:"cura" + name: "cura" } Item { @@ -95,6 +95,7 @@ Window licenseDialog.show(); } } + ToolboxLicenseDialog { id: licenseDialog diff --git a/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml b/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml index 4aaea20813..b653f1a73b 100644 --- a/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml +++ b/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.3 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM @@ -55,10 +55,11 @@ Item bottomMargin: UM.Theme.getSize("default_margin").height } text: details.name || "" - font: UM.Theme.getFont("large") + font: UM.Theme.getFont("large_bold") wrapMode: Text.WordWrap width: parent.width height: UM.Theme.getSize("toolbox_property_label").height + renderType: Text.NativeRendering } Label { @@ -70,6 +71,7 @@ Item left: title.left topMargin: UM.Theme.getSize("default_margin").height } + renderType: Text.NativeRendering } Column { @@ -86,14 +88,16 @@ Item Label { text: catalog.i18nc("@label", "Website") + ":" - font: UM.Theme.getFont("very_small") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_medium") + renderType: Text.NativeRendering } Label { text: catalog.i18nc("@label", "Email") + ":" - font: UM.Theme.getFont("very_small") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_medium") + renderType: Text.NativeRendering } } Column @@ -118,10 +122,11 @@ Item } return "" } - font: UM.Theme.getFont("very_small") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") linkColor: UM.Theme.getColor("text_link") onLinkActivated: Qt.openUrlExternally(link) + renderType: Text.NativeRendering } Label @@ -134,10 +139,11 @@ Item } return "" } - font: UM.Theme.getFont("very_small") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") linkColor: UM.Theme.getColor("text_link") onLinkActivated: Qt.openUrlExternally(link) + renderType: Text.NativeRendering } } Rectangle diff --git a/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml b/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml index 8524b7d1e5..dba9f19ccd 100644 --- a/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml +++ b/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM @@ -61,9 +61,15 @@ Item id: labelStyle text: control.text color: control.enabled ? (control.hovered ? UM.Theme.getColor("primary") : UM.Theme.getColor("text")) : UM.Theme.getColor("text_inactive") - font: UM.Theme.getFont("default_bold") - horizontalAlignment: Text.AlignRight + font: UM.Theme.getFont("medium_bold") + horizontalAlignment: Text.AlignLeft + anchors + { + left: parent.left + leftMargin: UM.Theme.getSize("default_margin").width + } width: control.width + renderType: Text.NativeRendering } } } diff --git a/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml b/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml index 58fea079e9..db4e8c628f 100644 --- a/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml +++ b/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM @@ -11,157 +11,232 @@ Item id: base property var packageData - property var technicalDataSheetUrl: { + property var technicalDataSheetUrl: + { var link = undefined if ("Technical Data Sheet" in packageData.links) { + // HACK: This is the way the old API (used in 3.6-beta) used to do it. For safety it's still here, + // but it can be removed over time. link = packageData.links["Technical Data Sheet"] } + else if ("technicalDataSheet" in packageData.links) + { + link = packageData.links["technicalDataSheet"] + } return link } + property var safetyDataSheetUrl: + { + var sds_name = "safetyDataSheet" + return (sds_name in packageData.links) ? packageData.links[sds_name] : undefined + } + property var printingGuidelinesUrl: + { + var pg_name = "printingGuidelines" + return (pg_name in packageData.links) ? packageData.links[pg_name] : undefined + } + property var materialWebsiteUrl: + { + var pg_name = "website" + return (pg_name in packageData.links) ? packageData.links[pg_name] : undefined + } anchors.topMargin: UM.Theme.getSize("default_margin").height height: visible ? childrenRect.height : 0 - visible: packageData.type == "material" && packageData.has_configs - Label + + visible: packageData.type == "material" && + (packageData.has_configs || technicalDataSheetUrl !== undefined || + safetyDataSheetUrl !== undefined || printingGuidelinesUrl !== undefined || + materialWebsiteUrl !== undefined) + + Item { - id: heading - anchors.topMargin: UM.Theme.getSize("default_margin").height + id: combatibilityItem + visible: packageData.has_configs width: parent.width - text: catalog.i18nc("@label", "Compatibility") - wrapMode: Text.WordWrap - color: UM.Theme.getColor("text_medium") - font: UM.Theme.getFont("medium") - } - TableView - { - id: table - anchors.top: heading.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - width: parent.width - frameVisible: false + // This is a bit of a hack, but the whole QML is pretty messy right now. This needs a big overhaul. + height: visible ? heading.height + table.height: 0 - // Workaround for scroll issues (QTBUG-49652) - flickableItem.interactive: false - Component.onCompleted: + Label { - for (var i = 0; i < flickableItem.children.length; ++i) - { - flickableItem.children[i].enabled = false - } - } - selectionMode: 0 - model: packageData.supported_configs - headerDelegate: Rectangle - { - color: UM.Theme.getColor("sidebar") - height: UM.Theme.getSize("toolbox_chart_row").height - Label - { - anchors.verticalCenter: parent.verticalCenter - elide: Text.ElideRight - text: styleData.value || "" - color: UM.Theme.getColor("text") - font: UM.Theme.getFont("default_bold") - } - Rectangle - { - anchors.bottom: parent.bottom - height: UM.Theme.getSize("default_lining").height - width: parent.width - color: "black" - } - } - rowDelegate: Item - { - height: UM.Theme.getSize("toolbox_chart_row").height - Label - { - anchors.verticalCenter: parent.verticalCenter - elide: Text.ElideRight - text: styleData.value || "" - color: UM.Theme.getColor("text_medium") - font: UM.Theme.getFont("default") - } - } - itemDelegate: Item - { - height: UM.Theme.getSize("toolbox_chart_row").height - Label - { - anchors.verticalCenter: parent.verticalCenter - elide: Text.ElideRight - text: styleData.value || "" - color: UM.Theme.getColor("text_medium") - font: UM.Theme.getFont("default") - } + id: heading + anchors.topMargin: UM.Theme.getSize("default_margin").height + width: parent.width + text: catalog.i18nc("@label", "Compatibility") + wrapMode: Text.WordWrap + color: UM.Theme.getColor("text_medium") + font: UM.Theme.getFont("medium") + renderType: Text.NativeRendering } - Component + TableView { - id: columnTextDelegate - Label - { - anchors.fill: parent - verticalAlignment: Text.AlignVCenter - text: styleData.value || "" - elide: Text.ElideRight - color: UM.Theme.getColor("text_medium") - font: UM.Theme.getFont("default") - } - } + id: table + anchors.top: heading.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + width: parent.width + frameVisible: false - TableViewColumn - { - role: "machine" - title: "Machine" - width: Math.floor(table.width * 0.25) - delegate: columnTextDelegate - } - TableViewColumn - { - role: "print_core" - title: "Print Core" - width: Math.floor(table.width * 0.2) - } - TableViewColumn - { - role: "build_plate" - title: "Build Plate" - width: Math.floor(table.width * 0.225) - } - TableViewColumn - { - role: "support_material" - title: "Support" - width: Math.floor(table.width * 0.225) - } - TableViewColumn - { - role: "quality" - title: "Quality" - width: Math.floor(table.width * 0.1) + // Workaround for scroll issues (QTBUG-49652) + flickableItem.interactive: false + Component.onCompleted: + { + for (var i = 0; i < flickableItem.children.length; ++i) + { + flickableItem.children[i].enabled = false + } + } + selectionMode: 0 + model: packageData.supported_configs + headerDelegate: Rectangle + { + color: UM.Theme.getColor("main_background") + height: UM.Theme.getSize("toolbox_chart_row").height + Label + { + anchors.verticalCenter: parent.verticalCenter + elide: Text.ElideRight + text: styleData.value || "" + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default_bold") + renderType: Text.NativeRendering + } + Rectangle + { + anchors.bottom: parent.bottom + height: UM.Theme.getSize("default_lining").height + width: parent.width + color: "black" + } + } + rowDelegate: Item + { + height: UM.Theme.getSize("toolbox_chart_row").height + Label + { + anchors.verticalCenter: parent.verticalCenter + elide: Text.ElideRight + text: styleData.value || "" + color: UM.Theme.getColor("text_medium") + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + } + } + itemDelegate: Item + { + height: UM.Theme.getSize("toolbox_chart_row").height + Label + { + anchors.verticalCenter: parent.verticalCenter + elide: Text.ElideRight + text: styleData.value || "" + color: UM.Theme.getColor("text_medium") + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + } + } + + Component + { + id: columnTextDelegate + Label + { + anchors.fill: parent + verticalAlignment: Text.AlignVCenter + text: styleData.value || "" + elide: Text.ElideRight + color: UM.Theme.getColor("text_medium") + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + } + } + + TableViewColumn + { + role: "machine" + title: "Machine" + width: Math.floor(table.width * 0.25) + delegate: columnTextDelegate + } + TableViewColumn + { + role: "print_core" + title: "Print Core" + width: Math.floor(table.width * 0.2) + } + TableViewColumn + { + role: "build_plate" + title: "Build Plate" + width: Math.floor(table.width * 0.225) + } + TableViewColumn + { + role: "support_material" + title: "Support" + width: Math.floor(table.width * 0.225) + } + TableViewColumn + { + role: "quality" + title: "Quality" + width: Math.floor(table.width * 0.1) + } } } Label { - id: technical_data_sheet - anchors.top: table.bottom + id: data_sheet_links + anchors.top: combatibilityItem.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height / 2 - visible: base.technicalDataSheetUrl !== undefined + visible: base.technicalDataSheetUrl !== undefined || + base.safetyDataSheetUrl !== undefined || base.printingGuidelinesUrl !== undefined || + base.materialWebsiteUrl !== undefined + height: visible ? contentHeight : 0 text: { + var result = "" if (base.technicalDataSheetUrl !== undefined) { - return "%2".arg(base.technicalDataSheetUrl).arg("Technical Data Sheet") + var tds_name = catalog.i18nc("@action:label", "Technical Data Sheet") + result += "%2".arg(base.technicalDataSheetUrl).arg(tds_name) } - return "" + if (base.safetyDataSheetUrl !== undefined) + { + if (result.length > 0) + { + result += "
" + } + var sds_name = catalog.i18nc("@action:label", "Safety Data Sheet") + result += "%2".arg(base.safetyDataSheetUrl).arg(sds_name) + } + if (base.printingGuidelinesUrl !== undefined) + { + if (result.length > 0) + { + result += "
" + } + var pg_name = catalog.i18nc("@action:label", "Printing Guidelines") + result += "%2".arg(base.printingGuidelinesUrl).arg(pg_name) + } + if (base.materialWebsiteUrl !== undefined) + { + if (result.length > 0) + { + result += "
" + } + var pg_name = catalog.i18nc("@action:label", "Website") + result += "%2".arg(base.materialWebsiteUrl).arg(pg_name) + } + + return result } - font: UM.Theme.getFont("very_small") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") linkColor: UM.Theme.getColor("text_link") onLinkActivated: Qt.openUrlExternally(link) + renderType: Text.NativeRendering } - } diff --git a/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml b/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml index 2c5d08aa72..e238132680 100644 --- a/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml +++ b/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 +import QtQuick 2.10 import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 import QtQuick.Layouts 1.1 @@ -66,6 +66,7 @@ UM.Dialog anchors.right: parent.right font: UM.Theme.getFont("default") wrapMode: Text.WordWrap + renderType: Text.NativeRendering } // Buttons diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailList.qml b/plugins/Toolbox/resources/qml/ToolboxDetailList.qml index 2e5eae098c..4e44ea7d0b 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailList.qml +++ b/plugins/Toolbox/resources/qml/ToolboxDetailList.qml @@ -26,10 +26,19 @@ Item } height: childrenRect.height + 2 * UM.Theme.getSize("wide_margin").height spacing: UM.Theme.getSize("default_margin").height + Repeater { model: toolbox.packagesModel - delegate: ToolboxDetailTile {} + delegate: Loader + { + // FIXME: When using asynchronous loading, on Mac and Windows, the tile may fail to load complete, + // leaving an empty space below the title part. We turn it off for now to make it work on Mac and + // Windows. + // Can be related to this QT bug: https://bugreports.qt.io/browse/QTBUG-50992 + asynchronous: false + source: "ToolboxDetailTile.qml" + } } } } diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml b/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml index 437a2ef351..fef2732af9 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml +++ b/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml @@ -1,11 +1,13 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.3 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM +import Cura 1.1 as Cura + Item { id: page @@ -24,7 +26,7 @@ Item right: parent.right rightMargin: UM.Theme.getSize("wide_margin").width } - height: UM.Theme.getSize("toolbox_detail_header").height + height: childrenRect.height + 3 * UM.Theme.getSize("default_margin").width Rectangle { id: thumbnail @@ -37,7 +39,7 @@ Item leftMargin: UM.Theme.getSize("wide_margin").width topMargin: UM.Theme.getSize("wide_margin").height } - color: white //Always a white background for image (regardless of theme). + color: UM.Theme.getColor("main_background") Image { anchors.fill: parent @@ -55,16 +57,21 @@ Item top: thumbnail.top left: thumbnail.right leftMargin: UM.Theme.getSize("default_margin").width - right: parent.right - rightMargin: UM.Theme.getSize("wide_margin").width - bottomMargin: UM.Theme.getSize("default_margin").height } text: details === null ? "" : (details.name || "") - font: UM.Theme.getFont("large") + font: UM.Theme.getFont("large_bold") color: UM.Theme.getColor("text") - wrapMode: Text.WordWrap - width: parent.width - height: UM.Theme.getSize("toolbox_property_label").height + width: contentWidth + height: contentHeight + renderType: Text.NativeRendering + } + + SmallRatingWidget + { + anchors.left: title.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.verticalCenter: title.verticalCenter + property var model: details } Column @@ -81,27 +88,38 @@ Item height: childrenRect.height Label { - text: catalog.i18nc("@label", "Version") + ":" - font: UM.Theme.getFont("very_small") + text: catalog.i18nc("@label", "Your rating") + ":" + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_medium") + renderType: Text.NativeRendering + } + Label + { + text: catalog.i18nc("@label", "Version") + ":" + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text_medium") + renderType: Text.NativeRendering } Label { text: catalog.i18nc("@label", "Last updated") + ":" - font: UM.Theme.getFont("very_small") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_medium") + renderType: Text.NativeRendering } Label { text: catalog.i18nc("@label", "Author") + ":" - font: UM.Theme.getFont("very_small") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_medium") + renderType: Text.NativeRendering } Label { text: catalog.i18nc("@label", "Downloads") + ":" - font: UM.Theme.getFont("very_small") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_medium") + renderType: Text.NativeRendering } } Column @@ -116,11 +134,54 @@ Item } spacing: Math.floor(UM.Theme.getSize("narrow_margin").height) height: childrenRect.height + RatingWidget + { + id: rating + visible: details.type == "plugin" + packageId: details.id != undefined ? details.id: "" + userRating: details.user_rating != undefined ? details.user_rating: 0 + canRate: toolbox.isInstalled(details.id) && Cura.API.account.isLoggedIn + + onRated: + { + toolbox.ratePackage(details.id, rating) + // HACK: This is a far from optimal solution, but without major refactoring, this is the best we can + // do. Since a rework of this is scheduled, it shouldn't live that long... + var index = toolbox.pluginsAvailableModel.find("id", details.id) + if(index != -1) + { + if(details.user_rating == 0) // User never rated before. + { + toolbox.pluginsAvailableModel.setProperty(index, "num_ratings", details.num_ratings + 1) + } + + toolbox.pluginsAvailableModel.setProperty(index, "user_rating", rating) + + + // Hack; This is because the current selection is an outdated copy, so we need to re-copy it. + base.selection = toolbox.pluginsAvailableModel.getItem(index) + return + } + index = toolbox.pluginsShowcaseModel.find("id", details.id) + if(index != -1) + { + if(details.user_rating == 0) // User never rated before. + { + toolbox.pluginsShowcaseModel.setProperty(index, "user_rating", rating) + } + toolbox.pluginsShowcaseModel.setProperty(index, "num_ratings", details.num_ratings + 1) + + // Hack; This is because the current selection is an outdated copy, so we need to re-copy it. + base.selection = toolbox.pluginsShowcaseModel.getItem(index) + } + } + } Label { text: details === null ? "" : (details.version || catalog.i18nc("@label", "Unknown")) - font: UM.Theme.getFont("very_small") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") + renderType: Text.NativeRendering } Label { @@ -133,8 +194,9 @@ Item var date = new Date(details.last_updated) return date.toLocaleString(UM.Preferences.getValue("general/language")) } - font: UM.Theme.getFont("very_small") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") + renderType: Text.NativeRendering } Label { @@ -144,34 +206,25 @@ Item { return "" } - if (details.author_email) - { - return "" + details.author_name + "" - } else { return "" + details.author_name + "" } } - font: UM.Theme.getFont("very_small") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") linkColor: UM.Theme.getColor("text_link") onLinkActivated: Qt.openUrlExternally(link) + renderType: Text.NativeRendering } Label { text: details === null ? "" : (details.download_count || catalog.i18nc("@label", "Unknown")) - font: UM.Theme.getFont("very_small") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") + renderType: Text.NativeRendering } } - Rectangle - { - color: UM.Theme.getColor("lining") - width: parent.width - height: UM.Theme.getSize("default_lining").height - anchors.bottom: parent.bottom - } } ToolboxDetailList { diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailTile.qml b/plugins/Toolbox/resources/qml/ToolboxDetailTile.qml index d544757d58..43f97baf3f 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailTile.qml +++ b/plugins/Toolbox/resources/qml/ToolboxDetailTile.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM @@ -31,17 +31,19 @@ Item wrapMode: Text.WordWrap color: UM.Theme.getColor("text") font: UM.Theme.getFont("medium_bold") + renderType: Text.NativeRendering } Label { anchors.top: packageName.bottom width: parent.width text: model.description - maximumLineCount: 3 + maximumLineCount: 25 elide: Text.ElideRight wrapMode: Text.WordWrap color: UM.Theme.getColor("text") font: UM.Theme.getFont("default") + renderType: Text.NativeRendering } } diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml b/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml index cd1e4cdbda..7160dafa2d 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml +++ b/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml @@ -1,40 +1,69 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM +import Cura 1.1 as Cura Column { property bool installed: toolbox.isInstalled(model.id) property bool canUpdate: toolbox.canUpdate(model.id) + property bool loginRequired: model.login_required && !Cura.API.account.isLoggedIn + width: UM.Theme.getSize("toolbox_action_button").width spacing: UM.Theme.getSize("narrow_margin").height - ToolboxProgressButton + Item { - id: installButton - active: toolbox.isDownloading && toolbox.activePackage == model - complete: installed - readyAction: function() + width: installButton.width + height: installButton.height + ToolboxProgressButton { - toolbox.activePackage = model - toolbox.startDownload(model.download_url) + id: installButton + active: toolbox.isDownloading && toolbox.activePackage == model + onReadyAction: + { + toolbox.activePackage = model + toolbox.startDownload(model.download_url) + } + onActiveAction: toolbox.cancelDownload() + + // Don't allow installing while another download is running + enabled: installed || (!(toolbox.isDownloading && toolbox.activePackage != model) && !loginRequired) + opacity: enabled ? 1.0 : 0.5 + visible: !updateButton.visible && !installed// Don't show when the update button is visible } - activeAction: function() + + Cura.SecondaryButton { - toolbox.cancelDownload() + visible: installed + onClicked: toolbox.viewCategory = "installed" + text: catalog.i18nc("@action:button", "Installed") + fixedWidthMode: true + width: installButton.width + height: installButton.height } - completeAction: function() + } + + Label + { + wrapMode: Text.WordWrap + text: catalog.i18nc("@label:The string between and is the highlighted link", "Log in is required to install or update") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + linkColor: UM.Theme.getColor("text_link") + visible: loginRequired + width: installButton.width + renderType: Text.NativeRendering + + MouseArea { - toolbox.viewCategory = "installed" + anchors.fill: parent + onClicked: Cura.API.account.login() } - // Don't allow installing while another download is running - enabled: installed || !(toolbox.isDownloading && toolbox.activePackage != model) - opacity: enabled ? 1.0 : 0.5 - visible: !updateButton.visible // Don't show when the update button is visible } ToolboxProgressButton @@ -44,20 +73,19 @@ Column readyLabel: catalog.i18nc("@action:button", "Update") activeLabel: catalog.i18nc("@action:button", "Updating") completeLabel: catalog.i18nc("@action:button", "Updated") - readyAction: function() + + onReadyAction: { toolbox.activePackage = model toolbox.update(model.id) } - activeAction: function() - { - toolbox.cancelDownload() - } + onActiveAction: toolbox.cancelDownload() // Don't allow installing while another download is running - enabled: !(toolbox.isDownloading && toolbox.activePackage != model) + enabled: !(toolbox.isDownloading && toolbox.activePackage != model) && !loginRequired opacity: enabled ? 1.0 : 0.5 visible: canUpdate } + Connections { target: toolbox diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsGrid.qml b/plugins/Toolbox/resources/qml/ToolboxDownloadsGrid.qml index c586828969..a9fcb39b28 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsGrid.qml +++ b/plugins/Toolbox/resources/qml/ToolboxDownloadsGrid.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import QtQuick.Layouts 1.3 @@ -22,9 +22,10 @@ Column text: gridArea.heading width: parent.width color: UM.Theme.getColor("text_medium") - font: UM.Theme.getFont("medium") + font: UM.Theme.getFont("large") + renderType: Text.NativeRendering } - GridLayout + Grid { id: grid width: parent.width - 2 * parent.padding @@ -34,10 +35,12 @@ Column Repeater { model: gridArea.model - delegate: ToolboxDownloadsGridTile + delegate: Loader { - Layout.preferredWidth: (grid.width - (grid.columns - 1) * grid.columnSpacing) / grid.columns - Layout.preferredHeight: UM.Theme.getSize("toolbox_thumbnail_small").height + asynchronous: true + width: Math.round((grid.width - (grid.columns - 1) * grid.columnSpacing) / grid.columns) + height: UM.Theme.getSize("toolbox_thumbnail_small").height + source: "ToolboxDownloadsGridTile.qml" } } } diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml b/plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml index 887140bbfa..a11c6ee963 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml +++ b/plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml @@ -1,11 +1,12 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.3 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import QtQuick.Layouts 1.3 import UM 1.1 as UM +import Cura 1.1 as Cura Item { @@ -14,91 +15,13 @@ Item property int installedPackages: (toolbox.viewCategory == "material" && model.type === undefined) ? toolbox.getNumberOfInstalledPackagesByAuthor(model.id) : (toolbox.isInstalled(model.id) ? 1 : 0) height: childrenRect.height Layout.alignment: Qt.AlignTop | Qt.AlignLeft - Rectangle - { - id: highlight - anchors.fill: parent - opacity: 0.0 - color: UM.Theme.getColor("primary") - } - Row - { - width: parent.width - height: childrenRect.height - spacing: Math.floor(UM.Theme.getSize("narrow_margin").width) - Rectangle - { - id: thumbnail - width: UM.Theme.getSize("toolbox_thumbnail_small").width - height: UM.Theme.getSize("toolbox_thumbnail_small").height - color: "white" - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("lining") - Image - { - anchors.centerIn: parent - width: UM.Theme.getSize("toolbox_thumbnail_small").width - UM.Theme.getSize("wide_margin").width - height: UM.Theme.getSize("toolbox_thumbnail_small").height - UM.Theme.getSize("wide_margin").width - fillMode: Image.PreserveAspectFit - source: model.icon_url || "../images/logobot.svg" - mipmap: true - } - UM.RecolorImage - { - width: (parent.width * 0.4) | 0 - height: (parent.height * 0.4) | 0 - anchors - { - bottom: parent.bottom - right: parent.right - } - sourceSize.width: width - sourceSize.height: height - visible: installedPackages != 0 - color: (installedPackages == packageCount) ? UM.Theme.getColor("primary") : UM.Theme.getColor("border") - source: "../images/installed_check.svg" - } - } - Column - { - width: parent.width - thumbnail.width - parent.spacing - spacing: Math.floor(UM.Theme.getSize("narrow_margin").width) - Label - { - id: name - text: model.name - width: parent.width - wrapMode: Text.WordWrap - color: UM.Theme.getColor("text") - font: UM.Theme.getFont("default_bold") - } - Label - { - id: info - text: model.description - maximumLineCount: 2 - elide: Text.ElideRight - width: parent.width - wrapMode: Text.WordWrap - color: UM.Theme.getColor("text_medium") - font: UM.Theme.getFont("very_small") - } - } - } + MouseArea { anchors.fill: parent hoverEnabled: true - onEntered: - { - thumbnail.border.color = UM.Theme.getColor("primary") - highlight.opacity = 0.1 - } - onExited: - { - thumbnail.border.color = UM.Theme.getColor("lining") - highlight.opacity = 0.0 - } + onEntered: thumbnail.border.color = UM.Theme.getColor("primary") + onExited: thumbnail.border.color = UM.Theme.getColor("lining") onClicked: { base.selection = model @@ -128,4 +51,83 @@ Item } } } + + Rectangle + { + id: thumbnail + width: UM.Theme.getSize("toolbox_thumbnail_small").width + height: UM.Theme.getSize("toolbox_thumbnail_small").height + color: UM.Theme.getColor("main_background") + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + + Image + { + anchors.centerIn: parent + width: UM.Theme.getSize("toolbox_thumbnail_small").width - UM.Theme.getSize("wide_margin").width + height: UM.Theme.getSize("toolbox_thumbnail_small").height - UM.Theme.getSize("wide_margin").width + fillMode: Image.PreserveAspectFit + source: model.icon_url || "../images/logobot.svg" + mipmap: true + } + UM.RecolorImage + { + width: (parent.width * 0.4) | 0 + height: (parent.height * 0.4) | 0 + anchors + { + bottom: parent.bottom + right: parent.right + } + sourceSize.height: height + visible: installedPackages != 0 + color: (installedPackages == packageCount) ? UM.Theme.getColor("primary") : UM.Theme.getColor("border") + source: "../images/installed_check.svg" + } + } + Item + { + anchors + { + left: thumbnail.right + leftMargin: Math.floor(UM.Theme.getSize("narrow_margin").width) + right: parent.right + top: parent.top + bottom: parent.bottom + } + + Label + { + id: name + text: model.name + width: parent.width + elide: Text.ElideRight + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default_bold") + } + Label + { + id: info + text: model.description + elide: Text.ElideRight + width: parent.width + wrapMode: Text.WordWrap + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default") + anchors.top: name.bottom + anchors.bottom: rating.top + verticalAlignment: Text.AlignVCenter + maximumLineCount: 2 + } + SmallRatingWidget + { + id: rating + anchors + { + bottom: parent.bottom + left: parent.left + right: parent.right + } + } + } } diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcase.qml b/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcase.qml index 46f5debfdd..795622cf82 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcase.qml +++ b/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcase.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM @@ -23,30 +23,34 @@ Rectangle text: catalog.i18nc("@label", "Featured") width: parent.width color: UM.Theme.getColor("text_medium") - font: UM.Theme.getFont("medium") + font: UM.Theme.getFont("large") + renderType: Text.NativeRendering } Grid { height: childrenRect.height spacing: UM.Theme.getSize("wide_margin").width columns: 3 - anchors - { - horizontalCenter: parent.horizontalCenter - } + anchors.horizontalCenter: parent.horizontalCenter + Repeater { - model: { - if ( toolbox.viewCategory == "plugin" ) + model: + { + if (toolbox.viewCategory == "plugin") { return toolbox.pluginsShowcaseModel } - if ( toolbox.viewCategory == "material" ) + if (toolbox.viewCategory == "material") { return toolbox.materialsShowcaseModel } } - delegate: ToolboxDownloadsShowcaseTile {} + delegate: Loader + { + asynchronous: true + source: "ToolboxDownloadsShowcaseTile.qml" + } } } } diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcaseTile.qml b/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcaseTile.qml index 4fb70541d2..c8c1e56c82 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcaseTile.qml +++ b/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcaseTile.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import QtGraphicalEffects 1.0 @@ -13,92 +13,79 @@ Rectangle property int installedPackages: toolbox.viewCategory == "material" ? toolbox.getNumberOfInstalledPackagesByAuthor(model.id) : (toolbox.isInstalled(model.id) ? 1 : 0) id: tileBase width: UM.Theme.getSize("toolbox_thumbnail_large").width + (2 * UM.Theme.getSize("default_lining").width) - height: thumbnail.height + packageNameBackground.height + (2 * UM.Theme.getSize("default_lining").width) + height: thumbnail.height + packageName.height + rating.height + UM.Theme.getSize("default_margin").width border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") - color: "transparent" - Rectangle + color: UM.Theme.getColor("main_background") + Image { id: thumbnail - color: "white" - width: UM.Theme.getSize("toolbox_thumbnail_large").width - height: UM.Theme.getSize("toolbox_thumbnail_large").height + height: UM.Theme.getSize("toolbox_thumbnail_large").height - 4 * UM.Theme.getSize("default_margin").height + width: UM.Theme.getSize("toolbox_thumbnail_large").height - 4 * UM.Theme.getSize("default_margin").height + fillMode: Image.PreserveAspectFit + source: model.icon_url || "../images/logobot.svg" + mipmap: true anchors { top: parent.top + topMargin: UM.Theme.getSize("default_margin").height horizontalCenter: parent.horizontalCenter - topMargin: UM.Theme.getSize("default_lining").width } - Image + } + Label + { + id: packageName + text: model.name + anchors { - anchors.centerIn: parent - width: UM.Theme.getSize("toolbox_thumbnail_large").width - 2 * UM.Theme.getSize("default_margin").width - height: UM.Theme.getSize("toolbox_thumbnail_large").height - 2 * UM.Theme.getSize("default_margin").height - fillMode: Image.PreserveAspectFit - source: model.icon_url || "../images/logobot.svg" - mipmap: true + horizontalCenter: parent.horizontalCenter + top: thumbnail.bottom } - UM.RecolorImage + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + renderType: Text.NativeRendering + height: UM.Theme.getSize("toolbox_heading_label").height + width: parent.width - UM.Theme.getSize("default_margin").width + wrapMode: Text.WordWrap + elide: Text.ElideRight + font: UM.Theme.getFont("medium_bold") + } + UM.RecolorImage + { + width: (parent.width * 0.20) | 0 + height: width + anchors { - width: (parent.width * 0.3) | 0 - height: (parent.height * 0.3) | 0 - anchors - { - bottom: parent.bottom - right: parent.right - bottomMargin: UM.Theme.getSize("default_lining").width - } - sourceSize.width: width - sourceSize.height: height - visible: installedPackages != 0 - color: (installedPackages == packageCount) ? UM.Theme.getColor("primary") : UM.Theme.getColor("border") - source: "../images/installed_check.svg" + bottom: bottomBorder.top + right: parent.right } + visible: installedPackages != 0 + color: (installedPackages == packageCount) ? UM.Theme.getColor("primary") : UM.Theme.getColor("border") + source: "../images/installed_check.svg" + } + + SmallRatingWidget + { + id: rating + anchors.bottom: parent.bottom + anchors.bottomMargin: UM.Theme.getSize("narrow_margin").height + anchors.horizontalCenter: parent.horizontalCenter } Rectangle { - id: packageNameBackground + id: bottomBorder color: UM.Theme.getColor("primary") - anchors - { - top: thumbnail.bottom - horizontalCenter: parent.horizontalCenter - } - height: UM.Theme.getSize("toolbox_heading_label").height + anchors.bottom: parent.bottom width: parent.width - Label - { - id: packageName - text: model.name - anchors - { - horizontalCenter: parent.horizontalCenter - } - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter - height: UM.Theme.getSize("toolbox_heading_label").height - width: parent.width - wrapMode: Text.WordWrap - color: UM.Theme.getColor("button_text") - font: UM.Theme.getFont("medium_bold") - } + height: UM.Theme.getSize("toolbox_header_highlight").height } + MouseArea { anchors.fill: parent hoverEnabled: true - onEntered: - { - packageName.color = UM.Theme.getColor("button_text_hover") - packageNameBackground.color = UM.Theme.getColor("primary_hover") - tileBase.border.color = UM.Theme.getColor("primary_hover") - } - onExited: - { - packageName.color = UM.Theme.getColor("button_text") - packageNameBackground.color = UM.Theme.getColor("primary") - tileBase.border.color = UM.Theme.getColor("lining") - } + onEntered: tileBase.border.color = UM.Theme.getColor("primary") + onExited: tileBase.border.color = UM.Theme.getColor("lining") onClicked: { base.selection = model diff --git a/plugins/Toolbox/resources/qml/ToolboxErrorPage.qml b/plugins/Toolbox/resources/qml/ToolboxErrorPage.qml index 600ae2b39f..e57e63dbb9 100644 --- a/plugins/Toolbox/resources/qml/ToolboxErrorPage.qml +++ b/plugins/Toolbox/resources/qml/ToolboxErrorPage.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 @@ -18,5 +18,6 @@ Rectangle { centerIn: parent } + renderType: Text.NativeRendering } } diff --git a/plugins/Toolbox/resources/qml/ToolboxFooter.qml b/plugins/Toolbox/resources/qml/ToolboxFooter.qml index 5c2a6577ad..6f46e939ff 100644 --- a/plugins/Toolbox/resources/qml/ToolboxFooter.qml +++ b/plugins/Toolbox/resources/qml/ToolboxFooter.qml @@ -1,22 +1,24 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 +import QtQuick 2.10 +import QtQuick.Controls 2.3 + import UM 1.1 as UM +import Cura 1.0 as Cura Item { id: footer width: parent.width anchors.bottom: parent.bottom - height: visible ? Math.floor(UM.Theme.getSize("toolbox_footer").height) : 0 + height: visible ? UM.Theme.getSize("toolbox_footer").height : 0 + Label { text: catalog.i18nc("@info", "You will need to restart Cura before changes in packages have effect.") color: UM.Theme.getColor("text") - height: Math.floor(UM.Theme.getSize("toolbox_footer_button").height) + height: UM.Theme.getSize("toolbox_footer_button").height verticalAlignment: Text.AlignVCenter anchors { @@ -26,12 +28,12 @@ Item right: restartButton.right rightMargin: UM.Theme.getSize("default_margin").width } - + renderType: Text.NativeRendering } - Button + + Cura.PrimaryButton { id: restartButton - text: catalog.i18nc("@info:button", "Quit Cura") anchors { top: parent.top @@ -39,26 +41,11 @@ Item right: parent.right rightMargin: UM.Theme.getSize("wide_margin").width } - iconName: "dialog-restart" + height: UM.Theme.getSize("toolbox_footer_button").height + text: catalog.i18nc("@info:button", "Quit Cura") onClicked: toolbox.restart() - style: ButtonStyle - { - background: Rectangle - { - implicitWidth: UM.Theme.getSize("toolbox_footer_button").width - implicitHeight: Math.floor(UM.Theme.getSize("toolbox_footer_button").height) - color: control.hovered ? UM.Theme.getColor("primary_hover") : UM.Theme.getColor("primary") - } - label: Label - { - color: UM.Theme.getColor("button_text") - font: UM.Theme.getFont("default_bold") - text: control.text - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter - } - } } + ToolboxShadow { visible: footer.visible diff --git a/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml b/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml index e683f89823..a85a69cbac 100644 --- a/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml +++ b/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Dialogs 1.1 import QtQuick.Window 2.2 import QtQuick.Controls 1.4 @@ -21,44 +21,40 @@ ScrollView Column { spacing: UM.Theme.getSize("default_margin").height + visible: toolbox.pluginsInstalledModel.items.length > 0 + height: childrenRect.height + 4 * UM.Theme.getSize("default_margin").height + anchors { right: parent.right left: parent.left - leftMargin: UM.Theme.getSize("wide_margin").width - topMargin: UM.Theme.getSize("wide_margin").height - bottomMargin: UM.Theme.getSize("wide_margin").height + margins: UM.Theme.getSize("default_margin").width top: parent.top } - height: childrenRect.height + 4 * UM.Theme.getSize("default_margin").height + Label { - visible: toolbox.pluginsInstalledModel.items.length > 0 - width: parent.width + width: page.width text: catalog.i18nc("@title:tab", "Plugins") color: UM.Theme.getColor("text_medium") - font: UM.Theme.getFont("medium") + font: UM.Theme.getFont("large") + renderType: Text.NativeRendering } Rectangle { - visible: toolbox.pluginsInstalledModel.items.length > 0 color: "transparent" width: parent.width - height: childrenRect.height + 1 * UM.Theme.getSize("default_lining").width + height: childrenRect.height + UM.Theme.getSize("default_margin").width border.color: UM.Theme.getColor("lining") border.width: UM.Theme.getSize("default_lining").width Column { - height: childrenRect.height anchors { top: parent.top right: parent.right left: parent.left - leftMargin: UM.Theme.getSize("default_margin").width - rightMargin: UM.Theme.getSize("default_margin").width - topMargin: UM.Theme.getSize("default_lining").width - bottomMargin: UM.Theme.getSize("default_lining").width + margins: UM.Theme.getSize("default_margin").width } Repeater { @@ -70,32 +66,27 @@ ScrollView } Label { - visible: toolbox.materialsInstalledModel.items.length > 0 - width: page.width text: catalog.i18nc("@title:tab", "Materials") color: UM.Theme.getColor("text_medium") font: UM.Theme.getFont("medium") + renderType: Text.NativeRendering } + Rectangle { - visible: toolbox.materialsInstalledModel.items.length > 0 color: "transparent" width: parent.width - height: childrenRect.height + 1 * UM.Theme.getSize("default_lining").width + height: childrenRect.height + UM.Theme.getSize("default_margin").width border.color: UM.Theme.getColor("lining") border.width: UM.Theme.getSize("default_lining").width Column { - height: Math.max( UM.Theme.getSize("wide_margin").height, childrenRect.height) anchors { top: parent.top right: parent.right left: parent.left - leftMargin: UM.Theme.getSize("default_margin").width - rightMargin: UM.Theme.getSize("default_margin").width - topMargin: UM.Theme.getSize("default_lining").width - bottomMargin: UM.Theme.getSize("default_lining").width + margins: UM.Theme.getSize("default_margin").width } Repeater { diff --git a/plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml b/plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml index b16564fdd2..333d4dd50a 100644 --- a/plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml +++ b/plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM @@ -49,17 +49,20 @@ Item width: parent.width height: Math.floor(UM.Theme.getSize("toolbox_property_label").height) wrapMode: Text.WordWrap - font: UM.Theme.getFont("default_bold") + font: UM.Theme.getFont("large_bold") color: pluginInfo.color + renderType: Text.NativeRendering } Label { text: model.description + font: UM.Theme.getFont("default") maximumLineCount: 3 elide: Text.ElideRight width: parent.width wrapMode: Text.WordWrap color: pluginInfo.color + renderType: Text.NativeRendering } } Column @@ -80,6 +83,7 @@ Item return model.author_name } } + font: UM.Theme.getFont("medium") width: parent.width height: Math.floor(UM.Theme.getSize("toolbox_property_label").height) wrapMode: Text.WordWrap @@ -88,16 +92,19 @@ Item onLinkActivated: Qt.openUrlExternally("mailto:" + model.author_email + "?Subject=Cura: " + model.name + " Plugin") color: model.enabled ? UM.Theme.getColor("text") : UM.Theme.getColor("lining") linkColor: UM.Theme.getColor("text_link") + renderType: Text.NativeRendering } Label { text: model.version + font: UM.Theme.getFont("default") width: parent.width height: UM.Theme.getSize("toolbox_property_label").height color: UM.Theme.getColor("text") verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignLeft + renderType: Text.NativeRendering } } ToolboxInstalledTileActions diff --git a/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml b/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml index 8fd88b1cfd..61af84fbe5 100644 --- a/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml +++ b/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml @@ -1,15 +1,18 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM +import Cura 1.1 as Cura + Column { property bool canUpdate: false property bool canDowngrade: false + property bool loginRequired: model.login_required && !Cura.API.account.isLoggedIn width: UM.Theme.getSize("toolbox_action_button").width spacing: UM.Theme.getSize("narrow_margin").height @@ -21,6 +24,7 @@ Column font: UM.Theme.getFont("default") wrapMode: Text.WordWrap width: parent.width + renderType: Text.NativeRendering } ToolboxProgressButton @@ -30,59 +34,49 @@ Column readyLabel: catalog.i18nc("@action:button", "Update") activeLabel: catalog.i18nc("@action:button", "Updating") completeLabel: catalog.i18nc("@action:button", "Updated") - readyAction: function() + onReadyAction: { toolbox.activePackage = model toolbox.update(model.id) } - activeAction: function() - { - toolbox.cancelDownload() - } + onActiveAction: toolbox.cancelDownload() + // Don't allow installing while another download is running - enabled: !(toolbox.isDownloading && toolbox.activePackage != model) + enabled: !(toolbox.isDownloading && toolbox.activePackage != model) && !loginRequired opacity: enabled ? 1.0 : 0.5 visible: canUpdate } - Button + Label + { + wrapMode: Text.WordWrap + text: catalog.i18nc("@label:The string between and is the highlighted link", "Log in is required to update") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + linkColor: UM.Theme.getColor("text_link") + visible: loginRequired + width: updateButton.width + renderType: Text.NativeRendering + + MouseArea + { + anchors.fill: parent + onClicked: Cura.API.account.login() + } + } + + Cura.SecondaryButton { id: removeButton text: canDowngrade ? catalog.i18nc("@action:button", "Downgrade") : catalog.i18nc("@action:button", "Uninstall") visible: !model.is_bundled && model.is_installed enabled: !toolbox.isDownloading - style: ButtonStyle - { - background: Rectangle - { - implicitWidth: UM.Theme.getSize("toolbox_action_button").width - implicitHeight: UM.Theme.getSize("toolbox_action_button").height - color: "transparent" - border - { - width: UM.Theme.getSize("default_lining").width - color: - { - if (control.hovered) - { - return UM.Theme.getColor("primary_hover") - } - else - { - return UM.Theme.getColor("lining") - } - } - } - } - label: Label - { - text: control.text - color: UM.Theme.getColor("text") - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter - font: UM.Theme.getFont("default") - } - } + + width: UM.Theme.getSize("toolbox_action_button").width + height: UM.Theme.getSize("toolbox_action_button").height + + fixedWidthMode: true + onClicked: toolbox.checkPackageUsageAndUninstall(model.id) Connections { diff --git a/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml b/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml index b8baf7bc83..40b22c268d 100644 --- a/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml +++ b/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 +import QtQuick 2.10 import QtQuick.Dialogs 1.1 import QtQuick.Window 2.2 import QtQuick.Controls 1.4 @@ -32,6 +32,7 @@ UM.Dialog anchors.right: parent.right text: licenseDialog.pluginName + catalog.i18nc("@label", "This plugin contains a license.\nYou need to accept this license to install this plugin.\nDo you agree with the terms below?") wrapMode: Text.Wrap + renderType: Text.NativeRendering } TextArea { diff --git a/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml b/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml index 1ba271dcab..025239bd43 100644 --- a/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml +++ b/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 @@ -18,5 +18,6 @@ Rectangle { centerIn: parent } + renderType: Text.NativeRendering } } diff --git a/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml b/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml index 2744e40ec9..933e3a5900 100644 --- a/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml +++ b/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml @@ -5,6 +5,7 @@ import QtQuick 2.2 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM +import Cura 1.0 as Cura Item @@ -18,16 +19,19 @@ Item property var activeLabel: catalog.i18nc("@action:button", "Cancel") property var completeLabel: catalog.i18nc("@action:button", "Installed") - property var readyAction: null // Action when button is ready and clicked (likely install) - property var activeAction: null // Action when button is active and clicked (likely cancel) - property var completeAction: null // Action when button is complete and clicked (likely go to installed) + signal readyAction() // Action when button is ready and clicked (likely install) + signal activeAction() // Action when button is active and clicked (likely cancel) + signal completeAction() // Action when button is complete and clicked (likely go to installed) width: UM.Theme.getSize("toolbox_action_button").width height: UM.Theme.getSize("toolbox_action_button").height - Button + Cura.PrimaryButton { id: button + width: UM.Theme.getSize("toolbox_action_button").width + height: UM.Theme.getSize("toolbox_action_button").height + fixedWidthMode: true text: { if (complete) @@ -47,101 +51,15 @@ Item { if (complete) { - return completeAction() + completeAction() } else if (active) { - return activeAction() + activeAction() } else { - return readyAction() - } - } - style: ButtonStyle - { - background: Rectangle - { - implicitWidth: UM.Theme.getSize("toolbox_action_button").width - implicitHeight: UM.Theme.getSize("toolbox_action_button").height - color: - { - if (base.complete) - { - return "transparent" - } - else - { - if (control.hovered) - { - return UM.Theme.getColor("primary_hover") - } - else - { - return UM.Theme.getColor("primary") - } - } - } - border - { - width: - { - if (base.complete) - { - UM.Theme.getSize("default_lining").width - } - else - { - return 0 - } - } - color: - { - if (control.hovered) - { - return UM.Theme.getColor("primary_hover") - } - else - { - return UM.Theme.getColor("lining") - } - } - } - } - label: Label - { - text: control.text - color: - { - if (base.complete) - { - return UM.Theme.getColor("text") - } - else - { - if (control.hovered) - { - return UM.Theme.getColor("button_text_hover") - } - else - { - return UM.Theme.getColor("button_text") - } - } - } - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter - font: - { - if (base.complete) - { - return UM.Theme.getFont("default") - } - else - { - return UM.Theme.getFont("default_bold") - } - } + readyAction() } } } diff --git a/plugins/Toolbox/resources/qml/ToolboxTabButton.qml b/plugins/Toolbox/resources/qml/ToolboxTabButton.qml index 22fb6d73ca..5e1aeaa636 100644 --- a/plugins/Toolbox/resources/qml/ToolboxTabButton.qml +++ b/plugins/Toolbox/resources/qml/ToolboxTabButton.qml @@ -1,51 +1,51 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 +import QtQuick 2.10 +import QtQuick.Controls 2.3 import UM 1.1 as UM Button { + id: control property bool active: false - style: ButtonStyle + hoverEnabled: true + + background: Item { - background: Rectangle + implicitWidth: UM.Theme.getSize("toolbox_header_tab").width + implicitHeight: UM.Theme.getSize("toolbox_header_tab").height + Rectangle { - color: "transparent" - implicitWidth: UM.Theme.getSize("toolbox_header_tab").width - implicitHeight: UM.Theme.getSize("toolbox_header_tab").height - Rectangle - { - visible: control.active - color: UM.Theme.getColor("sidebar_header_highlight_hover") - anchors.bottom: parent.bottom - width: parent.width - height: UM.Theme.getSize("sidebar_header_highlight").height - } - } - label: Label - { - text: control.text - color: - { - if(control.hovered) - { - return UM.Theme.getColor("topbar_button_text_hovered"); - } - if(control.active) - { - return UM.Theme.getColor("topbar_button_text_active"); - } - else - { - return UM.Theme.getColor("topbar_button_text_inactive"); - } - } - font: control.enabled ? (control.active ? UM.Theme.getFont("medium_bold") : UM.Theme.getFont("medium")) : UM.Theme.getFont("default_italic") - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter + visible: control.active + color: UM.Theme.getColor("primary") + anchors.bottom: parent.bottom + width: parent.width + height: UM.Theme.getSize("toolbox_header_highlight").height } } -} + contentItem: Label + { + id: label + text: control.text + color: + { + if(control.hovered) + { + return UM.Theme.getColor("toolbox_header_button_text_hovered"); + } + if(control.active) + { + return UM.Theme.getColor("toolbox_header_button_text_active"); + } + else + { + return UM.Theme.getColor("toolbox_header_button_text_inactive"); + } + } + font: control.enabled ? (control.active ? UM.Theme.getFont("medium_bold") : UM.Theme.getFont("medium")) : UM.Theme.getFont("default_italic") + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + renderType: Text.NativeRendering + } +} \ No newline at end of file diff --git a/plugins/Toolbox/src/AuthorsModel.py b/plugins/Toolbox/src/AuthorsModel.py index bea3893504..877f8256ee 100644 --- a/plugins/Toolbox/src/AuthorsModel.py +++ b/plugins/Toolbox/src/AuthorsModel.py @@ -2,18 +2,19 @@ # Cura is released under the terms of the LGPLv3 or higher. import re -from typing import Dict +from typing import Dict, List, Optional, Union from PyQt5.QtCore import Qt, pyqtProperty, pyqtSignal from UM.Qt.ListModel import ListModel + ## Model that holds cura packages. By setting the filter property the instances held by this model can be changed. class AuthorsModel(ListModel): - def __init__(self, parent = None): + def __init__(self, parent = None) -> None: super().__init__(parent) - self._metadata = None + self._metadata = None # type: Optional[List[Dict[str, Union[str, List[str], int]]]] self.addRoleName(Qt.UserRole + 1, "id") self.addRoleName(Qt.UserRole + 2, "name") @@ -25,39 +26,40 @@ class AuthorsModel(ListModel): self.addRoleName(Qt.UserRole + 8, "description") # List of filters for queries. The result is the union of the each list of results. - self._filter = {} # type: Dict[str,str] + self._filter = {} # type: Dict[str, str] - def setMetadata(self, data): - self._metadata = data - self._update() + def setMetadata(self, data: List[Dict[str, Union[str, List[str], int]]]): + if self._metadata != data: + self._metadata = data + self._update() - def _update(self): - items = [] + def _update(self) -> None: + items = [] # type: List[Dict[str, Union[str, List[str], int, None]]] if not self._metadata: - self.setItems([]) + self.setItems(items) return for author in self._metadata: items.append({ - "id": author["author_id"], - "name": author["display_name"], - "email": author["email"] if "email" in author else None, - "website": author["website"], - "package_count": author["package_count"] if "package_count" in author else 0, - "package_types": author["package_types"] if "package_types" in author else [], - "icon_url": author["icon_url"] if "icon_url" in author else None, - "description": "Material and quality profiles from {author_name}".format(author_name = author["display_name"]) + "id": author.get("author_id"), + "name": author.get("display_name"), + "email": author.get("email"), + "website": author.get("website"), + "package_count": author.get("package_count", 0), + "package_types": author.get("package_types", []), + "icon_url": author.get("icon_url"), + "description": "Material and quality profiles from {author_name}".format(author_name = author.get("display_name", "")) }) # Filter on all the key-word arguments. for key, value in self._filter.items(): if key is "package_types": - key_filter = lambda item, value = value: value in item["package_types"] + key_filter = lambda item, value = value: value in item["package_types"] # type: ignore elif "*" in value: - key_filter = lambda item, key = key, value = value: self._matchRegExp(item, key, value) + key_filter = lambda item, key = key, value = value: self._matchRegExp(item, key, value) # type: ignore else: - key_filter = lambda item, key = key, value = value: self._matchString(item, key, value) - items = filter(key_filter, items) + key_filter = lambda item, key = key, value = value: self._matchString(item, key, value) # type: ignore + items = filter(key_filter, items) # type: ignore # Execute all filters. filtered_items = list(items) diff --git a/plugins/Toolbox/src/PackagesModel.py b/plugins/Toolbox/src/PackagesModel.py index aa5626b7f2..d94fdf6bb7 100644 --- a/plugins/Toolbox/src/PackagesModel.py +++ b/plugins/Toolbox/src/PackagesModel.py @@ -12,7 +12,7 @@ from UM.Qt.ListModel import ListModel from .ConfigsModel import ConfigsModel -## Model that holds cura packages. By setting the filter property the instances held by this model can be changed. +## Model that holds Cura packages. By setting the filter property the instances held by this model can be changed. class PackagesModel(ListModel): def __init__(self, parent = None): super().__init__(parent) @@ -33,20 +33,25 @@ class PackagesModel(ListModel): self.addRoleName(Qt.UserRole + 12, "last_updated") self.addRoleName(Qt.UserRole + 13, "is_bundled") self.addRoleName(Qt.UserRole + 14, "is_active") - self.addRoleName(Qt.UserRole + 15, "is_installed") # Scheduled pkgs are included in the model but should not be marked as actually installed + self.addRoleName(Qt.UserRole + 15, "is_installed") # Scheduled pkgs are included in the model but should not be marked as actually installed self.addRoleName(Qt.UserRole + 16, "has_configs") self.addRoleName(Qt.UserRole + 17, "supported_configs") self.addRoleName(Qt.UserRole + 18, "download_count") self.addRoleName(Qt.UserRole + 19, "tags") self.addRoleName(Qt.UserRole + 20, "links") self.addRoleName(Qt.UserRole + 21, "website") + self.addRoleName(Qt.UserRole + 22, "login_required") + self.addRoleName(Qt.UserRole + 23, "average_rating") + self.addRoleName(Qt.UserRole + 24, "num_ratings") + self.addRoleName(Qt.UserRole + 25, "user_rating") # List of filters for queries. The result is the union of the each list of results. self._filter = {} # type: Dict[str, str] def setMetadata(self, data): - self._metadata = data - self._update() + if self._metadata != data: + self._metadata = data + self._update() def _update(self): items = [] @@ -70,7 +75,7 @@ class PackagesModel(ListModel): # Links is a list of dictionaries with "title" and "url". Convert this list into a dict so it's easier # to process. - link_list = package['data']['links'] if 'links' in package['data'] else [] + link_list = package["data"]["links"] if "links" in package["data"] else [] links_dict = {d["title"]: d["url"] for d in link_list} if "author_id" not in package["author"] or "display_name" not in package["author"]: @@ -99,6 +104,10 @@ class PackagesModel(ListModel): "tags": package["tags"] if "tags" in package else [], "links": links_dict, "website": package["website"] if "website" in package else None, + "login_required": "login-required" in package.get("tags", []), + "average_rating": float(package.get("rating", {}).get("average", 0)), + "num_ratings": package.get("rating", {}).get("count", 0), + "user_rating": package.get("rating", {}).get("user_rating", 0) }) # Filter on all the key-word arguments. diff --git a/plugins/Toolbox/src/Toolbox.py b/plugins/Toolbox/src/Toolbox.py index 25e7656999..05669e55d8 100644 --- a/plugins/Toolbox/src/Toolbox.py +++ b/plugins/Toolbox/src/Toolbox.py @@ -13,7 +13,6 @@ from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkRepl from UM.Logger import Logger from UM.PluginRegistry import PluginRegistry from UM.Extension import Extension -from UM.Qt.ListModel import ListModel from UM.i18n import i18nCatalog from UM.Version import Version @@ -31,8 +30,8 @@ i18n_catalog = i18nCatalog("cura") ## The Toolbox class is responsible of communicating with the server through the API class Toolbox(QObject, Extension): - DEFAULT_CLOUD_API_ROOT = "https://api.ultimaker.com" #type: str - DEFAULT_CLOUD_API_VERSION = 1 #type: int + DEFAULT_CLOUD_API_ROOT = "https://api.ultimaker.com" # type: str + DEFAULT_CLOUD_API_VERSION = 1 # type: int def __init__(self, application: CuraApplication) -> None: super().__init__() @@ -50,47 +49,35 @@ class Toolbox(QObject, Extension): self._download_progress = 0 # type: float self._is_downloading = False # type: bool self._network_manager = None # type: Optional[QNetworkAccessManager] - self._request_header = [ - b"User-Agent", - str.encode( - "%s/%s (%s %s)" % ( - self._application.getApplicationName(), - self._application.getVersion(), - platform.system(), - platform.machine(), - ) - ) - ] + self._request_headers = [] # type: List[Tuple[bytes, bytes]] + self._updateRequestHeader() + + self._request_urls = {} # type: Dict[str, QUrl] self._to_update = [] # type: List[str] # Package_ids that are waiting to be updated self._old_plugin_ids = set() # type: Set[str] self._old_plugin_metadata = dict() # type: Dict[str, Dict[str, Any]] - # Data: - self._metadata = { + # The responses as given by the server parsed to a list. + self._server_response_data = { "authors": [], - "packages": [], - "plugins_showcase": [], - "plugins_available": [], - "plugins_installed": [], - "materials_showcase": [], - "materials_available": [], - "materials_installed": [], - "materials_generic": [] + "packages": [] } # type: Dict[str, List[Any]] # Models: self._models = { "authors": AuthorsModel(self), "packages": PackagesModel(self), - "plugins_showcase": PackagesModel(self), - "plugins_available": PackagesModel(self), - "plugins_installed": PackagesModel(self), - "materials_showcase": AuthorsModel(self), - "materials_available": AuthorsModel(self), - "materials_installed": PackagesModel(self), - "materials_generic": PackagesModel(self) - } # type: Dict[str, ListModel] + } # type: Dict[str, Union[AuthorsModel, PackagesModel]] + + self._plugins_showcase_model = PackagesModel(self) + self._plugins_available_model = PackagesModel(self) + self._plugins_installed_model = PackagesModel(self) + + self._materials_showcase_model = AuthorsModel(self) + self._materials_available_model = AuthorsModel(self) + self._materials_installed_model = PackagesModel(self) + self._materials_generic_model = PackagesModel(self) # These properties are for keeping track of the UI state: # ---------------------------------------------------------------------- @@ -120,6 +107,7 @@ class Toolbox(QObject, Extension): self._restart_dialog_message = "" # type: str self._application.initializationFinished.connect(self._onAppInitialized) + self._application.getCuraAPI().account.loginStateChanged.connect(self._updateRequestHeader) # Signals: # -------------------------------------------------------------------------- @@ -139,12 +127,38 @@ class Toolbox(QObject, Extension): showLicenseDialog = pyqtSignal() uninstallVariablesChanged = pyqtSignal() + def _updateRequestHeader(self): + self._request_headers = [ + (b"User-Agent", + str.encode( + "%s/%s (%s %s)" % ( + self._application.getApplicationName(), + self._application.getVersion(), + platform.system(), + platform.machine(), + ) + )) + ] + access_token = self._application.getCuraAPI().account.accessToken + if access_token: + self._request_headers.append((b"Authorization", "Bearer {}".format(access_token).encode())) + def _resetUninstallVariables(self) -> None: self._package_id_to_uninstall = None # type: Optional[str] self._package_name_to_uninstall = "" self._package_used_materials = [] # type: List[Tuple[GlobalStack, str, str]] self._package_used_qualities = [] # type: List[Tuple[GlobalStack, str, str]] + @pyqtSlot(str, int) + def ratePackage(self, package_id: str, rating: int) -> None: + url = QUrl("{base_url}/packages/{package_id}/ratings".format(base_url=self._api_url, package_id = package_id)) + + self._rate_request = QNetworkRequest(url) + for header_name, header_value in self._request_headers: + cast(QNetworkRequest, self._rate_request).setRawHeader(header_name, header_value) + data = "{\"data\": {\"cura_version\": \"%s\", \"rating\": %i}}" % (Version(self._application.getVersion()), rating) + self._rate_reply = cast(QNetworkAccessManager, self._network_manager).put(self._rate_request, data.encode()) + @pyqtSlot(result = str) def getLicenseDialogPluginName(self) -> str: return self._license_dialog_plugin_name @@ -172,18 +186,13 @@ class Toolbox(QObject, Extension): self._cloud_api_version = self._getCloudAPIVersion() self._cloud_api_root = self._getCloudAPIRoot() self._api_url = "{cloud_api_root}/cura-packages/v{cloud_api_version}/cura/v{sdk_version}".format( - cloud_api_root=self._cloud_api_root, - cloud_api_version=self._cloud_api_version, - sdk_version=self._sdk_version + cloud_api_root = self._cloud_api_root, + cloud_api_version = self._cloud_api_version, + sdk_version = self._sdk_version ) self._request_urls = { - "authors": QUrl("{base_url}/authors".format(base_url=self._api_url)), - "packages": QUrl("{base_url}/packages".format(base_url=self._api_url)), - "plugins_showcase": QUrl("{base_url}/showcase".format(base_url=self._api_url)), - "plugins_available": QUrl("{base_url}/packages?package_type=plugin".format(base_url=self._api_url)), - "materials_showcase": QUrl("{base_url}/showcase".format(base_url=self._api_url)), - "materials_available": QUrl("{base_url}/packages?package_type=material".format(base_url=self._api_url)), - "materials_generic": QUrl("{base_url}/packages?package_type=material&tags=generic".format(base_url=self._api_url)) + "authors": QUrl("{base_url}/authors".format(base_url = self._api_url)), + "packages": QUrl("{base_url}/packages".format(base_url = self._api_url)) } # Get the API root for the packages API depending on Cura version settings. @@ -192,9 +201,9 @@ class Toolbox(QObject, Extension): return self.DEFAULT_CLOUD_API_ROOT if not hasattr(cura.CuraVersion, "CuraCloudAPIRoot"): # type: ignore return self.DEFAULT_CLOUD_API_ROOT - if not cura.CuraVersion.CuraCloudAPIRoot: # type: ignore + if not cura.CuraVersion.CuraCloudAPIRoot: # type: ignore return self.DEFAULT_CLOUD_API_ROOT - return cura.CuraVersion.CuraCloudAPIRoot # type: ignore + return cura.CuraVersion.CuraCloudAPIRoot # type: ignore # Get the cloud API version from CuraVersion def _getCloudAPIVersion(self) -> int: @@ -202,18 +211,18 @@ class Toolbox(QObject, Extension): return self.DEFAULT_CLOUD_API_VERSION if not hasattr(cura.CuraVersion, "CuraCloudAPIVersion"): # type: ignore return self.DEFAULT_CLOUD_API_VERSION - if not cura.CuraVersion.CuraCloudAPIVersion: # type: ignore + if not cura.CuraVersion.CuraCloudAPIVersion: # type: ignore return self.DEFAULT_CLOUD_API_VERSION - return cura.CuraVersion.CuraCloudAPIVersion # type: ignore + return cura.CuraVersion.CuraCloudAPIVersion # type: ignore # Get the packages version depending on Cura version settings. def _getSDKVersion(self) -> Union[int, str]: if not hasattr(cura, "CuraVersion"): - return self._plugin_registry.APIVersion + return self._application.getAPIVersion().getMajor() if not hasattr(cura.CuraVersion, "CuraSDKVersion"): # type: ignore - return self._plugin_registry.APIVersion + return self._application.getAPIVersion().getMajor() if not cura.CuraVersion.CuraSDKVersion: # type: ignore - return self._plugin_registry.APIVersion + return self._application.getAPIVersion().getMajor() return cura.CuraVersion.CuraSDKVersion # type: ignore @pyqtSlot() @@ -231,12 +240,6 @@ class Toolbox(QObject, Extension): # Make remote requests: self._makeRequestByType("packages") self._makeRequestByType("authors") - # TODO: Uncomment in the future when the tag-filtered api calls work in the cloud server - # self._makeRequestByType("plugins_showcase") - # self._makeRequestByType("plugins_available") - # self._makeRequestByType("materials_showcase") - # self._makeRequestByType("materials_available") - # self._makeRequestByType("materials_generic") # Gather installed packages: self._updateInstalledModels() @@ -265,21 +268,25 @@ class Toolbox(QObject, Extension): raise Exception("Failed to create Marketplace dialog") return dialog - def _convertPluginMetadata(self, plugin: Dict[str, Any]) -> Dict[str, Any]: - formatted = { - "package_id": plugin["id"], - "package_type": "plugin", - "display_name": plugin["plugin"]["name"], - "package_version": plugin["plugin"]["version"], - "sdk_version": plugin["plugin"]["api"], - "author": { - "author_id": plugin["plugin"]["author"], - "display_name": plugin["plugin"]["author"] - }, - "is_installed": True, - "description": plugin["plugin"]["description"] - } - return formatted + def _convertPluginMetadata(self, plugin_data: Dict[str, Any]) -> Optional[Dict[str, Any]]: + try: + formatted = { + "package_id": plugin_data["id"], + "package_type": "plugin", + "display_name": plugin_data["plugin"]["name"], + "package_version": plugin_data["plugin"]["version"], + "sdk_version": plugin_data["plugin"]["api"], + "author": { + "author_id": plugin_data["plugin"]["author"], + "display_name": plugin_data["plugin"]["author"] + }, + "is_installed": True, + "description": plugin_data["plugin"]["description"] + } + return formatted + except KeyError: + Logger.log("w", "Unable to convert plugin meta data %s", str(plugin_data)) + return None @pyqtSlot() def _updateInstalledModels(self) -> None: @@ -295,11 +302,13 @@ class Toolbox(QObject, Extension): for plugin_id in old_plugin_ids: # Neither the installed packages nor the packages that are scheduled to remove are old plugins if plugin_id not in installed_package_ids and plugin_id not in scheduled_to_remove_package_ids: - Logger.log('i', 'Found a plugin that was installed with the old plugin browser: %s', plugin_id) + Logger.log("i", "Found a plugin that was installed with the old plugin browser: %s", plugin_id) old_metadata = self._plugin_registry.getMetaData(plugin_id) new_metadata = self._convertPluginMetadata(old_metadata) - + if new_metadata is None: + # Something went wrong converting it. + continue self._old_plugin_ids.add(plugin_id) self._old_plugin_metadata[new_metadata["package_id"]] = new_metadata @@ -313,13 +322,10 @@ class Toolbox(QObject, Extension): if plugin_id not in all_plugin_package_ids) self._old_plugin_metadata = {k: v for k, v in self._old_plugin_metadata.items() if k in self._old_plugin_ids} - self._metadata["plugins_installed"] = all_packages["plugin"] + list(self._old_plugin_metadata.values()) - self._models["plugins_installed"].setMetadata(self._metadata["plugins_installed"]) + self._plugins_installed_model.setMetadata(all_packages["plugin"] + list(self._old_plugin_metadata.values())) self.metadataChanged.emit() if "material" in all_packages: - self._metadata["materials_installed"] = all_packages["material"] - # TODO: ADD MATERIALS HERE ONCE MATERIALS PORTION OF TOOLBOX IS LIVE - self._models["materials_installed"].setMetadata(self._metadata["materials_installed"]) + self._materials_installed_model.setMetadata(all_packages["material"]) self.metadataChanged.emit() @pyqtSlot(str) @@ -473,7 +479,7 @@ class Toolbox(QObject, Extension): def getRemotePackage(self, package_id: str) -> Optional[Dict]: # TODO: make the lookup in a dict, not a loop. canUpdate is called for every item. remote_package = None - for package in self._metadata["packages"]: + for package in self._server_response_data["packages"]: if package["package_id"] == package_id: remote_package = package break @@ -485,11 +491,8 @@ class Toolbox(QObject, Extension): def canUpdate(self, package_id: str) -> bool: local_package = self._package_manager.getInstalledPackageInfo(package_id) if local_package is None: - Logger.log("i", "Could not find package [%s] as installed in the package manager, fall back to check the old plugins", - package_id) local_package = self.getOldPluginPackageMetadata(package_id) if local_package is None: - Logger.log("i", "Could not find package [%s] in the old plugins", package_id) return False remote_package = self.getRemotePackage(package_id) @@ -505,7 +508,10 @@ class Toolbox(QObject, Extension): # version, we also need to check if the current one has a lower SDK version. If so, this package should also # be upgradable. elif remote_version == local_version: - can_upgrade = local_package.get("sdk_version", 0) < remote_package.get("sdk_version", 0) + # First read sdk_version_semver. If that doesn't exist, read just sdk_version (old version system). + remote_sdk_version = Version(remote_package.get("sdk_version_semver", remote_package.get("sdk_version", 0))) + local_sdk_version = Version(local_package.get("sdk_version_semver", local_package.get("sdk_version", 0))) + can_upgrade = local_sdk_version < remote_sdk_version return can_upgrade @@ -536,8 +542,8 @@ class Toolbox(QObject, Extension): @pyqtSlot(str, result = int) def getNumberOfInstalledPackagesByAuthor(self, author_id: str) -> int: count = 0 - for package in self._metadata["materials_installed"]: - if package["author"]["author_id"] == author_id: + for package in self._materials_installed_model.items: + if package["author_id"] == author_id: count += 1 return count @@ -545,7 +551,7 @@ class Toolbox(QObject, Extension): @pyqtSlot(str, result = int) def getTotalNumberOfMaterialPackagesByAuthor(self, author_id: str) -> int: count = 0 - for package in self._metadata["packages"]: + for package in self._server_response_data["packages"]: if package["package_type"] == "material": if package["author"]["author_id"] == author_id: count += 1 @@ -559,34 +565,31 @@ class Toolbox(QObject, Extension): # Check for plugins that were installed with the old plugin browser def isOldPlugin(self, plugin_id: str) -> bool: - if plugin_id in self._old_plugin_ids: - return True - return False + return plugin_id in self._old_plugin_ids def getOldPluginPackageMetadata(self, plugin_id: str) -> Optional[Dict[str, Any]]: return self._old_plugin_metadata.get(plugin_id) - def loadingComplete(self) -> bool: + def isLoadingComplete(self) -> bool: populated = 0 - for list in self._metadata.items(): - if len(list) > 0: + for metadata_list in self._server_response_data.items(): + if metadata_list: populated += 1 - if populated == len(self._metadata.items()): - return True - return False + return populated == len(self._server_response_data.items()) # Make API Calls # -------------------------------------------------------------------------- - def _makeRequestByType(self, type: str) -> None: - Logger.log("i", "Marketplace: Requesting %s metadata from server.", type) - request = QNetworkRequest(self._request_urls[type]) - request.setRawHeader(*self._request_header) + def _makeRequestByType(self, request_type: str) -> None: + Logger.log("i", "Requesting %s metadata from server.", request_type) + request = QNetworkRequest(self._request_urls[request_type]) + for header_name, header_value in self._request_headers: + request.setRawHeader(header_name, header_value) if self._network_manager: self._network_manager.get(request) @pyqtSlot(str) def startDownload(self, url: str) -> None: - Logger.log("i", "Marketplace: Attempting to download & install package from %s.", url) + Logger.log("i", "Attempting to download & install package from %s.", url) url = QUrl(url) self._download_request = QNetworkRequest(url) if hasattr(QNetworkRequest, "FollowRedirectsAttribute"): @@ -595,7 +598,8 @@ class Toolbox(QObject, Extension): if hasattr(QNetworkRequest, "RedirectPolicyAttribute"): # Patch for Qt 5.9+ cast(QNetworkRequest, self._download_request).setAttribute(QNetworkRequest.RedirectPolicyAttribute, True) - cast(QNetworkRequest, self._download_request).setRawHeader(*self._request_header) + for header_name, header_value in self._request_headers: + cast(QNetworkRequest, self._download_request).setRawHeader(header_name, header_value) self._download_reply = cast(QNetworkAccessManager, self._network_manager).get(self._download_request) self.setDownloadProgress(0) self.setIsDownloading(True) @@ -603,15 +607,15 @@ class Toolbox(QObject, Extension): @pyqtSlot() def cancelDownload(self) -> None: - Logger.log("i", "Marketplace: User cancelled the download of a package.") + Logger.log("i", "User cancelled the download of a package.") self.resetDownload() def resetDownload(self) -> None: if self._download_reply: try: self._download_reply.downloadProgress.disconnect(self._onDownloadProgress) - except TypeError: #Raised when the method is not connected to the signal yet. - pass #Don't need to disconnect. + except TypeError: # Raised when the method is not connected to the signal yet. + pass # Don't need to disconnect. self._download_reply.abort() self._download_reply = None self._download_request = None @@ -637,22 +641,8 @@ class Toolbox(QObject, Extension): self.resetDownload() return - # HACK: These request are not handled independently at this moment, but together from the "packages" call - do_not_handle = [ - "materials_available", - "materials_showcase", - "materials_generic", - "plugins_available", - "plugins_showcase", - ] - if reply.operation() == QNetworkAccessManager.GetOperation: - for type, url in self._request_urls.items(): - - # HACK: Do nothing because we'll handle these from the "packages" call - if type in do_not_handle: - continue - + for response_type, url in self._request_urls.items(): if reply.url() == url: if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) == 200: try: @@ -665,39 +655,33 @@ class Toolbox(QObject, Extension): return # Create model and apply metadata: - if not self._models[type]: - Logger.log("e", "Could not find the %s model.", type) + if not self._models[response_type]: + Logger.log("e", "Could not find the %s model.", response_type) break - self._metadata[type] = json_data["data"] - self._models[type].setMetadata(self._metadata[type]) + self._server_response_data[response_type] = json_data["data"] + self._models[response_type].setMetadata(self._server_response_data[response_type]) - # Do some auto filtering - # TODO: Make multiple API calls in the future to handle this - if type is "packages": - self._models[type].setFilter({"type": "plugin"}) - self.buildMaterialsModels() - self.buildPluginsModels() - if type is "authors": - self._models[type].setFilter({"package_types": "material"}) - if type is "materials_generic": - self._models[type].setFilter({"tags": "generic"}) + if response_type is "packages": + self._models[response_type].setFilter({"type": "plugin"}) + self.reBuildMaterialsModels() + self.reBuildPluginsModels() + elif response_type is "authors": + self._models[response_type].setFilter({"package_types": "material"}) + self._models[response_type].setFilter({"tags": "generic"}) self.metadataChanged.emit() - if self.loadingComplete() is True: + if self.isLoadingComplete(): self.setViewPage("overview") - return except json.decoder.JSONDecodeError: - Logger.log("w", "Marketplace: Received invalid JSON for %s.", type) + Logger.log("w", "Received invalid JSON for %s.", response_type) break else: self.setViewPage("errored") self.resetDownload() - return - - else: + elif reply.operation() == QNetworkAccessManager.PutOperation: # Ignore any operation that is not a get operation pass @@ -707,7 +691,13 @@ class Toolbox(QObject, Extension): self.setDownloadProgress(new_progress) if bytes_sent == bytes_total: self.setIsDownloading(False) - cast(QNetworkReply, self._download_reply).downloadProgress.disconnect(self._onDownloadProgress) + self._download_reply = cast(QNetworkReply, self._download_reply) + self._download_reply.downloadProgress.disconnect(self._onDownloadProgress) + + # Check if the download was sucessfull + if self._download_reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: + Logger.log("w", "Failed to download package. The following error was returned: %s", json.loads(bytes(self._download_reply.readAll()).decode("utf-8"))) + return # Must not delete the temporary file on Windows self._temp_plugin_file = tempfile.NamedTemporaryFile(mode = "w+b", suffix = ".curapackage", delete = False) file_path = self._temp_plugin_file.name @@ -717,10 +707,10 @@ class Toolbox(QObject, Extension): self._onDownloadComplete(file_path) def _onDownloadComplete(self, file_path: str) -> None: - Logger.log("i", "Marketplace: Download complete.") + Logger.log("i", "Download complete.") package_info = self._package_manager.getPackageInfo(file_path) if not package_info: - Logger.log("w", "Marketplace: Package file [%s] was not a valid CuraPackage.", file_path) + Logger.log("w", "Package file [%s] was not a valid CuraPackage.", file_path) return license_content = self._package_manager.getPackageLicense(file_path) @@ -729,7 +719,6 @@ class Toolbox(QObject, Extension): return self.install(file_path) - return # Getter & Setters for Properties: # -------------------------------------------------------------------------- @@ -752,8 +741,9 @@ class Toolbox(QObject, Extension): return self._is_downloading def setActivePackage(self, package: Dict[str, Any]) -> None: - self._active_package = package - self.activePackageChanged.emit() + if self._active_package != package: + self._active_package = package + self.activePackageChanged.emit() ## The active package is the package that is currently being downloaded @pyqtProperty(QObject, fset = setActivePackage, notify = activePackageChanged) @@ -761,16 +751,18 @@ class Toolbox(QObject, Extension): return self._active_package def setViewCategory(self, category: str = "plugin") -> None: - self._view_category = category - self.viewChanged.emit() + if self._view_category != category: + self._view_category = category + self.viewChanged.emit() @pyqtProperty(str, fset = setViewCategory, notify = viewChanged) def viewCategory(self) -> str: return self._view_category def setViewPage(self, page: str = "overview") -> None: - self._view_page = page - self.viewChanged.emit() + if self._view_page != page: + self._view_page = page + self.viewChanged.emit() @pyqtProperty(str, fset = setViewPage, notify = viewChanged) def viewPage(self) -> str: @@ -778,48 +770,48 @@ class Toolbox(QObject, Extension): # Exposed Models: # -------------------------------------------------------------------------- - @pyqtProperty(QObject, notify = metadataChanged) + @pyqtProperty(QObject, constant=True) def authorsModel(self) -> AuthorsModel: return cast(AuthorsModel, self._models["authors"]) - @pyqtProperty(QObject, notify = metadataChanged) + @pyqtProperty(QObject, constant=True) def packagesModel(self) -> PackagesModel: return cast(PackagesModel, self._models["packages"]) - @pyqtProperty(QObject, notify = metadataChanged) + @pyqtProperty(QObject, constant=True) def pluginsShowcaseModel(self) -> PackagesModel: - return cast(PackagesModel, self._models["plugins_showcase"]) + return self._plugins_showcase_model - @pyqtProperty(QObject, notify = metadataChanged) + @pyqtProperty(QObject, constant=True) def pluginsAvailableModel(self) -> PackagesModel: - return cast(PackagesModel, self._models["plugins_available"]) + return self._plugins_available_model - @pyqtProperty(QObject, notify = metadataChanged) + @pyqtProperty(QObject, constant=True) def pluginsInstalledModel(self) -> PackagesModel: - return cast(PackagesModel, self._models["plugins_installed"]) + return self._plugins_installed_model - @pyqtProperty(QObject, notify = metadataChanged) + @pyqtProperty(QObject, constant=True) def materialsShowcaseModel(self) -> AuthorsModel: - return cast(AuthorsModel, self._models["materials_showcase"]) + return self._materials_showcase_model - @pyqtProperty(QObject, notify = metadataChanged) + @pyqtProperty(QObject, constant=True) def materialsAvailableModel(self) -> AuthorsModel: - return cast(AuthorsModel, self._models["materials_available"]) + return self._materials_available_model - @pyqtProperty(QObject, notify = metadataChanged) + @pyqtProperty(QObject, constant=True) def materialsInstalledModel(self) -> PackagesModel: - return cast(PackagesModel, self._models["materials_installed"]) + return self._materials_installed_model - @pyqtProperty(QObject, notify=metadataChanged) + @pyqtProperty(QObject, constant=True) def materialsGenericModel(self) -> PackagesModel: - return cast(PackagesModel, self._models["materials_generic"]) + return self._materials_generic_model # Filter Models: # -------------------------------------------------------------------------- @pyqtSlot(str, str, str) def filterModelByProp(self, model_type: str, filter_type: str, parameter: str) -> None: if not self._models[model_type]: - Logger.log("w", "Marketplace: Couldn't filter %s model because it doesn't exist.", model_type) + Logger.log("w", "Couldn't filter %s model because it doesn't exist.", model_type) return self._models[model_type].setFilter({filter_type: parameter}) self.filterChanged.emit() @@ -827,7 +819,7 @@ class Toolbox(QObject, Extension): @pyqtSlot(str, "QVariantMap") def setFilters(self, model_type: str, filter_dict: dict) -> None: if not self._models[model_type]: - Logger.log("w", "Marketplace: Couldn't filter %s model because it doesn't exist.", model_type) + Logger.log("w", "Couldn't filter %s model because it doesn't exist.", model_type) return self._models[model_type].setFilter(filter_dict) self.filterChanged.emit() @@ -835,21 +827,21 @@ class Toolbox(QObject, Extension): @pyqtSlot(str) def removeFilters(self, model_type: str) -> None: if not self._models[model_type]: - Logger.log("w", "Marketplace: Couldn't remove filters on %s model because it doesn't exist.", model_type) + Logger.log("w", "Couldn't remove filters on %s model because it doesn't exist.", model_type) return self._models[model_type].setFilter({}) self.filterChanged.emit() # HACK(S): # -------------------------------------------------------------------------- - def buildMaterialsModels(self) -> None: - self._metadata["materials_showcase"] = [] - self._metadata["materials_available"] = [] - self._metadata["materials_generic"] = [] + def reBuildMaterialsModels(self) -> None: + materials_showcase_metadata = [] + materials_available_metadata = [] + materials_generic_metadata = [] - processed_authors = [] # type: List[str] + processed_authors = [] # type: List[str] - for item in self._metadata["packages"]: + for item in self._server_response_data["packages"]: if item["package_type"] == "material": author = item["author"] @@ -858,30 +850,29 @@ class Toolbox(QObject, Extension): # Generic materials to be in the same section if "generic" in item["tags"]: - self._metadata["materials_generic"].append(item) + materials_generic_metadata.append(item) else: if "showcase" in item["tags"]: - self._metadata["materials_showcase"].append(author) + materials_showcase_metadata.append(author) else: - self._metadata["materials_available"].append(author) + materials_available_metadata.append(author) processed_authors.append(author["author_id"]) - self._models["materials_showcase"].setMetadata(self._metadata["materials_showcase"]) - self._models["materials_available"].setMetadata(self._metadata["materials_available"]) - self._models["materials_generic"].setMetadata(self._metadata["materials_generic"]) + self._materials_showcase_model.setMetadata(materials_showcase_metadata) + self._materials_available_model.setMetadata(materials_available_metadata) + self._materials_generic_model.setMetadata(materials_generic_metadata) - def buildPluginsModels(self) -> None: - self._metadata["plugins_showcase"] = [] - self._metadata["plugins_available"] = [] + def reBuildPluginsModels(self) -> None: + plugins_showcase_metadata = [] + plugins_available_metadata = [] - for item in self._metadata["packages"]: + for item in self._server_response_data["packages"]: if item["package_type"] == "plugin": - if "showcase" in item["tags"]: - self._metadata["plugins_showcase"].append(item) + plugins_showcase_metadata.append(item) else: - self._metadata["plugins_available"].append(item) + plugins_available_metadata.append(item) - self._models["plugins_showcase"].setMetadata(self._metadata["plugins_showcase"]) - self._models["plugins_available"].setMetadata(self._metadata["plugins_available"]) + self._plugins_showcase_model.setMetadata(plugins_showcase_metadata) + self._plugins_available_model.setMetadata(plugins_available_metadata) diff --git a/plugins/UFPWriter/plugin.json b/plugins/UFPWriter/plugin.json index ab590353e0..288d6acf77 100644 --- a/plugins/UFPWriter/plugin.json +++ b/plugins/UFPWriter/plugin.json @@ -1,8 +1,8 @@ { "name": "UFP Writer", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides support for writing Ultimaker Format Packages.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/plugin.json b/plugins/UM3NetworkPrinting/plugin.json index d415338374..088b4dae6a 100644 --- a/plugins/UM3NetworkPrinting/plugin.json +++ b/plugins/UM3NetworkPrinting/plugin.json @@ -2,7 +2,7 @@ "name": "UM3 Network Connection", "author": "Ultimaker B.V.", "description": "Manages network connections to Ultimaker 3 printers.", - "version": "1.0.0", - "api": 5, + "version": "1.0.1", + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/UM3NetworkPrinting/resources/png/Ultimaker 3 Extended.png b/plugins/UM3NetworkPrinting/resources/png/Ultimaker 3 Extended.png new file mode 100644 index 0000000000..1ce19c2933 Binary files /dev/null and b/plugins/UM3NetworkPrinting/resources/png/Ultimaker 3 Extended.png differ diff --git a/plugins/UM3NetworkPrinting/resources/png/Ultimaker 3.png b/plugins/UM3NetworkPrinting/resources/png/Ultimaker 3.png new file mode 100644 index 0000000000..4639cb3fde Binary files /dev/null and b/plugins/UM3NetworkPrinting/resources/png/Ultimaker 3.png differ diff --git a/plugins/UM3NetworkPrinting/resources/png/Ultimaker S5.png b/plugins/UM3NetworkPrinting/resources/png/Ultimaker S5.png new file mode 100644 index 0000000000..29ba428e38 Binary files /dev/null and b/plugins/UM3NetworkPrinting/resources/png/Ultimaker S5.png differ diff --git a/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml b/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml index 7e5c254e5c..6f054f9c19 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml @@ -8,11 +8,13 @@ import UM 1.3 as UM import Cura 1.0 as Cura Rectangle { + id: base property var iconSource: null; - color: clickArea.containsMouse ? UM.Theme.getColor("primary_hover") : UM.Theme.getColor("primary"); // "Cura Blue" + color: "#0a0850" // TODO: Theme! height: width; radius: Math.round(0.5 * width); - width: 36 * screenScaleFactor; + width: 24 * screenScaleFactor; + property var enabled: true UM.RecolorImage { id: icon; @@ -29,12 +31,18 @@ Rectangle { MouseArea { id: clickArea; anchors.fill: parent; - hoverEnabled: true; + hoverEnabled: base.enabled onClicked: { - if (OutputDevice.activeCameraUrl != "") { - OutputDevice.setActiveCameraUrl(""); - } else { - OutputDevice.setActiveCameraUrl(modelData.cameraUrl); + if (base.enabled) + { + if (OutputDevice.activeCameraUrl != "") + { + OutputDevice.setActiveCameraUrl("") + } + else + { + OutputDevice.setActiveCameraUrl(modelData.cameraUrl) + } } } } diff --git a/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml b/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml deleted file mode 100644 index 068c369a3f..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.3 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.3 -import UM 1.3 as UM -import Cura 1.0 as Cura - -Component { - Rectangle { - id: base; - property var shadowRadius: UM.Theme.getSize("monitor_shadow_radius").width; - property var cornerRadius: UM.Theme.getSize("monitor_corner_radius").width; - anchors.fill: parent; - color: UM.Theme.getColor("sidebar"); - visible: OutputDevice != null; - - UM.I18nCatalog { - id: catalog; - name: "cura"; - } - - Label { - id: printingLabel; - anchors { - left: parent.left; - leftMargin: 4 * UM.Theme.getSize("default_margin").width; - margins: 2 * UM.Theme.getSize("default_margin").width; - right: parent.right; - top: parent.top; - } - color: UM.Theme.getColor("text"); - elide: Text.ElideRight; - font: UM.Theme.getFont("large"); - text: catalog.i18nc("@label", "Printing"); - } - - Label { - id: managePrintersLabel; - anchors { - bottom: printingLabel.bottom; - right: printerScrollView.right; - rightMargin: 4 * UM.Theme.getSize("default_margin").width; - } - color: UM.Theme.getColor("primary"); // "Cura Blue" - font: UM.Theme.getFont("default"); - linkColor: UM.Theme.getColor("primary"); // "Cura Blue" - text: catalog.i18nc("@label link to connect manager", "Manage printers"); - } - - MouseArea { - anchors.fill: managePrintersLabel; - hoverEnabled: true; - onClicked: Cura.MachineManager.printerOutputDevices[0].openPrinterControlPanel(); - onEntered: managePrintersLabel.font.underline = true; - onExited: managePrintersLabel.font.underline = false; - } - - // Skeleton loading - Column { - id: skeletonLoader; - anchors { - left: parent.left; - leftMargin: UM.Theme.getSize("wide_margin").width; - right: parent.right; - rightMargin: UM.Theme.getSize("wide_margin").width; - top: printingLabel.bottom; - topMargin: UM.Theme.getSize("default_margin").height; - } - spacing: UM.Theme.getSize("default_margin").height - 10; - visible: printerList.count === 0; - - PrinterCard { - printer: null; - } - PrinterCard { - printer: null; - } - } - - // Actual content - ScrollView { - id: printerScrollView; - anchors { - bottom: parent.bottom; - left: parent.left; - right: parent.right; - top: printingLabel.bottom; - topMargin: UM.Theme.getSize("default_margin").height; - } - style: UM.Theme.styles.scrollview; - - ListView { - id: printerList; - property var currentIndex: -1; - anchors { - fill: parent; - leftMargin: UM.Theme.getSize("wide_margin").width; - rightMargin: UM.Theme.getSize("wide_margin").width; - } - delegate: PrinterCard { - printer: modelData; - } - model: OutputDevice.printers; - spacing: UM.Theme.getSize("default_margin").height - 10; - } - } - } -} diff --git a/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml b/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml deleted file mode 100644 index d210ab40f3..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 -import UM 1.3 as UM -import Cura 1.0 as Cura - -Component { - Rectangle { - id: monitorFrame; - property var emphasisColor: UM.Theme.getColor("setting_control_border_highlight"); - property var cornerRadius: UM.Theme.getSize("monitor_corner_radius").width; - color: UM.Theme.getColor("viewport_background"); - height: maximumHeight; - onVisibleChanged: { - if (monitorFrame != null && !monitorFrame.visible) { - OutputDevice.setActiveCameraUrl(""); - } - } - width: maximumWidth; - - UM.I18nCatalog { - id: catalog; - name: "cura"; - } - - Label { - id: manageQueueLabel; - anchors { - bottom: queuedLabel.bottom; - right: queuedPrintJobs.right; - rightMargin: 3 * UM.Theme.getSize("default_margin").width; - } - color: UM.Theme.getColor("primary"); - font: UM.Theme.getFont("default"); - linkColor: UM.Theme.getColor("primary"); - text: catalog.i18nc("@label link to connect manager", "Manage queue"); - } - - MouseArea { - anchors.fill: manageQueueLabel; - hoverEnabled: true; - onClicked: Cura.MachineManager.printerOutputDevices[0].openPrintJobControlPanel(); - onEntered: manageQueueLabel.font.underline = true; - onExited: manageQueueLabel.font.underline = false; - } - - Label { - id: queuedLabel; - anchors { - left: queuedPrintJobs.left; - leftMargin: 3 * UM.Theme.getSize("default_margin").width + 5 * screenScaleFactor; - top: parent.top; - topMargin: 2 * UM.Theme.getSize("default_margin").height; - } - color: UM.Theme.getColor("text"); - font: UM.Theme.getFont("large"); - text: catalog.i18nc("@label", "Queued"); - } - - Column { - id: skeletonLoader; - anchors { - bottom: parent.bottom; - bottomMargin: UM.Theme.getSize("default_margin").height; - horizontalCenter: parent.horizontalCenter; - top: queuedLabel.bottom; - topMargin: UM.Theme.getSize("default_margin").height; - } - visible: !queuedPrintJobs.visible; - width: Math.min(800 * screenScaleFactor, maximumWidth); - - PrintJobInfoBlock { - anchors { - left: parent.left; - leftMargin: UM.Theme.getSize("default_margin").width; - right: parent.right; - rightMargin: UM.Theme.getSize("default_margin").width; - } - printJob: null; // Use as skeleton - } - - PrintJobInfoBlock { - anchors { - left: parent.left; - leftMargin: UM.Theme.getSize("default_margin").width; - right: parent.right; - rightMargin: UM.Theme.getSize("default_margin").width; - } - printJob: null; // Use as skeleton - } - } - - ScrollView { - id: queuedPrintJobs; - anchors { - top: queuedLabel.bottom; - topMargin: UM.Theme.getSize("default_margin").height; - horizontalCenter: parent.horizontalCenter; - bottomMargin: UM.Theme.getSize("default_margin").height; - bottom: parent.bottom; - } - style: UM.Theme.styles.scrollview; - visible: OutputDevice.receivedPrintJobs; - width: Math.min(800 * screenScaleFactor, maximumWidth); - - ListView { - id: printJobList; - anchors.fill: parent; - delegate: PrintJobInfoBlock { - anchors { - left: parent.left; - leftMargin: UM.Theme.getSize("default_margin").width; - right: parent.right; - rightMargin: UM.Theme.getSize("default_margin").width; - } - printJob: modelData; - } - model: OutputDevice.queuedPrintJobs; - spacing: UM.Theme.getSize("default_margin").height - 2 * UM.Theme.getSize("monitor_shadow_radius").width; - } - } - - PrinterVideoStream { - anchors.fill: parent; - cameraUrl: OutputDevice.activeCameraUrl; - visible: OutputDevice.activeCameraUrl != ""; - } - } -} diff --git a/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml b/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml index 58443115a9..3883a7e285 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml @@ -28,7 +28,7 @@ Cura.MachineAction // Check if there is another instance with the same key if (!manager.existsKey(printerKey)) { - manager.setKey(printerKey) + manager.associateActiveMachineWithPrinterDevice(base.selectedDevice) manager.setGroupName(printerName) // TODO To change when the groups have a name completed() } @@ -64,6 +64,7 @@ Cura.MachineAction width: parent.width text: catalog.i18nc("@title:window", "Connect to Networked Printer") wrapMode: Text.WordWrap + renderType: Text.NativeRendering font.pointSize: 18 } @@ -72,6 +73,7 @@ Cura.MachineAction id: pageDescription width: parent.width wrapMode: Text.WordWrap + renderType: Text.NativeRendering text: catalog.i18nc("@label", "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n\nSelect your printer from the list below:") } @@ -182,6 +184,7 @@ Cura.MachineAction text: listview.model[index].name color: parent.ListView.isCurrentItem ? palette.highlightedText : palette.text elide: Text.ElideRight + renderType: Text.NativeRendering } MouseArea @@ -204,6 +207,7 @@ Cura.MachineAction anchors.left: parent.left anchors.right: parent.right wrapMode: Text.WordWrap + renderType: Text.NativeRendering text: catalog.i18nc("@label", "If your printer is not listed, read the network printing troubleshooting guide").arg("https://ultimaker.com/en/troubleshooting"); onLinkActivated: Qt.openUrlExternally(link) } @@ -219,8 +223,9 @@ Cura.MachineAction width: parent.width wrapMode: Text.WordWrap text: base.selectedDevice ? base.selectedDevice.name : "" - font: UM.Theme.getFont("large") + font: UM.Theme.getFont("large_bold") elide: Text.ElideRight + renderType: Text.NativeRendering } Grid { @@ -231,12 +236,14 @@ Cura.MachineAction { width: Math.round(parent.width * 0.5) wrapMode: Text.WordWrap + renderType: Text.NativeRendering text: catalog.i18nc("@label", "Type") } Label { width: Math.round(parent.width * 0.5) wrapMode: Text.WordWrap + renderType: Text.NativeRendering text: { if(base.selectedDevice) @@ -268,24 +275,28 @@ Cura.MachineAction { width: Math.round(parent.width * 0.5) wrapMode: Text.WordWrap + renderType: Text.NativeRendering text: catalog.i18nc("@label", "Firmware version") } Label { width: Math.round(parent.width * 0.5) wrapMode: Text.WordWrap + renderType: Text.NativeRendering text: base.selectedDevice ? base.selectedDevice.firmwareVersion : "" } Label { width: Math.round(parent.width * 0.5) wrapMode: Text.WordWrap + renderType: Text.NativeRendering text: catalog.i18nc("@label", "Address") } Label { width: Math.round(parent.width * 0.5) wrapMode: Text.WordWrap + renderType: Text.NativeRendering text: base.selectedDevice ? base.selectedDevice.ipAddress : "" } } @@ -294,6 +305,7 @@ Cura.MachineAction { width: parent.width wrapMode: Text.WordWrap + renderType: Text.NativeRendering text:{ // The property cluster size does not exist for older UM3 devices. if(!base.selectedDevice || base.selectedDevice.clusterSize == null || base.selectedDevice.clusterSize == 1) @@ -315,6 +327,7 @@ Cura.MachineAction { width: parent.width wrapMode: Text.WordWrap + renderType: Text.NativeRendering visible: base.selectedDevice != null && !base.completeProperties text: catalog.i18nc("@label", "The printer at this address has not yet responded." ) } @@ -358,9 +371,10 @@ Cura.MachineAction Label { - text: catalog.i18nc("@alabel","Enter the IP address or hostname of your printer on the network.") + text: catalog.i18nc("@alabel", "Enter the IP address or hostname of your printer on the network.") width: parent.width wrapMode: Text.WordWrap + renderType: Text.NativeRendering } TextField diff --git a/plugins/UM3NetworkPrinting/resources/qml/ExpandableCard.qml b/plugins/UM3NetworkPrinting/resources/qml/ExpandableCard.qml new file mode 100644 index 0000000000..f86135ae62 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/ExpandableCard.qml @@ -0,0 +1,82 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 2.0 +import UM 1.3 as UM +import Cura 1.0 as Cura + +// TODO: Theme & documentation! +// The expandable component has 3 major sub components: +// * The headerItem Always visible and should hold some info about what happens if the component is expanded +// * The popupItem The content that needs to be shown if the component is expanded. +Item +{ + id: base + + property bool expanded: false + property var borderWidth: 1 + property color borderColor: "#CCCCCC" + property color headerBackgroundColor: "white" + property color headerHoverColor: "#e8f2fc" + property color drawerBackgroundColor: "white" + property alias headerItem: header.children + property alias drawerItem: drawer.children + + width: parent.width + height: childrenRect.height + + Rectangle + { + id: header + border + { + color: borderColor + width: borderWidth + } + color: headerMouseArea.containsMouse ? headerHoverColor : headerBackgroundColor + height: childrenRect.height + width: parent.width + Behavior on color + { + ColorAnimation + { + duration: 100 + } + } + } + + MouseArea + { + id: headerMouseArea + anchors.fill: header + onClicked: base.expanded = !base.expanded + hoverEnabled: true + } + + Rectangle + { + id: drawer + anchors + { + top: header.bottom + topMargin: -1 + } + border + { + color: borderColor + width: borderWidth + } + clip: true + color: headerBackgroundColor + height: base.expanded ? childrenRect.height : 0 + width: parent.width + Behavior on height + { + NumberAnimation + { + duration: 100 + } + } + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/HorizontalLine.qml b/plugins/UM3NetworkPrinting/resources/qml/HorizontalLine.qml deleted file mode 100644 index aeb92697ad..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/HorizontalLine.qml +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.3 -import QtQuick.Controls 2.0 -import UM 1.3 as UM - -Rectangle { - color: UM.Theme.getColor("monitor_lining_light"); // TODO: Maybe theme separately? Maybe not. - height: UM.Theme.getSize("default_lining").height; - width: parent.width; -} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml new file mode 100644 index 0000000000..44bd47f904 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml @@ -0,0 +1,63 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 2.0 +import UM 1.3 as UM + +/** + * This component comprises a buildplate icon and the buildplate name. It is + * used by the MonitorPrinterConfiguration component along with two instances + * of MonitorExtruderConfiguration. + * + * NOTE: For most labels, a fixed height with vertical alignment is used to make + * layouts more deterministic (like the fixed-size textboxes used in original + * mock-ups). This is also a stand-in for CSS's 'line-height' property. Denoted + * with '// FIXED-LINE-HEIGHT:'. + */ +Item +{ + // The buildplate name + property alias buildplate: buildplateLabel.text + + // Height is one 18px label/icon + height: 18 * screenScaleFactor // TODO: Theme! + width: childrenRect.width + + Row + { + height: parent.height + spacing: UM.Theme.getSize("print_setup_slider_handle").width // TODO: Theme! (Should be same as extruder spacing) + + // This wrapper ensures that the buildplate icon is located centered + // below an extruder icon. + Item + { + height: parent.height + width: 32 * screenScaleFactor // TODO: Theme! (Should be same as extruder icon width) + + UM.RecolorImage + { + id: buildplateIcon + anchors.centerIn: parent + color: "#0a0850" // TODO: Theme! (Standard purple) + height: parent.height + source: "../svg/icons/buildplate.svg" + width: height + } + } + + Label + { + id: buildplateLabel + color: "#191919" // TODO: Theme! + elide: Text.ElideRight + font: UM.Theme.getFont("default") // 12pt, regular + text: "" + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorCarousel.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorCarousel.qml new file mode 100644 index 0000000000..eccd93c578 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorCarousel.qml @@ -0,0 +1,252 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.3 +import QtQuick.Controls 2.0 +import QtGraphicalEffects 1.0 +import UM 1.3 as UM + +Item +{ + id: base + + property var currentIndex: 0 + property var tileWidth: 834 * screenScaleFactor // TODO: Theme! + property var tileHeight: 216 * screenScaleFactor // TODO: Theme! + property var tileSpacing: 60 * screenScaleFactor // TODO: Theme! + property var maxOffset: (OutputDevice.printers.length - 1) * (tileWidth + tileSpacing) + + height: centerSection.height + width: maximumWidth + + // Enable keyboard navigation + Keys.onLeftPressed: navigateTo(currentIndex - 1) + Keys.onRightPressed: navigateTo(currentIndex + 1) + + Item + { + id: leftHint + anchors + { + right: leftButton.left + rightMargin: 12 * screenScaleFactor // TODO: Theme! + left: parent.left + } + height: parent.height + z: 10 + LinearGradient + { + anchors.fill: parent + start: Qt.point(0, 0) + end: Qt.point(leftHint.width, 0) + gradient: Gradient + { + GradientStop + { + position: 0.0 + color: "#fff6f6f6" // TODO: Theme! + } + GradientStop + { + position: 1.0 + color: "#66f6f6f6" // TODO: Theme! + } + } + } + MouseArea + { + anchors.fill: parent + onClicked: navigateTo(currentIndex - 1) + } + } + + Button + { + id: leftButton + anchors + { + verticalCenter: parent.verticalCenter + right: centerSection.left + rightMargin: 12 * screenScaleFactor // TODO: Theme! + } + width: 36 * screenScaleFactor // TODO: Theme! + height: 72 * screenScaleFactor // TODO: Theme! + visible: currentIndex > 0 + hoverEnabled: true + z: 10 + onClicked: navigateTo(currentIndex - 1) + background: Rectangle + { + color: leftButton.hovered ? "#e8f2fc" : "#ffffff" // TODO: Theme! + border.width: 1 * screenScaleFactor // TODO: Theme! + border.color: "#cccccc" // TODO: Theme! + radius: 2 * screenScaleFactor // TODO: Theme! + } + contentItem: Item + { + anchors.fill: parent + UM.RecolorImage + { + anchors.centerIn: parent + width: 18 // TODO: Theme! + height: width // TODO: Theme! + sourceSize.width: width // TODO: Theme! + sourceSize.height: width // TODO: Theme! + color: "#152950" // TODO: Theme! + source: UM.Theme.getIcon("arrow_left") + } + } + } + + Item + { + id: centerSection + anchors + { + verticalCenter: parent.verticalCenter + horizontalCenter: parent.horizontalCenter + } + width: tileWidth + height: tiles.height + z: 1 + + Row + { + id: tiles + height: childrenRect.height + width: 5 * tileWidth + 4 * tileSpacing // TODO: Theme! + x: 0 + z: 0 + Behavior on x + { + NumberAnimation + { + duration: 200 + easing.type: Easing.InOutCubic + } + } + spacing: 60 * screenScaleFactor // TODO: Theme! + + Repeater + { + model: OutputDevice.printers + MonitorPrinterCard + { + printer: modelData + enabled: model.index == currentIndex + } + } + } + } + + Button + { + id: rightButton + anchors + { + verticalCenter: parent.verticalCenter + left: centerSection.right + leftMargin: 12 * screenScaleFactor // TODO: Theme! + } + width: 36 * screenScaleFactor // TODO: Theme! + height: 72 * screenScaleFactor // TODO: Theme! + z: 10 + visible: currentIndex < OutputDevice.printers.length - 1 + onClicked: navigateTo(currentIndex + 1) + hoverEnabled: true + background: Rectangle + { + color: rightButton.hovered ? "#e8f2fc" : "#ffffff" // TODO: Theme! + border.width: 1 * screenScaleFactor // TODO: Theme! + border.color: "#cccccc" // TODO: Theme! + radius: 2 * screenScaleFactor // TODO: Theme! + } + contentItem: Item + { + anchors.fill: parent + UM.RecolorImage + { + anchors.centerIn: parent + width: 18 // TODO: Theme! + height: width // TODO: Theme! + sourceSize.width: width // TODO: Theme! + sourceSize.height: width // TODO: Theme! + color: "#152950" // TODO: Theme! + source: UM.Theme.getIcon("arrow_right") + } + } + } + + Item + { + id: rightHint + anchors + { + left: rightButton.right + leftMargin: 12 * screenScaleFactor // TODO: Theme! + right: parent.right + } + height: centerSection.height + z: 10 + + LinearGradient + { + anchors.fill: parent + start: Qt.point(0, 0) + end: Qt.point(rightHint.width, 0) + gradient: Gradient + { + GradientStop + { + position: 0.0 + color: "#66f6f6f6" // TODO: Theme! + } + GradientStop + { + position: 1.0 + color: "#fff6f6f6" // TODO: Theme! + } + } + } + MouseArea + { + anchors.fill: parent + onClicked: navigateTo(currentIndex + 1) + } + } + + Row + { + id: navigationDots + anchors + { + horizontalCenter: centerSection.horizontalCenter + top: centerSection.bottom + topMargin: 36 * screenScaleFactor // TODO: Theme! + } + spacing: 8 * screenScaleFactor // TODO: Theme! + Repeater + { + model: OutputDevice.printers + Button + { + background: Rectangle + { + color: model.index == currentIndex ? "#777777" : "#d8d8d8" // TODO: Theme! + radius: Math.floor(width / 2) + width: 12 * screenScaleFactor // TODO: Theme! + height: width // TODO: Theme! + } + onClicked: navigateTo(model.index) + } + } + } + + function navigateTo( i ) { + if (i >= 0 && i < OutputDevice.printers.length) + { + tiles.x = -1 * i * (tileWidth + tileSpacing) + currentIndex = i + } + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml new file mode 100644 index 0000000000..6a32310dd5 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml @@ -0,0 +1,142 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.3 +import QtQuick.Controls 1.4 +import QtQuick.Layouts 1.3 +import QtQuick.Dialogs 1.2 +import UM 1.3 as UM + +UM.Dialog +{ + id: overrideConfirmationDialog + + property var printer: null + + minimumWidth: screenScaleFactor * 640; + minimumHeight: screenScaleFactor * 320; + width: minimumWidth + height: minimumHeight + title: catalog.i18nc("@title:window", "Configuration Changes") + rightButtons: + [ + Button + { + id: overrideButton + anchors.margins: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@action:button", "Override") + onClicked: + { + OutputDevice.forceSendJob(printer.activePrintJob.key) + overrideConfirmationDialog.close() + } + }, + Button + { + id: cancelButton + anchors.margins: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@action:button", "Cancel") + onClicked: + { + overrideConfirmationDialog.reject() + } + } + ] + + Label + { + anchors + { + fill: parent + margins: 36 * screenScaleFactor // TODO: Theme! + bottomMargin: 56 * screenScaleFactor // TODO: Theme! + } + wrapMode: Text.WordWrap + text: + { + if (!printer.activePrintJob) + { + return "" + } + var topLine + if (materialsAreKnown(printer.activePrintJob)) + { + topLine = catalog.i18ncp("@label", "The assigned printer, %1, requires the following configuration change:", "The assigned printer, %1, requires the following configuration changes:", printer.activePrintJob.configurationChanges.length).arg(printer.name) + } + else + { + topLine = catalog.i18nc("@label", "The printer %1 is assigned, but the job contains an unknown material configuration.").arg(printer.name) + } + var result = "

" + topLine +"

\n\n" + for (var i = 0; i < printer.activePrintJob.configurationChanges.length; i++) + { + var change = printer.activePrintJob.configurationChanges[i] + var text + switch (change.typeOfChange) + { + case "material_change": + text = catalog.i18nc("@label", "Change material %1 from %2 to %3.").arg(change.index + 1).arg(change.originName).arg(change.targetName) + break + case "material_insert": + text = catalog.i18nc("@label", "Load %3 as material %1 (This cannot be overridden).").arg(change.index + 1).arg(change.targetName) + break + case "print_core_change": + text = catalog.i18nc("@label", "Change print core %1 from %2 to %3.").arg(change.index + 1).arg(change.originName).arg(change.targetName) + break + case "buildplate_change": + text = catalog.i18nc("@label", "Change build plate to %1 (This cannot be overridden).").arg(formatBuildPlateType(change.target_name)) + break + default: + text = "unknown" + } + result += "

" + text + "

\n\n" + } + var bottomLine = catalog.i18nc("@label", "Override will use the specified settings with the existing printer configuration. This may result in a failed print.") + result += "

" + bottomLine + "

\n\n" + return result + } + } + // Utils + function formatPrintJobName(name) + { + var extensions = [ ".gcode.gz", ".gz", ".gcode", ".ufp" ] + for (var i = 0; i < extensions.length; i++) + { + var extension = extensions[i] + if (name.slice(-extension.length) === extension) + { + name = name.substring(0, name.length - extension.length) + } + } + return name; + } + function materialsAreKnown(job) + { + var conf0 = job.configuration[0] + if (conf0 && !conf0.material.material) + { + return false + } + var conf1 = job.configuration[1] + if (conf1 && !conf1.material.material) + { + return false + } + return true + } + function formatBuildPlateType(buildPlateType) + { + var translationText = "" + switch (buildPlateType) { + case "glass": + translationText = catalog.i18nc("@label", "Glass") + break + case "aluminum": + translationText = catalog.i18nc("@label", "Aluminum") + break + default: + translationText = null + } + return translationText + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorExtruderConfiguration.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorExtruderConfiguration.qml new file mode 100644 index 0000000000..1e53191d8c --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorExtruderConfiguration.qml @@ -0,0 +1,76 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 2.0 +import UM 1.3 as UM + +/** + * This component comprises a colored extruder icon, the material name, and the + * print core name. It is used by the MonitorPrinterConfiguration component with + * a sibling instance as well as a MonitorBuildplateConfiguration instance. + * + * NOTE: For most labels, a fixed height with vertical alignment is used to make + * layouts more deterministic (like the fixed-size textboxes used in original + * mock-ups). This is also a stand-in for CSS's 'line-height' property. Denoted + * with '// FIXED-LINE-HEIGHT:'. + */ +Item +{ + // The material color + property alias color: extruderIcon.color + + // The extruder position; NOTE: Decent human beings count from 0 + property alias position: extruderIcon.position + + // The material name + property alias material: materialLabel.text + + // The print core name (referred to as hotendID in Python) + property alias printCore: printCoreLabel.text + + // Height is 2 x 18px labels, plus 4px spacing between them + height: 40 * screenScaleFactor // TODO: Theme! + width: childrenRect.width + + MonitorIconExtruder + { + id: extruderIcon + color: "#eeeeee" // TODO: Theme! + position: 0 + } + Label + { + id: materialLabel + anchors + { + left: extruderIcon.right + leftMargin: 12 * screenScaleFactor // TODO: Theme! + } + color: "#191919" // TODO: Theme! + elide: Text.ElideRight + font: UM.Theme.getFont("default") // 12pt, regular + text: "" + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } + Label + { + id: printCoreLabel + anchors + { + left: materialLabel.left + bottom: parent.bottom + } + color: "#191919" // TODO: Theme! + elide: Text.ElideRight + font: UM.Theme.getFont("default_bold") // 12pt, bold + text: "" + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorIconExtruder.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorIconExtruder.qml new file mode 100644 index 0000000000..971c6b2251 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorIconExtruder.qml @@ -0,0 +1,60 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 2.0 +import UM 1.3 as UM + +/** + * This component is a sort of "super icon" which includes a colored SVG image + * as well as the extruder position number. It is used in the the + * MonitorExtruderConfiguration component. + */ +Item +{ + // The material color + property alias color: icon.color + + // The extruder position; NOTE: Decent human beings count from 0 + property int position: 0 + + // The extruder icon size; NOTE: This shouldn't need to be changed + property int size: 32 // TODO: Theme! + + // THe extruder icon source; NOTE: This shouldn't need to be changed + property string iconSource: "../svg/icons/extruder.svg" + + height: size + width: size + + UM.RecolorImage + { + id: icon + anchors.fill: parent + source: iconSource + width: size + } + + /* + * The label uses some "fancy" math to ensure that if you change the overall + * icon size, the number scales with it. That is to say, the font properties + * are linked to the icon size, NOT the theme. And that's intentional. + */ + Label + { + id: positionLabel + font + { + pointSize: Math.round(size * 0.3125) + weight: Font.Bold + } + height: Math.round(size / 2) * screenScaleFactor + horizontalAlignment: Text.AlignHCenter + text: position + 1 + verticalAlignment: Text.AlignVCenter + width: Math.round(size / 2) * screenScaleFactor + x: Math.round(size * 0.25) * screenScaleFactor + y: Math.round(size * 0.15625) * screenScaleFactor + // TODO: Once 'size' is themed, screenScaleFactor won't be needed + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml new file mode 100644 index 0000000000..f431ef1c52 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml @@ -0,0 +1,181 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 2.0 +import UM 1.3 as UM + +/** + * A Print Job Card is essentially just a filled-in Expandable Card item. All + * data within it is derived from being passed a printJob property. + * + * NOTE: For most labels, a fixed height with vertical alignment is used to make + * layouts more deterministic (like the fixed-size textboxes used in original + * mock-ups). This is also a stand-in for CSS's 'line-height' property. Denoted + * with '// FIXED-LINE-HEIGHT:'. + */ +Item +{ + id: base + + // The print job which all other data is derived from + property var printJob: null + + width: parent.width + height: childrenRect.height + + ExpandableCard + { + borderColor: printJob.configurationChanges.length !== 0 ? "#f5a623" : "#CCCCCC" // TODO: Theme! + headerItem: Row + { + height: 48 * screenScaleFactor // TODO: Theme! + anchors.left: parent.left + anchors.leftMargin: 24 * screenScaleFactor // TODO: Theme! + spacing: 18 * screenScaleFactor // TODO: Theme! + + MonitorPrintJobPreview + { + printJob: base.printJob + size: 32 * screenScaleFactor // TODO: Theme! + anchors.verticalCenter: parent.verticalCenter + } + + Label + { + text: printJob && printJob.name ? printJob.name : "" + color: "#374355" + elide: Text.ElideRight + font: UM.Theme.getFont("medium") // 14pt, regular + anchors.verticalCenter: parent.verticalCenter + width: 216 * screenScaleFactor // TODO: Theme! (Should match column size) + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } + + Label + { + text: printJob ? OutputDevice.formatDuration(printJob.timeTotal) : "" + color: "#374355" + elide: Text.ElideRight + font: UM.Theme.getFont("medium") // 14pt, regular + anchors.verticalCenter: parent.verticalCenter + width: 216 * screenScaleFactor // TODO: Theme! (Should match column size) + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } + + Item + { + anchors.verticalCenter: parent.verticalCenter + height: 18 * screenScaleFactor // TODO: This should be childrenRect.height but QML throws warnings + width: childrenRect.width + + Label + { + id: printerAssignmentLabel + anchors.verticalCenter: parent.verticalCenter + color: "#374355" + elide: Text.ElideRight + font: UM.Theme.getFont("medium") // 14pt, regular + text: { + if (printJob !== null) { + if (printJob.assignedPrinter == null) + { + if (printJob.state == "error") + { + return catalog.i18nc("@label", "Unavailable printer") + } + return catalog.i18nc("@label", "First available") + } + return printJob.assignedPrinter.name + } + return "" + } + visible: printJob + width: 120 * screenScaleFactor // TODO: Theme! + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } + + Row + { + id: printerFamilyPills + anchors + { + left: printerAssignmentLabel.right; + leftMargin: 12 // TODO: Theme! + verticalCenter: parent.verticalCenter + } + height: childrenRect.height + spacing: 6 // TODO: Theme! + + Repeater + { + id: compatiblePills + delegate: MonitorPrinterPill + { + text: modelData + } + model: printJob ? printJob.compatibleMachineFamilies : [] + } + } + } + } + drawerItem: Row + { + anchors + { + left: parent.left + leftMargin: 74 * screenScaleFactor // TODO: Theme! + } + height: 108 * screenScaleFactor // TODO: Theme! + spacing: 18 * screenScaleFactor // TODO: Theme! + + MonitorPrinterConfiguration + { + id: printerConfiguration + anchors.verticalCenter: parent.verticalCenter + buildplate: "Glass" + configurations: + [ + base.printJob.configuration.extruderConfigurations[0], + base.printJob.configuration.extruderConfigurations[1] + ] + height: 72 * screenScaleFactor // TODO: Theme! + } + Label { + text: printJob && printJob.owner ? printJob.owner : "" + color: "#374355" // TODO: Theme! + elide: Text.ElideRight + font: UM.Theme.getFont("medium") // 14pt, regular + anchors.top: printerConfiguration.top + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } + } + } + + PrintJobContextMenu + { + id: contextButton + anchors + { + right: parent.right; + rightMargin: 8 * screenScaleFactor // TODO: Theme! + top: parent.top + topMargin: 8 * screenScaleFactor // TODO: Theme! + } + printJob: base.printJob + width: 32 * screenScaleFactor // TODO: Theme! + height: 32 * screenScaleFactor // TODO: Theme! + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobPreview.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobPreview.qml new file mode 100644 index 0000000000..2f17db0c65 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobPreview.qml @@ -0,0 +1,96 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 2.0 +import UM 1.3 as UM + +// TODO: Documentation! +Item +{ + id: printJobPreview + + property var printJob: null + property var size: 256 + + width: size + height: size + + // Actual content + Image + { + id: previewImage + anchors.fill: parent + opacity: + { + if (printJob && (printJob.state == "error" || printJob.configurationChanges.length > 0 || !printJob.isActive)) + { + return 0.5 + } + return 1.0 + } + source: printJob ? printJob.previewImageUrl : "" + visible: printJob + } + + UM.RecolorImage + { + id: ultiBotImage + + anchors.centerIn: printJobPreview + color: UM.Theme.getColor("monitor_placeholder_image") + height: printJobPreview.height + source: "../svg/ultibot.svg" + sourceSize + { + height: height + width: width + } + /* Since print jobs ALWAYS have an image url, we have to check if that image URL errors or + not in order to determine if we show the placeholder (ultibot) image instead. */ + visible: printJob && previewImage.status == Image.Error + width: printJobPreview.width + } + + UM.RecolorImage + { + id: overlayIcon + anchors.centerIn: printJobPreview + color: UM.Theme.getColor("monitor_image_overlay") + height: 0.5 * printJobPreview.height + source: + { + if (!printJob) + { + return "" + } + if (printJob.configurationChanges.length > 0) + { + return "../svg/warning-icon.svg" + } + switch(printJob.state) + { + case "error": + return "../svg/aborted-icon.svg" + case "wait_cleanup": + return printJob.timeTotal > printJob.timeElapsed ? "../svg/aborted-icon.svg" : "" + case "pausing": + return "../svg/paused-icon.svg" + case "paused": + return "../svg/paused-icon.svg" + case "resuming": + return "../svg/paused-icon.svg" + default: + return "" + } + return "" + } + sourceSize + { + height: height + width: width + } + visible: source != "" + width: 0.5 * printJobPreview.width + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml new file mode 100644 index 0000000000..cfb7aba84d --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml @@ -0,0 +1,119 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.3 +import QtQuick.Controls.Styles 1.3 +import QtQuick.Controls 1.4 +import UM 1.3 as UM + +/** + * NOTE: For most labels, a fixed height with vertical alignment is used to make + * layouts more deterministic (like the fixed-size textboxes used in original + * mock-ups). This is also a stand-in for CSS's 'line-height' property. Denoted + * with '// FIXED-LINE-HEIGHT:'. + */ +Item +{ + id: base + + // The print job which all other information is dervied from + property var printJob: null + + width: childrenRect.width + height: 18 * screenScaleFactor // TODO: Theme! + + ProgressBar + { + id: progressBar + anchors + { + verticalCenter: parent.verticalCenter + } + value: printJob ? printJob.progress : 0 + style: ProgressBarStyle + { + background: Rectangle + { + color: printJob && printJob.isActive ? "#e4e4f2" : "#f3f3f9" // TODO: Theme! + implicitHeight: visible ? 8 * screenScaleFactor : 0 // TODO: Theme! + implicitWidth: 180 * screenScaleFactor // TODO: Theme! + radius: 4 * screenScaleFactor // TODO: Theme! + } + progress: Rectangle + { + id: progressItem; + color: printJob && printJob.isActive ? "#0a0850" : "#9392b2" // TODO: Theme! + radius: 4 * screenScaleFactor // TODO: Theme! + } + } + } + Label + { + id: percentLabel + anchors + { + left: progressBar.right + leftMargin: 18 * screenScaleFactor // TODO: Theme! + } + text: printJob ? Math.round(printJob.progress * 100) + "%" : "0%" + color: printJob && printJob.isActive ? "#374355" : "#babac1" // TODO: Theme! + width: contentWidth + font: UM.Theme.getFont("medium") // 14pt, regular + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } + Label + { + id: statusLabel + anchors + { + left: percentLabel.right + leftMargin: 18 * screenScaleFactor // TODO: Theme! + } + color: "#374355" // TODO: Theme! + font: UM.Theme.getFont("medium") // 14pt, regular + text: + { + if (!printJob) + { + return "" + } + switch (printJob.state) + { + case "wait_cleanup": + if (printJob.timeTotal > printJob.timeElapsed) + { + return catalog.i18nc("@label:status", "Aborted") + } + return catalog.i18nc("@label:status", "Finished") + case "finished": + return catalog.i18nc("@label:status", "Finished") + case "sent_to_printer": + return catalog.i18nc("@label:status", "Preparing...") + case "pre_print": + return catalog.i18nc("@label:status", "Preparing...") + case "aborting": // NOTE: Doesn't exist but maybe should someday + return catalog.i18nc("@label:status", "Aborting...") + case "aborted": // NOTE: Unused, see above + return catalog.i18nc("@label:status", "Aborted") + case "pausing": + return catalog.i18nc("@label:status", "Pausing...") + case "paused": + return catalog.i18nc("@label:status", "Paused") + case "resuming": + return catalog.i18nc("@label:status", "Resuming...") + case "queued": + return catalog.i18nc("@label:status", "Action required") + default: + return catalog.i18nc("@label:status", "Finishes %1 at %2".arg(OutputDevice.getDateCompleted( printJob.timeRemaining )).arg(OutputDevice.getTimeCompleted( printJob.timeRemaining ))) + } + } + width: contentWidth + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml new file mode 100644 index 0000000000..b8c4353811 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml @@ -0,0 +1,339 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.3 +import QtQuick.Controls 2.0 +import QtQuick.Dialogs 1.1 +import UM 1.3 as UM + +/** + * A Printer Card is has two main components: the printer portion and the print + * job portion, the latter being paired in the UI when a print job is paired + * a printer in-cluster. + * + * NOTE: For most labels, a fixed height with vertical alignment is used to make + * layouts more deterministic (like the fixed-size textboxes used in original + * mock-ups). This is also a stand-in for CSS's 'line-height' property. Denoted + * with '// FIXED-LINE-HEIGHT:'. + */ +Item +{ + id: base + + // The printer which all printer data is derived from + property var printer: null + + property var borderSize: 1 * screenScaleFactor // TODO: Theme, and remove from here + + // If the printer card's controls are enabled. This is used by the carousel + // to prevent opening the context menu or camera while the printer card is not + // "in focus" + property var enabled: true + + width: 834 * screenScaleFactor // TODO: Theme! + height: childrenRect.height + + // Printer portion + Rectangle + { + id: printerInfo + border + { + color: "#CCCCCC" // TODO: Theme! + width: borderSize // TODO: Remove once themed + } + color: "white" // TODO: Theme! + width: parent.width + height: 144 * screenScaleFactor // TODO: Theme! + + Row + { + anchors + { + left: parent.left + leftMargin: 36 * screenScaleFactor // TODO: Theme! + verticalCenter: parent.verticalCenter + } + spacing: 18 * screenScaleFactor // TODO: Theme! + + Image + { + id: printerImage + width: 108 * screenScaleFactor // TODO: Theme! + height: 108 * screenScaleFactor // TODO: Theme! + fillMode: Image.PreserveAspectFit + source: "../png/" + printer.type + ".png" + mipmap: true + } + + Item + { + anchors + { + verticalCenter: parent.verticalCenter + } + width: 180 * screenScaleFactor // TODO: Theme! + height: printerNameLabel.height + printerFamilyPill.height + 6 * screenScaleFactor // TODO: Theme! + + Label + { + id: printerNameLabel + text: printer && printer.name ? printer.name : "" + color: "#414054" // TODO: Theme! + elide: Text.ElideRight + font: UM.Theme.getFont("large_bold") // 16pt, bold + width: parent.width + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } + + MonitorPrinterPill + { + id: printerFamilyPill + anchors + { + top: printerNameLabel.bottom + topMargin: 6 * screenScaleFactor // TODO: Theme! + left: printerNameLabel.left + } + text: printer.type + } + } + + MonitorPrinterConfiguration + { + id: printerConfiguration + anchors.verticalCenter: parent.verticalCenter + buildplate: "Glass" + configurations: + [ + base.printer.printerConfiguration.extruderConfigurations[0], + base.printer.printerConfiguration.extruderConfigurations[1] + ] + height: 72 * screenScaleFactor // TODO: Theme! + } + } + + PrintJobContextMenu + { + id: contextButton + anchors + { + right: parent.right + rightMargin: 12 * screenScaleFactor // TODO: Theme! + top: parent.top + topMargin: 12 * screenScaleFactor // TODO: Theme! + } + printJob: printer.activePrintJob + width: 36 * screenScaleFactor // TODO: Theme! + height: 36 * screenScaleFactor // TODO: Theme! + enabled: base.enabled + } + CameraButton + { + id: cameraButton; + anchors + { + right: parent.right + rightMargin: 20 * screenScaleFactor // TODO: Theme! + bottom: parent.bottom + bottomMargin: 20 * screenScaleFactor // TODO: Theme! + } + iconSource: "../svg/icons/camera.svg" + enabled: base.enabled + } + } + + + // Print job portion + Rectangle + { + id: printJobInfo + anchors + { + top: printerInfo.bottom + topMargin: -borderSize * screenScaleFactor // TODO: Theme! + } + border + { + color: printer.activePrintJob && printer.activePrintJob.configurationChanges.length > 0 ? "#f5a623" : "#CCCCCC" // TODO: Theme! + width: borderSize // TODO: Remove once themed + } + color: "white" // TODO: Theme! + height: 84 * screenScaleFactor + borderSize // TODO: Remove once themed + width: parent.width + + Row + { + anchors + { + fill: parent + topMargin: 12 * screenScaleFactor + borderSize // TODO: Theme! + bottomMargin: 12 * screenScaleFactor // TODO: Theme! + leftMargin: 36 * screenScaleFactor // TODO: Theme! + } + height: childrenRect.height + spacing: 18 * screenScaleFactor // TODO: Theme! + + Label + { + id: printerStatus + anchors + { + verticalCenter: parent.verticalCenter + } + color: "#414054" // TODO: Theme! + font: UM.Theme.getFont("large_bold") // 16pt, bold + text: { + if (printer && printer.state == "disabled") + { + return catalog.i18nc("@label:status", "Unavailable") + } + if (printer && printer.state == "unreachable") + { + return catalog.i18nc("@label:status", "Unavailable") + } + if (printer && !printer.activePrintJob && printer.state == "idle") + { + return catalog.i18nc("@label:status", "Idle") + } + return "" + } + visible: text !== "" + } + + Item + { + anchors + { + verticalCenter: parent.verticalCenter + } + width: printerImage.width + height: 60 * screenScaleFactor // TODO: Theme! + MonitorPrintJobPreview + { + anchors.centerIn: parent + printJob: base.printer.activePrintJob + size: parent.height + } + visible: printer.activePrintJob + } + + Item + { + anchors + { + verticalCenter: parent.verticalCenter + } + width: 180 * screenScaleFactor // TODO: Theme! + height: printerNameLabel.height + printerFamilyPill.height + 6 * screenScaleFactor // TODO: Theme! + visible: printer.activePrintJob + + Label + { + id: printerJobNameLabel + color: printer.activePrintJob && printer.activePrintJob.isActive ? "#414054" : "#babac1" // TODO: Theme! + elide: Text.ElideRight + font: UM.Theme.getFont("large_bold") // 16pt, bold + text: base.printer.activePrintJob ? base.printer.activePrintJob.name : "Untitled" // TODO: I18N + width: parent.width + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } + + Label + { + id: printerJobOwnerLabel + anchors + { + top: printerJobNameLabel.bottom + topMargin: 6 * screenScaleFactor // TODO: Theme! + left: printerJobNameLabel.left + } + color: printer.activePrintJob && printer.activePrintJob.isActive ? "#53657d" : "#babac1" // TODO: Theme! + elide: Text.ElideRight + font: UM.Theme.getFont("default") // 12pt, regular + text: printer.activePrintJob ? printer.activePrintJob.owner : "Anonymous" // TODO: I18N + width: parent.width + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } + } + + MonitorPrintJobProgressBar + { + anchors + { + verticalCenter: parent.verticalCenter + } + printJob: printer.activePrintJob + visible: printer.activePrintJob && printer.activePrintJob.configurationChanges.length === 0 + } + + Label + { + anchors + { + verticalCenter: parent.verticalCenter + } + font: UM.Theme.getFont("default") + text: "Requires configuration changes" + visible: printer.activePrintJob && printer.activePrintJob.configurationChanges.length > 0 + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } + } + + Button + { + id: detailsButton + anchors + { + verticalCenter: parent.verticalCenter + right: parent.right + rightMargin: 18 * screenScaleFactor // TODO: Theme! + } + background: Rectangle + { + color: "#d8d8d8" // TODO: Theme! + radius: 2 * screenScaleFactor // Todo: Theme! + Rectangle + { + anchors.fill: parent + anchors.bottomMargin: 2 * screenScaleFactor // TODO: Theme! + color: detailsButton.hovered ? "#e4e4e4" : "#f0f0f0" // TODO: Theme! + radius: 2 * screenScaleFactor // Todo: Theme! + } + } + contentItem: Label + { + anchors.fill: parent + anchors.bottomMargin: 2 * screenScaleFactor // TODO: Theme! + color: "#1e66d7" // TODO: Theme! + font: UM.Theme.getFont("medium") // 14pt, regular + text: "Details" // TODO: I18NC! + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + height: 18 * screenScaleFactor // TODO: Theme! + } + implicitHeight: 32 * screenScaleFactor // TODO: Theme! + implicitWidth: 96 * screenScaleFactor // TODO: Theme! + visible: printer.activePrintJob && printer.activePrintJob.configurationChanges.length > 0 + onClicked: base.enabled ? overrideConfirmationDialog.open() : {} + } + } + + MonitorConfigOverrideDialog + { + id: overrideConfirmationDialog + printer: base.printer + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterConfiguration.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterConfiguration.qml new file mode 100644 index 0000000000..6aa11528de --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterConfiguration.qml @@ -0,0 +1,58 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 2.0 +import UM 1.3 as UM + +/** + * The MonitorPrinterConfiguration accepts 2 configuration objects as input and + * applies them to a MonitorBuildplateConfiguration instance and two instances + * of MonitorExtruderConfiguration. It's used in both the MonitorPrintJobCard + * component as well as the MonitorPrinterCard component. + */ +Item +{ + id: base + + // Extracted buildplate configuration + property alias buildplate: buildplateConfig.buildplate + + // Array of extracted extruder configurations + property var configurations: null + + // Default size, but should be stretched to fill parent + height: 72 * parent.height + width: 450 * screenScaleFactor // TODO: Theme! + + Row + { + id: extruderConfigurationRow + spacing: 18 * screenScaleFactor // TODO: Theme! + + Repeater + { + id: extruderConfigurationRepeater + model: configurations + + MonitorExtruderConfiguration + { + color: modelData.activeMaterial ? modelData.activeMaterial.color : "#eeeeee" // TODO: Theme! + material: modelData.activeMaterial ? modelData.activeMaterial.name : "" + position: modelData.position + printCore: modelData.hotendID + + // Keep things responsive! + width: Math.floor((base.width - (configurations.length - 1) * extruderConfigurationRow.spacing) / configurations.length) + } + + } + } + + MonitorBuildplateConfiguration + { + id: buildplateConfig + anchors.bottom: parent.bottom + buildplate: "Glass" // 'Glass' as a default + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterPill.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterPill.qml new file mode 100644 index 0000000000..80a089cc2a --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterPill.qml @@ -0,0 +1,46 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import UM 1.2 as UM + +/** + * A MonitorPrinterPill is a blue-colored tag indicating which printers a print + * job is compatible with. It is used by the MonitorPrintJobCard component. + */ +Item +{ + // The printer name + property var text: "" + property var tagText: { + switch(text) { + case "Ultimaker 3": + return "UM 3" + case "Ultimaker 3 Extended": + return "UM 3 EXT" + case "Ultimaker S5": + return "UM S5" + default: + return text + } + } + + implicitHeight: 18 * screenScaleFactor // TODO: Theme! + implicitWidth: printerNameLabel.contentWidth + 12 // TODO: Theme! + + Rectangle { + id: background + anchors.fill: parent + color: "#e4e4f2" // TODO: Theme! + radius: 2 * screenScaleFactor // TODO: Theme! + } + + Label { + id: printerNameLabel + anchors.centerIn: parent + color: "#535369" // TODO: Theme! + text: tagText + font.pointSize: 10 + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml new file mode 100644 index 0000000000..f2a0e785b8 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml @@ -0,0 +1,167 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import UM 1.3 as UM +import Cura 1.0 as Cura + +/** + * This component contains the print job queue, extracted from the primary + * MonitorStage.qml file not for reusability but simply to keep it lean and more + * readable. + */ +Item +{ + Label + { + id: queuedLabel + anchors + { + left: queuedPrintJobs.left + top: parent.top + } + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("large") + text: catalog.i18nc("@label", "Queued") + } + + Item + { + id: manageQueueLabel + anchors + { + right: queuedPrintJobs.right + verticalCenter: queuedLabel.verticalCenter + } + height: 18 * screenScaleFactor // TODO: Theme! + width: childrenRect.width + + UM.RecolorImage + { + id: externalLinkIcon + anchors.verticalCenter: manageQueueLabel.verticalCenter + color: UM.Theme.getColor("primary") + source: "../svg/icons/external_link.svg" + width: 16 * screenScaleFactor // TODO: Theme! (Y U NO USE 18 LIKE ALL OTHER ICONS?!) + height: 16 * screenScaleFactor // TODO: Theme! (Y U NO USE 18 LIKE ALL OTHER ICONS?!) + } + Label + { + id: manageQueueText + anchors + { + left: externalLinkIcon.right + leftMargin: 6 * screenScaleFactor // TODO: Theme! + verticalCenter: externalLinkIcon.verticalCenter + } + color: UM.Theme.getColor("primary") + font: UM.Theme.getFont("default") // 12pt, regular + linkColor: UM.Theme.getColor("primary") + text: catalog.i18nc("@label link to connect manager", "Manage queue in Cura Connect") + } + } + + MouseArea + { + anchors.fill: manageQueueLabel + hoverEnabled: true + onClicked: Cura.MachineManager.printerOutputDevices[0].openPrintJobControlPanel() + onEntered: + { + manageQueueText.font.underline = true + } + onExited: + { + manageQueueText.font.underline = false + } + } + + Row + { + id: printJobQueueHeadings + anchors + { + left: queuedPrintJobs.left + leftMargin: 6 * screenScaleFactor // TODO: Theme! + top: queuedLabel.bottom + topMargin: 24 * screenScaleFactor // TODO: Theme! + } + spacing: 18 * screenScaleFactor // TODO: Theme! + + Label + { + text: catalog.i18nc("@label", "Print jobs") + color: "#666666" + elide: Text.ElideRight + font: UM.Theme.getFont("medium") // 14pt, regular + anchors.verticalCenter: parent.verticalCenter + width: 284 * screenScaleFactor // TODO: Theme! (Should match column size) + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } + + Label + { + text: catalog.i18nc("@label", "Total print time") + color: "#666666" + elide: Text.ElideRight + font: UM.Theme.getFont("medium") // 14pt, regular + anchors.verticalCenter: parent.verticalCenter + width: 216 * screenScaleFactor // TODO: Theme! (Should match column size) + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } + + Label + { + text: catalog.i18nc("@label", "Waiting for") + color: "#666666" + elide: Text.ElideRight + font: UM.Theme.getFont("medium") // 14pt, regular + anchors.verticalCenter: parent.verticalCenter + width: 216 * screenScaleFactor // TODO: Theme! (Should match column size) + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + } + } + + ScrollView + { + id: queuedPrintJobs + anchors + { + bottom: parent.bottom + horizontalCenter: parent.horizontalCenter + top: printJobQueueHeadings.bottom + topMargin: 12 * screenScaleFactor // TODO: Theme! + } + style: UM.Theme.styles.scrollview + visible: OutputDevice.receivedPrintJobs + width: parent.width + + ListView + { + id: printJobList + anchors.fill: parent + delegate: MonitorPrintJobCard + { + anchors + { + left: parent.left + right: parent.right + } + printJob: modelData + } + model: OutputDevice.queuedPrintJobs + spacing: 6 // TODO: Theme! + } + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorStage.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorStage.qml new file mode 100644 index 0000000000..8b1a11cb4d --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorStage.qml @@ -0,0 +1,92 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import UM 1.3 as UM +import Cura 1.0 as Cura +import QtGraphicalEffects 1.0 + +// This is the root component for the monitor stage. +Component +{ + Item + { + id: monitorFrame + + height: maximumHeight + onVisibleChanged: + { + if (monitorFrame != null && !monitorFrame.visible) + { + OutputDevice.setActiveCameraUrl("") + } + } + width: maximumWidth + + // Enable keyboard navigation. NOTE: This is done here so that we can also potentially + // forward to the queue items in the future. (Deleting selected print job, etc.) + Keys.forwardTo: carousel + Component.onCompleted: forceActiveFocus() + + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + LinearGradient + { + anchors.fill: parent + gradient: Gradient + { + GradientStop + { + position: 0.0 + color: "#f6f6f6" // TODO: Theme! + } + GradientStop + { + position: 1.0 + color: "#ffffff" // TODO: Theme! + } + } + } + + Item + { + id: printers + anchors + { + top: parent.top + topMargin: 48 * screenScaleFactor // TODO: Theme! + } + width: parent.width + height: 264 * screenScaleFactor // TODO: Theme! + MonitorCarousel { + id: carousel + } + } + + MonitorQueue + { + id: queue + width: Math.min(834 * screenScaleFactor, maximumWidth) + anchors + { + bottom: parent.bottom + horizontalCenter: parent.horizontalCenter + top: printers.bottom + topMargin: 48 * screenScaleFactor // TODO: Theme! + } + } + + PrinterVideoStream + { + anchors.fill: parent + cameraUrl: OutputDevice.activeCameraUrl + visible: OutputDevice.activeCameraUrl != "" + } + } +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrintCoreConfiguration.qml b/plugins/UM3NetworkPrinting/resources/qml/PrintCoreConfiguration.qml deleted file mode 100644 index 7bcd9ce6e4..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/PrintCoreConfiguration.qml +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 -import UM 1.2 as UM - -Item { - id: extruderInfo; - property var printCoreConfiguration: null; - height: childrenRect.height; - width: Math.round(parent.width / 2); - - // Extruder circle - Item { - id: extruderCircle; - height: UM.Theme.getSize("monitor_extruder_circle").height; - width: UM.Theme.getSize("monitor_extruder_circle").width; - - // Loading skeleton - Rectangle { - anchors.fill: parent; - color: UM.Theme.getColor("monitor_skeleton_fill"); - radius: Math.round(width / 2); - visible: !printCoreConfiguration; - } - - // Actual content - Rectangle { - anchors.fill: parent; - border.width: UM.Theme.getSize("monitor_thick_lining").width; - border.color: UM.Theme.getColor("monitor_lining_heavy"); - color: "transparent"; - opacity: { - if (printCoreConfiguration == null || printCoreConfiguration.activeMaterial == null || printCoreConfiguration.hotendID == null) { - return 0.5; - } - return 1; - } - radius: Math.round(width / 2); - visible: printCoreConfiguration; - - Label { - anchors.centerIn: parent; - color: UM.Theme.getColor("text"); - font: UM.Theme.getFont("default_bold"); - text: printCoreConfiguration ? printCoreConfiguration.position + 1 : 0; - } - } - } - - // Print core and material labels - Item { - id: materialLabel - anchors { - left: extruderCircle.right; - leftMargin: UM.Theme.getSize("default_margin").width; - right: parent.right; - top: parent.top; - } - height: UM.Theme.getSize("monitor_text_line").height; - - // Loading skeleton - Rectangle { - anchors.fill: parent; - color: UM.Theme.getColor("monitor_skeleton_fill"); - visible: !extruderInfo.printCoreConfiguration; - } - - // Actual content - Label { - anchors.fill: parent; - elide: Text.ElideRight; - color: UM.Theme.getColor("text"); - font: UM.Theme.getFont("default"); - text: { - if (printCoreConfiguration && printCoreConfiguration.activeMaterial != undefined) { - return printCoreConfiguration.activeMaterial.name; - } - return ""; - } - visible: extruderInfo.printCoreConfiguration; - } - } - - Item { - id: printCoreLabel; - anchors { - left: extruderCircle.right; - leftMargin: UM.Theme.getSize("default_margin").width; - right: parent.right; - top: materialLabel.bottom; - topMargin: Math.floor(UM.Theme.getSize("default_margin").height/4); - } - height: UM.Theme.getSize("monitor_text_line").height; - - // Loading skeleton - Rectangle { - color: UM.Theme.getColor("monitor_skeleton_fill"); - height: parent.height; - visible: !extruderInfo.printCoreConfiguration; - width: Math.round(parent.width / 3); - } - - // Actual content - Label { - color: UM.Theme.getColor("text"); - elide: Text.ElideRight; - font: UM.Theme.getFont("default"); - opacity: 0.6; - text: { - if (printCoreConfiguration != undefined && printCoreConfiguration.hotendID != undefined) { - return printCoreConfiguration.hotendID; - } - return ""; - } - visible: extruderInfo.printCoreConfiguration; - } - } -} diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml b/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml index 473fd87a34..5c5c892dad 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml @@ -11,8 +11,9 @@ import UM 1.3 as UM Item { id: root; property var printJob: null; - property var running: isRunning(printJob); + property var started: isStarted(printJob); property var assigned: isAssigned(printJob); + property var enabled: true Button { id: button; @@ -25,17 +26,23 @@ Item { } contentItem: Label { color: UM.Theme.getColor("monitor_context_menu_dots"); - font.pixelSize: 25 * screenScaleFactor; + font.pixelSize: 32 * screenScaleFactor; horizontalAlignment: Text.AlignHCenter; text: button.text; verticalAlignment: Text.AlignVCenter; } height: width; - hoverEnabled: true; - onClicked: parent.switchPopupState(); + hoverEnabled: base.enabled + onClicked: base.enabled ? parent.switchPopupState() : {} text: "\u22EE"; //Unicode; Three stacked points. - visible: printJob.state == "queued" || running ? true : false; - width: 35 * screenScaleFactor; // TODO: Theme! + visible: { + if (!printJob) { + return false; + } + var states = ["queued", "sent_to_printer", "pre_print", "printing", "pausing", "paused", "resuming"]; + return states.indexOf(printJob.state) !== -1; + } + width: 36 * screenScaleFactor; // TODO: Theme! } Popup { @@ -102,7 +109,12 @@ Item { width: parent.width; PrintJobContextMenuItem { - enabled: { + onClicked: { + sendToTopConfirmationDialog.visible = true; + popup.close(); + } + text: catalog.i18nc("@label", "Move to top"); + visible: { if (printJob && printJob.state == "queued" && !assigned) { if (OutputDevice && OutputDevice.queuedPrintJobs[0]) { return OutputDevice.queuedPrintJobs[0].key != printJob.key; @@ -110,42 +122,75 @@ Item { } return false; } - onClicked: { - sendToTopConfirmationDialog.visible = true; - popup.close(); - } - text: catalog.i18nc("@label", "Move to top"); } PrintJobContextMenuItem { - enabled: printJob && !running; onClicked: { deleteConfirmationDialog.visible = true; popup.close(); } text: catalog.i18nc("@label", "Delete"); + visible: { + if (!printJob) { + return false; + } + var states = ["queued", "sent_to_printer"]; + return states.indexOf(printJob.state) !== -1; + } } PrintJobContextMenuItem { - enabled: printJob && running; + enabled: visible && !(printJob.state == "pausing" || printJob.state == "resuming"); onClicked: { if (printJob.state == "paused") { printJob.setState("print"); - } else if(printJob.state == "printing") { - printJob.setState("pause"); + popup.close(); + return; + } + if (printJob.state == "printing") { + printJob.setState("pause"); + popup.close(); + return; } - popup.close(); } - text: printJob && printJob.state == "paused" ? catalog.i18nc("@label", "Resume") : catalog.i18nc("@label", "Pause"); + text: { + if (!printJob) { + return ""; + } + switch(printJob.state) { + case "paused": + return catalog.i18nc("@label", "Resume"); + case "pausing": + return catalog.i18nc("@label", "Pausing..."); + case "resuming": + return catalog.i18nc("@label", "Resuming..."); + default: + catalog.i18nc("@label", "Pause"); + } + } + visible: { + if (!printJob) { + return false; + } + var states = ["printing", "pausing", "paused", "resuming"]; + return states.indexOf(printJob.state) !== -1; + } } PrintJobContextMenuItem { - enabled: printJob && running; + enabled: visible && printJob.state !== "aborting"; onClicked: { abortConfirmationDialog.visible = true; popup.close(); } - text: catalog.i18nc("@label", "Abort"); + text: printJob && printJob.state == "aborting" ? catalog.i18nc("@label", "Aborting...") : catalog.i18nc("@label", "Abort"); + visible: { + if (!printJob) { + return false; + } + var states = ["pre_print", "printing", "pausing", "paused", "resuming"]; + return states.indexOf(printJob.state) !== -1; + } } } enter: Transition { @@ -205,11 +250,11 @@ Item { function switchPopupState() { popup.visible ? popup.close() : popup.open(); } - function isRunning(job) { + function isStarted(job) { if (!job) { return false; } - return ["paused", "printing", "pre_print"].indexOf(job.state) !== -1; + return ["pre_print", "printing", "pausing", "paused", "resuming", "aborting"].indexOf(job.state) !== -1; } function isAssigned(job) { if (!job) { @@ -217,4 +262,13 @@ Item { } return job.assignedPrinter ? true : false; } + function getMenuLength() { + var visible = 0; + for (var i = 0; i < popupOptions.children.length; i++) { + if (popupOptions.children[i].visible) { + visible++; + } + } + return visible; + } } diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenuItem.qml b/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenuItem.qml index 1b0777a8c0..eea8fac3e1 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenuItem.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenuItem.qml @@ -12,13 +12,12 @@ Button { color: UM.Theme.getColor("monitor_context_menu_highlight"); } contentItem: Label { - color: UM.Theme.getColor("text"); + color: enabled ? UM.Theme.getColor("text") : UM.Theme.getColor("text_inactive"); text: parent.text horizontalAlignment: Text.AlignLeft; verticalAlignment: Text.AlignVCenter; } - height: 39 * screenScaleFactor; // TODO: Theme! + height: visible ? 39 * screenScaleFactor : 0; // TODO: Theme! hoverEnabled: true; - visible: enabled; width: parent.width; } \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml b/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml deleted file mode 100644 index 0fa65ba4c4..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml +++ /dev/null @@ -1,476 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Dialogs 1.1 -import QtQuick.Controls 2.0 -import QtQuick.Controls.Styles 1.4 -import QtGraphicalEffects 1.0 -import QtQuick.Layouts 1.1 -import QtQuick.Dialogs 1.1 -import UM 1.3 as UM - -Item { - id: root; - property var shadowRadius: UM.Theme.getSize("monitor_shadow_radius").width; - property var shadowOffset: 2 * screenScaleFactor; - property var debug: false; - property var printJob: null; - width: parent.width; // Bubbles downward - height: childrenRect.height + shadowRadius * 2; // Bubbles upward - - UM.I18nCatalog { - id: catalog; - name: "cura"; - } - - // The actual card (white block) - Rectangle { - // 5px margin, but shifted 2px vertically because of the shadow - anchors { - bottomMargin: root.shadowRadius + root.shadowOffset; - leftMargin: root.shadowRadius; - rightMargin: root.shadowRadius; - topMargin: root.shadowRadius - root.shadowOffset; - } - color: UM.Theme.getColor("monitor_card_background"); - height: childrenRect.height; - layer.enabled: true - layer.effect: DropShadow { - radius: root.shadowRadius - verticalOffset: 2 * screenScaleFactor - color: "#3F000000" // 25% shadow - } - width: parent.width - shadowRadius * 2; - - Column { - height: childrenRect.height; - width: parent.width; - - // Main content - Item { - id: mainContent; - height: 200 * screenScaleFactor; // TODO: Theme! - width: parent.width; - - // Left content - Item { - anchors { - bottom: parent.bottom; - left: parent.left; - margins: UM.Theme.getSize("wide_margin").width; - right: parent.horizontalCenter; - top: parent.top; - } - - Item { - id: printJobName; - width: parent.width; - height: UM.Theme.getSize("monitor_text_line").height; - - Rectangle { - color: UM.Theme.getColor("monitor_skeleton_fill"); - height: parent.height; - visible: !printJob; - width: Math.round(parent.width / 3); - } - Label { - anchors.fill: parent; - color: UM.Theme.getColor("text"); - elide: Text.ElideRight; - font: UM.Theme.getFont("default_bold"); - text: printJob && printJob.name ? printJob.name : ""; // Supress QML warnings - visible: printJob; - } - } - - Item { - id: printJobOwnerName; - anchors { - top: printJobName.bottom; - topMargin: Math.floor(UM.Theme.getSize("default_margin").height / 2); - } - height: UM.Theme.getSize("monitor_text_line").height; - width: parent.width; - - Rectangle { - color: UM.Theme.getColor("monitor_skeleton_fill"); - height: parent.height; - visible: !printJob; - width: Math.round(parent.width / 2); - } - Label { - anchors.fill: parent; - color: UM.Theme.getColor("text"); - elide: Text.ElideRight; - font: UM.Theme.getFont("default"); - text: printJob ? printJob.owner : ""; // Supress QML warnings - visible: printJob; - } - } - - Item { - id: printJobPreview; - property var useUltibot: false; - anchors { - bottom: parent.bottom; - horizontalCenter: parent.horizontalCenter; - top: printJobOwnerName.bottom; - topMargin: UM.Theme.getSize("default_margin").height; - } - width: height; - - // Skeleton - Rectangle { - anchors.fill: parent; - color: UM.Theme.getColor("monitor_skeleton_fill"); - radius: UM.Theme.getSize("default_margin").width; - visible: !printJob; - } - - // Actual content - Image { - id: previewImage; - anchors.fill: parent; - opacity: printJob && printJob.state == "error" ? 0.5 : 1.0; - source: printJob ? printJob.previewImageUrl : ""; - visible: printJob; - } - - UM.RecolorImage { - id: ultiBotImage; - - anchors.centerIn: printJobPreview; - color: UM.Theme.getColor("monitor_placeholder_image"); - height: printJobPreview.height; - source: "../svg/ultibot.svg"; - sourceSize { - height: height; - width: width; - } - /* Since print jobs ALWAYS have an image url, we have to check if that image URL errors or - not in order to determine if we show the placeholder (ultibot) image instead. */ - visible: printJob && previewImage.status == Image.Error; - width: printJobPreview.width; - } - - UM.RecolorImage { - id: statusImage; - anchors.centerIn: printJobPreview; - color: UM.Theme.getColor("monitor_image_overlay"); - height: 0.5 * printJobPreview.height; - source: printJob && printJob.state == "error" ? "../svg/aborted-icon.svg" : ""; - sourceSize { - height: height; - width: width; - } - visible: source != ""; - width: 0.5 * printJobPreview.width; - } - } - } - - // Divider - Rectangle { - anchors { - horizontalCenter: parent.horizontalCenter; - verticalCenter: parent.verticalCenter; - } - color: !printJob ? UM.Theme.getColor("monitor_skeleton_fill") : UM.Theme.getColor("monitor_lining_light"); - height: parent.height - 2 * UM.Theme.getSize("default_margin").height; - width: UM.Theme.getSize("default_lining").width; - } - - // Right content - Item { - anchors { - bottom: parent.bottom; - left: parent.horizontalCenter; - margins: UM.Theme.getSize("wide_margin").width; - right: parent.right; - top: parent.top; - } - - Item { - id: targetPrinterLabel; - height: UM.Theme.getSize("monitor_text_line").height; - width: parent.width; - - Rectangle { - visible: !printJob; - color: UM.Theme.getColor("monitor_skeleton_fill"); - anchors.fill: parent; - } - - Label { - color: UM.Theme.getColor("text"); - elide: Text.ElideRight; - font: UM.Theme.getFont("default_bold"); - text: { - if (printJob !== null) { - if (printJob.assignedPrinter == null) { - if (printJob.state == "error") { - return catalog.i18nc("@label", "Waiting for: Unavailable printer"); - } - return catalog.i18nc("@label", "Waiting for: First available"); - } else { - return catalog.i18nc("@label", "Waiting for: ") + printJob.assignedPrinter.name; - } - } - return ""; - } - visible: printJob; - } - } - - PrinterInfoBlock { - anchors.bottom: parent.bottom; - printer: root.printJon && root.printJob.assignedPrinter; - printJob: root.printJob; - } - } - - PrintJobContextMenu { - id: contextButton; - anchors { - right: mainContent.right; - rightMargin: UM.Theme.getSize("default_margin").width * 3 + root.shadowRadius; - top: mainContent.top; - topMargin: UM.Theme.getSize("default_margin").height; - } - printJob: root.printJob; - visible: root.printJob; - } - } - - Item { - id: configChangesBox; - height: childrenRect.height; - visible: printJob && printJob.configurationChanges.length !== 0; - width: parent.width; - - // Config change toggle - Rectangle { - id: configChangeToggle; - color: { - if (configChangeToggleArea.containsMouse) { - return UM.Theme.getColor("viewport_background"); // TODO: Theme! - } else { - return "transparent"; - } - } - width: parent.width; - height: UM.Theme.getSize("default_margin").height * 4; // TODO: Theme! - anchors { - left: parent.left; - right: parent.right; - top: parent.top; - } - - Rectangle { - color: !printJob ? UM.Theme.getColor("monitor_skeleton_fill") : UM.Theme.getColor("monitor_lining_light"); - height: UM.Theme.getSize("default_lining").height; - width: parent.width; - } - - UM.RecolorImage { - anchors { - right: configChangeToggleLabel.left; - rightMargin: UM.Theme.getSize("default_margin").width; - verticalCenter: parent.verticalCenter; - } - color: UM.Theme.getColor("text"); - height: 23 * screenScaleFactor; // TODO: Theme! - source: "../svg/warning-icon.svg"; - sourceSize { - height: height; - width: width; - } - width: 23 * screenScaleFactor; // TODO: Theme! - } - - Label { - id: configChangeToggleLabel; - anchors { - horizontalCenter: parent.horizontalCenter; - verticalCenter: parent.verticalCenter; - } - color: UM.Theme.getColor("text"); - text: catalog.i18nc("@label", "Configuration change"); - } - - UM.RecolorImage { - anchors { - left: configChangeToggleLabel.right; - leftMargin: UM.Theme.getSize("default_margin").width; - verticalCenter: parent.verticalCenter; - } - color: UM.Theme.getColor("text"); - height: 15 * screenScaleFactor; // TODO: Theme! - source: { - if (configChangeDetails.visible) { - return UM.Theme.getIcon("arrow_top"); - } else { - return UM.Theme.getIcon("arrow_bottom"); - } - } - sourceSize { - width: width; - height: height; - } - width: 15 * screenScaleFactor; // TODO: Theme! - } - - MouseArea { - id: configChangeToggleArea; - anchors.fill: parent; - hoverEnabled: true; - onClicked: { - configChangeDetails.visible = !configChangeDetails.visible; - } - } - } - - // Config change details - Item { - id: configChangeDetails; - anchors.top: configChangeToggle.bottom; - Behavior on height { NumberAnimation { duration: 100 } } - // In case of really massive multi-line configuration changes - height: visible ? Math.max(UM.Theme.getSize("monitor_config_override_box").height, childrenRect.height) : 0; - visible: false; - width: parent.width; - - Item { - anchors { - bottomMargin: UM.Theme.getSize("wide_margin").height; - fill: parent; - leftMargin: UM.Theme.getSize("wide_margin").height * 4; - rightMargin: UM.Theme.getSize("wide_margin").height * 4; - topMargin: UM.Theme.getSize("wide_margin").height; - } - clip: true; - - Label { - anchors.fill: parent; - elide: Text.ElideRight; - color: UM.Theme.getColor("text"); - font: UM.Theme.getFont("large_nonbold"); - text: { - if (!printJob || printJob.configurationChanges.length === 0) { - return ""; - } - var topLine; - if (materialsAreKnown(printJob)) { - topLine = catalog.i18nc("@label", "The assigned printer, %1, requires the following configuration change(s):").arg(printJob.assignedPrinter.name); - } else { - topLine = catalog.i18nc("@label", "The printer %1 is assigned, but the job contains an unknown material configuration.").arg(printJob.assignedPrinter.name); - } - var result = "

" + topLine +"

"; - for (var i = 0; i < printJob.configurationChanges.length; i++) { - var change = printJob.configurationChanges[i]; - var text; - switch (change.typeOfChange) { - case "material_change": - text = catalog.i18nc("@label", "Change material %1 from %2 to %3.").arg(change.index + 1).arg(change.originName).arg(change.targetName); - break; - case "material_insert": - text = catalog.i18nc("@label", "Load %3 as material %1 (This cannot be overridden).").arg(change.index + 1).arg(change.targetName); - break; - case "print_core_change": - text = catalog.i18nc("@label", "Change print core %1 from %2 to %3.").arg(change.index + 1).arg(change.originName).arg(change.targetName); - break; - case "buildplate_change": - text = catalog.i18nc("@label", "Change build plate to %1 (This cannot be overridden).").arg(formatBuildPlateType(change.target_name)); - break; - default: - text = ""; - } - result += "

" + text + "

"; - } - return result; - } - wrapMode: Text.WordWrap; - } - - Button { - anchors { - bottom: parent.bottom; - left: parent.left; - } - onClicked: { - overrideConfirmationDialog.visible = true; - } - text: catalog.i18nc("@label", "Override"); - visible: { - if (printJob && printJob.configurationChanges) { - var length = printJob.configurationChanges.length; - for (var i = 0; i < length; i++) { - var typeOfChange = printJob.configurationChanges[i].typeOfChange; - if (typeOfChange === "material_insert" || typeOfChange === "buildplate_change") { - return false; - } - } - } - return true; - } - } - } - } - - MessageDialog { - id: overrideConfirmationDialog; - Component.onCompleted: visible = false; - icon: StandardIcon.Warning; - onYes: OutputDevice.forceSendJob(printJob.key); - standardButtons: StandardButton.Yes | StandardButton.No; - text: { - if (!printJob) { - return ""; - } - var printJobName = formatPrintJobName(printJob.name); - var confirmText = catalog.i18nc("@label", "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?").arg(printJobName); - return confirmText; - } - title: catalog.i18nc("@window:title", "Override configuration configuration and start print"); - } - } - } - } - // Utils - function formatPrintJobName(name) { - var extensions = [ ".gz", ".gcode", ".ufp" ]; - for (var i = 0; i < extensions.length; i++) { - var extension = extensions[i]; - if (name.slice(-extension.length) === extension) { - name = name.substring(0, name.length - extension.length); - } - } - return name; - } - function materialsAreKnown(job) { - var conf0 = job.configuration[0]; - if (conf0 && !conf0.material.material) { - return false; - } - var conf1 = job.configuration[1]; - if (conf1 && !conf1.material.material) { - return false; - } - return true; - } - function formatBuildPlateType(buildPlateType) { - var translationText = ""; - switch (buildPlateType) { - case "glass": - translationText = catalog.i18nc("@label", "Glass"); - break; - case "aluminum": - translationText = catalog.i18nc("@label", "Aluminum"); - break; - default: - translationText = null; - } - return translationText; - } -} diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrintJobPreview.qml b/plugins/UM3NetworkPrinting/resources/qml/PrintJobPreview.qml deleted file mode 100644 index b1a73255f4..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/PrintJobPreview.qml +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.3 -import QtQuick.Dialogs 1.1 -import QtQuick.Controls 2.0 -import QtQuick.Controls.Styles 1.3 -import QtGraphicalEffects 1.0 -import QtQuick.Controls 1.4 as LegacyControls -import UM 1.3 as UM - -// Includes print job name, owner, and preview - -Item { - property var job: null; - property var useUltibot: false; - height: 100 * screenScaleFactor; - width: height; - - // Skeleton - Rectangle { - anchors.fill: parent; - color: UM.Theme.getColor("monitor_skeleton_fill"); - radius: UM.Theme.getSize("default_margin").width; - visible: !job; - } - - // Actual content - Image { - id: previewImage; - visible: job; - source: job ? job.previewImageUrl : ""; - opacity: { - if (job == null) { - return 1.0; - } - var states = ["wait_cleanup", "wait_user_action", "error", "paused"]; - if (states.indexOf(job.state) !== -1) { - return 0.5; - } - return 1.0; - } - anchors.fill: parent; - } - - UM.RecolorImage { - id: ultibotImage; - anchors.centerIn: parent; - color: UM.Theme.getColor("monitor_placeholder_image"); // TODO: Theme! - height: parent.height; - source: "../svg/ultibot.svg"; - sourceSize { - height: height; - width: width; - } - /* Since print jobs ALWAYS have an image url, we have to check if that image URL errors or - not in order to determine if we show the placeholder (ultibot) image instead. */ - visible: job && previewImage.status == Image.Error; - width: parent.width; - } - - UM.RecolorImage { - id: statusImage; - anchors.centerIn: parent; - color: "black"; // TODO: Theme! - height: Math.round(0.5 * parent.height); - source: job && job.state == "error" ? "../svg/aborted-icon.svg" : ""; - sourceSize { - height: height; - width: width; - } - visible: source != ""; - width: Math.round(0.5 * parent.width); - } -} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrintJobTitle.qml b/plugins/UM3NetworkPrinting/resources/qml/PrintJobTitle.qml deleted file mode 100644 index f9f7b5ae87..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/PrintJobTitle.qml +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.3 -import QtQuick.Controls 2.0 -import UM 1.3 as UM - -Column { - property var job: null; - height: childrenRect.height; - spacing: Math.floor( UM.Theme.getSize("default_margin").height / 2); // TODO: Use explicit theme size - width: parent.width; - - Item { - id: jobName; - height: UM.Theme.getSize("monitor_text_line").height; - width: parent.width; - - // Skeleton loading - Rectangle { - color: UM.Theme.getColor("monitor_skeleton_fill"); - height: parent.height; - visible: !job; - width: Math.round(parent.width / 3); - } - - Label { - anchors.fill: parent; - color: UM.Theme.getColor("text"); - elide: Text.ElideRight; - font: UM.Theme.getFont("default_bold"); - text: job && job.name ? job.name : ""; - visible: job; - } - } - - Item { - id: ownerName; - height: UM.Theme.getSize("monitor_text_line").height; - width: parent.width; - - // Skeleton loading - Rectangle { - color: UM.Theme.getColor("monitor_skeleton_fill"); - height: parent.height; - visible: !job; - width: Math.round(parent.width / 2); - } - - Label { - anchors.fill: parent; - color: UM.Theme.getColor("text") - elide: Text.ElideRight; - font: UM.Theme.getFont("default"); - text: job ? job.owner : ""; - visible: job; - } - } -} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml b/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml deleted file mode 100644 index 6c6df7d7fb..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml +++ /dev/null @@ -1,270 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.3 -import QtQuick.Dialogs 1.1 -import QtQuick.Controls 2.0 -import QtQuick.Controls.Styles 1.3 -import QtGraphicalEffects 1.0 -import UM 1.3 as UM - -Item { - id: root; - property var shadowRadius: UM.Theme.getSize("monitor_shadow_radius").width; - property var shadowOffset: UM.Theme.getSize("monitor_shadow_offset").width; - property var printer: null; - property var collapsed: true; - height: childrenRect.height + shadowRadius * 2; // Bubbles upward - width: parent.width; // Bubbles downward - - // The actual card (white block) - Rectangle { - // 5px margin, but shifted 2px vertically because of the shadow - anchors { - bottomMargin: root.shadowRadius + root.shadowOffset; - leftMargin: root.shadowRadius; - rightMargin: root.shadowRadius; - topMargin: root.shadowRadius - root.shadowOffset; - } - color: { - if (!printer) { - return UM.Theme.getColor("monitor_card_background_inactive"); - } - if (printer.state == "disabled") { - return UM.Theme.getColor("monitor_card_background_inactive"); - } else { - return UM.Theme.getColor("monitor_card_background"); - } - } - height: childrenRect.height + UM.Theme.getSize("default_margin").height; - layer.effect: DropShadow { - radius: root.shadowRadius; - verticalOffset: root.shadowOffset; - color: "#3F000000"; // 25% shadow - } - layer.enabled: true - width: parent.width - 2 * shadowRadius; - - Column { - id: cardContents; - anchors { - top: parent.top; - topMargin: UM.Theme.getSize("default_margin").height; - } - height: childrenRect.height; - width: parent.width; - spacing: UM.Theme.getSize("default_margin").height; - - // Main card - Item { - id: mainCard; - height: 60 * screenScaleFactor; - width: parent.width; - - // Machine icon - Item { - id: machineIcon; - anchors { - leftMargin: UM.Theme.getSize("wide_margin").width; - top: parent.top; - left: parent.left; - margins: UM.Theme.getSize("default_margin").width; - } - height: parent.height - 2 * UM.Theme.getSize("default_margin").width; - width: height; - - // Skeleton - Rectangle { - anchors.fill: parent; - color: UM.Theme.getColor("monitor_skeleton_fill_dark"); - radius: UM.Theme.getSize("default_margin").width; - visible: !printer; - } - - // Content - UM.RecolorImage { - anchors.centerIn: parent; - color: { - if (printer && printer.activePrintJob != undefined) { - return UM.Theme.getColor("monitor_printer_icon"); - } - return UM.Theme.getColor("monitor_printer_icon_inactive"); - } - height: sourceSize.height; - source: { - if (!printer) { - return ""; - } - switch(printer.type) { - case "Ultimaker 3": - return "../svg/UM3-icon.svg"; - case "Ultimaker 3 Extended": - return "../svg/UM3x-icon.svg"; - case "Ultimaker S5": - return "../svg/UMs5-icon.svg"; - } - } - visible: printer; - width: sourceSize.width; - } - } - - // Printer info - Item { - id: printerInfo; - anchors { - left: machineIcon.right; - leftMargin: UM.Theme.getSize("wide_margin").width; - right: collapseIcon.left; - verticalCenter: machineIcon.verticalCenter; - } - height: childrenRect.height; - - // Machine name - Item { - id: machineNameLabel; - height: UM.Theme.getSize("monitor_text_line").height; - width: { - var percent = printer ? 0.75 : 0.3; - return Math.round(parent.width * percent); - } - - // Skeleton - Rectangle { - anchors.fill: parent; - color: UM.Theme.getColor("monitor_skeleton_fill_dark"); - visible: !printer; - } - - // Actual content - Label { - anchors.fill: parent; - color: UM.Theme.getColor("text"); - elide: Text.ElideRight; - font: UM.Theme.getFont("default_bold"); - text: printer ? printer.name : ""; - visible: printer; - width: parent.width; - } - } - - // Job name - Item { - id: activeJobLabel; - anchors { - top: machineNameLabel.bottom; - topMargin: Math.round(UM.Theme.getSize("default_margin").height / 2); - } - height: UM.Theme.getSize("monitor_text_line").height; - width: Math.round(parent.width * 0.75); - - // Skeleton - Rectangle { - anchors.fill: parent; - color: UM.Theme.getColor("monitor_skeleton_fill_dark"); - visible: !printer; - } - - // Actual content - Label { - anchors.fill: parent; - color: UM.Theme.getColor("monitor_text_inactive"); - elide: Text.ElideRight; - font: UM.Theme.getFont("default"); - text: { - if (!printer) { - return ""; - } - if (printer.state == "disabled") { - return catalog.i18nc("@label", "Not available"); - } else if (printer.state == "unreachable") { - return catalog.i18nc("@label", "Unreachable"); - } - if (printer.activePrintJob != null && printer.activePrintJob.name) { - return printer.activePrintJob.name; - } - return catalog.i18nc("@label", "Available"); - } - visible: printer; - } - } - } - - // Collapse icon - UM.RecolorImage { - id: collapseIcon; - anchors { - right: parent.right; - rightMargin: UM.Theme.getSize("default_margin").width; - verticalCenter: parent.verticalCenter; - } - color: UM.Theme.getColor("text"); - height: 15 * screenScaleFactor; // TODO: Theme! - source: root.collapsed ? UM.Theme.getIcon("arrow_left") : UM.Theme.getIcon("arrow_bottom"); - sourceSize { - height: height; - width: width; - } - visible: printer; - width: 15 * screenScaleFactor; // TODO: Theme! - } - - MouseArea { - anchors.fill: parent; - enabled: printer; - onClicked: { - if (model && root.collapsed) { - printerList.currentIndex = model.index; - } else { - printerList.currentIndex = -1; - } - } - } - - Connections { - target: printerList; - onCurrentIndexChanged: { - root.collapsed = printerList.currentIndex != model.index; - } - } - } - - HorizontalLine { - anchors { - left: parent.left; - leftMargin: UM.Theme.getSize("default_margin").width; - right: parent.right; - rightMargin: UM.Theme.getSize("default_margin").width; - } - visible: root.printer; - } - - // Detailed card - PrinterCardDetails { - collapsed: root.collapsed; - printer: root.printer; - visible: root.printer; - } - - CameraButton { - id: showCameraButton; - anchors { - left: parent.left; - leftMargin: UM.Theme.getSize("default_margin").width; - } - iconSource: "../svg/camera-icon.svg"; - visible: root.printer && root.printJob; - } - } - - // Progress bar - PrinterCardProgressBar { - anchors { - top: cardContents.bottom; - topMargin: UM.Theme.getSize("default_margin").height; - } - visible: printer && printer.activePrintJob != null; - width: parent.width; - } - } -} diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrinterCardDetails.qml b/plugins/UM3NetworkPrinting/resources/qml/PrinterCardDetails.qml deleted file mode 100644 index 097bd5c7a6..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/PrinterCardDetails.qml +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.3 -import QtQuick.Dialogs 1.1 -import QtQuick.Controls 2.0 -import QtQuick.Controls.Styles 1.3 -import QtGraphicalEffects 1.0 -import QtQuick.Controls 1.4 as LegacyControls -import UM 1.3 as UM - -Item { - id: root; - property var printer: null; - property var printJob: printer ? printer.activePrintJob : null; - property var collapsed: true; - Behavior on height { NumberAnimation { duration: 100 } } - Behavior on opacity { NumberAnimation { duration: 100 } } - height: collapsed ? 0 : childrenRect.height; - opacity: collapsed ? 0 : 1; - width: parent.width; - - Column { - id: contentColumn; - anchors { - left: parent.left; - leftMargin: UM.Theme.getSize("default_margin").width; - right: parent.right; - rightMargin: UM.Theme.getSize("default_margin").width; - } - height: childrenRect.height + UM.Theme.getSize("wide_margin").height; - spacing: UM.Theme.getSize("default_margin").height; - width: parent.width; - - PrinterInfoBlock { - printer: root.printer; - printJob: root.printer ? root.printer.activePrintJob : null; - } - - HorizontalLine { - visible: root.printJob; - } - - Row { - height: childrenRect.height; - visible: root.printJob; - width: parent.width; - - PrintJobTitle { - job: root.printer ? root.printer.activePrintJob : null; - } - PrintJobContextMenu { - id: contextButton; - anchors { - right: parent.right; - rightMargin: UM.Theme.getSize("wide_margin").width; - } - printJob: root.printer ? root.printer.activePrintJob : null; - visible: printJob; - } - } - - PrintJobPreview { - anchors.horizontalCenter: parent.horizontalCenter; - job: root.printer && root.printer.activePrintJob ? root.printer.activePrintJob : null; - visible: root.printJob; - } - } -} diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml b/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml deleted file mode 100644 index e86c959b8c..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.3 -import QtQuick.Controls.Styles 1.3 -import QtQuick.Controls 1.4 -import UM 1.3 as UM - -ProgressBar { - property var progress: { - if (!printer || printer.activePrintJob == null) { - return 0; - } - var result = printer.activePrintJob.timeElapsed / printer.activePrintJob.timeTotal; - if (result > 1.0) { - result = 1.0; - } - return result; - } - style: ProgressBarStyle { - property var remainingTime: { - if (!printer || printer.activePrintJob == null) { - return 0; - } - /* Sometimes total minus elapsed is less than 0. Use Math.max() to prevent remaining - time from ever being less than 0. Negative durations cause strange behavior such - as displaying "-1h -1m". */ - return Math.max(printer.activePrintJob.timeTotal - printer.activePrintJob.timeElapsed, 0); - } - property var progressText: { - if (printer === null ) { - return ""; - } - switch (printer.activePrintJob.state) { - case "wait_cleanup": - if (printer.activePrintJob.timeTotal > printer.activePrintJob.timeElapsed) { - return catalog.i18nc("@label:status", "Aborted"); - } - return catalog.i18nc("@label:status", "Finished"); - case "pre_print": - case "sent_to_printer": - return catalog.i18nc("@label:status", "Preparing"); - case "aborted": - return catalog.i18nc("@label:status", "Aborted"); - case "wait_user_action": - return catalog.i18nc("@label:status", "Aborted"); - case "pausing": - return catalog.i18nc("@label:status", "Pausing"); - case "paused": - return OutputDevice.formatDuration( remainingTime ); - case "resuming": - return catalog.i18nc("@label:status", "Resuming"); - case "queued": - return catalog.i18nc("@label:status", "Action required"); - default: - return OutputDevice.formatDuration( remainingTime ); - } - } - background: Rectangle { - color: UM.Theme.getColor("monitor_progress_background"); - implicitHeight: visible ? 24 : 0; - implicitWidth: 100; - } - progress: Rectangle { - id: progressItem; - color: { - if (! printer || !printer.activePrintJob) { - return "black"; - } - var state = printer.activePrintJob.state - var inactiveStates = [ - "pausing", - "paused", - "resuming", - "wait_cleanup" - ]; - if (inactiveStates.indexOf(state) > -1 && remainingTime > 0) { - return UM.Theme.getColor("monitor_progress_fill_inactive"); - } else { - return UM.Theme.getColor("monitor_progress_fill"); - } - } - - Label { - id: progressLabel; - anchors { - left: parent.left; - leftMargin: getTextOffset(); - } - text: progressText; - anchors.verticalCenter: parent.verticalCenter; - color: progressItem.width + progressLabel.width < control.width ? UM.Theme.getColor("text") : UM.Theme.getColor("monitor_progress_fill_text"); - width: contentWidth; - font: UM.Theme.getFont("default"); - } - - function getTextOffset() { - if (progressItem.width + progressLabel.width + 16 < control.width) { - return progressItem.width + UM.Theme.getSize("default_margin").width; - } else { - return progressItem.width - progressLabel.width - UM.Theme.getSize("default_margin").width; - } - } - } - } - value: progress; - width: parent.width; -} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrinterFamilyPill.qml b/plugins/UM3NetworkPrinting/resources/qml/PrinterFamilyPill.qml deleted file mode 100644 index 0a88b053a8..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/PrinterFamilyPill.qml +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.4 -import UM 1.2 as UM - -Item { - property alias text: familyNameLabel.text; - property var padding: 3 * screenScaleFactor; // TODO: Theme! - implicitHeight: familyNameLabel.contentHeight + 2 * padding; // Apply the padding to top and bottom. - implicitWidth: Math.max(48 * screenScaleFactor, familyNameLabel.contentWidth + implicitHeight); // The extra height is added to ensure the radius doesn't cut something off. - - Rectangle { - id: background; - anchors { - horizontalCenter: parent.horizontalCenter; - right: parent.right; - } - color: familyNameLabel.text.length < 1 ? UM.Theme.getColor("monitor_skeleton_fill") : UM.Theme.getColor("monitor_pill_background"); - height: parent.height; - radius: 0.5 * height; - width: parent.width; - } - - Label { - id: familyNameLabel; - anchors.centerIn: parent; - color: UM.Theme.getColor("text"); - text: ""; - } -} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrinterInfoBlock.qml b/plugins/UM3NetworkPrinting/resources/qml/PrinterInfoBlock.qml deleted file mode 100644 index 92a8f1dcb3..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/PrinterInfoBlock.qml +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.3 -import QtQuick.Dialogs 1.1 -import QtQuick.Controls 2.0 -import QtQuick.Controls.Styles 1.3 -import QtGraphicalEffects 1.0 -import QtQuick.Controls 1.4 as LegacyControls -import UM 1.3 as UM - -// Includes printer type pill and extuder configurations - -Item { - id: root; - property var printer: null; - property var printJob: null; - width: parent.width; - height: childrenRect.height; - - // Printer family pills - Row { - id: printerFamilyPills; - anchors { - left: parent.left; - right: parent.right; - } - height: childrenRect.height; - spacing: Math.round(0.5 * UM.Theme.getSize("default_margin").width); - width: parent.width; - - Repeater { - id: compatiblePills; - delegate: PrinterFamilyPill { - text: modelData; - } - model: printJob ? printJob.compatibleMachineFamilies : []; - visible: printJob; - - } - - PrinterFamilyPill { - text: printer ? printer.type : ""; - visible: !compatiblePills.visible && printer; - } - } - - // Extruder info - Row { - id: extrudersInfo; - anchors { - left: parent.left; - right: parent.right; - rightMargin: UM.Theme.getSize("default_margin").width; - top: printerFamilyPills.bottom; - topMargin: UM.Theme.getSize("default_margin").height; - } - height: childrenRect.height; - spacing: UM.Theme.getSize("default_margin").width; - width: parent.width; - - PrintCoreConfiguration { - width: Math.round(parent.width / 2) * screenScaleFactor; - printCoreConfiguration: getExtruderConfig(0); - } - - PrintCoreConfiguration { - width: Math.round(parent.width / 2) * screenScaleFactor; - printCoreConfiguration: getExtruderConfig(1); - } - } - - function getExtruderConfig( i ) { - if (root.printJob) { - // Use more-specific print job if possible - return root.printJob.configuration.extruderConfigurations[i]; - } - if (root.printer) { - return root.printer.printerConfiguration.extruderConfigurations[i]; - } - return null; - } -} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml b/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml index 105143c851..320201e165 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml @@ -13,8 +13,40 @@ Item { property string activeQualityDefinitionId: Cura.MachineManager.activeQualityDefinitionId; property bool isUM3: activeQualityDefinitionId == "ultimaker3" || activeQualityDefinitionId.match("ultimaker_") != null; property bool printerConnected: Cura.MachineManager.printerConnected; - property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands; - property bool authenticationRequested: printerConnected && (Cura.MachineManager.printerOutputDevices[0].authenticationState == 2 || Cura.MachineManager.printerOutputDevices[0].authenticationState == 5); // AuthState.AuthenticationRequested or AuthenticationReceived. + property bool printerAcceptsCommands: + { + if (printerConnected && Cura.MachineManager.printerOutputDevices[0]) + { + return Cura.MachineManager.printerOutputDevices[0].acceptsCommands + } + return false + } + property bool authenticationRequested: + { + if (printerConnected && Cura.MachineManager.printerOutputDevices[0]) + { + var device = Cura.MachineManager.printerOutputDevices[0] + // AuthState.AuthenticationRequested or AuthState.AuthenticationReceived + return device.authenticationState == 2 || device.authenticationState == 5 + } + return false + } + property var materialNames: + { + if (printerConnected && Cura.MachineManager.printerOutputDevices[0]) + { + return Cura.MachineManager.printerOutputDevices[0].materialNames + } + return null + } + property var hotendIds: + { + if (printerConnected && Cura.MachineManager.printerOutputDevices[0]) + { + return Cura.MachineManager.printerOutputDevices[0].hotendIds + } + return null + } UM.I18nCatalog { id: catalog; @@ -29,7 +61,7 @@ Item { Button { height: UM.Theme.getSize("save_button_save_to_button").height; onClicked: Cura.MachineManager.printerOutputDevices[0].requestAuthentication(); - style: UM.Theme.styles.sidebar_action_button; + style: UM.Theme.styles.print_setup_action_button; text: catalog.i18nc("@action:button", "Request Access"); tooltip: catalog.i18nc("@info:tooltip", "Send access request to the printer"); visible: printerConnected && !printerAcceptsCommands && !authenticationRequested; @@ -38,7 +70,7 @@ Item { Button { height: UM.Theme.getSize("save_button_save_to_button").height; onClicked: connectActionDialog.show(); - style: UM.Theme.styles.sidebar_action_button; + style: UM.Theme.styles.print_setup_action_button; text: catalog.i18nc("@action:button", "Connect"); tooltip: catalog.i18nc("@info:tooltip", "Connect to a printer"); visible: !printerConnected; @@ -83,9 +115,7 @@ Item { Column { Repeater { - model: Cura.ExtrudersModel { - simpleNames: true; - } + model: CuraApplication.getExtrudersModel() Label { text: model.name; @@ -96,7 +126,7 @@ Item { Column { Repeater { id: nozzleColumn; - model: printerConnected ? Cura.MachineManager.printerOutputDevices[0].hotendIds : null; + model: hotendIds Label { text: nozzleColumn.model[index]; @@ -107,7 +137,7 @@ Item { Column { Repeater { id: materialColumn; - model: printerConnected ? Cura.MachineManager.printerOutputDevices[0].materialNames : null; + model: materialNames Label { text: materialColumn.model[index]; diff --git a/plugins/UM3NetworkPrinting/resources/svg/icons/buildplate.svg b/plugins/UM3NetworkPrinting/resources/svg/icons/buildplate.svg new file mode 100644 index 0000000000..bcb278a8ca --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/svg/icons/buildplate.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/svg/icons/camera.svg b/plugins/UM3NetworkPrinting/resources/svg/icons/camera.svg new file mode 100644 index 0000000000..2eaebb812d --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/svg/icons/camera.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/svg/icons/external_link.svg b/plugins/UM3NetworkPrinting/resources/svg/icons/external_link.svg new file mode 100644 index 0000000000..a2130fb97b --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/svg/icons/external_link.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/svg/icons/extruder.svg b/plugins/UM3NetworkPrinting/resources/svg/icons/extruder.svg new file mode 100644 index 0000000000..235cb432e9 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/svg/icons/extruder.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py b/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py index 7504d55ad9..5e8aaa9fa9 100644 --- a/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py +++ b/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py @@ -22,6 +22,7 @@ from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationM from cura.PrinterOutput.NetworkedPrinterOutputDevice import NetworkedPrinterOutputDevice, AuthState from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel from cura.PrinterOutput.MaterialOutputModel import MaterialOutputModel +from cura.PrinterOutputDevice import ConnectionType from .ClusterUM3PrinterOutputController import ClusterUM3PrinterOutputController from .SendMaterialJob import SendMaterialJob @@ -54,7 +55,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): clusterPrintersChanged = pyqtSignal() def __init__(self, device_id, address, properties, parent = None) -> None: - super().__init__(device_id = device_id, address = address, properties=properties, parent = parent) + super().__init__(device_id = device_id, address = address, properties=properties, connection_type = ConnectionType.NetworkConnection, parent = parent) self._api_prefix = "/cluster-api/v1/" self._number_of_extruders = 2 @@ -64,8 +65,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): self._print_jobs = [] # type: List[UM3PrintJobOutputModel] self._received_print_jobs = False # type: bool - self._monitor_view_qml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../resources/qml/ClusterMonitorItem.qml") - self._control_view_qml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../resources/qml/ClusterControlItem.qml") + self._monitor_view_qml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../resources/qml/MonitorStage.qml") # See comments about this hack with the clusterPrintersChanged signal self.printersChanged.connect(self.clusterPrintersChanged) @@ -387,8 +387,24 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): @pyqtSlot(int, result = str) def getDateCompleted(self, time_remaining: int) -> str: current_time = time() - datetime_completed = datetime.fromtimestamp(current_time + time_remaining) - return (datetime_completed.strftime("%a %b ") + "{day}".format(day=datetime_completed.day)).upper() + completed = datetime.fromtimestamp(current_time + time_remaining) + today = datetime.fromtimestamp(current_time) + + # If finishing date is more than 7 days out, using "Mon Dec 3 at HH:MM" format + if completed.toordinal() > today.toordinal() + 7: + return completed.strftime("%a %b ") + "{day}".format(day=completed.day) + + # If finishing date is within the next week, use "Monday at HH:MM" format + elif completed.toordinal() > today.toordinal() + 1: + return completed.strftime("%a") + + # If finishing tomorrow, use "tomorrow at HH:MM" format + elif completed.toordinal() > today.toordinal(): + return "tomorrow" + + # If finishing today, use "today at HH:MM" format + else: + return "today" @pyqtSlot(str) def sendJobToTop(self, print_job_uuid: str) -> None: @@ -590,13 +606,45 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): origin_name=change["origin_name"])) return result - def _createMaterialOutputModel(self, material_data) -> MaterialOutputModel: - containers = ContainerRegistry.getInstance().findInstanceContainers(type="material", GUID=material_data["guid"]) - if containers: - color = containers[0].getMetaDataEntry("color_code") - brand = containers[0].getMetaDataEntry("brand") - material_type = containers[0].getMetaDataEntry("material") - name = containers[0].getName() + def _createMaterialOutputModel(self, material_data: Dict[str, Any]) -> "MaterialOutputModel": + material_manager = CuraApplication.getInstance().getMaterialManager() + material_group_list = None + + # Avoid crashing if there is no "guid" field in the metadata + material_guid = material_data.get("guid") + if material_guid: + material_group_list = material_manager.getMaterialGroupListByGUID(material_guid) + + # This can happen if the connected machine has no material in one or more extruders (if GUID is empty), or the + # material is unknown to Cura, so we should return an "empty" or "unknown" material model. + if material_group_list is None: + material_name = i18n_catalog.i18nc("@label:material", "Empty") if len(material_data.get("guid", "")) == 0 \ + else i18n_catalog.i18nc("@label:material", "Unknown") + + return MaterialOutputModel(guid = material_data.get("guid", ""), + type = material_data.get("material", ""), + color = material_data.get("color", ""), + brand = material_data.get("brand", ""), + name = material_data.get("name", material_name) + ) + + # Sort the material groups by "is_read_only = True" first, and then the name alphabetically. + read_only_material_group_list = list(filter(lambda x: x.is_read_only, material_group_list)) + non_read_only_material_group_list = list(filter(lambda x: not x.is_read_only, material_group_list)) + material_group = None + if read_only_material_group_list: + read_only_material_group_list = sorted(read_only_material_group_list, key = lambda x: x.name) + material_group = read_only_material_group_list[0] + elif non_read_only_material_group_list: + non_read_only_material_group_list = sorted(non_read_only_material_group_list, key = lambda x: x.name) + material_group = non_read_only_material_group_list[0] + + if material_group: + container = material_group.root_material_node.getContainer() + color = container.getMetaDataEntry("color_code") + brand = container.getMetaDataEntry("brand") + material_type = container.getMetaDataEntry("material") + name = container.getName() else: Logger.log("w", "Unable to find material with guid {guid}. Using data as provided by cluster".format( @@ -604,9 +652,10 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): color = material_data["color"] brand = material_data["brand"] material_type = material_data["material"] - name = "Empty" if material_data["material"] == "empty" else "Unknown" - return MaterialOutputModel(guid=material_data["guid"], type=material_type, - brand=brand, color=color, name=name) + name = i18n_catalog.i18nc("@label:material", "Empty") if material_data["material"] == "empty" \ + else i18n_catalog.i18nc("@label:material", "Unknown") + return MaterialOutputModel(guid = material_data["guid"], type = material_type, + brand = brand, color = color, name = name) def _updatePrinter(self, printer: PrinterOutputModel, data: Dict[str, Any]) -> None: # For some unknown reason the cluster wants UUID for everything, except for sending a job directly to a printer. diff --git a/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py b/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py index be83e04585..6ce99e4891 100644 --- a/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py +++ b/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py @@ -3,7 +3,7 @@ import os.path import time -from typing import cast, Optional +from typing import Optional, TYPE_CHECKING from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot, QObject @@ -16,6 +16,9 @@ from cura.MachineAction import MachineAction from .UM3OutputDevicePlugin import UM3OutputDevicePlugin +if TYPE_CHECKING: + from cura.PrinterOutputDevice import PrinterOutputDevice + catalog = i18nCatalog("cura") @@ -116,22 +119,30 @@ class DiscoverUM3Action(MachineAction): # Ensure that the connection states are refreshed. self._network_plugin.reCheckConnections() - @pyqtSlot(str) - def setKey(self, key: str) -> None: - Logger.log("d", "Attempting to set the network key of the active machine to %s", key) + # Associates the currently active machine with the given printer device. The network connection information will be + # stored into the metadata of the currently active machine. + @pyqtSlot(QObject) + def associateActiveMachineWithPrinterDevice(self, printer_device: Optional["PrinterOutputDevice"]) -> None: + Logger.log("d", "Attempting to set the network key of the active machine to %s", printer_device.key) global_container_stack = CuraApplication.getInstance().getGlobalContainerStack() if global_container_stack: meta_data = global_container_stack.getMetaData() if "um_network_key" in meta_data: previous_network_key= meta_data["um_network_key"] - global_container_stack.setMetaDataEntry("um_network_key", key) + global_container_stack.setMetaDataEntry("um_network_key", printer_device.key) # Delete old authentication data. - Logger.log("d", "Removing old authentication id %s for device %s", global_container_stack.getMetaDataEntry("network_authentication_id", None), key) + Logger.log("d", "Removing old authentication id %s for device %s", global_container_stack.getMetaDataEntry("network_authentication_id", None), printer_device.key) global_container_stack.removeMetaDataEntry("network_authentication_id") global_container_stack.removeMetaDataEntry("network_authentication_key") - CuraApplication.getInstance().getMachineManager().replaceContainersMetadata(key = "um_network_key", value = previous_network_key, new_value = key) + CuraApplication.getInstance().getMachineManager().replaceContainersMetadata(key = "um_network_key", value = previous_network_key, new_value = printer_device.key) + + if "connection_type" in meta_data: + previous_connection_type = meta_data["connection_type"] + global_container_stack.setMetaDataEntry("connection_type", printer_device.getConnectionType().value) + CuraApplication.getInstance().getMachineManager().replaceContainersMetadata(key = "connection_type", value = previous_connection_type, new_value = printer_device.getConnectionType().value) else: - global_container_stack.setMetaDataEntry("um_network_key", key) + global_container_stack.setMetaDataEntry("um_network_key", printer_device.key) + global_container_stack.setMetaDataEntry("connection_type", printer_device.getConnectionType().value) if self._network_plugin: # Ensure that the connection states are refreshed. diff --git a/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py b/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py index e45de2dbb0..3ce0460d6b 100644 --- a/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py +++ b/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py @@ -7,6 +7,7 @@ from cura.PrinterOutput.NetworkedPrinterOutputDevice import NetworkedPrinterOutp from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel from cura.PrinterOutput.MaterialOutputModel import MaterialOutputModel +from cura.PrinterOutputDevice import ConnectionType from cura.Settings.ContainerManager import ContainerManager from cura.Settings.ExtruderManager import ExtruderManager @@ -43,7 +44,7 @@ i18n_catalog = i18nCatalog("cura") # 5. As a final step, we verify the authentication, as this forces the QT manager to setup the authenticator. class LegacyUM3OutputDevice(NetworkedPrinterOutputDevice): def __init__(self, device_id, address: str, properties, parent = None) -> None: - super().__init__(device_id = device_id, address = address, properties = properties, parent = parent) + super().__init__(device_id = device_id, address = address, properties = properties, connection_type = ConnectionType.NetworkConnection, parent = parent) self._api_prefix = "/api/v1/" self._number_of_extruders = 2 @@ -498,8 +499,8 @@ class LegacyUM3OutputDevice(NetworkedPrinterOutputDevice): self._authentication_id = None self.post("auth/request", - json.dumps({"application": "Cura-" + CuraApplication.getInstance().getVersion(), - "user": self._getUserName()}).encode(), + json.dumps({"application": "Cura-" + CuraApplication.getInstance().getVersion(), + "user": self._getUserName()}), on_finished=self._onRequestAuthenticationFinished) self.setAuthenticationState(AuthState.AuthenticationRequested) diff --git a/plugins/UM3NetworkPrinting/src/Models.py b/plugins/UM3NetworkPrinting/src/Models.py new file mode 100644 index 0000000000..2bcac70766 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models.py @@ -0,0 +1,43 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + + +## Base model that maps kwargs to instance attributes. +class BaseModel: + def __init__(self, **kwargs) -> None: + self.__dict__.update(kwargs) + self.validate() + + def validate(self) -> None: + pass + + +## Class representing a material that was fetched from the cluster API. +class ClusterMaterial(BaseModel): + def __init__(self, guid: str, version: int, **kwargs) -> None: + self.guid = guid # type: str + self.version = version # type: int + super().__init__(**kwargs) + + def validate(self) -> None: + if not self.guid: + raise ValueError("guid is required on ClusterMaterial") + if not self.version: + raise ValueError("version is required on ClusterMaterial") + + +## Class representing a local material that was fetched from the container registry. +class LocalMaterial(BaseModel): + def __init__(self, GUID: str, id: str, version: int, **kwargs) -> None: + self.GUID = GUID # type: str + self.id = id # type: str + self.version = version # type: int + super().__init__(**kwargs) + + def validate(self) -> None: + if not self.GUID: + raise ValueError("guid is required on LocalMaterial") + if not self.version: + raise ValueError("version is required on LocalMaterial") + if not self.id: + raise ValueError("id is required on LocalMaterial") diff --git a/plugins/UM3NetworkPrinting/src/SendMaterialJob.py b/plugins/UM3NetworkPrinting/src/SendMaterialJob.py index 8491e79c29..f536fad49a 100644 --- a/plugins/UM3NetworkPrinting/src/SendMaterialJob.py +++ b/plugins/UM3NetworkPrinting/src/SendMaterialJob.py @@ -1,99 +1,197 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +import json +import os +import urllib.parse +from typing import Dict, TYPE_CHECKING, Set -import json #To understand the list of materials from the printer reply. -import os #To walk over material files. -import os.path #To filter on material files. -from PyQt5.QtNetwork import QNetworkReply, QNetworkRequest #To listen to the reply from the printer. -from typing import Any, Dict, Set, TYPE_CHECKING -import urllib.parse #For getting material IDs from their file names. +from PyQt5.QtNetwork import QNetworkReply, QNetworkRequest -from UM.Job import Job #The interface we're implementing. +from UM.Application import Application +from UM.Job import Job from UM.Logger import Logger -from UM.MimeTypeDatabase import MimeTypeDatabase #To strip the extensions of the material profile files. +from UM.MimeTypeDatabase import MimeTypeDatabase from UM.Resources import Resources -from UM.Settings.ContainerRegistry import ContainerRegistry #To find the GUIDs of materials. - -from cura.CuraApplication import CuraApplication #For the resource types. +from cura.CuraApplication import CuraApplication +# Absolute imports don't work in plugins +from .Models import ClusterMaterial, LocalMaterial if TYPE_CHECKING: from .ClusterUM3OutputDevice import ClusterUM3OutputDevice + ## Asynchronous job to send material profiles to the printer. # # This way it won't freeze up the interface while sending those materials. class SendMaterialJob(Job): + def __init__(self, device: "ClusterUM3OutputDevice") -> None: super().__init__() - self.device = device #type: ClusterUM3OutputDevice + self.device = device # type: ClusterUM3OutputDevice + ## Send the request to the printer and register a callback def run(self) -> None: - self.device.get("materials/", on_finished = self.sendMissingMaterials) + self.device.get("materials/", on_finished = self._onGetRemoteMaterials) - def sendMissingMaterials(self, reply: QNetworkReply) -> None: - if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: #Got an error from the HTTP request. - Logger.log("e", "Couldn't request current material storage on printer. Not syncing materials.") + ## Process the materials reply from the printer. + # + # \param reply The reply from the printer, a json file. + def _onGetRemoteMaterials(self, reply: QNetworkReply) -> None: + + # Got an error from the HTTP request. If we did not receive a 200 something happened. + if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: + Logger.log("e", "Error fetching materials from printer: %s", reply.errorString()) return - remote_materials_list = reply.readAll().data().decode("utf-8") - try: - remote_materials_list = json.loads(remote_materials_list) - except json.JSONDecodeError: - Logger.log("e", "Request material storage on printer: I didn't understand the printer's answer.") - return - try: - remote_materials_by_guid = {material["guid"]: material for material in remote_materials_list} #Index by GUID. - except KeyError: - Logger.log("e", "Request material storage on printer: Printer's answer was missing GUIDs.") + # Collect materials from the printer's reply and send the missing ones if needed. + remote_materials_by_guid = self._parseReply(reply) + if remote_materials_by_guid: + self._sendMissingMaterials(remote_materials_by_guid) + + ## Determine which materials should be updated and send them to the printer. + # + # \param remote_materials_by_guid The remote materials by GUID. + def _sendMissingMaterials(self, remote_materials_by_guid: Dict[str, ClusterMaterial]) -> None: + + # Collect local materials + local_materials_by_guid = self._getLocalMaterials() + if len(local_materials_by_guid) == 0: + Logger.log("d", "There are no local materials to synchronize with the printer.") return - container_registry = ContainerRegistry.getInstance() - local_materials_list = filter(lambda material: ("GUID" in material and "version" in material and "id" in material), container_registry.findContainersMetadata(type = "material")) - local_materials_by_guid = {material["GUID"]: material for material in local_materials_list if material["id"] == material["base_file"]} - for material in local_materials_list: #For each GUID get the material with the highest version number. - try: - if int(material["version"]) > local_materials_by_guid[material["GUID"]]["version"]: - local_materials_by_guid[material["GUID"]] = material - except ValueError: - Logger.log("e", "Material {material_id} has invalid version number {number}.".format(material_id = material["id"], number = material["version"])) - continue + # Find out what materials are new or updated and must be sent to the printer + material_ids_to_send = self._determineMaterialsToSend(local_materials_by_guid, remote_materials_by_guid) + if len(material_ids_to_send) == 0: + Logger.log("d", "There are no remote materials to update.") + return - materials_to_send = set() #type: Set[Dict[str, Any]] - for guid, material in local_materials_by_guid.items(): - if guid not in remote_materials_by_guid: - materials_to_send.add(material["id"]) - continue - try: - if int(material["version"]) > remote_materials_by_guid[guid]["version"]: - materials_to_send.add(material["id"]) - continue - except KeyError: - Logger.log("e", "Current material storage on printer was an invalid reply (missing version).") - return + # Send materials to the printer + self._sendMaterials(material_ids_to_send) - for file_path in Resources.getAllResourcesOfType(CuraApplication.ResourceTypes.MaterialInstanceContainer): + ## From the local and remote materials, determine which ones should be synchronized. + # + # Makes a Set of id's containing only the id's of the materials that are not on the printer yet or the ones that + # are newer in Cura. + # + # \param local_materials The local materials by GUID. + # \param remote_materials The remote materials by GUID. + @staticmethod + def _determineMaterialsToSend(local_materials: Dict[str, LocalMaterial], + remote_materials: Dict[str, ClusterMaterial]) -> Set[str]: + return { + material.id + for guid, material in local_materials.items() + if guid not in remote_materials or material.version > remote_materials[guid].version + } + + ## Send the materials to the printer. + # + # The given materials will be loaded from disk en sent to to printer. + # The given id's will be matched with filenames of the locally stored materials. + # + # \param materials_to_send A set with id's of materials that must be sent. + def _sendMaterials(self, materials_to_send: Set[str]) -> None: + file_paths = Resources.getAllResourcesOfType(CuraApplication.ResourceTypes.MaterialInstanceContainer) + + # Find all local material files and send them if needed. + for file_path in file_paths: try: mime_type = MimeTypeDatabase.getMimeTypeForFile(file_path) except MimeTypeDatabase.MimeTypeNotFoundError: - continue #Not the sort of file we'd like to send then. - _, file_name = os.path.split(file_path) - material_id = urllib.parse.unquote_plus(mime_type.stripExtension(file_name)) - if material_id not in materials_to_send: continue - parts = [] - with open(file_path, "rb") as f: - parts.append(self.device._createFormPart("name=\"file\"; filename=\"{file_name}\"".format(file_name = file_name), f.read())) - signature_file_path = file_path + ".sig" - if os.path.exists(signature_file_path): - _, signature_file_name = os.path.split(signature_file_path) - with open(signature_file_path, "rb") as f: - parts.append(self.device._createFormPart("name=\"signature_file\"; filename=\"{file_name}\"".format(file_name = signature_file_name), f.read())) + file_name = os.path.basename(file_path) + material_id = urllib.parse.unquote_plus(mime_type.stripExtension(file_name)) + if material_id not in materials_to_send: + # If the material does not have to be sent we skip it. + continue - Logger.log("d", "Syncing material {material_id} with cluster.".format(material_id = material_id)) - self.device.postFormWithParts(target = "materials/", parts = parts, on_finished = self.sendingFinished) + self._sendMaterialFile(file_path, file_name, material_id) - def sendingFinished(self, reply: QNetworkReply): + ## Send a single material file to the printer. + # + # Also add the material signature file if that is available. + # + # \param file_path The path of the material file. + # \param file_name The name of the material file. + # \param material_id The ID of the material in the file. + def _sendMaterialFile(self, file_path: str, file_name: str, material_id: str) -> None: + + parts = [] + + # Add the material file. + with open(file_path, "rb") as f: + parts.append(self.device.createFormPart("name=\"file\"; filename=\"{file_name}\"" + .format(file_name = file_name), f.read())) + + # Add the material signature file if needed. + signature_file_path = "{}.sig".format(file_path) + if os.path.exists(signature_file_path): + signature_file_name = os.path.basename(signature_file_path) + with open(signature_file_path, "rb") as f: + parts.append(self.device.createFormPart("name=\"signature_file\"; filename=\"{file_name}\"" + .format(file_name = signature_file_name), f.read())) + + Logger.log("d", "Syncing material {material_id} with cluster.".format(material_id = material_id)) + self.device.postFormWithParts(target = "materials/", parts = parts, on_finished = self.sendingFinished) + + ## Check a reply from an upload to the printer and log an error when the call failed + @staticmethod + def sendingFinished(reply: QNetworkReply) -> None: if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: - Logger.log("e", "Received error code from printer when syncing material: {code}".format(code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute))) - Logger.log("e", reply.readAll().data().decode("utf-8")) \ No newline at end of file + Logger.log("e", "Received error code from printer when syncing material: {code}, {text}".format( + code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute), + text = reply.errorString() + )) + + ## Parse the reply from the printer + # + # Parses the reply to a "/materials" request to the printer + # + # \return a dictionary of ClusterMaterial objects by GUID + # \throw KeyError Raised when on of the materials does not include a valid guid + @classmethod + def _parseReply(cls, reply: QNetworkReply) -> Dict[str, ClusterMaterial]: + try: + remote_materials = json.loads(reply.readAll().data().decode("utf-8")) + return {material["guid"]: ClusterMaterial(**material) for material in remote_materials} + except UnicodeDecodeError: + Logger.log("e", "Request material storage on printer: I didn't understand the printer's answer.") + except json.JSONDecodeError: + Logger.log("e", "Request material storage on printer: I didn't understand the printer's answer.") + except ValueError: + Logger.log("e", "Request material storage on printer: Printer's answer had an incorrect value.") + except TypeError: + Logger.log("e", "Request material storage on printer: Printer's answer was missing a required value.") + + ## Retrieves a list of local materials + # + # Only the new newest version of the local materials is returned + # + # \return a dictionary of LocalMaterial objects by GUID + def _getLocalMaterials(self) -> Dict[str, LocalMaterial]: + result = {} # type: Dict[str, LocalMaterial] + container_registry = Application.getInstance().getContainerRegistry() + material_containers = container_registry.findContainersMetadata(type = "material") + + # Find the latest version of all material containers in the registry. + for material in material_containers: + try: + # material version must be an int + material["version"] = int(material["version"]) + + # Create a new local material + local_material = LocalMaterial(**material) + + if local_material.GUID not in result or \ + local_material.version > result.get(local_material.GUID).version: + result[local_material.GUID] = local_material + + except KeyError: + Logger.logException("w", "Local material {} has missing values.".format(material["id"])) + except ValueError: + Logger.logException("w", "Local material {} has invalid values.".format(material["id"])) + except TypeError: + Logger.logException("w", "Local material {} has invalid values.".format(material["id"])) + + return result diff --git a/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py b/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py index 9c070f2de2..80212fcf00 100644 --- a/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py +++ b/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin @@ -283,6 +283,7 @@ class UM3OutputDevicePlugin(OutputDevicePlugin): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack and device.getId() == global_container_stack.getMetaDataEntry("um_network_key"): + global_container_stack.setMetaDataEntry("connection_type", device.getConnectionType().value) device.connect() device.connectionStateChanged.connect(self._onDeviceConnectionStateChanged) @@ -325,13 +326,12 @@ class UM3OutputDevicePlugin(OutputDevicePlugin): ## Handler for zeroConf detection. # Return True or False indicating if the process succeeded. - # Note that this function can take over 3 seconds to complete. Be carefull calling it from the main thread. + # Note that this function can take over 3 seconds to complete. Be careful + # calling it from the main thread. def _onServiceChanged(self, zero_conf, service_type, name, state_change): if state_change == ServiceStateChange.Added: - Logger.log("d", "Bonjour service added: %s" % name) - # First try getting info from zero-conf cache - info = ServiceInfo(service_type, name, properties={}) + info = ServiceInfo(service_type, name, properties = {}) for record in zero_conf.cache.entries_with_name(name.lower()): info.update_record(zero_conf, time(), record) @@ -342,7 +342,6 @@ class UM3OutputDevicePlugin(OutputDevicePlugin): # Request more data if info is not complete if not info.address: - Logger.log("d", "Trying to get address of %s", name) info = zero_conf.get_service_info(service_type, name) if info: diff --git a/plugins/UM3NetworkPrinting/tests/TestSendMaterialJob.py b/plugins/UM3NetworkPrinting/tests/TestSendMaterialJob.py new file mode 100644 index 0000000000..b669eb192a --- /dev/null +++ b/plugins/UM3NetworkPrinting/tests/TestSendMaterialJob.py @@ -0,0 +1,190 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import io +import json +from unittest import TestCase, mock +from unittest.mock import patch, call + +from PyQt5.QtCore import QByteArray + +from UM.MimeTypeDatabase import MimeType +from UM.Application import Application +from plugins.UM3NetworkPrinting.src.SendMaterialJob import SendMaterialJob + + +@patch("builtins.open", lambda _, __: io.StringIO("")) +@patch("UM.MimeTypeDatabase.MimeTypeDatabase.getMimeTypeForFile", + lambda _: MimeType(name = "application/x-ultimaker-material-profile", comment = "Ultimaker Material Profile", + suffixes = ["xml.fdm_material"])) +@patch("UM.Resources.Resources.getAllResourcesOfType", lambda _: ["/materials/generic_pla_white.xml.fdm_material"]) +@patch("plugins.UM3NetworkPrinting.src.ClusterUM3OutputDevice") +@patch("PyQt5.QtNetwork.QNetworkReply") +class TestSendMaterialJob(TestCase): + _LOCAL_MATERIAL_WHITE = {"type": "material", "status": "unknown", "id": "generic_pla_white", + "base_file": "generic_pla_white", "setting_version": "5", "name": "White PLA", + "brand": "Generic", "material": "PLA", "color_name": "White", + "GUID": "badb0ee7-87c8-4f3f-9398-938587b67dce", "version": "1", "color_code": "#ffffff", + "description": "Test PLA White", "adhesion_info": "Use glue.", "approximate_diameter": "3", + "properties": {"density": "1.00", "diameter": "2.85", "weight": "750"}, + "definition": "fdmprinter", "compatible": True} + + _LOCAL_MATERIAL_BLACK = {"type": "material", "status": "unknown", "id": "generic_pla_black", + "base_file": "generic_pla_black", "setting_version": "5", "name": "Yellow CPE", + "brand": "Ultimaker", "material": "CPE", "color_name": "Black", + "GUID": "5fbb362a-41f9-4818-bb43-15ea6df34aa4", "version": "1", "color_code": "#000000", + "description": "Test PLA Black", "adhesion_info": "Use glue.", "approximate_diameter": "3", + "properties": {"density": "1.01", "diameter": "2.85", "weight": "750"}, + "definition": "fdmprinter", "compatible": True} + + _REMOTE_MATERIAL_WHITE = { + "guid": "badb0ee7-87c8-4f3f-9398-938587b67dce", + "material": "PLA", + "brand": "Generic", + "version": 1, + "color": "White", + "density": 1.00 + } + + _REMOTE_MATERIAL_BLACK = { + "guid": "5fbb362a-41f9-4818-bb43-15ea6df34aa4", + "material": "PLA", + "brand": "Generic", + "version": 2, + "color": "Black", + "density": 1.00 + } + + def test_run(self, device_mock, reply_mock): + job = SendMaterialJob(device_mock) + job.run() + + # We expect the materials endpoint to be called when the job runs. + device_mock.get.assert_called_with("materials/", on_finished = job._onGetRemoteMaterials) + + def test__onGetRemoteMaterials_withFailedRequest(self, reply_mock, device_mock): + reply_mock.attribute.return_value = 404 + job = SendMaterialJob(device_mock) + job._onGetRemoteMaterials(reply_mock) + + # We expect the device not to be called for any follow up. + self.assertEqual(0, device_mock.createFormPart.call_count) + + def test__onGetRemoteMaterials_withWrongEncoding(self, reply_mock, device_mock): + reply_mock.attribute.return_value = 200 + reply_mock.readAll.return_value = QByteArray(json.dumps([self._REMOTE_MATERIAL_WHITE]).encode("cp500")) + job = SendMaterialJob(device_mock) + job._onGetRemoteMaterials(reply_mock) + + # Given that the parsing fails we do no expect the device to be called for any follow up. + self.assertEqual(0, device_mock.createFormPart.call_count) + + def test__onGetRemoteMaterials_withBadJsonAnswer(self, reply_mock, device_mock): + reply_mock.attribute.return_value = 200 + reply_mock.readAll.return_value = QByteArray(b"Six sick hicks nick six slick bricks with picks and sticks.") + job = SendMaterialJob(device_mock) + job._onGetRemoteMaterials(reply_mock) + + # Given that the parsing fails we do no expect the device to be called for any follow up. + self.assertEqual(0, device_mock.createFormPart.call_count) + + def test__onGetRemoteMaterials_withMissingGuidInRemoteMaterial(self, reply_mock, device_mock): + reply_mock.attribute.return_value = 200 + remote_material_without_guid = self._REMOTE_MATERIAL_WHITE.copy() + del remote_material_without_guid["guid"] + reply_mock.readAll.return_value = QByteArray(json.dumps([remote_material_without_guid]).encode("ascii")) + job = SendMaterialJob(device_mock) + job._onGetRemoteMaterials(reply_mock) + + # Given that parsing fails we do not expect the device to be called for any follow up. + self.assertEqual(0, device_mock.createFormPart.call_count) + + @patch("cura.Settings.CuraContainerRegistry") + @patch("UM.Application") + def test__onGetRemoteMaterials_withInvalidVersionInLocalMaterial(self, application_mock, container_registry_mock, + reply_mock, device_mock): + reply_mock.attribute.return_value = 200 + reply_mock.readAll.return_value = QByteArray(json.dumps([self._REMOTE_MATERIAL_WHITE]).encode("ascii")) + + localMaterialWhiteWithInvalidVersion = self._LOCAL_MATERIAL_WHITE.copy() + localMaterialWhiteWithInvalidVersion["version"] = "one" + container_registry_mock.findContainersMetadata.return_value = [localMaterialWhiteWithInvalidVersion] + + application_mock.getContainerRegistry.return_value = container_registry_mock + + with mock.patch.object(Application, "getInstance", new = lambda: application_mock): + job = SendMaterialJob(device_mock) + job._onGetRemoteMaterials(reply_mock) + + self.assertEqual(0, device_mock.createFormPart.call_count) + + @patch("cura.Settings.CuraContainerRegistry") + @patch("UM.Application") + def test__onGetRemoteMaterials_withNoUpdate(self, application_mock, container_registry_mock, reply_mock, + device_mock): + application_mock.getContainerRegistry.return_value = container_registry_mock + + device_mock.createFormPart.return_value = "_xXx_" + + container_registry_mock.findContainersMetadata.return_value = [self._LOCAL_MATERIAL_WHITE] + + reply_mock.attribute.return_value = 200 + reply_mock.readAll.return_value = QByteArray(json.dumps([self._REMOTE_MATERIAL_WHITE]).encode("ascii")) + + with mock.patch.object(Application, "getInstance", new = lambda: application_mock): + job = SendMaterialJob(device_mock) + job._onGetRemoteMaterials(reply_mock) + + self.assertEqual(0, device_mock.createFormPart.call_count) + self.assertEqual(0, device_mock.postFormWithParts.call_count) + + @patch("cura.Settings.CuraContainerRegistry") + @patch("UM.Application") + def test__onGetRemoteMaterials_withUpdatedMaterial(self, application_mock, container_registry_mock, reply_mock, + device_mock): + application_mock.getContainerRegistry.return_value = container_registry_mock + + device_mock.createFormPart.return_value = "_xXx_" + + localMaterialWhiteWithHigherVersion = self._LOCAL_MATERIAL_WHITE.copy() + localMaterialWhiteWithHigherVersion["version"] = "2" + container_registry_mock.findContainersMetadata.return_value = [localMaterialWhiteWithHigherVersion] + + reply_mock.attribute.return_value = 200 + reply_mock.readAll.return_value = QByteArray(json.dumps([self._REMOTE_MATERIAL_WHITE]).encode("ascii")) + + with mock.patch.object(Application, "getInstance", new = lambda: application_mock): + job = SendMaterialJob(device_mock) + job._onGetRemoteMaterials(reply_mock) + + self.assertEqual(1, device_mock.createFormPart.call_count) + self.assertEqual(1, device_mock.postFormWithParts.call_count) + self.assertEquals( + [call.createFormPart("name=\"file\"; filename=\"generic_pla_white.xml.fdm_material\"", ""), + call.postFormWithParts(target = "materials/", parts = ["_xXx_"], on_finished = job.sendingFinished)], + device_mock.method_calls) + + @patch("cura.Settings.CuraContainerRegistry") + @patch("UM.Application") + def test__onGetRemoteMaterials_withNewMaterial(self, application_mock, container_registry_mock, reply_mock, + device_mock): + application_mock.getContainerRegistry.return_value = container_registry_mock + + device_mock.createFormPart.return_value = "_xXx_" + + container_registry_mock.findContainersMetadata.return_value = [self._LOCAL_MATERIAL_WHITE, + self._LOCAL_MATERIAL_BLACK] + + reply_mock.attribute.return_value = 200 + reply_mock.readAll.return_value = QByteArray(json.dumps([self._REMOTE_MATERIAL_BLACK]).encode("ascii")) + + with mock.patch.object(Application, "getInstance", new = lambda: application_mock): + job = SendMaterialJob(device_mock) + job._onGetRemoteMaterials(reply_mock) + + self.assertEqual(1, device_mock.createFormPart.call_count) + self.assertEqual(1, device_mock.postFormWithParts.call_count) + self.assertEquals( + [call.createFormPart("name=\"file\"; filename=\"generic_pla_white.xml.fdm_material\"", ""), + call.postFormWithParts(target = "materials/", parts = ["_xXx_"], on_finished = job.sendingFinished)], + device_mock.method_calls) diff --git a/plugins/USBPrinting/AutoDetectBaudJob.py b/plugins/USBPrinting/AutoDetectBaudJob.py index 8b37c4b29d..2fa0af1795 100644 --- a/plugins/USBPrinting/AutoDetectBaudJob.py +++ b/plugins/USBPrinting/AutoDetectBaudJob.py @@ -4,6 +4,7 @@ from UM.Job import Job from UM.Logger import Logger +from .avr_isp import ispBase from .avr_isp.stk500v2 import Stk500v2 from time import time, sleep @@ -14,12 +15,12 @@ from serial import Serial, SerialException # It tries a pre-set list of baud rates. All these baud rates are validated by requesting the temperature a few times # and checking if the results make sense. If getResult() is not None, it was able to find a correct baud rate. class AutoDetectBaudJob(Job): - def __init__(self, serial_port): + def __init__(self, serial_port: int) -> None: super().__init__() self._serial_port = serial_port - self._all_baud_rates = [115200, 250000, 230400, 57600, 38400, 19200, 9600] + self._all_baud_rates = [115200, 250000, 500000, 230400, 57600, 38400, 19200, 9600] - def run(self): + def run(self) -> None: Logger.log("d", "Auto detect baud rate started.") wait_response_timeouts = [3, 15, 30] wait_bootloader_times = [1.5, 5, 15] @@ -32,7 +33,7 @@ class AutoDetectBaudJob(Job): try: programmer.connect(self._serial_port) serial = programmer.leaveISP() - except: + except ispBase.IspError: programmer.close() for retry in range(tries): @@ -58,7 +59,7 @@ class AutoDetectBaudJob(Job): # We already have a serial connection, just change the baud rate. try: serial.baudrate = baud_rate - except: + except ValueError: continue sleep(wait_bootloader) # Ensure that we are not talking to the boot loader. 1.5 seconds seems to be the magic number successful_responses = 0 @@ -81,5 +82,5 @@ class AutoDetectBaudJob(Job): return serial.write(b"M105\n") - sleep(15) # Give the printer some time to init and try again. + sleep(15) # Give the printer some time to init and try again. self.setResult(None) # Unable to detect the correct baudrate. diff --git a/plugins/USBPrinting/MonitorItem.qml b/plugins/USBPrinting/MonitorItem.qml new file mode 100644 index 0000000000..c86353f814 --- /dev/null +++ b/plugins/USBPrinting/MonitorItem.qml @@ -0,0 +1,48 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 + +import UM 1.2 as UM +import Cura 1.0 as Cura +Component +{ + Item + { + Rectangle + { + color: UM.Theme.getColor("main_background") + + anchors.right: parent.right + width: parent.width * 0.3 + anchors.top: parent.top + anchors.bottom: parent.bottom + + Cura.PrintMonitor + { + anchors.fill: parent + } + + Rectangle + { + id: footerSeparator + width: parent.width + height: UM.Theme.getSize("wide_lining").height + color: UM.Theme.getColor("wide_lining") + anchors.bottom: monitorButton.top + anchors.bottomMargin: UM.Theme.getSize("thick_margin").height + } + + // MonitorButton is actually the bottom footer panel. + Cura.MonitorButton + { + id: monitorButton + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + } + } + } +} \ No newline at end of file diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index e1c39ff8fa..89903b06f4 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -1,12 +1,13 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +import os from UM.Logger import Logger from UM.i18n import i18nCatalog from UM.Qt.Duration import DurationFormat from cura.CuraApplication import CuraApplication -from cura.PrinterOutputDevice import PrinterOutputDevice, ConnectionState +from cura.PrinterOutputDevice import PrinterOutputDevice, ConnectionState, ConnectionType from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel from cura.PrinterOutput.GenericOutputController import GenericOutputController @@ -28,7 +29,7 @@ catalog = i18nCatalog("cura") class USBPrinterOutputDevice(PrinterOutputDevice): def __init__(self, serial_port: str, baud_rate: Optional[int] = None) -> None: - super().__init__(serial_port) + super().__init__(serial_port, connection_type = ConnectionType.UsbConnection) self.setName(catalog.i18nc("@item:inmenu", "USB printing")) self.setShortDescription(catalog.i18nc("@action:button Preceded by 'Ready to'.", "Print via USB")) self.setDescription(catalog.i18nc("@info:tooltip", "Print via USB")) @@ -48,7 +49,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._baud_rate = baud_rate - self._all_baud_rates = [115200, 250000, 230400, 57600, 38400, 19200, 9600] + self._all_baud_rates = [115200, 250000, 500000, 230400, 57600, 38400, 19200, 9600] # Instead of using a timer, we really need the update to be as a thread, as reading from serial can block. self._update_thread = Thread(target = self._update, daemon = True) @@ -64,7 +65,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._accepts_commands = True self._paused = False - self._printer_busy = False # when printer is preheating and waiting (M190/M109), or when waiting for action on the printer + self._printer_busy = False # When printer is preheating and waiting (M190/M109), or when waiting for action on the printer self.setConnectionText(catalog.i18nc("@info:status", "Connected via USB")) @@ -77,6 +78,8 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._firmware_name_requested = False self._firmware_updater = AvrFirmwareUpdater(self) + self._monitor_view_qml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "MonitorItem.qml") + CuraApplication.getInstance().getOnExitCallbackManager().addCallback(self._checkActivePrintingUponAppExit) # This is a callback function that checks if there is any printing in progress via USB when the application tries @@ -176,7 +179,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): return CuraApplication.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerStackChanged) self._onGlobalContainerStackChanged() - self.setConnectionState(ConnectionState.connected) + self.setConnectionState(ConnectionState.Connected) self._update_thread.start() def _onGlobalContainerStackChanged(self): @@ -205,7 +208,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._sendCommand(command) def _sendCommand(self, command: Union[str, bytes]): - if self._serial is None or self._connection_state != ConnectionState.connected: + if self._serial is None or self._connection_state != ConnectionState.Connected: return new_command = cast(bytes, command) if type(command) is bytes else cast(str, command).encode() # type: bytes @@ -219,7 +222,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._command_received.set() def _update(self): - while self._connection_state == ConnectionState.connected and self._serial is not None: + while self._connection_state == ConnectionState.Connected and self._serial is not None: try: line = self._serial.readline() except: diff --git a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py index bd207d9d96..d4c0d1828e 100644 --- a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py +++ b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py @@ -66,7 +66,7 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin): return changed_device = self._usb_output_devices[serial_port] - if changed_device.connectionState == ConnectionState.connected: + if changed_device.connectionState == ConnectionState.Connected: self.getOutputDeviceManager().addOutputDevice(changed_device) else: self.getOutputDeviceManager().removeOutputDevice(serial_port) diff --git a/plugins/USBPrinting/plugin.json b/plugins/USBPrinting/plugin.json index 3484c8a48a..45971d858b 100644 --- a/plugins/USBPrinting/plugin.json +++ b/plugins/USBPrinting/plugin.json @@ -1,8 +1,8 @@ { "name": "USB printing", "author": "Ultimaker B.V.", - "version": "1.0.0", - "api": 5, + "version": "1.0.2", + "api": "6.0", "description": "Accepts G-Code and sends them to a printer. Plugin can also update firmware.", "i18n-catalog": "cura" } diff --git a/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml b/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml index 4a1d42e248..2a01cfaa40 100644 --- a/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml +++ b/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml @@ -19,7 +19,7 @@ Cura.MachineAction property bool heatupBedStarted: false property bool printerConnected: Cura.MachineManager.printerConnected - UM.I18nCatalog { id: catalog; name:"cura"} + UM.I18nCatalog { id: catalog; name: "cura"} Label { id: pageTitle diff --git a/plugins/UltimakerMachineActions/plugin.json b/plugins/UltimakerMachineActions/plugin.json index b60c7df88e..3e3e0af9b0 100644 --- a/plugins/UltimakerMachineActions/plugin.json +++ b/plugins/UltimakerMachineActions/plugin.json @@ -1,8 +1,8 @@ { "name": "Ultimaker machine actions", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.).", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/UserAgreement/UserAgreement.qml b/plugins/UserAgreement/UserAgreement.qml index 4ee03f4ad5..2e5893fc41 100644 --- a/plugins/UserAgreement/UserAgreement.qml +++ b/plugins/UserAgreement/UserAgreement.qml @@ -36,7 +36,7 @@ UM.Dialog width: parent.width anchors.bottomMargin: UM.Theme.getSize("default_margin").height - UM.I18nCatalog { id: catalog; name:"cura" } + UM.I18nCatalog { id: catalog; name: "cura" } Button { diff --git a/plugins/UserAgreement/plugin.json b/plugins/UserAgreement/plugin.json index 50a2aa0441..b172d1f9a2 100644 --- a/plugins/UserAgreement/plugin.json +++ b/plugins/UserAgreement/plugin.json @@ -1,8 +1,8 @@ { "name": "UserAgreement", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Ask the user once if he/she agrees with our license.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/MachineInstance.py b/plugins/VersionUpgrade/VersionUpgrade21to22/MachineInstance.py index 37b6989add..ff5c33517d 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/MachineInstance.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/MachineInstance.py @@ -1,14 +1,16 @@ -# Copyright (c) 2016 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -import UM.VersionUpgrade #To indicate that a file is of incorrect format. -import UM.VersionUpgradeManager #To schedule more files to be upgraded. -from UM.Resources import Resources #To get the config storage path. - import configparser #To read config files. import io #To write config files to strings as if they were files. import os.path #To get the path to write new user profiles to. +from typing import Dict, List, Optional, Set, Tuple import urllib #To serialise the user container file name properly. +import urllib.parse + +import UM.VersionUpgrade #To indicate that a file is of incorrect format. +import UM.VersionUpgradeManager #To schedule more files to be upgraded. +from UM.Resources import Resources #To get the config storage path. ## Creates a new machine instance instance by parsing a serialised machine # instance in version 1 of the file format. @@ -18,7 +20,7 @@ import urllib #To serialise the user container file name properly. # extension. # \return A machine instance instance, or None if the file format is # incorrect. -def importFrom(serialised, filename): +def importFrom(serialised: str, filename: str) -> Optional["MachineInstance"]: try: return MachineInstance(serialised, filename) except (configparser.Error, UM.VersionUpgrade.FormatException, UM.VersionUpgrade.InvalidVersionException): @@ -32,7 +34,7 @@ class MachineInstance: # \param serialised A string with the contents of a machine instance file, # without extension. # \param filename The supposed file name of this machine instance. - def __init__(self, serialised, filename): + def __init__(self, serialised: str, filename: str) -> None: self._filename = filename config = configparser.ConfigParser(interpolation = None) @@ -53,11 +55,11 @@ class MachineInstance: self._type_name = config.get("general", "type") self._variant_name = config.get("general", "variant", fallback = "empty_variant") self._name = config.get("general", "name", fallback = "") - self._key = config.get("general", "key", fallback = None) + self._key = config.get("general", "key", fallback = "") self._active_profile_name = config.get("general", "active_profile", fallback = "empty_quality") self._active_material_name = config.get("general", "material", fallback = "empty_material") - self._machine_setting_overrides = {} + self._machine_setting_overrides = {} # type: Dict[str, str] for key, value in config["machine_settings"].items(): self._machine_setting_overrides[key] = value @@ -67,7 +69,7 @@ class MachineInstance: # # \return A tuple containing the new filename and a serialised form of # this machine instance, serialised in version 2 of the file format. - def export(self): + def export(self) -> Tuple[List[str], List[str]]: config = configparser.ConfigParser(interpolation = None) # Build a config file in the form of version 2. config.add_section("general") @@ -108,7 +110,7 @@ class MachineInstance: version_upgrade_manager = UM.VersionUpgradeManager.VersionUpgradeManager.getInstance() user_version_to_paths_dict = version_upgrade_manager.getStoragePaths("user") - paths_set = set() + paths_set = set() # type: Set[str] for paths in user_version_to_paths_dict.values(): paths_set |= paths diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/Preferences.py b/plugins/VersionUpgrade/VersionUpgrade21to22/Preferences.py index 842499da86..953837b863 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/Preferences.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/Preferences.py @@ -1,8 +1,9 @@ -# Copyright (c) 2016 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import configparser #To read config files. import io #To output config files to string. +from typing import List, Optional, Tuple import UM.VersionUpgrade #To indicate that a file is of the wrong format. @@ -14,7 +15,7 @@ import UM.VersionUpgrade #To indicate that a file is of the wrong format. # extension. # \return A representation of those preferences, or None if the file format is # incorrect. -def importFrom(serialised, filename): +def importFrom(serialised: str, filename: str) -> Optional["Preferences"]: try: return Preferences(serialised, filename) except (configparser.Error, UM.VersionUpgrade.FormatException, UM.VersionUpgrade.InvalidVersionException): @@ -28,7 +29,7 @@ class Preferences: # \param serialised A serialised version 2 preferences file. # \param filename The supposed filename of the preferences file, without # extension. - def __init__(self, serialised, filename): + def __init__(self, serialised: str, filename: str) -> None: self._filename = filename self._config = configparser.ConfigParser(interpolation = None) @@ -50,7 +51,7 @@ class Preferences: # # \return A tuple containing the new filename and a serialised version of # a preferences file in version 3. - def export(self): + def export(self) -> Tuple[List[str], List[str]]: #Reset the cura/categories_expanded property since it works differently now. if self._config.has_section("cura") and self._config.has_option("cura", "categories_expanded"): self._config.remove_option("cura", "categories_expanded") @@ -58,11 +59,11 @@ class Preferences: #Translate the setting names in the visible settings. if self._config.has_section("machines") and self._config.has_option("machines", "setting_visibility"): visible_settings = self._config.get("machines", "setting_visibility") - visible_settings = visible_settings.split(",") + visible_settings_list = visible_settings.split(",") import VersionUpgrade21to22 #Import here to prevent a circular dependency. - visible_settings = [VersionUpgrade21to22.VersionUpgrade21to22.VersionUpgrade21to22.translateSettingName(setting_name) - for setting_name in visible_settings] - visible_settings = ",".join(visible_settings) + visible_settings_list = [VersionUpgrade21to22.VersionUpgrade21to22.VersionUpgrade21to22.translateSettingName(setting_name) + for setting_name in visible_settings_list] + visible_settings = ",".join(visible_settings_list) self._config.set("machines", "setting_visibility", value = visible_settings) #Translate the active_instance key. diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py b/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py index 161edcb67c..af9635d384 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py @@ -1,10 +1,9 @@ -# Copyright (c) 2016 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import configparser #To read config files. import io #To write config files to strings as if they were files. -from typing import Dict -from typing import List +from typing import Dict, List, Optional, Tuple import UM.VersionUpgrade from UM.Logger import Logger @@ -15,7 +14,7 @@ from UM.Logger import Logger # \param serialised The serialised form of a profile in version 1. # \param filename The supposed filename of the profile, without extension. # \return A profile instance, or None if the file format is incorrect. -def importFrom(serialised, filename): +def importFrom(serialised: str, filename: str) -> Optional["Profile"]: try: return Profile(serialised, filename) except (configparser.Error, UM.VersionUpgrade.FormatException, UM.VersionUpgrade.InvalidVersionException): @@ -77,11 +76,11 @@ class Profile: # # \return A tuple containing the new filename and a serialised form of # this profile, serialised in version 2 of the file format. - def export(self): + def export(self) -> Optional[Tuple[List[str], List[str]]]: import VersionUpgrade21to22 # Import here to prevent circular dependencies. if self._name == "Current settings": - return None, None #Can't upgrade these, because the new current profile needs to specify the definition ID and the old file only had the machine instance, not the definition. + return None #Can't upgrade these, because the new current profile needs to specify the definition ID and the old file only had the machine instance, not the definition. config = configparser.ConfigParser(interpolation = None) diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py b/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py index d8036491bf..536385b19d 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/VersionUpgrade21to22.py @@ -1,7 +1,8 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import configparser #To get version numbers from config files. +from typing import Dict, Iterable, List, Optional, Set, Tuple from UM.VersionUpgrade import VersionUpgrade # Superclass of the plugin. @@ -30,7 +31,7 @@ _machines_with_machine_quality = { "materials": { "generic_abs", "generic_cpe", "generic_pla", "generic_pva", "generic_cpe_plus", "generic_nylon", "generic_pc", "generic_tpu" }, "variants": { "0.25 mm", "0.4 mm", "0.6 mm", "0.8 mm" } } -} +} # type: Dict[str, Dict[str, Set[str]]] ## How to translate material names from the old version to the new. _material_translations = { @@ -41,7 +42,7 @@ _material_translations = { "Nylon": "generic_nylon", "PC": "generic_pc", "TPU": "generic_tpu", -} +} # type: Dict[str, str] ## How to translate material names for in the profile names. _material_translations_profiles = { @@ -52,17 +53,17 @@ _material_translations_profiles = { "Nylon": "nylon", "PC": "pc", "TPU": "tpu", -} +} # type: Dict[str, str] ## How to translate printer names from the old version to the new. _printer_translations = { "ultimaker2plus": "ultimaker2_plus" -} +} # type: Dict[str, str] _printer_translations_profiles = { "ultimaker2plus": "um2p", #Does NOT get included in PLA profiles! "ultimaker2_extended_plus": "um2ep" #Has no profiles for CPE+, Nylon, PC and TPU! -} +} # type: Dict[str, str] ## How to translate profile names from the old version to the new. # @@ -116,13 +117,13 @@ _profile_translations = { "tpu_0.25_high": "um2p_tpu_0.25_high", "tpu_0.4_normal": "um2p_tpu_0.4_normal", "tpu_0.6_fast": "um2p_tpu_0.6_fast" -} +} # type: Dict[str, str] ## Settings that are no longer in the new version. _removed_settings = { "fill_perimeter_gaps", "support_area_smoothing" -} +} # type: Set[str] ## How to translate setting names from the old version to the new. _setting_name_translations = { @@ -142,7 +143,7 @@ _setting_name_translations = { "support_roof_line_distance": "support_interface_line_distance", "support_roof_line_width": "support_interface_line_width", "support_roof_pattern": "support_interface_pattern" -} +} # type: Dict[str, str] ## Custom profiles become quality_changes. This dictates which quality to base # the quality_changes profile on. @@ -190,7 +191,7 @@ _quality_fallbacks = { #No TPU. } } -} +} # type: Dict[str, Dict[str, Dict[str, str]]] ## How to translate variants of specific machines from the old version to the # new. @@ -207,7 +208,7 @@ _variant_translations = { "0.6 mm": "ultimaker2_extended_plus_0.6", "0.8 mm": "ultimaker2_extended_plus_0.8" } -} +} # type: Dict[str, Dict[str, str]] ## How to translate variant names for in the profile names. _variant_translations_profiles = { @@ -215,7 +216,7 @@ _variant_translations_profiles = { "0.4 mm": "0.4", "0.6 mm": "0.6", "0.8 mm": "0.8" -} +} # type: Dict[str, str] ## Cura 2.2's material profiles use a different naming scheme for variants. # @@ -233,7 +234,7 @@ _variant_translations_materials = { "0.6 mm": "ultimaker2_plus_0.6_mm", "0.8 mm": "ultimaker2_plus_0.8_mm" } -} +} # type: Dict[str, Dict[str, str]] ## Converts configuration from Cura 2.1's file formats to Cura 2.2's. # @@ -245,12 +246,12 @@ class VersionUpgrade21to22(VersionUpgrade): # number is stored in general/version, so get the data from that key. # # \param serialised The contents of a config file. - # \return \type{int} The version number of that config file. - def getCfgVersion(self, serialised): + # \return The version number of that config file. + def getCfgVersion(self, serialised: str) -> int: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) return format_version * 1000000 + setting_version ## Gets the fallback quality to use for a specific machine-variant-material @@ -263,7 +264,7 @@ class VersionUpgrade21to22(VersionUpgrade): # \param variant The variant ID of the user's configuration in 2.2. # \param material The material ID of the user's configuration in 2.2. @staticmethod - def getQualityFallback(machine, variant, material): + def getQualityFallback(machine: str, variant: str, material: str) -> str: if machine not in _quality_fallbacks: return "normal" if variant not in _quality_fallbacks[machine]: @@ -277,14 +278,14 @@ class VersionUpgrade21to22(VersionUpgrade): # This is required to test if profiles should be converted to a quality # profile or a quality-changes profile. @staticmethod - def builtInProfiles(): + def builtInProfiles() -> Iterable[str]: return _profile_translations.keys() ## Gets a set of the machines which now have per-material quality profiles. # # \return A set of machine identifiers. @staticmethod - def machinesWithMachineQuality(): + def machinesWithMachineQuality() -> Dict[str, Dict[str, Set[str]]]: return _machines_with_machine_quality ## Converts machine instances from format version 1 to version 2. @@ -295,10 +296,10 @@ class VersionUpgrade21to22(VersionUpgrade): # \return A tuple containing the new filename and the serialised machine # instance in version 2, or None if the input was not of the correct # format. - def upgradeMachineInstance(self, serialised, filename): + def upgradeMachineInstance(self, serialised: str, filename: str) -> Optional[Tuple[List[str], List[str]]]: machine_instance = MachineInstance.importFrom(serialised, filename) if not machine_instance: #Invalid file format. - return filename, None + return None return machine_instance.export() ## Converts preferences from format version 2 to version 3. @@ -309,10 +310,10 @@ class VersionUpgrade21to22(VersionUpgrade): # \return A tuple containing the new filename and the serialised # preferences in version 3, or None if the input was not of the correct # format. - def upgradePreferences(self, serialised, filename): + def upgradePreferences(self, serialised: str, filename: str) -> Optional[Tuple[List[str], List[str]]]: preferences = Preferences.importFrom(serialised, filename) if not preferences: #Invalid file format. - return filename, None + return None return preferences.export() ## Converts profiles from format version 1 to version 2. @@ -322,10 +323,10 @@ class VersionUpgrade21to22(VersionUpgrade): # extension. # \return A tuple containing the new filename and the serialised profile # in version 2, or None if the input was not of the correct format. - def upgradeProfile(self, serialised, filename): + def upgradeProfile(self, serialised: str, filename: str) -> Optional[Tuple[List[str], List[str]]]: profile = Profile.importFrom(serialised, filename) if not profile: # Invalid file format. - return filename, None + return None return profile.export() ## Translates a material name for the change from Cura 2.1 to 2.2. @@ -333,7 +334,7 @@ class VersionUpgrade21to22(VersionUpgrade): # \param material A material name in Cura 2.1. # \return The name of the corresponding material in Cura 2.2. @staticmethod - def translateMaterial(material): + def translateMaterial(material: str) -> str: if material in _material_translations: return _material_translations[material] return material @@ -345,7 +346,7 @@ class VersionUpgrade21to22(VersionUpgrade): # \return The name of the corresponding material in the quality profiles # in Cura 2.2. @staticmethod - def translateMaterialForProfiles(material): + def translateMaterialForProfiles(material: str) -> str: if material in _material_translations_profiles: return _material_translations_profiles[material] return material @@ -356,7 +357,7 @@ class VersionUpgrade21to22(VersionUpgrade): # \param printer A printer name in Cura 2.1. # \return The name of the corresponding printer in Cura 2.2. @staticmethod - def translatePrinter(printer): + def translatePrinter(printer: str) -> str: if printer in _printer_translations: return _printer_translations[printer] return printer #Doesn't need to be translated. @@ -367,7 +368,7 @@ class VersionUpgrade21to22(VersionUpgrade): # \param printer A printer name in 2.1. # \return The name of the corresponding printer in Cura 2.2. @staticmethod - def translatePrinterForProfile(printer): + def translatePrinterForProfile(printer: str) -> str: if printer in _printer_translations_profiles: return _printer_translations_profiles[printer] return printer @@ -378,7 +379,7 @@ class VersionUpgrade21to22(VersionUpgrade): # \param profile A profile name in the old version. # \return The corresponding profile name in the new version. @staticmethod - def translateProfile(profile): + def translateProfile(profile: str) -> str: if profile in _profile_translations: return _profile_translations[profile] return profile #Doesn't need to be translated. @@ -392,7 +393,7 @@ class VersionUpgrade21to22(VersionUpgrade): # \param settings A dictionary of settings (as key-value pairs) to update. # \return The same dictionary. @staticmethod - def translateSettings(settings): + def translateSettings(settings: Dict[str, str]) -> Dict[str, str]: new_settings = {} for key, value in settings.items(): if key in _removed_settings: @@ -414,7 +415,7 @@ class VersionUpgrade21to22(VersionUpgrade): # \param setting The name of a setting in Cura 2.1. # \return The name of the corresponding setting in Cura 2.2. @staticmethod - def translateSettingName(setting): + def translateSettingName(setting: str) -> str: if setting in _setting_name_translations: return _setting_name_translations[setting] return setting #Doesn't need to be translated. @@ -426,7 +427,7 @@ class VersionUpgrade21to22(VersionUpgrade): # 2.2's naming. # \return The name of the corresponding variant in Cura 2.2. @staticmethod - def translateVariant(variant, machine): + def translateVariant(variant: str, machine: str) -> str: if machine in _variant_translations and variant in _variant_translations[machine]: return _variant_translations[machine][variant] return variant @@ -440,7 +441,7 @@ class VersionUpgrade21to22(VersionUpgrade): # \return The name of the corresponding variant for in material profiles # in Cura 2.2. @staticmethod - def translateVariantForMaterials(variant, machine): + def translateVariantForMaterials(variant: str, machine: str) -> str: if machine in _variant_translations_materials and variant in _variant_translations_materials[machine]: return _variant_translations_materials[machine][variant] return variant @@ -452,7 +453,7 @@ class VersionUpgrade21to22(VersionUpgrade): # \return The name of the corresponding variant for in quality profiles in # Cura 2.2. @staticmethod - def translateVariantForProfiles(variant): + def translateVariantForProfiles(variant: str) -> str: if variant in _variant_translations_profiles: return _variant_translations_profiles[variant] return variant \ No newline at end of file diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/__init__.py b/plugins/VersionUpgrade/VersionUpgrade21to22/__init__.py index 609781ebfe..67530b9d45 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/__init__.py @@ -1,11 +1,16 @@ -# Copyright (c) 2016 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Any, Dict, TYPE_CHECKING + from . import VersionUpgrade21to22 +if TYPE_CHECKING: + from UM.Application import Application + upgrade = VersionUpgrade21to22.VersionUpgrade21to22() -def getMetaData(): +def getMetaData() -> Dict[str, Any]: return { "version_upgrade": { # From To Upgrade function @@ -33,5 +38,5 @@ def getMetaData(): } } -def register(app): +def register(app: "Application") -> Dict[str, Any]: return { "version_upgrade": upgrade } diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/plugin.json b/plugins/VersionUpgrade/VersionUpgrade21to22/plugin.json index 463fcdc941..cad94c2eb5 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/plugin.json @@ -1,8 +1,8 @@ { "name": "Version Upgrade 2.1 to 2.2", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Upgrades configurations from Cura 2.1 to Cura 2.2.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py index a56f1f807b..ded892d137 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py @@ -1,18 +1,18 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import configparser #To get version numbers from config files. +import io import os import os.path -import io +from typing import Dict, List, Optional, Tuple from UM.Resources import Resources from UM.VersionUpgrade import VersionUpgrade # Superclass of the plugin. import UM.VersionUpgrade class VersionUpgrade22to24(VersionUpgrade): - - def upgradeMachineInstance(self, serialised, filename): + def upgradeMachineInstance(self, serialised: str, filename: str) -> Optional[Tuple[List[str], List[str]]]: # All of this is needed to upgrade custom variant machines from old Cura to 2.4 where # `definition_changes` instance container has been introduced. Variant files which # look like the the handy work of the old machine settings plugin are converted directly @@ -22,11 +22,11 @@ class VersionUpgrade22to24(VersionUpgrade): config.read_string(serialised) # Read the input string as config file. if config.get("metadata", "type") == "definition_changes": # This is not a container stack, don't upgrade it here - return + return None config.set("general", "version", "3") - container_list = [] + container_list = [] # type: List[str] if config.has_section("containers"): for index, container_id in config.items("containers"): container_list.append(container_id) @@ -37,14 +37,14 @@ class VersionUpgrade22to24(VersionUpgrade): user_variants = self.__getUserVariants() name_path_dict = {} for variant in user_variants: - name_path_dict[variant.get("name")] = variant.get("path") + name_path_dict[variant["name"]] = variant["path"] user_variant_names = set(container_list).intersection(name_path_dict.keys()) if len(user_variant_names): # One of the user defined variants appears in the list of containers in the stack. for variant_name in user_variant_names: # really there should just be one variant to convert. - config_name = self.__convertVariant(name_path_dict.get(variant_name)) + config_name = self.__convertVariant(name_path_dict[variant_name]) # Change the name of variant and insert empty_variant into the stack. new_container_list = [] @@ -64,14 +64,14 @@ class VersionUpgrade22to24(VersionUpgrade): config.remove_option("general", "containers") - for index in range(len(container_list)): - config.set("containers", str(index), container_list[index]) + for idx in range(len(container_list)): + config.set("containers", str(idx), container_list[idx]) output = io.StringIO() config.write(output) return [filename], [output.getvalue()] - def __convertVariant(self, variant_path): + def __convertVariant(self, variant_path: str) -> str: # Copy the variant to the machine_instances/*_settings.inst.cfg variant_config = configparser.ConfigParser(interpolation = None) with open(variant_path, "r", encoding = "utf-8") as fhandle: @@ -99,7 +99,7 @@ class VersionUpgrade22to24(VersionUpgrade): return config_name - def __getUserVariants(self): + def __getUserVariants(self) -> List[Dict[str, str]]: resource_path = Resources.getDataStoragePath() variants_dir = os.path.join(resource_path, "variants") @@ -113,7 +113,7 @@ class VersionUpgrade22to24(VersionUpgrade): result.append( { "path": entry.path, "name": config.get("general", "name") } ) return result - def upgradeExtruderTrain(self, serialised, filename): + def upgradeExtruderTrain(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: config = configparser.ConfigParser(interpolation = None) config.read_string(serialised) # Read the input string as config file. config.set("general", "version", "3") # Just bump the version number. That is all we need for now. @@ -122,7 +122,7 @@ class VersionUpgrade22to24(VersionUpgrade): config.write(output) return [filename], [output.getvalue()] - def upgradePreferences(self, serialised, filename): + def upgradePreferences(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: config = configparser.ConfigParser(interpolation = None) config.read_string(serialised) @@ -142,7 +142,7 @@ class VersionUpgrade22to24(VersionUpgrade): config.write(output) return [filename], [output.getvalue()] - def upgradeQuality(self, serialised, filename): + def upgradeQuality(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: config = configparser.ConfigParser(interpolation = None) config.read_string(serialised) # Read the input string as config file. config.set("metadata", "type", "quality_changes") # Update metadata/type to quality_changes @@ -152,9 +152,9 @@ class VersionUpgrade22to24(VersionUpgrade): config.write(output) return [filename], [output.getvalue()] - def getCfgVersion(self, serialised): + def getCfgVersion(self, serialised: str) -> int: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) return format_version * 1000000 + setting_version diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/__init__.py b/plugins/VersionUpgrade/VersionUpgrade22to24/__init__.py index 278b660ec1..fe79333544 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/__init__.py @@ -1,11 +1,16 @@ -# Copyright (c) 2016 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Any, Dict, TYPE_CHECKING + from . import VersionUpgrade +if TYPE_CHECKING: + from UM.Application import Application + upgrade = VersionUpgrade.VersionUpgrade22to24() -def getMetaData(): +def getMetaData() -> Dict[str, Any]: return { "version_upgrade": { # From To Upgrade function @@ -26,5 +31,5 @@ def getMetaData(): } } -def register(app): +def register(app: "Application"): return { "version_upgrade": upgrade } diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/plugin.json b/plugins/VersionUpgrade/VersionUpgrade22to24/plugin.json index e7a0b1c559..7da1e7a56d 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/plugin.json @@ -1,8 +1,8 @@ { "name": "Version Upgrade 2.2 to 2.4", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Upgrades configurations from Cura 2.2 to Cura 2.4.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py index 6643edb765..6dbcfebc46 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py @@ -4,6 +4,7 @@ import configparser #To parse the files we need to upgrade and write the new files. import io #To serialise configparser output to a string. import os +from typing import Dict, List, Set, Tuple from urllib.parse import quote_plus from UM.Resources import Resources @@ -12,19 +13,18 @@ from UM.VersionUpgrade import VersionUpgrade _removed_settings = { #Settings that were removed in 2.5. "start_layers_at_same_position", "sub_div_rad_mult" -} +} # type: Set[str] _split_settings = { #These settings should be copied to all settings it was split into. "support_interface_line_distance": {"support_roof_line_distance", "support_bottom_line_distance"} -} +} # type: Dict[str, Set[str]] ## A collection of functions that convert the configuration of the user in Cura # 2.5 to a configuration for Cura 2.6. # # All of these methods are essentially stateless. class VersionUpgrade25to26(VersionUpgrade): - - def __init__(self): + def __init__(self) -> None: super().__init__() self._current_fdm_printer_count = 2 @@ -39,18 +39,18 @@ class VersionUpgrade25to26(VersionUpgrade): # \raises ValueError The format of the version number in the file is # incorrect. # \raises KeyError The format of the file is incorrect. - def getCfgVersion(self, serialised): + def getCfgVersion(self, serialised: str) -> int: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) return format_version * 1000000 + setting_version ## Upgrades the preferences file from version 2.5 to 2.6. # # \param serialised The serialised form of a preferences file. # \param filename The name of the file to upgrade. - def upgradePreferences(self, serialised, filename): + def upgradePreferences(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) @@ -86,7 +86,7 @@ class VersionUpgrade25to26(VersionUpgrade): # # \param serialised The serialised form of a quality profile. # \param filename The name of the file to upgrade. - def upgradeInstanceContainer(self, serialised, filename): + def upgradeInstanceContainer(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) @@ -116,7 +116,7 @@ class VersionUpgrade25to26(VersionUpgrade): # # \param serialised The serialised form of a quality profile. # \param filename The name of the file to upgrade. - def upgradeMachineStack(self, serialised, filename): + def upgradeMachineStack(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) @@ -149,7 +149,7 @@ class VersionUpgrade25to26(VersionUpgrade): return [filename], [output.getvalue()] ## Acquires the next unique extruder stack index number for the Custom FDM Printer. - def _acquireNextUniqueCustomFdmPrinterExtruderStackIdIndex(self): + def _acquireNextUniqueCustomFdmPrinterExtruderStackIdIndex(self) -> int: extruder_stack_dir = os.path.join(Resources.getDataStoragePath(), "extruders") file_name_list = os.listdir(extruder_stack_dir) file_name_list = [os.path.basename(file_name) for file_name in file_name_list] @@ -169,7 +169,7 @@ class VersionUpgrade25to26(VersionUpgrade): return self._current_fdm_printer_count - def _checkCustomFdmPrinterHasExtruderStack(self, machine_id): + def _checkCustomFdmPrinterHasExtruderStack(self, machine_id: str) -> bool: # go through all extruders and make sure that this custom FDM printer has extruder stacks. extruder_stack_dir = os.path.join(Resources.getDataStoragePath(), "extruders") has_extruders = False @@ -197,7 +197,7 @@ class VersionUpgrade25to26(VersionUpgrade): return has_extruders - def _createCustomFdmPrinterExtruderStack(self, machine_id: str, position: int, quality_id: str, material_id: str): + def _createCustomFdmPrinterExtruderStack(self, machine_id: str, position: int, quality_id: str, material_id: str) -> None: stack_id = "custom_extruder_%s" % (position + 1) if self._current_fdm_printer_count > 1: stack_id += " #%s" % self._current_fdm_printer_count @@ -256,7 +256,7 @@ class VersionUpgrade25to26(VersionUpgrade): ## Creates a definition changes container which doesn't contain anything for the Custom FDM Printers. # The container ID will be automatically generated according to the given stack name. - def _getCustomFdmPrinterDefinitionChanges(self, stack_id: str): + def _getCustomFdmPrinterDefinitionChanges(self, stack_id: str) -> configparser.ConfigParser: # In 2.5, there is no definition_changes container for the Custom FDM printer, so it should be safe to use the # default name unless some one names the printer as something like "Custom FDM Printer_settings". definition_changes_id = stack_id + "_settings" @@ -277,7 +277,7 @@ class VersionUpgrade25to26(VersionUpgrade): ## Creates a user settings container which doesn't contain anything for the Custom FDM Printers. # The container ID will be automatically generated according to the given stack name. - def _getCustomFdmPrinterUserSettings(self, stack_id: str): + def _getCustomFdmPrinterUserSettings(self, stack_id: str) -> configparser.ConfigParser: # For the extruder stacks created in the upgrade, also create user_settings containers so the user changes # will be saved. user_settings_id = stack_id + "_user" diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py b/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py index 67aa73233f..c74b3218b6 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py @@ -1,11 +1,16 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Any, Dict, TYPE_CHECKING + from . import VersionUpgrade25to26 +if TYPE_CHECKING: + from UM.Application import Application + upgrade = VersionUpgrade25to26.VersionUpgrade25to26() -def getMetaData(): +def getMetaData() -> Dict[str, Any]: return { "version_upgrade": { # From To Upgrade function @@ -41,5 +46,5 @@ def getMetaData(): } } -def register(app): +def register(app: "Application") -> Dict[str, Any]: return { "version_upgrade": upgrade } diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/plugin.json b/plugins/VersionUpgrade/VersionUpgrade25to26/plugin.json index 3029539887..e1f0a47685 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/plugin.json @@ -1,8 +1,8 @@ { "name": "Version Upgrade 2.5 to 2.6", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Upgrades configurations from Cura 2.5 to Cura 2.6.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade26to27/VersionUpgrade26to27.py b/plugins/VersionUpgrade/VersionUpgrade26to27/VersionUpgrade26to27.py index dfa436e5bd..39e3dea4ed 100644 --- a/plugins/VersionUpgrade/VersionUpgrade26to27/VersionUpgrade26to27.py +++ b/plugins/VersionUpgrade/VersionUpgrade26to27/VersionUpgrade26to27.py @@ -3,6 +3,7 @@ import configparser #To parse the files we need to upgrade and write the new files. import io #To serialise configparser output to a string. +from typing import Dict, List, Tuple from UM.VersionUpgrade import VersionUpgrade @@ -61,7 +62,7 @@ _renamed_quality_profiles = { "um3_bb0.8_TPU_Not_Supported_Quality": "um3_bb0.8_TPU_Fast_print", "um3_bb0.8_TPU_Not_Supported_Superdraft_Quality": "um3_bb0.8_TPU_Superdraft_Print", -} +} # type: Dict[str, str] ## A collection of functions that convert the configuration of the user in Cura # 2.6 to a configuration for Cura 2.7. @@ -79,19 +80,19 @@ class VersionUpgrade26to27(VersionUpgrade): # \raises ValueError The format of the version number in the file is # incorrect. # \raises KeyError The format of the file is incorrect. - def getCfgVersion(self, serialised): + def getCfgVersion(self, serialised: str) -> int: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) return format_version * 1000000 + setting_version ## Upgrades a preferences file from version 2.6 to 2.7. # # \param serialised The serialised form of a preferences file. # \param filename The name of the file to upgrade. - def upgradePreferences(self, serialised, filename): - parser = configparser.ConfigParser(interpolation=None) + def upgradePreferences(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) # Update version numbers @@ -117,8 +118,8 @@ class VersionUpgrade26to27(VersionUpgrade): # # \param serialised The serialised form of a container file. # \param filename The name of the file to upgrade. - def upgradeOtherContainer(self, serialised, filename): - parser = configparser.ConfigParser(interpolation=None) + def upgradeOtherContainer(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) # Update version numbers @@ -139,7 +140,7 @@ class VersionUpgrade26to27(VersionUpgrade): # # \param serialised The serialised form of a container stack. # \param filename The name of the file to upgrade. - def upgradeStack(self, serialised, filename): + def upgradeStack(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) diff --git a/plugins/VersionUpgrade/VersionUpgrade26to27/__init__.py b/plugins/VersionUpgrade/VersionUpgrade26to27/__init__.py index 0e26ca8bbf..1952c9ceff 100644 --- a/plugins/VersionUpgrade/VersionUpgrade26to27/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade26to27/__init__.py @@ -1,11 +1,16 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Any, Dict, TYPE_CHECKING + from . import VersionUpgrade26to27 +if TYPE_CHECKING: + from UM.Application import Application + upgrade = VersionUpgrade26to27.VersionUpgrade26to27() -def getMetaData(): +def getMetaData() -> Dict[str, Any]: return { "version_upgrade": { # From To Upgrade function @@ -59,5 +64,5 @@ def getMetaData(): } } -def register(app): +def register(app: "Application") -> Dict[str, Any]: return { "version_upgrade": upgrade } diff --git a/plugins/VersionUpgrade/VersionUpgrade26to27/plugin.json b/plugins/VersionUpgrade/VersionUpgrade26to27/plugin.json index 225da67235..6cdbd64cbb 100644 --- a/plugins/VersionUpgrade/VersionUpgrade26to27/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade26to27/plugin.json @@ -1,8 +1,8 @@ { "name": "Version Upgrade 2.6 to 2.7", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Upgrades configurations from Cura 2.6 to Cura 2.7.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py b/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py index 5a141f1558..b594c3c6c4 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py @@ -1,9 +1,10 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import configparser #To parse preference files. import io #To serialise the preference files afterwards. import os +from typing import Dict, List, Tuple import urllib.parse import re @@ -11,7 +12,7 @@ from UM.VersionUpgrade import VersionUpgrade #We're inheriting from this. _renamed_themes = { "cura": "cura-light" -} +} # type: Dict[str, str] _renamed_i18n = { "7s": "en_7S", "de": "de_DE", @@ -28,7 +29,7 @@ _renamed_i18n = { "ptbr": "pt_BR", "ru": "ru_RU", "tr": "tr_TR" -} +} # type: Dict[str, str] class VersionUpgrade27to30(VersionUpgrade): @@ -43,19 +44,19 @@ class VersionUpgrade27to30(VersionUpgrade): # \raises ValueError The format of the version number in the file is # incorrect. # \raises KeyError The format of the file is incorrect. - def getCfgVersion(self, serialised): + def getCfgVersion(self, serialised: str) -> int: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) return format_version * 1000000 + setting_version ## Upgrades a preferences file from version 2.7 to 3.0. # # \param serialised The serialised form of a preferences file. # \param filename The name of the file to upgrade. - def upgradePreferences(self, serialised, filename): - parser = configparser.ConfigParser(interpolation=None) + def upgradePreferences(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) # Update version numbers @@ -100,8 +101,8 @@ class VersionUpgrade27to30(VersionUpgrade): # # \param serialised The serialised form of the container file. # \param filename The name of the file to upgrade. - def upgradeQualityChangesContainer(self, serialised, filename): - parser = configparser.ConfigParser(interpolation=None) + def upgradeQualityChangesContainer(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) # Update the skin pre-shrink settings: @@ -156,8 +157,8 @@ class VersionUpgrade27to30(VersionUpgrade): # # \param serialised The serialised form of the container file. # \param filename The name of the file to upgrade. - def upgradeOtherContainer(self, serialised, filename): - parser = configparser.ConfigParser(interpolation=None) + def upgradeOtherContainer(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) # Update the skin pre-shrink settings: @@ -185,7 +186,7 @@ class VersionUpgrade27to30(VersionUpgrade): # # \param serialised The serialised form of a container stack. # \param filename The name of the file to upgrade. - def upgradeStack(self, serialised, filename): + def upgradeStack(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation=None) parser.read_string(serialised) diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py b/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py index 4da7257b1c..bddc71a1e0 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py @@ -1,11 +1,16 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Any, Dict, TYPE_CHECKING + from . import VersionUpgrade27to30 +if TYPE_CHECKING: + from UM.Application import Application + upgrade = VersionUpgrade27to30.VersionUpgrade27to30() -def getMetaData(): +def getMetaData() -> Dict[str, Any]: return { "version_upgrade": { # From To Upgrade function @@ -51,5 +56,5 @@ def getMetaData(): } } -def register(app): +def register(app: "Application") -> Dict[str, Any]: return { "version_upgrade": upgrade } diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json b/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json index 9a139851ec..885d741a8c 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json @@ -1,8 +1,8 @@ { "name": "Version Upgrade 2.7 to 3.0", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Upgrades configurations from Cura 2.7 to Cura 3.0.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py index 399eb18b5d..f0b2e939b9 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py @@ -1,14 +1,15 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import configparser #To parse preference files. import io #To serialise the preference files afterwards. +from typing import Dict, List, Set, Tuple from UM.VersionUpgrade import VersionUpgrade #We're inheriting from this. # a list of all legacy "Not Supported" quality profiles -_OLD_NOT_SUPPORTED_PROFILES = [ +_OLD_NOT_SUPPORTED_PROFILES = { "um2p_pp_0.25_normal", "um2p_tpu_0.8_normal", "um3_bb0.4_ABS_Fast_Print", @@ -42,7 +43,7 @@ _OLD_NOT_SUPPORTED_PROFILES = [ "um3_bb0.8_PP_Superdraft_Print", "um3_bb0.8_TPU_Fast_print", "um3_bb0.8_TPU_Superdraft_Print", -] +} # type: Set[str] # Some containers have their specific empty containers, those need to be set correctly. @@ -51,13 +52,13 @@ _EMPTY_CONTAINER_DICT = { "2": "empty_quality", "3": "empty_material", "4": "empty_variant", -} +} # type: Dict[str, str] # Renamed definition files _RENAMED_DEFINITION_DICT = { "jellybox": "imade3d_jellybox", -} +} # type: Dict[str, str] class VersionUpgrade30to31(VersionUpgrade): @@ -72,18 +73,18 @@ class VersionUpgrade30to31(VersionUpgrade): # \raises ValueError The format of the version number in the file is # incorrect. # \raises KeyError The format of the file is incorrect. - def getCfgVersion(self, serialised): + def getCfgVersion(self, serialised: str) -> int: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) return format_version * 1000000 + setting_version ## Upgrades a preferences file from version 3.0 to 3.1. # # \param serialised The serialised form of a preferences file. # \param filename The name of the file to upgrade. - def upgradePreferences(self, serialised, filename): + def upgradePreferences(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) @@ -104,7 +105,7 @@ class VersionUpgrade30to31(VersionUpgrade): # # \param serialised The serialised form of the container file. # \param filename The name of the file to upgrade. - def upgradeInstanceContainer(self, serialised, filename): + def upgradeInstanceContainer(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) @@ -129,7 +130,7 @@ class VersionUpgrade30to31(VersionUpgrade): # # \param serialised The serialised form of a container stack. # \param filename The name of the file to upgrade. - def upgradeStack(self, serialised, filename): + def upgradeStack(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py b/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py index 7b2c213a31..c5cc851d6a 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py @@ -1,11 +1,16 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Any, Dict, TYPE_CHECKING + from . import VersionUpgrade30to31 +if TYPE_CHECKING: + from UM.Application import Application + upgrade = VersionUpgrade30to31.VersionUpgrade30to31() -def getMetaData(): +def getMetaData() -> Dict[str, Any]: return { "version_upgrade": { # From To Upgrade function @@ -55,5 +60,5 @@ def getMetaData(): } } -def register(app): +def register(app: "Application") -> Dict[str, Any]: return { "version_upgrade": upgrade } diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json b/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json index cf42b3f6cd..d5f22649c1 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json @@ -1,8 +1,8 @@ { "name": "Version Upgrade 3.0 to 3.1", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Upgrades configurations from Cura 3.0 to Cura 3.1.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade32to33/VersionUpgrade32to33.py b/plugins/VersionUpgrade/VersionUpgrade32to33/VersionUpgrade32to33.py index 18851b82c7..83cb15c864 100644 --- a/plugins/VersionUpgrade/VersionUpgrade32to33/VersionUpgrade32to33.py +++ b/plugins/VersionUpgrade/VersionUpgrade32to33/VersionUpgrade32to33.py @@ -3,6 +3,7 @@ import configparser #To parse preference files. import io #To serialise the preference files afterwards. +from typing import Dict, List, Tuple from UM.VersionUpgrade import VersionUpgrade #We're inheriting from this. @@ -51,22 +52,22 @@ _EXTRUDER_TO_POSITION = { "ultimaker_original_dual_2nd": 1, "vertex_k8400_dual_1st": 0, "vertex_k8400_dual_2nd": 1 -} +} # type: Dict[str, int] _RENAMED_QUALITY_PROFILES = { "low": "fast", "um2_low": "um2_fast" -} +} # type: Dict[str, str] _RENAMED_QUALITY_TYPES = { "low": "fast" -} +} # type: Dict[str, str] ## Upgrades configurations from the state they were in at version 3.2 to the # state they should be in at version 3.3. class VersionUpgrade32to33(VersionUpgrade): - temporary_group_name_counter = 1 + ## Gets the version number from a CFG file in Uranium's 3.2 format. # # Since the format may change, this is implemented for the 3.2 format only @@ -78,18 +79,18 @@ class VersionUpgrade32to33(VersionUpgrade): # \raises ValueError The format of the version number in the file is # incorrect. # \raises KeyError The format of the file is incorrect. - def getCfgVersion(self, serialised): + def getCfgVersion(self, serialised: str) -> int: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) return format_version * 1000000 + setting_version ## Upgrades a preferences file from version 3.2 to 3.3. # # \param serialised The serialised form of a preferences file. # \param filename The name of the file to upgrade. - def upgradePreferences(self, serialised, filename): + def upgradePreferences(self, serialised: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) @@ -117,7 +118,7 @@ class VersionUpgrade32to33(VersionUpgrade): # # \param serialised The serialised form of a container stack. # \param filename The name of the file to upgrade. - def upgradeStack(self, serialized, filename): + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialized) @@ -141,7 +142,7 @@ class VersionUpgrade32to33(VersionUpgrade): ## Upgrades non-quality-changes instance containers to have the new version # number. - def upgradeInstanceContainer(self, serialized, filename): + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialized) @@ -153,7 +154,7 @@ class VersionUpgrade32to33(VersionUpgrade): return [filename], [result.getvalue()] ## Upgrades a quality changes container to the new format. - def upgradeQualityChanges(self, serialized, filename): + def upgradeQualityChanges(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialized) @@ -182,7 +183,7 @@ class VersionUpgrade32to33(VersionUpgrade): return [filename], [result.getvalue()] ## Upgrades a variant container to the new format. - def upgradeVariants(self, serialized, filename): + def upgradeVariants(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialized) diff --git a/plugins/VersionUpgrade/VersionUpgrade32to33/__init__.py b/plugins/VersionUpgrade/VersionUpgrade32to33/__init__.py index 5073be772d..b55ea5ebaf 100644 --- a/plugins/VersionUpgrade/VersionUpgrade32to33/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade32to33/__init__.py @@ -1,11 +1,16 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Any, Dict, TYPE_CHECKING + from . import VersionUpgrade32to33 +if TYPE_CHECKING: + from UM.Application import Application + upgrade = VersionUpgrade32to33.VersionUpgrade32to33() -def getMetaData(): +def getMetaData() -> Dict[str, Any]: return { "version_upgrade": { # From To Upgrade function @@ -42,7 +47,7 @@ def getMetaData(): }, "user": { "get_version": upgrade.getCfgVersion, - "location": {"./user"} + "location": {"./user", "./materials/*"} }, "variant": { "get_version": upgrade.getCfgVersion, @@ -51,5 +56,5 @@ def getMetaData(): } } -def register(app): +def register(app: "Application") -> Dict[str, Any]: return { "version_upgrade": upgrade } \ No newline at end of file diff --git a/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json b/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json index f9cc968dae..eb489169e0 100644 --- a/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json @@ -1,8 +1,8 @@ { "name": "Version Upgrade 3.2 to 3.3", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Upgrades configurations from Cura 3.2 to Cura 3.3.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade33to34/VersionUpgrade33to34.py b/plugins/VersionUpgrade/VersionUpgrade33to34/VersionUpgrade33to34.py index e2241fd195..704ede02d6 100644 --- a/plugins/VersionUpgrade/VersionUpgrade33to34/VersionUpgrade33to34.py +++ b/plugins/VersionUpgrade/VersionUpgrade33to34/VersionUpgrade33to34.py @@ -3,17 +3,17 @@ import configparser #To parse preference files. import io #To serialise the preference files afterwards. +from typing import Dict, List, Tuple from UM.VersionUpgrade import VersionUpgrade #We're inheriting from this. _renamed_settings = { "infill_hollow": "infill_support_enabled" -} +} # type: Dict[str, str] ## Upgrades configurations from the state they were in at version 3.3 to the # state they should be in at version 3.4. class VersionUpgrade33to34(VersionUpgrade): - ## Gets the version number from a CFG file in Uranium's 3.3 format. # # Since the format may change, this is implemented for the 3.3 format only @@ -25,16 +25,16 @@ class VersionUpgrade33to34(VersionUpgrade): # \raises ValueError The format of the version number in the file is # incorrect. # \raises KeyError The format of the file is incorrect. - def getCfgVersion(self, serialised): + def getCfgVersion(self, serialised: str) -> int: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) return format_version * 1000000 + setting_version ## Upgrades instance containers to have the new version # number. - def upgradeInstanceContainer(self, serialized, filename): + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialized) diff --git a/plugins/VersionUpgrade/VersionUpgrade33to34/__init__.py b/plugins/VersionUpgrade/VersionUpgrade33to34/__init__.py index 8213f195d5..5fd757f843 100644 --- a/plugins/VersionUpgrade/VersionUpgrade33to34/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade33to34/__init__.py @@ -1,16 +1,22 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Any, Dict, TYPE_CHECKING + from . import VersionUpgrade33to34 +if TYPE_CHECKING: + from UM.Application import Application + upgrade = VersionUpgrade33to34.VersionUpgrade33to34() -def getMetaData(): +def getMetaData() -> Dict[str, Any]: return { "version_upgrade": { # From To Upgrade function ("definition_changes", 3000004): ("definition_changes", 4000004, upgrade.upgradeInstanceContainer), ("quality_changes", 3000004): ("quality_changes", 4000004, upgrade.upgradeInstanceContainer), + ("quality", 3000004): ("quality", 4000004, upgrade.upgradeInstanceContainer), ("user", 3000004): ("user", 4000004, upgrade.upgradeInstanceContainer), }, "sources": { @@ -22,6 +28,10 @@ def getMetaData(): "get_version": upgrade.getCfgVersion, "location": {"./quality_changes"} }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, "user": { "get_version": upgrade.getCfgVersion, "location": {"./user"} @@ -30,5 +40,5 @@ def getMetaData(): } -def register(app): +def register(app: "Application") -> Dict[str, Any]: return { "version_upgrade": upgrade } diff --git a/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json b/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json index f5ba7235d1..9649010643 100644 --- a/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json @@ -1,8 +1,8 @@ { "name": "Version Upgrade 3.3 to 3.4", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Upgrades configurations from Cura 3.3 to Cura 3.4.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade34to35/VersionUpgrade34to35.py b/plugins/VersionUpgrade/VersionUpgrade34to35/VersionUpgrade34to35.py index 9d59133036..8e45d7cf73 100644 --- a/plugins/VersionUpgrade/VersionUpgrade34to35/VersionUpgrade34to35.py +++ b/plugins/VersionUpgrade/VersionUpgrade34to35/VersionUpgrade34to35.py @@ -3,13 +3,14 @@ import configparser import io +from typing import Dict, List, Set, Tuple from UM.VersionUpgrade import VersionUpgrade -deleted_settings = {"prime_tower_wall_thickness", "dual_pre_wipe", "prime_tower_purge_volume"} +deleted_settings = {"prime_tower_wall_thickness", "dual_pre_wipe", "prime_tower_purge_volume"} # type: Set[str] -changed_settings = {'retraction_combing': 'noskin'} -updated_settings = {'retraction_combing': 'infill'} +changed_settings = {"retraction_combing": "noskin"} # type: Dict[str, str] +updated_settings = {"retraction_combing": "infill"} # type: Dict[str, str] _RENAMED_MATERIAL_PROFILES = { "dsm_arnitel2045_175_cartesio_0.25_mm": "dsm_arnitel2045_175_cartesio_0.25mm_thermoplastic_extruder", @@ -57,15 +58,14 @@ _RENAMED_MATERIAL_PROFILES = { "ultimaker_pva_cartesio_0.25_mm": "ultimaker_pva_cartesio_0.25mm_thermoplastic_extruder", "ultimaker_pva_cartesio_0.4_mm": "ultimaker_pva_cartesio_0.4mm_thermoplastic_extruder", "ultimaker_pva_cartesio_0.8_mm": "ultimaker_pva_cartesio_0.8mm_thermoplastic_extruder" -} +} # type: Dict[str, str] ## Upgrades configurations from the state they were in at version 3.4 to the # state they should be in at version 3.5. class VersionUpgrade34to35(VersionUpgrade): - - ## Gets the version number from a CFG file in Uranium's 3.3 format. + ## Gets the version number from a CFG file in Uranium's 3.4 format. # - # Since the format may change, this is implemented for the 3.3 format only + # Since the format may change, this is implemented for the 3.4 format only # and needs to be included in the version upgrade system rather than # globally in Uranium. # @@ -74,15 +74,15 @@ class VersionUpgrade34to35(VersionUpgrade): # \raises ValueError The format of the version number in the file is # incorrect. # \raises KeyError The format of the file is incorrect. - def getCfgVersion(self, serialised): + def getCfgVersion(self, serialised: str) -> int: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialised) format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. - setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) return format_version * 1000000 + setting_version ## Upgrades Preferences to have the new version number. - def upgradePreferences(self, serialized, filename): + def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialized) @@ -103,7 +103,7 @@ class VersionUpgrade34to35(VersionUpgrade): return [filename], [result.getvalue()] ## Upgrades stacks to have the new version number. - def upgradeStack(self, serialized, filename): + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialized) @@ -121,7 +121,7 @@ class VersionUpgrade34to35(VersionUpgrade): ## Upgrades instance containers to have the new version # number. - def upgradeInstanceContainer(self, serialized, filename): + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialized) @@ -147,7 +147,7 @@ class VersionUpgrade34to35(VersionUpgrade): parser.write(result) return [filename], [result.getvalue()] - def _resetConcentric3DInfillPattern(self, parser): + def _resetConcentric3DInfillPattern(self, parser: configparser.ConfigParser) -> None: if "values" not in parser: return @@ -161,5 +161,4 @@ class VersionUpgrade34to35(VersionUpgrade): if key not in parser["values"]: continue if parser["values"][key] == "concentric_3d": - del parser["values"][key] - + del parser["values"][key] \ No newline at end of file diff --git a/plugins/VersionUpgrade/VersionUpgrade34to35/__init__.py b/plugins/VersionUpgrade/VersionUpgrade34to35/__init__.py index de0fdccb7d..332bc827b9 100644 --- a/plugins/VersionUpgrade/VersionUpgrade34to35/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade34to35/__init__.py @@ -1,11 +1,16 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Any, Dict, TYPE_CHECKING + from . import VersionUpgrade34to35 +if TYPE_CHECKING: + from UM.Application import Application + upgrade = VersionUpgrade34to35.VersionUpgrade34to35() -def getMetaData(): +def getMetaData() -> Dict[str, Any]: return { "version_upgrade": { # From To Upgrade function @@ -13,6 +18,7 @@ def getMetaData(): ("definition_changes", 4000004): ("definition_changes", 4000005, upgrade.upgradeInstanceContainer), ("quality_changes", 4000004): ("quality_changes", 4000005, upgrade.upgradeInstanceContainer), + ("quality", 4000004): ("quality", 4000005, upgrade.upgradeInstanceContainer), ("user", 4000004): ("user", 4000005, upgrade.upgradeInstanceContainer), ("machine_stack", 4000004): ("machine_stack", 4000005, upgrade.upgradeStack), @@ -39,6 +45,10 @@ def getMetaData(): "get_version": upgrade.getCfgVersion, "location": {"./quality_changes"} }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, "user": { "get_version": upgrade.getCfgVersion, "location": {"./user"} @@ -47,5 +57,5 @@ def getMetaData(): } -def register(app): +def register(app: "Application") -> Dict[str, Any]: return { "version_upgrade": upgrade } diff --git a/plugins/VersionUpgrade/VersionUpgrade34to35/plugin.json b/plugins/VersionUpgrade/VersionUpgrade34to35/plugin.json index b73001b683..71b13ee5a9 100644 --- a/plugins/VersionUpgrade/VersionUpgrade34to35/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade34to35/plugin.json @@ -1,8 +1,8 @@ - { +{ "name": "Version Upgrade 3.4 to 3.5", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Upgrades configurations from Cura 3.4 to Cura 3.5.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade40to41/VersionUpgrade40to41.py b/plugins/VersionUpgrade/VersionUpgrade40to41/VersionUpgrade40to41.py new file mode 100644 index 0000000000..ac54b7c8e0 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade40to41/VersionUpgrade40to41.py @@ -0,0 +1,86 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import configparser +import io +from typing import Dict, List, Tuple + +from UM.VersionUpgrade import VersionUpgrade + +_renamed_quality_profiles = { + "gmax15plus_pla_dual_normal": "gmax15plus_global_dual_normal", + "gmax15plus_pla_dual_thick": "gmax15plus_global_dual_thick", + "gmax15plus_pla_dual_thin": "gmax15plus_global_dual_thin", + "gmax15plus_pla_dual_very_thick": "gmax15plus_global_dual_very_thick", + "gmax15plus_pla_normal": "gmax15plus_global_normal", + "gmax15plus_pla_thick": "gmax15plus_global_thick", + "gmax15plus_pla_thin": "gmax15plus_global_thin", + "gmax15plus_pla_very_thick": "gmax15plus_global_very_thick" +} # type: Dict[str, str] + +## Upgrades configurations from the state they were in at version 4.0 to the +# state they should be in at version 4.1. +class VersionUpgrade40to41(VersionUpgrade): + ## Gets the version number from a CFG file in Uranium's 4.0 format. + # + # Since the format may change, this is implemented for the 4.0 format only + # and needs to be included in the version upgrade system rather than + # globally in Uranium. + # + # \param serialised The serialised form of a CFG file. + # \return The version number stored in the CFG file. + # \raises ValueError The format of the version number in the file is + # incorrect. + # \raises KeyError The format of the file is incorrect. + def getCfgVersion(self, serialised: str) -> int: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialised) + format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) + return format_version * 1000000 + setting_version + + ## Upgrades instance containers to have the new version + # number. + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["general"]["version"] = "4" + parser["metadata"]["setting_version"] = "6" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades Preferences to have the new version number. + def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["general"]["version"] = "6" + if "metadata" not in parser: + parser["metadata"] = {} + parser["metadata"]["setting_version"] = "6" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades stacks to have the new version number. + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["general"]["version"] = "4" + parser["metadata"]["setting_version"] = "6" + + #Update the name of the quality profile. + if parser["containers"]["4"] in _renamed_quality_profiles: + parser["containers"]["4"] = _renamed_quality_profiles[parser["containers"]["4"]] + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] \ No newline at end of file diff --git a/plugins/VersionUpgrade/VersionUpgrade40to41/__init__.py b/plugins/VersionUpgrade/VersionUpgrade40to41/__init__.py new file mode 100644 index 0000000000..757a7a51c0 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade40to41/__init__.py @@ -0,0 +1,39 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Any, Dict, TYPE_CHECKING + +from . import VersionUpgrade40to41 + +if TYPE_CHECKING: + from UM.Application import Application + +upgrade = VersionUpgrade40to41.VersionUpgrade40to41() + +def getMetaData() -> Dict[str, Any]: + return { + "version_upgrade": { + # From To Upgrade function + ("machine_stack", 4000005): ("machine_stack", 4000006, upgrade.upgradeStack), + ("extruder_train", 4000005): ("extruder_train", 4000006, upgrade.upgradeStack), + ("preferences", 6000005): ("preferences", 6000006, upgrade.upgradePreferences), + ("definition_changes", 4000005): ("definition_changes", 4000006, upgrade.upgradeInstanceContainer), + ("quality_changes", 4000005): ("quality_changes", 4000006, upgrade.upgradeInstanceContainer), + ("quality", 4000005): ("quality", 4000006, upgrade.upgradeInstanceContainer), + ("user", 4000005): ("user", 4000006, upgrade.upgradeInstanceContainer), + }, + "sources": { + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + } + } + } + + +def register(app: "Application") -> Dict[str, Any]: + return { "version_upgrade": upgrade } diff --git a/plugins/VersionUpgrade/VersionUpgrade40to41/plugin.json b/plugins/VersionUpgrade/VersionUpgrade40to41/plugin.json new file mode 100644 index 0000000000..b1c6d75669 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade40to41/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Version Upgrade 4.0 to 4.1", + "author": "Ultimaker B.V.", + "version": "1.0.1", + "description": "Upgrades configurations from Cura 4.0 to Cura 4.1.", + "api": "6.0", + "i18n-catalog": "cura" +} diff --git a/plugins/X3DReader/plugin.json b/plugins/X3DReader/plugin.json index 9ee09e43df..1fc14104ed 100644 --- a/plugins/X3DReader/plugin.json +++ b/plugins/X3DReader/plugin.json @@ -1,8 +1,8 @@ { "name": "X3D Reader", "author": "Seva Alekseyev", - "version": "0.5.0", + "version": "1.0.1", "description": "Provides support for reading X3D files.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/XRayView/plugin.json b/plugins/XRayView/plugin.json index 576dec4656..71cc165b6c 100644 --- a/plugins/XRayView/plugin.json +++ b/plugins/XRayView/plugin.json @@ -1,8 +1,8 @@ { "name": "X-Ray View", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides the X-Ray view.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/plugins/XmlMaterialProfile/plugin.json b/plugins/XmlMaterialProfile/plugin.json index 4b2901c375..bb1db82fa4 100644 --- a/plugins/XmlMaterialProfile/plugin.json +++ b/plugins/XmlMaterialProfile/plugin.json @@ -1,8 +1,8 @@ { "name": "Material Profiles", "author": "Ultimaker B.V.", - "version": "1.0.0", + "version": "1.0.1", "description": "Provides capabilities to read and write XML-based material profiles.", - "api": 5, + "api": "6.0", "i18n-catalog": "cura" } diff --git a/resources/bundled_packages/cura.json b/resources/bundled_packages/cura.json index 8ec0c3d29d..99b8cd35a0 100644 --- a/resources/bundled_packages/cura.json +++ b/resources/bundled_packages/cura.json @@ -5,11 +5,11 @@ "package_type": "plugin", "display_name": "3MF Reader", "description": "Provides support for reading 3MF files.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -22,11 +22,11 @@ "package_type": "plugin", "display_name": "3MF Writer", "description": "Provides support for writing 3MF files.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -39,11 +39,11 @@ "package_type": "plugin", "display_name": "Change Log", "description": "Shows changes since latest checked version.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -56,11 +56,11 @@ "package_type": "plugin", "display_name": "CuraEngine Backend", "description": "Provides the link to the CuraEngine slicing backend.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -73,11 +73,11 @@ "package_type": "plugin", "display_name": "Cura Profile Reader", "description": "Provides support for importing Cura profiles.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -90,11 +90,11 @@ "package_type": "plugin", "display_name": "Cura Profile Writer", "description": "Provides support for exporting Cura profiles.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -107,11 +107,11 @@ "package_type": "plugin", "display_name": "Firmware Update Checker", "description": "Checks for firmware updates.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -124,11 +124,11 @@ "package_type": "plugin", "display_name": "Firmware Updater", "description": "Provides a machine actions for updating firmware.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -141,11 +141,11 @@ "package_type": "plugin", "display_name": "Compressed G-code Reader", "description": "Reads g-code from a compressed archive.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -158,11 +158,11 @@ "package_type": "plugin", "display_name": "Compressed G-code Writer", "description": "Writes g-code to a compressed archive.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -175,11 +175,11 @@ "package_type": "plugin", "display_name": "G-Code Profile Reader", "description": "Provides support for importing profiles from g-code files.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -192,8 +192,8 @@ "package_type": "plugin", "display_name": "G-Code Reader", "description": "Allows loading and displaying G-code files.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { "author_id": "VictorLarchenko", @@ -209,11 +209,11 @@ "package_type": "plugin", "display_name": "G-Code Writer", "description": "Writes g-code to a file.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -226,11 +226,11 @@ "package_type": "plugin", "display_name": "Image Reader", "description": "Enables ability to generate printable geometry from 2D image files.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -243,11 +243,11 @@ "package_type": "plugin", "display_name": "Legacy Cura Profile Reader", "description": "Provides support for importing profiles from legacy Cura versions.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -260,8 +260,8 @@ "package_type": "plugin", "display_name": "Machine Settings Action", "description": "Provides a way to change machine settings (such as build volume, nozzle size, etc.).", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { "author_id": "fieldOfView", @@ -277,11 +277,11 @@ "package_type": "plugin", "display_name": "Model Checker", "description": "Checks models and print configuration for possible printing issues and give suggestions.", - "package_version": "0.1.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -294,11 +294,11 @@ "package_type": "plugin", "display_name": "Monitor Stage", "description": "Provides a monitor stage in Cura.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -311,11 +311,11 @@ "package_type": "plugin", "display_name": "Per-Object Settings Tool", "description": "Provides the per-model settings.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -328,11 +328,11 @@ "package_type": "plugin", "display_name": "Post Processing", "description": "Extension that allows for user created scripts for post processing.", - "package_version": "2.2.0", - "sdk_version": 5, + "package_version": "2.2.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -345,11 +345,28 @@ "package_type": "plugin", "display_name": "Prepare Stage", "description": "Provides a prepare stage in Cura.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", + "display_name": "Ultimaker B.V.", + "email": "plugins@ultimaker.com", + "website": "https://ultimaker.com" + } + } + }, + "PreviewStage": { + "package_info": { + "package_id": "PreviewStage", + "package_type": "plugin", + "display_name": "Preview Stage", + "description": "Provides a preview stage in Cura.", + "package_version": "1.0.1", + "sdk_version": "6.0", + "website": "https://ultimaker.com", + "author": { + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -362,11 +379,11 @@ "package_type": "plugin", "display_name": "Removable Drive Output Device", "description": "Provides removable drive hotplugging and writing support.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -379,11 +396,11 @@ "package_type": "plugin", "display_name": "Simulation View", "description": "Provides the Simulation view.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -396,11 +413,11 @@ "package_type": "plugin", "display_name": "Slice Info", "description": "Submits anonymous slice info. Can be disabled through preferences.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -413,11 +430,11 @@ "package_type": "plugin", "display_name": "Solid View", "description": "Provides a normal solid mesh view.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -430,11 +447,11 @@ "package_type": "plugin", "display_name": "Support Eraser Tool", "description": "Creates an eraser mesh to block the printing of support in certain places.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -447,11 +464,11 @@ "package_type": "plugin", "display_name": "Toolbox", "description": "Find, manage and install new Cura packages.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -464,11 +481,11 @@ "package_type": "plugin", "display_name": "UFP Writer", "description": "Provides support for writing Ultimaker Format Packages.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -481,11 +498,11 @@ "package_type": "plugin", "display_name": "Ultimaker Machine Actions", "description": "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.).", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -498,11 +515,11 @@ "package_type": "plugin", "display_name": "UM3 Network Printing", "description": "Manages network connections to Ultimaker 3 printers.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -515,11 +532,11 @@ "package_type": "plugin", "display_name": "USB Printing", "description": "Accepts G-Code and sends them to a printer. Plugin can also update firmware.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.2", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -532,11 +549,11 @@ "package_type": "plugin", "display_name": "User Agreement", "description": "Ask the user once if he/she agrees with our license.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -549,11 +566,11 @@ "package_type": "plugin", "display_name": "Version Upgrade 2.1 to 2.2", "description": "Upgrades configurations from Cura 2.1 to Cura 2.2.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -566,11 +583,11 @@ "package_type": "plugin", "display_name": "Version Upgrade 2.2 to 2.4", "description": "Upgrades configurations from Cura 2.2 to Cura 2.4.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -583,11 +600,11 @@ "package_type": "plugin", "display_name": "Version Upgrade 2.5 to 2.6", "description": "Upgrades configurations from Cura 2.5 to Cura 2.6.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -600,11 +617,11 @@ "package_type": "plugin", "display_name": "Version Upgrade 2.6 to 2.7", "description": "Upgrades configurations from Cura 2.6 to Cura 2.7.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -617,11 +634,11 @@ "package_type": "plugin", "display_name": "Version Upgrade 2.7 to 3.0", "description": "Upgrades configurations from Cura 2.7 to Cura 3.0.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -634,11 +651,11 @@ "package_type": "plugin", "display_name": "Version Upgrade 3.0 to 3.1", "description": "Upgrades configurations from Cura 3.0 to Cura 3.1.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -651,11 +668,11 @@ "package_type": "plugin", "display_name": "Version Upgrade 3.2 to 3.3", "description": "Upgrades configurations from Cura 3.2 to Cura 3.3.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -668,11 +685,11 @@ "package_type": "plugin", "display_name": "Version Upgrade 3.3 to 3.4", "description": "Upgrades configurations from Cura 3.3 to Cura 3.4.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -685,11 +702,11 @@ "package_type": "plugin", "display_name": "Version Upgrade 3.4 to 3.5", "description": "Upgrades configurations from Cura 3.4 to Cura 3.5.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -702,8 +719,8 @@ "package_type": "plugin", "display_name": "X3D Reader", "description": "Provides support for reading X3D files.", - "package_version": "0.5.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { "author_id": "SevaAlekseyev", @@ -719,11 +736,11 @@ "package_type": "plugin", "display_name": "XML Material Profiles", "description": "Provides capabilities to read and write XML-based material profiles.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -736,11 +753,11 @@ "package_type": "plugin", "display_name": "X-Ray View", "description": "Provides the X-Ray view.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://ultimaker.com", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" @@ -753,8 +770,8 @@ "package_type": "material", "display_name": "Generic ABS", "description": "The generic ABS profile which other profiles can be based upon.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -771,8 +788,8 @@ "package_type": "material", "display_name": "Generic BAM", "description": "The generic BAM profile which other profiles can be based upon.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -789,8 +806,8 @@ "package_type": "material", "display_name": "Generic CFF CPE", "description": "The generic CFF CPE profile which other profiles can be based upon.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.1.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -807,8 +824,8 @@ "package_type": "material", "display_name": "Generic CFF PA", "description": "The generic CFF PA profile which other profiles can be based upon.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.1.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -825,8 +842,8 @@ "package_type": "material", "display_name": "Generic CPE", "description": "The generic CPE profile which other profiles can be based upon.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -843,8 +860,8 @@ "package_type": "material", "display_name": "Generic CPE+", "description": "The generic CPE+ profile which other profiles can be based upon.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -861,8 +878,8 @@ "package_type": "material", "display_name": "Generic GFF CPE", "description": "The generic GFF CPE profile which other profiles can be based upon.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.1.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -879,8 +896,8 @@ "package_type": "material", "display_name": "Generic GFF PA", "description": "The generic GFF PA profile which other profiles can be based upon.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.1.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -897,8 +914,8 @@ "package_type": "material", "display_name": "Generic HIPS", "description": "The generic HIPS profile which other profiles can be based upon.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -915,8 +932,8 @@ "package_type": "material", "display_name": "Generic Nylon", "description": "The generic Nylon profile which other profiles can be based upon.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -933,8 +950,8 @@ "package_type": "material", "display_name": "Generic PC", "description": "The generic PC profile which other profiles can be based upon.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -951,8 +968,8 @@ "package_type": "material", "display_name": "Generic PETG", "description": "The generic PETG profile which other profiles can be based upon.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -969,8 +986,8 @@ "package_type": "material", "display_name": "Generic PLA", "description": "The generic PLA profile which other profiles can be based upon.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -987,8 +1004,8 @@ "package_type": "material", "display_name": "Generic PP", "description": "The generic PP profile which other profiles can be based upon.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1005,8 +1022,8 @@ "package_type": "material", "display_name": "Generic PVA", "description": "The generic PVA profile which other profiles can be based upon.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1023,8 +1040,8 @@ "package_type": "material", "display_name": "Generic Tough PLA", "description": "The generic Tough PLA profile which other profiles can be based upon.", - "package_version": "1.0.1", - "sdk_version": 5, + "package_version": "1.0.2", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1041,8 +1058,8 @@ "package_type": "material", "display_name": "Generic TPU", "description": "The generic TPU profile which other profiles can be based upon.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1059,8 +1076,8 @@ "package_type": "material", "display_name": "Dagoma Chromatik PLA", "description": "Filament testé et approuvé pour les imprimantes 3D Dagoma. Chromatik est l'idéal pour débuter et suivre les tutoriels premiers pas. Il vous offre qualité et résistance pour chacune de vos impressions.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://dagoma.fr/boutique/filaments.html", "author": { "author_id": "Dagoma", @@ -1076,8 +1093,8 @@ "package_type": "material", "display_name": "FABtotum ABS", "description": "This material is easy to be extruded but it is not the simplest to use. It is one of the most used in 3D printing to get very well finished objects. It is not sustainable and its smoke can be dangerous if inhaled. The reason to prefer this filament to PLA is mainly because of its precision and mechanical specs. ABS (for plastic) stands for Acrylonitrile Butadiene Styrene and it is a thermoplastic which is widely used in everyday objects. It can be printed with any FFF 3D printer which can get to high temperatures as it must be extruded in a range between 220° and 245°, so it’s compatible with all versions of the FABtotum Personal fabricator.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=40", "author": { "author_id": "FABtotum", @@ -1093,8 +1110,8 @@ "package_type": "material", "display_name": "FABtotum Nylon", "description": "When 3D printing started this material was not listed among the extrudable filaments. It is flexible as well as resistant to tractions. It is well known for its uses in textile but also in industries which require a strong and flexible material. There are different kinds of Nylon: 3D printing mostly uses Nylon 6 and Nylon 6.6, which are the most common. It requires higher temperatures to be printed, so a 3D printer must be able to reach them (around 240°C): the FABtotum, of course, can.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=53", "author": { "author_id": "FABtotum", @@ -1110,8 +1127,8 @@ "package_type": "material", "display_name": "FABtotum PLA", "description": "It is the most common filament used for 3D printing. It is studied to be bio-degradable as it comes from corn starch’s sugar mainly. It is completely made of renewable sources and has no footprint on polluting. PLA stands for PolyLactic Acid and it is a thermoplastic that today is still considered the easiest material to be 3D printed. It can be extruded at lower temperatures: the standard range of FABtotum’s one is between 185° and 195°.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=39", "author": { "author_id": "FABtotum", @@ -1127,8 +1144,8 @@ "package_type": "material", "display_name": "FABtotum TPU Shore 98A", "description": "", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=66", "author": { "author_id": "FABtotum", @@ -1144,8 +1161,8 @@ "package_type": "material", "display_name": "Fiberlogy HD PLA", "description": "With our HD PLA you have many more options. You can use this material in two ways. Choose the one you like best. You can use it as a normal PLA and get prints characterized by a very good adhesion between the layers and high precision. You can also make your prints acquire similar properties to that of ABS – better impact resistance and high temperature resistance. All you need is an oven. Yes, an oven! By annealing our HD PLA in an oven, in accordance with the manual, you will avoid all the inconveniences of printing with ABS, such as unpleasant odour or hazardous fumes.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "http://fiberlogy.com/en/fiberlogy-filaments/filament-hd-pla/", "author": { "author_id": "Fiberlogy", @@ -1161,8 +1178,8 @@ "package_type": "material", "display_name": "Filo3D PLA", "description": "Fast, safe and reliable printing. PLA is ideal for the fast and reliable printing of parts and prototypes with a great surface quality.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://dagoma.fr", "author": { "author_id": "Dagoma", @@ -1178,8 +1195,8 @@ "package_type": "material", "display_name": "IMADE3D JellyBOX PETG", "description": "", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "http://shop.imade3d.com/filament.html", "author": { "author_id": "IMADE3D", @@ -1195,8 +1212,8 @@ "package_type": "material", "display_name": "IMADE3D JellyBOX PLA", "description": "", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "http://shop.imade3d.com/filament.html", "author": { "author_id": "IMADE3D", @@ -1212,8 +1229,8 @@ "package_type": "material", "display_name": "Octofiber PLA", "description": "PLA material from Octofiber.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://nl.octofiber.com/3d-printing-filament/pla.html", "author": { "author_id": "Octofiber", @@ -1229,8 +1246,8 @@ "package_type": "material", "display_name": "PolyFlex™ PLA", "description": "PolyFlex™ is a highly flexible yet easy to print 3D printing material. Featuring good elasticity and a large strain-to- failure, PolyFlex™ opens up a completely new realm of applications.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "http://www.polymaker.com/shop/polyflex/", "author": { "author_id": "Polymaker", @@ -1246,8 +1263,8 @@ "package_type": "material", "display_name": "PolyMax™ PLA", "description": "PolyMax™ PLA is a 3D printing material with excellent mechanical properties and printing quality. PolyMax™ PLA has an impact resistance of up to nine times that of regular PLA, and better overall mechanical properties than ABS.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "http://www.polymaker.com/shop/polymax/", "author": { "author_id": "Polymaker", @@ -1263,8 +1280,8 @@ "package_type": "material", "display_name": "PolyPlus™ PLA True Colour", "description": "PolyPlus™ PLA is a premium PLA designed for all desktop FDM/FFF 3D printers. It is produced with our patented Jam-Free™ technology that ensures consistent extrusion and prevents jams.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "http://www.polymaker.com/shop/polyplus-true-colour/", "author": { "author_id": "Polymaker", @@ -1280,8 +1297,8 @@ "package_type": "material", "display_name": "PolyWood™ PLA", "description": "PolyWood™ is a wood mimic printing material that contains no actual wood ensuring a clean Jam-Free™ printing experience.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "http://www.polymaker.com/shop/polywood/", "author": { "author_id": "Polymaker", @@ -1297,11 +1314,11 @@ "package_type": "material", "display_name": "Ultimaker ABS", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://ultimaker.com/products/materials/abs", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "materials@ultimaker.com", "website": "https://ultimaker.com", @@ -1316,11 +1333,11 @@ "package_type": "material", "display_name": "Ultimaker Breakaway", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://ultimaker.com/products/materials/breakaway", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "materials@ultimaker.com", "website": "https://ultimaker.com", @@ -1335,11 +1352,11 @@ "package_type": "material", "display_name": "Ultimaker CPE", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://ultimaker.com/products/materials/abs", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "materials@ultimaker.com", "website": "https://ultimaker.com", @@ -1354,11 +1371,11 @@ "package_type": "material", "display_name": "Ultimaker CPE+", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://ultimaker.com/products/materials/cpe", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "materials@ultimaker.com", "website": "https://ultimaker.com", @@ -1373,11 +1390,11 @@ "package_type": "material", "display_name": "Ultimaker Nylon", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://ultimaker.com/products/materials/abs", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "materials@ultimaker.com", "website": "https://ultimaker.com", @@ -1392,11 +1409,11 @@ "package_type": "material", "display_name": "Ultimaker PC", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.2", + "sdk_version": "6.0", "website": "https://ultimaker.com/products/materials/pc", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "materials@ultimaker.com", "website": "https://ultimaker.com", @@ -1411,11 +1428,11 @@ "package_type": "material", "display_name": "Ultimaker PLA", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://ultimaker.com/products/materials/abs", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "materials@ultimaker.com", "website": "https://ultimaker.com", @@ -1430,11 +1447,11 @@ "package_type": "material", "display_name": "Ultimaker PP", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://ultimaker.com/products/materials/pp", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "materials@ultimaker.com", "website": "https://ultimaker.com", @@ -1449,11 +1466,11 @@ "package_type": "material", "display_name": "Ultimaker PVA", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://ultimaker.com/products/materials/abs", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "materials@ultimaker.com", "website": "https://ultimaker.com", @@ -1468,11 +1485,11 @@ "package_type": "material", "display_name": "Ultimaker TPU 95A", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.1.0", - "sdk_version": 5, + "package_version": "1.2.1", + "sdk_version": "6.0", "website": "https://ultimaker.com/products/materials/tpu-95a", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "materials@ultimaker.com", "website": "https://ultimaker.com", @@ -1487,11 +1504,11 @@ "package_type": "material", "display_name": "Ultimaker Tough PLA", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.3", + "sdk_version": "6.0", "website": "https://ultimaker.com/products/materials/tough-pla", "author": { - "author_id": "Ultimaker", + "author_id": "UltimakerPackages", "display_name": "Ultimaker B.V.", "email": "materials@ultimaker.com", "website": "https://ultimaker.com", @@ -1506,8 +1523,8 @@ "package_type": "material", "display_name": "Vertex Delta ABS", "description": "ABS material and quality files for the Delta Vertex K8800.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://vertex3dprinter.eu", "author": { "author_id": "Velleman", @@ -1523,8 +1540,8 @@ "package_type": "material", "display_name": "Vertex Delta PET", "description": "ABS material and quality files for the Delta Vertex K8800.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://vertex3dprinter.eu", "author": { "author_id": "Velleman", @@ -1540,8 +1557,8 @@ "package_type": "material", "display_name": "Vertex Delta PLA", "description": "ABS material and quality files for the Delta Vertex K8800.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://vertex3dprinter.eu", "author": { "author_id": "Velleman", @@ -1557,8 +1574,8 @@ "package_type": "material", "display_name": "Vertex Delta TPU", "description": "ABS material and quality files for the Delta Vertex K8800.", - "package_version": "1.0.0", - "sdk_version": 5, + "package_version": "1.0.1", + "sdk_version": "6.0", "website": "https://vertex3dprinter.eu", "author": { "author_id": "Velleman", diff --git a/resources/definitions/alfawise_u20.def.json b/resources/definitions/alfawise_u20.def.json new file mode 100644 index 0000000000..de8525fa4d --- /dev/null +++ b/resources/definitions/alfawise_u20.def.json @@ -0,0 +1,93 @@ +{ + "name": "Alfawise U20", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Samuel Pinches", + "manufacturer": "Alfawise", + "file_formats": "text/x-gcode", + "preferred_quality_type": "fast", + "machine_extruder_trains": + { + "0": "alfawise_u20_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "Alfawise U20" + }, + "machine_start_gcode": { + "default_value": "; -- START GCODE --\nG21 ;set units to millimetres\nG90 ;set to absolute positioning\nM106 S0 ;set fan speed to zero (turned off)\nG28 ;home all axis\nG92 E0 ;zero the extruded length\nG1 Z1 F1000 ;move up slightly\nG1 X60.0 Z0 E9.0 F1000.0;intro line\nG1 X100.0 E21.5 F1000.0 ;continue line\nG92 E0 ;zero the extruded length again\n; -- end of START GCODE --" + }, + "machine_end_gcode": { + "default_value": "; -- END GCODE --\nM104 S0 ;turn off nozzle heater\nM140 S0 ;turn off bed heater\nG91 ;set to relative positioning\nG1 E-10 F300 ;retract the filament slightly\nG90 ;set to absolute positioning\nG28 X0 ;move to the X-axis origin (Home)\nG0 Y280 F600 ;bring the bed to the front for easy print removal\nM84 ;turn off stepper motors\n; -- end of END GCODE --" + }, + "machine_width": { + "default_value": 300 + }, + "machine_height": { + "default_value": 400 + }, + "machine_depth": { + "default_value": 300 + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_center_is_zero": { + "default_value": false + }, + "gantry_height": { + "default_value": 10 + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "material_diameter": { + "default_value": 1.75 + }, + "material_print_temperature": { + "default_value": 210 + }, + "material_bed_temperature": { + "default_value": 50 + }, + "layer_height_0": { + "default_value": 0.2 + }, + "wall_thickness": { + "default_value": 1.2 + }, + "speed_print": { + "default_value": 40 + }, + "speed_infill": { + "default_value": 40 + }, + "speed_wall": { + "default_value": 35 + }, + "speed_topbottom": { + "default_value": 35 + }, + "speed_travel": { + "default_value": 120 + }, + "speed_layer_0": { + "default_value": 20 + }, + "support_enable": { + "default_value": true + }, + "retraction_enable": { + "default_value": true + }, + "retraction_amount": { + "default_value": 5 + }, + "retraction_speed": { + "default_value": 45 + } + } +} diff --git a/resources/definitions/bibo2_dual.def.json b/resources/definitions/bibo2_dual.def.json new file mode 100644 index 0000000000..2036290ebd --- /dev/null +++ b/resources/definitions/bibo2_dual.def.json @@ -0,0 +1,92 @@ +{ + "id": "BIBO2 dual", + "version": 2, + "name": "BIBO2 dual", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "na", + "manufacturer": "BIBO", + "category": "Other", + "file_formats": "text/x-gcode", + "has_materials": true, + "machine_extruder_trains": { + "0": "bibo2_dual_extruder_0", + "1": "bibo2_dual_extruder_1" + }, + "first_start_actions": [ + "MachineSettingsAction" + ] + }, + "overrides": { + "machine_name": { + "default_value": "BIBO2 dual" + }, + "machine_width": { + "default_value": 214 + }, + "machine_height": { + "default_value": 160 + }, + "machine_depth": { + "default_value": 186 + }, + "machine_center_is_zero": { + "default_value": true + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_nozzle_heat_up_speed": { + "default_value": 2 + }, + "machine_nozzle_cool_down_speed": { + "default_value": 2 + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [ + -68.18, + 64.63 + ], + [ + -68.18, + -47.38 + ], + [ + 35.18, + 64.63 + ], + [ + 35.18, + -47.38 + ] + ] + }, + "gantry_height": { + "default_value": 12 + }, + "machine_use_extruder_offset_to_offset_coords": { + "default_value": true + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z2.0 F400 ;move the platform down 15mm\nT0\nG92 E0\nG28\nG1 Y0 F1200 E0\nG92 E0\nM117 BIBO Printing..." + }, + "machine_end_gcode": { + "default_value": ";End GCode\nM104 T0 S0 ;extruder heater off\nM104 T1 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91\nG1 Z1 F100 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-2 X-20 Y-20 F300 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + }, + "machine_extruder_count": { + "default_value": 2 + }, + "prime_tower_position_x": { + "default_value": 50 + }, + "prime_tower_position_y": { + "default_value": 50 + } + } +} + diff --git a/resources/definitions/cocoon_create_modelmaker.def.json b/resources/definitions/cocoon_create_modelmaker.def.json new file mode 100644 index 0000000000..22aa75d09e --- /dev/null +++ b/resources/definitions/cocoon_create_modelmaker.def.json @@ -0,0 +1,96 @@ +{ + "name": "Cocoon Create ModelMaker", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Samuel Pinches", + "manufacturer": "Cocoon Create", + "file_formats": "text/x-gcode", + "preferred_quality_type": "fine", + "machine_extruder_trains": + { + "0": "cocoon_create_modelmaker_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "Cocoon Create ModelMaker" + }, + "machine_start_gcode": { + "default_value": "; -- START GCODE --\nG21 ;set units to millimetres\nG90 ;set to absolute positioning\nM106 S0 ;set fan speed to zero (turned off)\nG28 ;home all axis\nG92 E0 ;zero the extruded length\nG1 Z1 F1000 ;move up slightly\nG1 X60.0 Z0 E9.0 F1000.0;intro line\nG1 X100.0 E21.5 F1000.0 ;continue line\nG92 E0 ;zero the extruded length again\n; -- end of START GCODE --" + }, + "machine_end_gcode": { + "default_value": "; -- END GCODE --\nM104 S0 ;turn off nozzle heater\nG91 ;set to relative positioning\nG1 E-10 F300 ;retract the filament slightly\nG90 ;set to absolute positioning\nG28 X0 Y0 ;move to the XY-axis origin (Home)\nM84 ;turn off stepper motors\n; -- end of END GCODE --" + }, + "machine_width": { + "default_value": 120 + }, + "machine_height": { + "default_value": 100 + }, + "machine_depth": { + "default_value": 135 + }, + "machine_heated_bed": { + "default_value": false + }, + "machine_center_is_zero": { + "default_value": false + }, + "gantry_height": { + "default_value": 10 + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "material_diameter": { + "default_value": 1.75 + }, + "material_print_temperature": { + "default_value": 220 + }, + "layer_height": { + "default_value": 0.10 + }, + "layer_height_0": { + "default_value": 0.2 + }, + "wall_thickness": { + "default_value": 1.2 + }, + "top_bottom_thickness": { + "default_value": 0.6 + }, + "speed_print": { + "default_value": 40 + }, + "speed_infill": { + "default_value": 40 + }, + "speed_wall": { + "default_value": 35 + }, + "speed_topbottom": { + "default_value": 35 + }, + "speed_travel": { + "default_value": 70 + }, + "speed_layer_0": { + "default_value": 20 + }, + "support_enable": { + "default_value": true + }, + "retraction_enable": { + "default_value": true + }, + "retraction_amount": { + "default_value": 7 + }, + "retraction_speed": { + "default_value": 40 + } + } +} diff --git a/resources/definitions/fdmextruder.def.json b/resources/definitions/fdmextruder.def.json index 19c9e92d18..0af1e68075 100644 --- a/resources/definitions/fdmextruder.def.json +++ b/resources/definitions/fdmextruder.def.json @@ -78,7 +78,7 @@ "machine_extruder_start_code": { "label": "Extruder Start G-Code", - "description": "Start g-code to execute whenever turning the extruder on.", + "description": "Start g-code to execute when switching to this extruder.", "type": "str", "default_value": "", "settable_per_mesh": false, @@ -124,7 +124,7 @@ "machine_extruder_end_code": { "label": "Extruder End G-Code", - "description": "End g-code to execute whenever turning the extruder off.", + "description": "End g-code to execute when switching away from this extruder.", "type": "str", "default_value": "", "settable_per_mesh": false, @@ -189,7 +189,7 @@ "settable_per_mesh": false, "settable_per_extruder": true, "settable_per_meshgroup": false, - "setttable_globally": false + "settable_globally": false } } }, diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index bc6e8a40f4..f39e267354 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2406,7 +2406,7 @@ "switch_extruder_retraction_amount": { "label": "Nozzle Switch Retraction Distance", - "description": "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone.", + "description": "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone.", "type": "float", "unit": "mm", "enabled": "retraction_enable", @@ -3385,7 +3385,7 @@ "retraction_combing": { "label": "Combing Mode", - "description": "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases.", + "description": "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill.", "type": "enum", "options": { @@ -4139,6 +4139,20 @@ "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false }, + "minimum_support_area": + { + "label": "Minimum Support Area", + "description": "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated.", + "unit": "mm²", + "type": "float", + "default_value": 0.0, + "minimum_value": "0", + "enabled": "support_enable", + "limit_to_extruder": "support_infill_extruder_nr", + "settable_per_mesh": true, + "fabricate_enabled": true, + "intermediate_enabled": true + }, "support_interface_enable": { "label": "Enable Support Interface", @@ -4378,6 +4392,94 @@ } } }, + "minimum_interface_area": + { + "label": "Minimum Support Interface Area", + "description": "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated.", + "unit": "mm²", + "type": "float", + "default_value": 1.0, + "minimum_value": "0", + "minimum_value_warning": "minimum_support_area", + "limit_to_extruder": "support_interface_extruder_nr", + "enabled": "support_interface_enable and support_enable", + "settable_per_mesh": true, + "children": + { + "minimum_roof_area": + { + "label": "Minimum Support Roof Area", + "description": "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated.", + "unit": "mm²", + "type": "float", + "default_value": 1.0, + "value": "extruderValue(support_roof_extruder_nr, 'minimum_interface_area')", + "minimum_value": "0", + "minimum_value_warning": "minimum_support_area", + "limit_to_extruder": "support_roof_extruder_nr", + "enabled": "support_roof_enable and support_enable", + "settable_per_mesh": true + }, + "minimum_bottom_area": + { + "label": "Minimum Support Floor Area", + "description": "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated.", + "unit": "mm²", + "type": "float", + "default_value": 1.0, + "value": "extruderValue(support_bottom_extruder_nr, 'minimum_interface_area')", + "minimum_value": "0", + "minimum_value_warning": "minimum_support_area", + "limit_to_extruder": "support_bottom_extruder_nr", + "enabled": "support_bottom_enable and support_enable", + "settable_per_mesh": true + } + } + }, + "support_interface_offset": + { + "label": "Support Interface Horizontal Expansion", + "description": "Amount of offset applied to the support interface polygons.", + "unit": "mm", + "type": "float", + "default_value": 0.0, + "maximum_value": "extruderValue(support_extruder_nr, 'support_offset')", + "limit_to_extruder": "support_interface_extruder_nr", + "enabled": "support_interface_enable and (support_enable or support_tree_enable)", + "settable_per_mesh": false, + "settable_per_extruder": true, + "children": + { + "support_roof_offset": + { + "label": "Support Roof Horizontal Expansion", + "description": "Amount of offset applied to the roofs of the support.", + "unit": "mm", + "type": "float", + "default_value": 0.0, + "value": "extruderValue(support_roof_extruder_nr, 'support_interface_offset')", + "maximum_value": "extruderValue(support_extruder_nr, 'support_offset')", + "limit_to_extruder": "support_roof_extruder_nr", + "enabled": "support_roof_enable and (support_enable or support_tree_enable)", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "support_bottom_offset": + { + "label": "Support Floor Horizontal Expansion", + "description": "Amount of offset applied to the floors of the support.", + "unit": "mm", + "type": "float", + "default_value": 0.0, + "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_offset')", + "maximum_value": "extruderValue(support_extruder_nr, 'support_offset')", + "limit_to_extruder": "support_bottom_extruder_nr", + "enabled": "support_bottom_enable and (support_enable or support_tree_enable)", + "settable_per_mesh": false, + "settable_per_extruder": true + } + } + }, "support_fan_enable": { "label": "Fan Speed Override", diff --git a/resources/definitions/gmax15plus.def.json b/resources/definitions/gmax15plus.def.json index 16695714f4..069b8be999 100644 --- a/resources/definitions/gmax15plus.def.json +++ b/resources/definitions/gmax15plus.def.json @@ -14,19 +14,24 @@ "has_variants": true, "variants_name": "Hotend", "preferred_variant_name": "0.5mm E3D (Default)", + "preferred_quality_type": "gmax15plus_global_normal", "machine_extruder_trains": { "0": "gmax15plus_extruder_0" } + + }, "overrides": { - "machine_extruder_count": { "default_value": 1 }, + "machine_extruder_count": { "default_value": 1 }, "machine_name": { "default_value": "gMax 1.5 Plus" }, "machine_heated_bed": { "default_value": false }, "machine_width": { "default_value": 406 }, "machine_depth": { "default_value": 406 }, "machine_height": { "default_value": 533 }, "machine_center_is_zero": { "default_value": false }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_size": { "default_value": 0.5 }, "layer_height": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.3 }, "retraction_amount": { "default_value": 1 }, @@ -43,10 +48,10 @@ "machine_max_jerk_z": { "default_value": 0.4 }, "machine_max_jerk_e": { "default_value": 5.0 }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, - "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 ;Home X/Y/Z\nG29 ; Bed level\nM104 S{material_print_temperature} ; Preheat\nM109 S{material_print_temperature} ; Preheat\nG91 ;relative positioning\nG90 ;absolute positioning\nG1 Z25.0 F9000 ;raise nozzle 25mm\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." }, + "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home X/Y/Z\nM104 S{material_print_temperature} ; Preheat\nM109 S{material_print_temperature} ; Preheat\nG91 ;relative positioning\nG90 ;absolute positioning\nG1 Z25.0 F9000 ;raise nozzle 25mm\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." }, "machine_end_gcode": { "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" }, - "material_print_temperature": { "default_value": 202 }, - "wall_thickness": { "default_value": 1 }, + "material_print_temperature": { "default_value": 202 }, + "wall_thickness": { "default_value": 1 }, "top_bottom_thickness": { "default_value": 1 }, "bottom_thickness": { "default_value": 1 } } diff --git a/resources/definitions/gmax15plus_dual.def.json b/resources/definitions/gmax15plus_dual.def.json index 5972061933..0264ef5977 100644 --- a/resources/definitions/gmax15plus_dual.def.json +++ b/resources/definitions/gmax15plus_dual.def.json @@ -10,24 +10,26 @@ "category": "Other", "file_formats": "text/x-gcode", "platform": "gmax_1-5_xt-plus_s3d_full model_150707.stl", - "has_variants": true, - "has_machine_quality": true, - "variants_name": "Hotend", - "preferred_variant_name": "0.5mm E3D (Default)", - "machine_extruder_trains": { - "0": "gmax15plus_dual_extruder_0", - "1": "gmax15plus_dual_extruder_1" - } + "has_variants": true, + "variants_name": "Hotend", + "preferred_variant_name": "0.5mm E3D (Default)", + "preferred_quality_type": "gmax15plus_global_dual_normal", + "machine_extruder_trains": { + "0": "gmax15plus_dual_extruder_0", + "1": "gmax15plus_dual_extruder_1" + } }, "overrides": { "machine_name": { "default_value": "gMax 1.5 Plus Dual Extruder" }, - "machine_extruder_count": { "default_value": 2 }, + "machine_extruder_count": { "default_value": 2 }, "machine_heated_bed": { "default_value": false }, "machine_width": { "default_value": 406 }, "machine_depth": { "default_value": 406 }, "machine_height": { "default_value": 533 }, "machine_center_is_zero": { "default_value": false }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_size": { "default_value": 0.5 }, "layer_height": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.3 }, "retraction_amount": { "default_value": 1 }, @@ -44,10 +46,10 @@ "machine_max_jerk_z": { "default_value": 0.4 }, "machine_max_jerk_e": { "default_value": 5.0 }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, - "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 ;Home X/Y/Z\nG29 ; Bed level\nM104 S{material_print_temperature} T0 ; Preheat Left Extruder\nM104 S{material_print_temperature} T1 ; Preheat Right Extruder\nM109 S{material_print_temperature} T0 ; Preheat Left Extruder\nM109 S{material_print_temperature} T1 ; Preheat Right Extruder\nG91 ;relative positioning\nG90 ;absolute positioning\nM218 T1 X34.3 Y0; Set 2nd extruder offset. This can be changed later if needed\nG1 Z25.0 F9000 ;raise nozzle 25mm\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." }, + "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home X/Y/Z\nM104 S{material_print_temperature} T0 ; Preheat Left Extruder\nM104 S{material_print_temperature} T1 ; Preheat Right Extruder\nM109 S{material_print_temperature} T0 ; Preheat Left Extruder\nM109 S{material_print_temperature} T1 ; Preheat Right Extruder\nG91 ;relative positioning\nG90 ;absolute positioning\nM218 T1 X34.3 Y0; Set 2nd extruder offset. This can be changed later if needed\nG1 Z25.0 F9000 ;raise nozzle 25mm\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." }, "machine_end_gcode": { "default_value": "M104 S0 T0;Left extruder off\nM104 S0 T1; Right extruder off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" }, - "material_print_temperature": { "default_value": 202 }, - "wall_thickness": { "default_value": 1 }, + "material_print_temperature": { "default_value": 202 }, + "wall_thickness": { "default_value": 1 }, "top_bottom_thickness": { "default_value": 1 }, "bottom_thickness": { "default_value": 1 } } diff --git a/resources/definitions/jgaurora_a1.def.json b/resources/definitions/jgaurora_a1.def.json new file mode 100644 index 0000000000..b9a921c311 --- /dev/null +++ b/resources/definitions/jgaurora_a1.def.json @@ -0,0 +1,93 @@ +{ + "name": "JGAurora A1", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Samuel Pinches", + "manufacturer": "JGAurora", + "file_formats": "text/x-gcode", + "preferred_quality_type": "fast", + "machine_extruder_trains": + { + "0": "jgaurora_a1_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "JGAurora A1" + }, + "machine_start_gcode": { + "default_value": "; -- START GCODE --\nG21 ;set units to millimetres\nG90 ;set to absolute positioning\nM106 S0 ;set fan speed to zero (turned off)\nG28 ;home all axis\nM420 S1 ;turn on mesh bed levelling if enabled in firmware\nG92 E0 ;zero the extruded length\nG1 Z1 F1000 ;move up slightly\nG1 X60.0 Z0 E9.0 F1000.0;intro line\nG1 X100.0 E21.5 F1000.0 ;continue line\nG92 E0 ;zero the extruded length again\n; -- end of START GCODE --" + }, + "machine_end_gcode": { + "default_value": "; -- END GCODE --\nM104 S0 ;turn off nozzle heater\nM140 S0 ;turn off bed heater\nG91 ;set to relative positioning\nG1 E-10 F300 ;retract the filament slightly\nG90 ;set to absolute positioning\nG28 X0 ;move to the X-axis origin (Home)\nG0 Y280 F600 ;bring the bed to the front for easy print removal\nM84 ;turn off stepper motors\n; -- end of END GCODE --" + }, + "machine_width": { + "default_value": 300 + }, + "machine_height": { + "default_value": 300 + }, + "machine_depth": { + "default_value": 300 + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_center_is_zero": { + "default_value": false + }, + "gantry_height": { + "default_value": 10 + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "material_diameter": { + "default_value": 1.75 + }, + "material_print_temperature": { + "default_value": 215 + }, + "material_bed_temperature": { + "default_value": 67 + }, + "layer_height_0": { + "default_value": 0.12 + }, + "wall_thickness": { + "default_value": 1.2 + }, + "speed_print": { + "default_value": 40 + }, + "speed_infill": { + "default_value": 40 + }, + "speed_wall": { + "default_value": 35 + }, + "speed_topbottom": { + "default_value": 35 + }, + "speed_travel": { + "default_value": 120 + }, + "speed_layer_0": { + "default_value": 12 + }, + "support_enable": { + "default_value": true + }, + "retraction_enable": { + "default_value": true + }, + "retraction_amount": { + "default_value": 6 + }, + "retraction_speed": { + "default_value": 40 + } + } +} diff --git a/resources/definitions/jgaurora_a5.def.json b/resources/definitions/jgaurora_a5.def.json new file mode 100644 index 0000000000..d84a8440e6 --- /dev/null +++ b/resources/definitions/jgaurora_a5.def.json @@ -0,0 +1,95 @@ +{ + "name": "JGAurora A5 & A5S", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Samuel Pinches", + "manufacturer": "JGAurora", + "file_formats": "text/x-gcode", + "platform": "jgaurora_a5.stl", + "platform_offset": [-242, -101, 273], + "preferred_quality_type": "fast", + "machine_extruder_trains": + { + "0": "jgaurora_a5_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "JGAurora A5 & A5S" + }, + "machine_start_gcode": { + "default_value": "; -- START GCODE --\nG21 ;set units to millimetres\nG90 ;set to absolute positioning\nM106 S0 ;set fan speed to zero (turned off)\nG28 ;home all axis\nM420 S1 ;turn on mesh bed levelling if enabled in firmware\nG92 E0 ;zero the extruded length\nG1 Z1 F1000 ;move up slightly\nG1 X60.0 Z0 E9.0 F1000.0;intro line\nG1 X100.0 E21.5 F1000.0 ;continue line\nG92 E0 ;zero the extruded length again\n; -- end of START GCODE --" + }, + "machine_end_gcode": { + "default_value": "; -- END GCODE --\nM104 S0 ;turn off nozzle heater\nM140 S0 ;turn off bed heater\nG91 ;set to relative positioning\nG1 E-10 F300 ;retract the filament slightly\nG90 ;set to absolute positioning\nG28 X0 ;move to the X-axis origin (Home)\nG0 Y280 F600 ;bring the bed to the front for easy print removal\nM84 ;turn off stepper motors\n; -- end of END GCODE --" + }, + "machine_width": { + "default_value": 300 + }, + "machine_height": { + "default_value": 320 + }, + "machine_depth": { + "default_value": 300 + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_center_is_zero": { + "default_value": false + }, + "gantry_height": { + "default_value": 10 + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "material_diameter": { + "default_value": 1.75 + }, + "material_print_temperature": { + "default_value": 215 + }, + "material_bed_temperature": { + "default_value": 67 + }, + "layer_height_0": { + "default_value": 0.12 + }, + "wall_thickness": { + "default_value": 1.2 + }, + "speed_print": { + "default_value": 40 + }, + "speed_infill": { + "default_value": 40 + }, + "speed_wall": { + "default_value": 35 + }, + "speed_topbottom": { + "default_value": 35 + }, + "speed_travel": { + "default_value": 120 + }, + "speed_layer_0": { + "default_value": 12 + }, + "support_enable": { + "default_value": true + }, + "retraction_enable": { + "default_value": true + }, + "retraction_amount": { + "default_value": 8 + }, + "retraction_speed": { + "default_value": 45 + } + } +} diff --git a/resources/definitions/jgaurora_z_603s.def.json b/resources/definitions/jgaurora_z_603s.def.json new file mode 100644 index 0000000000..3a78585240 --- /dev/null +++ b/resources/definitions/jgaurora_z_603s.def.json @@ -0,0 +1,93 @@ +{ + "name": "JGAurora Z-603S", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Samuel Pinches", + "manufacturer": "JGAurora", + "file_formats": "text/x-gcode", + "preferred_quality_type": "fast", + "machine_extruder_trains": + { + "0": "jgaurora_z_603s_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "JGAurora Z-603S" + }, + "machine_start_gcode": { + "default_value": "; -- START GCODE --\nG21 ;set units to millimetres\nG90 ;set to absolute positioning\nM106 S0 ;set fan speed to zero (turned off)\nG28 ;home all axis\nM420 S1 ;turn on mesh bed levelling if enabled in firmware\nG92 E0 ;zero the extruded length\nG1 Z1 F1000 ;move up slightly\nG1 X60.0 Z0 E9.0 F1000.0;intro line\nG1 X100.0 E21.5 F1000.0 ;continue line\nG92 E0 ;zero the extruded length again\n; -- end of START GCODE --" + }, + "machine_end_gcode": { + "default_value": "; -- END GCODE --\nM104 S0 ;turn off nozzle heater\nM140 S0 ;turn off bed heater\nG91 ;set to relative positioning\nG1 E-10 F300 ;retract the filament slightly\nG90 ;set to absolute positioning\nG28 X0 ;move to the X-axis origin (Home)\nG0 Y280 F600 ;bring the bed to the front for easy print removal\nM84 ;turn off stepper motors\n; -- end of END GCODE --" + }, + "machine_width": { + "default_value": 280 + }, + "machine_height": { + "default_value": 175 + }, + "machine_depth": { + "default_value": 180 + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_center_is_zero": { + "default_value": false + }, + "gantry_height": { + "default_value": 10 + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "material_diameter": { + "default_value": 1.75 + }, + "material_print_temperature": { + "default_value": 210 + }, + "material_bed_temperature": { + "default_value": 55 + }, + "layer_height_0": { + "default_value": 0.2 + }, + "wall_thickness": { + "default_value": 1.2 + }, + "speed_print": { + "default_value": 60 + }, + "speed_infill": { + "default_value": 60 + }, + "speed_wall": { + "default_value": 30 + }, + "speed_topbottom": { + "default_value": 45 + }, + "speed_travel": { + "default_value": 125 + }, + "speed_layer_0": { + "default_value": 20 + }, + "support_enable": { + "default_value": true + }, + "retraction_enable": { + "default_value": true + }, + "retraction_amount": { + "default_value": 5 + }, + "retraction_speed": { + "default_value": 50 + } + } +} diff --git a/resources/definitions/ultimaker_original_plus.def.json b/resources/definitions/ultimaker_original_plus.def.json index 5ad7ae66e8..bdb8a3d788 100644 --- a/resources/definitions/ultimaker_original_plus.def.json +++ b/resources/definitions/ultimaker_original_plus.def.json @@ -16,7 +16,8 @@ { "0": "ultimaker_original_plus_extruder_0" }, - "firmware_file": "MarlinUltimaker-UMOP-{baudrate}.hex" + "firmware_file": "MarlinUltimaker-UMOP-{baudrate}.hex", + "firmware_hbk_file": "MarlinUltimaker-UMOP-{baudrate}.hex" }, "overrides": { diff --git a/resources/definitions/wanhao_d4s.def.json b/resources/definitions/wanhao_d4s.def.json index 8788353e92..c1807923c6 100644 --- a/resources/definitions/wanhao_d4s.def.json +++ b/resources/definitions/wanhao_d4s.def.json @@ -39,10 +39,10 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{travel_speed} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{travel_speed} \n ;Put printing message on LCD screen\n M117 Printing..." + "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{speed_travel} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{speed_travel} \n ;Put printing message on LCD screen\n M117 Printing..." }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" + "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" } } } diff --git a/resources/definitions/wanhao_d6.def.json b/resources/definitions/wanhao_d6.def.json index 7ca3031124..c8a690d02c 100644 --- a/resources/definitions/wanhao_d6.def.json +++ b/resources/definitions/wanhao_d6.def.json @@ -42,10 +42,10 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{travel_speed} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{travel_speed} \n ;Put printing message on LCD screen\n M117 Printing..." + "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{speed_travel} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{speed_travel} \n ;Put printing message on LCD screen\n M117 Printing..." }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" + "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" } } } diff --git a/resources/definitions/wanhao_d6_plus.def.json b/resources/definitions/wanhao_d6_plus.def.json index f17b58db85..b3b5ed9b0a 100644 --- a/resources/definitions/wanhao_d6_plus.def.json +++ b/resources/definitions/wanhao_d6_plus.def.json @@ -39,10 +39,10 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{travel_speed} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{travel_speed} \n ;Put printing message on LCD screen\n M117 Printing..." + "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{speed_travel} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{speed_travel} \n ;Put printing message on LCD screen\n M117 Printing..." }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" + "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" } } } diff --git a/resources/definitions/wanhao_duplicator5S.def.json b/resources/definitions/wanhao_duplicator5S.def.json index 1d29b90249..b27a13fda8 100644 --- a/resources/definitions/wanhao_duplicator5S.def.json +++ b/resources/definitions/wanhao_duplicator5S.def.json @@ -42,10 +42,10 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{travel_speed} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{travel_speed} \n ;Put printing message on LCD screen\n M117 Printing..." + "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{speed_travel} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{speed_travel} \n ;Put printing message on LCD screen\n M117 Printing..." }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" + "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" } } } diff --git a/resources/definitions/wanhao_duplicator5Smini.def.json b/resources/definitions/wanhao_duplicator5Smini.def.json index e7f9359cf1..e3ef0b92fe 100644 --- a/resources/definitions/wanhao_duplicator5Smini.def.json +++ b/resources/definitions/wanhao_duplicator5Smini.def.json @@ -39,10 +39,10 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{travel_speed} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{travel_speed} \n ;Put printing message on LCD screen\n M117 Printing..." + "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{speed_travel} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{speed_travel} \n ;Put printing message on LCD screen\n M117 Printing..." }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" + "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" } } } diff --git a/resources/definitions/wanhao_i3.def.json b/resources/definitions/wanhao_i3.def.json index 15121f8b8b..42b19c8748 100644 --- a/resources/definitions/wanhao_i3.def.json +++ b/resources/definitions/wanhao_i3.def.json @@ -39,10 +39,10 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{travel_speed} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{travel_speed} \n ;Put printing message on LCD screen\n M117 Printing..." + "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{speed_travel} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{speed_travel} \n ;Put printing message on LCD screen\n M117 Printing..." }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" + "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" } } } diff --git a/resources/definitions/wanhao_i3mini.def.json b/resources/definitions/wanhao_i3mini.def.json index 057fca81a6..0c70391c27 100644 --- a/resources/definitions/wanhao_i3mini.def.json +++ b/resources/definitions/wanhao_i3mini.def.json @@ -39,10 +39,10 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{travel_speed} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{travel_speed} \n ;Put printing message on LCD screen\n M117 Printing..." + "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{speed_travel} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{speed_travel} \n ;Put printing message on LCD screen\n M117 Printing..." }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" + "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" } } } diff --git a/resources/definitions/wanhao_i3plus.def.json b/resources/definitions/wanhao_i3plus.def.json index 2b705c6ff5..e454a40ae1 100644 --- a/resources/definitions/wanhao_i3plus.def.json +++ b/resources/definitions/wanhao_i3plus.def.json @@ -39,10 +39,10 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{travel_speed} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{travel_speed} \n ;Put printing message on LCD screen\n M117 Printing..." + "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{speed_travel} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{speed_travel} \n ;Put printing message on LCD screen\n M117 Printing..." }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" + "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" } } } diff --git a/resources/extruders/alfawise_u20_extruder_0.def.json b/resources/extruders/alfawise_u20_extruder_0.def.json new file mode 100644 index 0000000000..2fbe3f1772 --- /dev/null +++ b/resources/extruders/alfawise_u20_extruder_0.def.json @@ -0,0 +1,16 @@ +{ + "id": "alfawise_u20_extruder_0", + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "alfawise_u20", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} \ No newline at end of file diff --git a/resources/extruders/bibo2_dual_extruder_0.def.json b/resources/extruders/bibo2_dual_extruder_0.def.json new file mode 100644 index 0000000000..f83801fa0c --- /dev/null +++ b/resources/extruders/bibo2_dual_extruder_0.def.json @@ -0,0 +1,46 @@ +{ + "id": "BIBO1", + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "BIBO2 dual", + "position": "0" + }, + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_offset_x": { + "default_value": 0.0 + }, + "machine_nozzle_offset_y": { + "default_value": 0.0 + }, + "machine_extruder_start_pos_abs": { + "default_value": true + }, + "machine_extruder_start_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_start_pos_y": { + "value": "prime_tower_position_y" + }, + "machine_extruder_end_pos_abs": { + "default_value": true + }, + "machine_extruder_end_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_end_pos_y": { + "value": "prime_tower_position_y" + } + } +} diff --git a/resources/extruders/bibo2_dual_extruder_1.def.json b/resources/extruders/bibo2_dual_extruder_1.def.json new file mode 100644 index 0000000000..5f479ba54b --- /dev/null +++ b/resources/extruders/bibo2_dual_extruder_1.def.json @@ -0,0 +1,46 @@ +{ + "id": "BIBO2", + "version": 2, + "name": "Extruder 2", + "inherits": "fdmextruder", + "metadata": { + "machine": "BIBO2 dual", + "position": "1" + }, + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_offset_x": { + "default_value": 0.0 + }, + "machine_nozzle_offset_y": { + "default_value": 0.0 + }, + "machine_extruder_start_pos_abs": { + "default_value": true + }, + "machine_extruder_start_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_start_pos_y": { + "value": "prime_tower_position_y" + }, + "machine_extruder_end_pos_abs": { + "default_value": true + }, + "machine_extruder_end_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_end_pos_y": { + "value": "prime_tower_position_y" + } + } +} diff --git a/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json b/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json new file mode 100644 index 0000000000..26d847483d --- /dev/null +++ b/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json @@ -0,0 +1,16 @@ +{ + "id": "cocoon_create_modelmaker_extruder_0", + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "cocoon_create_modelmaker", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/gmax15plus_dual_extruder_0.def.json b/resources/extruders/gmax15plus_dual_extruder_0.def.json index b490f4a40e..d3146a0576 100644 --- a/resources/extruders/gmax15plus_dual_extruder_0.def.json +++ b/resources/extruders/gmax15plus_dual_extruder_0.def.json @@ -15,10 +15,10 @@ }, "machine_nozzle_offset_x": { "default_value": 0.0 }, "machine_nozzle_offset_y": { "default_value": 0.0 }, - "machine_nozzle_size": { "default_value": 0.5 }, + "machine_nozzle_size": { "default_value": 0.5 }, "material_diameter": { "default_value": 1.75 }, - - "machine_extruder_start_pos_abs": { "default_value": true }, + + "machine_extruder_start_pos_abs": { "default_value": true }, "machine_extruder_start_pos_x": { "value": 40 }, "machine_extruder_start_pos_y": { "value": 210 }, "machine_extruder_end_pos_abs": { "default_value": true }, diff --git a/resources/extruders/gmax15plus_dual_extruder_1.def.json b/resources/extruders/gmax15plus_dual_extruder_1.def.json index ad3c628d6f..7b7354d794 100644 --- a/resources/extruders/gmax15plus_dual_extruder_1.def.json +++ b/resources/extruders/gmax15plus_dual_extruder_1.def.json @@ -15,10 +15,10 @@ }, "machine_nozzle_offset_x": { "default_value": 0.0 }, "machine_nozzle_offset_y": { "default_value": 0.0 }, - "machine_nozzle_size": { "default_value": 0.5 }, + "machine_nozzle_size": { "default_value": 0.5 }, "material_diameter": { "default_value": 1.75 }, - - "machine_extruder_start_pos_abs": { "default_value": true }, + + "machine_extruder_start_pos_abs": { "default_value": true }, "machine_extruder_start_pos_x": { "value": 40 }, "machine_extruder_start_pos_y": { "value": 210 }, "machine_extruder_end_pos_abs": { "default_value": true }, diff --git a/resources/extruders/jgaurora_a1_extruder_0.def.json b/resources/extruders/jgaurora_a1_extruder_0.def.json new file mode 100644 index 0000000000..71742b734a --- /dev/null +++ b/resources/extruders/jgaurora_a1_extruder_0.def.json @@ -0,0 +1,16 @@ +{ + "id": "jgaurora_a1_extruder_0", + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "jgaurora_a1", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/jgaurora_a5_extruder_0.def.json b/resources/extruders/jgaurora_a5_extruder_0.def.json new file mode 100644 index 0000000000..fbc6ba77e6 --- /dev/null +++ b/resources/extruders/jgaurora_a5_extruder_0.def.json @@ -0,0 +1,16 @@ +{ + "id": "jgaurora_a5_extruder_0", + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "jgaurora_a5", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/jgaurora_z_603s_extruder_0.def.json b/resources/extruders/jgaurora_z_603s_extruder_0.def.json new file mode 100644 index 0000000000..987425b28a --- /dev/null +++ b/resources/extruders/jgaurora_z_603s_extruder_0.def.json @@ -0,0 +1,16 @@ +{ + "id": "jgaurora_z_603s_extruder_0", + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "jgaurora_z_603s", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/i18n/de_DE/cura.po b/resources/i18n/de_DE/cura.po index 85a4a129ac..3433edc5bd 100644 --- a/resources/i18n/de_DE/cura.po +++ b/resources/i18n/de_DE/cura.po @@ -49,7 +49,7 @@ msgstr "GCodeWriter unterstützt keinen Nicht-Textmodus." #: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." -msgstr "" +msgstr "Vor dem Exportieren bitte G-Code vorbereiten." #: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 msgctxt "@info:title" @@ -64,11 +64,7 @@ msgid "" "

{model_names}

\n" "

Find out how to ensure the best possible print quality and reliability.

\n" "

View print quality guide

" -msgstr "" -"

Ein oder mehrere 3D-Modelle können möglicherweise aufgrund der Modellgröße und Materialkonfiguration nicht optimal gedruckt werden:

\n" -"

{model_names}

\n" -"

Erfahren Sie, wie Sie die bestmögliche Druckqualität und Zuverlässigkeit sicherstellen.

\n" -"

Leitfaden zu Druckqualität anzeigen

" +msgstr "

Ein oder mehrere 3D-Modelle können möglicherweise aufgrund der Modellgröße und Materialkonfiguration nicht optimal gedruckt werden:

\n

{model_names}

\n

Erfahren Sie, wie Sie die bestmögliche Druckqualität und Zuverlässigkeit sicherstellen.

\n

Leitfaden zu Druckqualität anzeigen

" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 msgctxt "@item:inmenu" @@ -78,7 +74,7 @@ msgstr "Änderungsprotokoll anzeigen" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" -msgstr "" +msgstr "Firmware aktualisieren" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 msgctxt "@item:inmenu" @@ -822,7 +818,7 @@ msgstr "Vorgeschnittene Datei {0}" #: /home/ruben/Projects/Cura/cura/API/Account.py:71 msgctxt "@info:title" msgid "Login failed" -msgstr "" +msgstr "Login fehlgeschlagen" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 @@ -896,32 +892,32 @@ msgstr "Import des Profils aus Datei {0} fehlgeschlagen: !" msgid "No custom profile to import in file {0}" -msgstr "" +msgstr "Kein benutzerdefiniertes Profil für das Importieren in Datei {0}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Import des Profils aus Datei {0} fehlgeschlagen:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." -msgstr "" +msgstr "Dieses Profil {0} enthält falsche Daten, Importieren nicht möglich." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" +msgstr "Die Maschine, die im Profil {0} ({1}) definiert wurde, entspricht nicht Ihrer derzeitigen Maschine ({2}). Importieren nicht möglich." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Import des Profils aus Datei {0} fehlgeschlagen:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format @@ -1073,12 +1069,7 @@ msgid "" "

Backups can be found in the configuration folder.

\n" "

Please send us this Crash Report to fix the problem.

\n" " " -msgstr "" -"

Hoppla, bei Ultimaker Cura ist ein Problem aufgetreten.

\n" -"

Beim Start ist ein nicht behebbarer Fehler aufgetreten. Er wurde möglicherweise durch einige falsche Konfigurationsdateien verursacht. Wir empfehlen ein Backup und Reset Ihrer Konfiguration.

\n" -"

Backups sind im Konfigurationsordner abgelegt.

\n" -"

Senden Sie uns diesen Absturzbericht bitte, um das Problem zu beheben.

\n" -" " +msgstr "

Hoppla, bei Ultimaker Cura ist ein Problem aufgetreten.

\n

Beim Start ist ein nicht behebbarer Fehler aufgetreten. Er wurde möglicherweise durch einige falsche Konfigurationsdateien verursacht. Wir empfehlen ein Backup und Reset Ihrer Konfiguration.

\n

Backups sind im Konfigurationsordner abgelegt.

\n

Senden Sie uns diesen Absturzbericht bitte, um das Problem zu beheben.

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@action:button" @@ -1111,10 +1102,7 @@ msgid "" "

A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

\n" "

Please use the \"Send report\" button to post a bug report automatically to our servers

\n" " " -msgstr "" -"

Ein schwerer Fehler ist in Cura aufgetreten. Senden Sie uns diesen Absturzbericht, um das Problem zu beheben

\n" -"

Verwenden Sie bitte die Schaltfläche „Bericht senden“, um den Fehlerbericht automatisch an unsere Server zu senden

\n" -" " +msgstr "

Ein schwerer Fehler ist in Cura aufgetreten. Senden Sie uns diesen Absturzbericht, um das Problem zu beheben

\n

Verwenden Sie bitte die Schaltfläche „Bericht senden“, um den Fehlerbericht automatisch an unsere Server zu senden

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 msgctxt "@title:groupbox" @@ -1408,7 +1396,7 @@ msgstr "Y-Versatz Düse" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Cooling Fan Number" -msgstr "" +msgstr "Kühllüfter-Nr." #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 msgctxt "@label" @@ -1512,7 +1500,7 @@ msgstr "Zurück" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:20 msgctxt "@title:window" msgid "Confirm uninstall" -msgstr "" +msgstr "Deinstallieren bestätigen" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:50 msgctxt "@text:window" @@ -1590,10 +1578,7 @@ msgid "" "This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "" -"Dieses Plugin enthält eine Lizenz.\n" -"Sie müssen diese Lizenz akzeptieren, um das Plugin zu installieren.\n" -"Stimmen Sie den nachfolgenden Bedingungen zu?" +msgstr "Dieses Plugin enthält eine Lizenz.\nSie müssen diese Lizenz akzeptieren, um das Plugin zu installieren.\nStimmen Sie den nachfolgenden Bedingungen zu?" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 msgctxt "@action:button" @@ -1655,7 +1640,7 @@ msgstr "Schließen" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" -msgstr "" +msgstr "Firmware aktualisieren" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:39 msgctxt "@label" @@ -1680,12 +1665,12 @@ msgstr "Benutzerdefinierte Firmware hochladen" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:83 msgctxt "@label" msgid "Firmware can not be updated because there is no connection with the printer." -msgstr "" +msgstr "Firmware kann nicht aktualisiert werden, da keine Verbindung zum Drucker besteht." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:91 msgctxt "@label" msgid "Firmware can not be updated because the connection with the printer does not support upgrading firmware." -msgstr "" +msgstr "Firmware kann nicht aktualisiert werden, da die Verbindung zum Drucker die Firmware-Aktualisierung nicht unterstützt." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:98 msgctxt "@title:window" @@ -1753,10 +1738,7 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "" -"Um über das Netzwerk direkt auf Ihrem Drucker zu drucken, stellen Sie bitte sicher, dass der Drucker mit dem Netzwerkkabel verbunden ist oder verbinden Sie Ihren Drucker mit Ihrem WLAN-Netzwerk. Wenn Sie Cura nicht mit Ihrem Drucker verbinden, können Sie dennoch ein USB-Laufwerk für die Übertragung von G-Code-Dateien auf Ihren Drucker verwenden.\n" -"\n" -"Wählen Sie Ihren Drucker aus der folgenden Liste:" +msgstr "Um über das Netzwerk direkt auf Ihrem Drucker zu drucken, stellen Sie bitte sicher, dass der Drucker mit dem Netzwerkkabel verbunden ist oder verbinden Sie Ihren Drucker mit Ihrem WLAN-Netzwerk. Wenn Sie Cura nicht mit Ihrem Drucker verbinden, können Sie dennoch ein USB-Laufwerk für die Übertragung von G-Code-Dateien auf Ihren Drucker verwenden.\n\nWählen Sie Ihren Drucker aus der folgenden Liste:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 @@ -1920,62 +1902,62 @@ msgstr "Warten auf: " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 msgctxt "@label" msgid "Configuration change" -msgstr "" +msgstr "Konfigurationsänderung" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 msgctxt "@label" msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" +msgstr "Der zugewiesene Drucker %1 erfordert die folgende(n) Konfigurationsänderung(en):" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 msgctxt "@label" msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" +msgstr "Der Drucker %1 wurde zugewiesen, allerdings enthält der Auftrag eine unbekannte Materialkonfiguration." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 msgctxt "@label" msgid "Change material %1 from %2 to %3." -msgstr "" +msgstr "Material %1 von %2 auf %3 wechseln." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 msgctxt "@label" msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" +msgstr "%3 als Material %1 laden (Dies kann nicht übergangen werden)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 msgctxt "@label" msgid "Change print core %1 from %2 to %3." -msgstr "" +msgstr "Print Core %1 von %2 auf %3 wechseln." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 msgctxt "@label" msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" +msgstr "Druckplatte auf %1 wechseln (Dies kann nicht übergangen werden)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 msgctxt "@label" msgid "Override" -msgstr "" +msgstr "Überschreiben" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 msgctxt "@label" msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" +msgstr "Das Starten eines Druckauftrags mit einer inkompatiblen Konfiguration kann Ihren 3D-Drucker beschädigen. Möchten Sie die Konfiguration wirklich überschreiben und %1 drucken?" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 msgctxt "@window:title" msgid "Override configuration configuration and start print" -msgstr "" +msgstr "Konfiguration überschreiben und Druck starten" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 msgctxt "@label" msgid "Glass" -msgstr "" +msgstr "Glas" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 msgctxt "@label" msgid "Aluminum" -msgstr "" +msgstr "Aluminium" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 msgctxt "@label link to connect manager" @@ -2664,9 +2646,7 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "" -"Sie haben einige Profileinstellungen angepasst.\n" -"Möchten Sie diese Einstellungen übernehmen oder verwerfen?" +msgstr "Sie haben einige Profileinstellungen angepasst.\nMöchten Sie diese Einstellungen übernehmen oder verwerfen?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -3368,9 +3348,7 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "" -"Cura wurde von Ultimaker B.V. in Zusammenarbeit mit der Community entwickelt.\n" -"Cura verwendet mit Stolz die folgenden Open Source-Projekte:" +msgstr "Cura wurde von Ultimaker B.V. in Zusammenarbeit mit der Community entwickelt.\nCura verwendet mit Stolz die folgenden Open Source-Projekte:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 msgctxt "@label" @@ -3435,17 +3413,17 @@ msgstr "Support-Bibliothek für die Handhabung von STL-Dateien" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for handling planar objects" -msgstr "" +msgstr "Support-Bibliothek für die Handhabung von ebenen Objekten" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for handling triangular meshes" -msgstr "" +msgstr "Support-Bibliothek für die Handhabung von dreieckigen Netzen" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for analysis of complex networks" -msgstr "" +msgstr "Support-Bibliothek für die Analyse von komplexen Netzwerken" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 msgctxt "@label" @@ -3455,7 +3433,7 @@ msgstr "Support-Bibliothek für die Handhabung von 3MF-Dateien" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for file metadata and streaming" -msgstr "" +msgstr "Support-Bibliothek für Datei-Metadaten und Streaming" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 msgctxt "@label" @@ -3503,10 +3481,7 @@ msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "" -"Einige Einstellungs-/Überschreibungswerte unterscheiden sich von den im Profil gespeicherten Werten.\n" -"\n" -"Klicken Sie, um den Profilmanager zu öffnen." +msgstr "Einige Einstellungs-/Überschreibungswerte unterscheiden sich von den im Profil gespeicherten Werten.\n\nKlicken Sie, um den Profilmanager zu öffnen." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 msgctxt "@label:textbox" @@ -3560,10 +3535,7 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "" -"Einige ausgeblendete Einstellungen verwenden Werte, die von ihren normalen, berechneten Werten abweichen.\n" -"\n" -"Klicken Sie, um diese Einstellungen sichtbar zu machen." +msgstr "Einige ausgeblendete Einstellungen verwenden Werte, die von ihren normalen, berechneten Werten abweichen.\n\nKlicken Sie, um diese Einstellungen sichtbar zu machen." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." @@ -3591,10 +3563,7 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "" -"Diese Einstellung hat einen vom Profil abweichenden Wert.\n" -"\n" -"Klicken Sie, um den Wert des Profils wiederherzustellen." +msgstr "Diese Einstellung hat einen vom Profil abweichenden Wert.\n\nKlicken Sie, um den Wert des Profils wiederherzustellen." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 msgctxt "@label" @@ -3602,10 +3571,7 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "" -"Diese Einstellung wird normalerweise berechnet; aktuell ist jedoch ein Absolutwert eingestellt.\n" -"\n" -"Klicken Sie, um den berechneten Wert wiederherzustellen." +msgstr "Diese Einstellung wird normalerweise berechnet; aktuell ist jedoch ein Absolutwert eingestellt.\n\nKlicken Sie, um den berechneten Wert wiederherzustellen." #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 msgctxt "@label" @@ -3830,9 +3796,7 @@ msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "" -"Druckeinrichtung deaktiviert\n" -"G-Code-Dateien können nicht geändert werden" +msgstr "Druckeinrichtung deaktiviert\nG-Code-Dateien können nicht geändert werden" #: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 msgctxt "@label Hours and minutes" @@ -4606,12 +4570,12 @@ msgstr "Änderungsprotokoll" #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." -msgstr "" +msgstr "Ermöglicht Gerätemaßnahmen für die Aktualisierung der Firmware." #: FirmwareUpdater/plugin.json msgctxt "name" msgid "Firmware Updater" -msgstr "" +msgstr "Firmware-Aktualisierungsfunktion" #: ProfileFlattener/plugin.json msgctxt "description" diff --git a/resources/i18n/de_DE/fdmextruder.def.json.po b/resources/i18n/de_DE/fdmextruder.def.json.po index 9d146a1a63..77ffa5631d 100644 --- a/resources/i18n/de_DE/fdmextruder.def.json.po +++ b/resources/i18n/de_DE/fdmextruder.def.json.po @@ -169,12 +169,12 @@ msgstr "Die Z-Koordinate der Position, an der die Düse am Druckbeginn einzieht. #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number label" msgid "Extruder Print Cooling Fan" -msgstr "" +msgstr "Drucklüfter Extruder" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number description" msgid "The number of the print cooling fan associated with this extruder. Only change this from the default value of 0 when you have a different print cooling fan for each extruder." -msgstr "" +msgstr "Die Anzahl der Drucklüfter für diesen Extruder. Nur vom Standardwert 0 ändern, wenn Sie für jeden Extruder einen anderen Drucklüfter verwenden." #: fdmextruder.def.json msgctxt "platform_adhesion label" diff --git a/resources/i18n/de_DE/fdmprinter.def.json.po b/resources/i18n/de_DE/fdmprinter.def.json.po index 0bcf015c21..383a7a3886 100644 --- a/resources/i18n/de_DE/fdmprinter.def.json.po +++ b/resources/i18n/de_DE/fdmprinter.def.json.po @@ -57,9 +57,7 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "" -"G-Code-Befehle, die zu Beginn ausgeführt werden sollen – getrennt durch \n" -"." +msgstr "G-Code-Befehle, die zu Beginn ausgeführt werden sollen – getrennt durch \n." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -71,9 +69,7 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "" -"G-Code-Befehle, die am Ende ausgeführt werden sollen – getrennt durch \n" -"." +msgstr "G-Code-Befehle, die am Ende ausgeführt werden sollen – getrennt durch \n." #: fdmprinter.def.json msgctxt "material_guid label" @@ -1078,7 +1074,7 @@ msgstr "Polygone oben/unten verbinden" #: fdmprinter.def.json msgctxt "connect_skin_polygons description" msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality." -msgstr "" +msgstr "Außenhaut-Pfade oben/unten verbinden, wenn sie nebeneinander laufen. Bei konzentrischen Mustern reduziert die Aktivierung dieser Einstellung die Durchlaufzeit erheblich. Da die Verbindungen jedoch auf halbem Weg über der Füllung erfolgen können, kann diese Funktion die Oberflächenqualität reduzieren." #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1498,7 +1494,7 @@ msgstr "Füllmuster" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Das Muster des Füllmaterials des Drucks. Die Linien- und Zickzackfüllmethode wechseln nach jeder Schicht die Richtung, um Materialkosten zu reduzieren. Die Gitter-, Dreieck- Tri-Hexagon-, Würfel-, Octahedral-, Viertelwürfel-, Quer- und konzentrischen Muster werden in jeder Schicht vollständig gedruckt. Gyroid-, Würfel-, Viertelwürfel- und Octahedral-Füllungen wechseln mit jeder Schicht, um eine gleichmäßigere Verteilung der Stärke in allen Richtungen zu erzielen." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1563,7 +1559,7 @@ msgstr "3D-Quer" #: fdmprinter.def.json msgctxt "infill_pattern option gyroid" msgid "Gyroid" -msgstr "" +msgstr "Gyroid" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" @@ -1635,9 +1631,7 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "" -"Fügen Sie zusätzliche Wände um den Füllbereich hinzu. Derartige Wände können zu einem verringerten Absacken der oberen/unteren Außenhautlinien beitragen, was bedeutet, dass Sie weniger Außenhautschichten oben/unten bei derselben Qualität von Kosten für zusätzliches Material benötigen.\n" -" Diese Funktion ist verknüpfbar mit „Füllungspolygone verbinden“, um alle Füllungen mit einem einzigen Extrusionspfad zu verbinden, ohne dass hierzu Vorwärtsbewegungen oder Rückzüge erforderlich sind, sofern die richtige Konfiguration gewählt wurde." +msgstr "Fügen Sie zusätzliche Wände um den Füllbereich hinzu. Derartige Wände können zu einem verringerten Absacken der oberen/unteren Außenhautlinien beitragen, was bedeutet, dass Sie weniger Außenhautschichten oben/unten bei derselben Qualität von Kosten für zusätzliches Material benötigen.\n Diese Funktion ist verknüpfbar mit „Füllungspolygone verbinden“, um alle Füllungen mit einem einzigen Extrusionspfad zu verbinden, ohne dass hierzu Vorwärtsbewegungen oder Rückzüge erforderlich sind, sofern die richtige Konfiguration gewählt wurde." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -3272,32 +3266,32 @@ msgstr "Ausrichtung des Füllmusters für Unterstützung. Das Füllmuster für U #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "" +msgstr "Stütz-Brim aktivieren" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "" +msgstr "Erstellen Sie ein Brim in den Stützstruktur-Füllungsbereichen der ersten Schicht. Das Brim wird unterhalb der Stützstruktur und nicht drumherum gedruckt. Die Aktivierung dieser Einstellung erhöht die Haftung der Stützstruktur am Druckbett." #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "" +msgstr "Breite der Brim-Stützstruktur" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Die Breite des unter der Stützstruktur zu druckenden Brims. Ein größeres Brim erhöht die Haftung am Druckbett, jedoch erhöht sich hierdurch der Materialverbrauch." #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "" +msgstr "Anzahl der Brim-Stützstrukturlinien" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Die Anzahl der Linien für die Brim-Stützstruktur. Eine größere Anzahl von Brim-Linien verbessert die Haftung am Druckbett, jedoch erhöht sich hierdurch der Materialverbrauch." #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3834,9 +3828,7 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "" -"Der horizontale Abstand zwischen dem Skirt und der ersten Schicht des Drucks.\n" -"Es handelt sich dabei um den Mindestabstand. Ab diesem Abstand werden mehrere Skirt-Linien in äußerer Richtung angebracht." +msgstr "Der horizontale Abstand zwischen dem Skirt und der ersten Schicht des Drucks.\nEs handelt sich dabei um den Mindestabstand. Ab diesem Abstand werden mehrere Skirt-Linien in äußerer Richtung angebracht." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3871,12 +3863,12 @@ msgstr "Die Anzahl der Linien für das Brim-Element. Eine größere Anzahl von B #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "" +msgstr "Brim ersetzt die Stützstruktur" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "" +msgstr "Erzwingen Sie den Druck des Brims um das Modell herum, auch wenn dieser Raum sonst durch die Stützstruktur belegt würde. Dies ersetzt einige der ersten Schichten der Stützstruktur durch Brim-Bereiche." #: fdmprinter.def.json msgctxt "brim_outside_only label" @@ -5283,9 +5275,7 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "" -"Die Strecke einer Aufwärtsbewegung, die mit halber Geschwindigkeit extrudiert wird.\n" -"Dies kann zu einer besseren Haftung an vorhergehenden Schichten führen, während gleichzeitig ein Überhitzen des Materials in diesen Schichten vermieden wird. Dies gilt nur für das Drucken mit Drahtstruktur." +msgstr "Die Strecke einer Aufwärtsbewegung, die mit halber Geschwindigkeit extrudiert wird.\nDies kann zu einer besseren Haftung an vorhergehenden Schichten führen, während gleichzeitig ein Überhitzen des Materials in diesen Schichten vermieden wird. Dies gilt nur für das Drucken mit Drahtstruktur." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" diff --git a/resources/i18n/es_ES/cura.po b/resources/i18n/es_ES/cura.po index 71c133daa9..e6b5867e39 100644 --- a/resources/i18n/es_ES/cura.po +++ b/resources/i18n/es_ES/cura.po @@ -49,7 +49,7 @@ msgstr "GCodeWriter no es compatible con el modo sin texto." #: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." -msgstr "" +msgstr "Prepare el Gcode antes de la exportación." #: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 msgctxt "@info:title" @@ -64,11 +64,7 @@ msgid "" "

{model_names}

\n" "

Find out how to ensure the best possible print quality and reliability.

\n" "

View print quality guide

" -msgstr "" -"

Es posible que uno o más modelos 3D no se impriman correctamente debido al tamaño del modelo y la configuración del material:

\n" -"

{model_names}

\n" -"

Obtenga más información sobre cómo garantizar la mejor calidad y fiabilidad de impresión posible.

\n" -"

Ver guía de impresión de calidad

" +msgstr "

Es posible que uno o más modelos 3D no se impriman correctamente debido al tamaño del modelo y la configuración del material:

\n

{model_names}

\n

Obtenga más información sobre cómo garantizar la mejor calidad y fiabilidad de impresión posible.

\n

Ver guía de impresión de calidad

" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 msgctxt "@item:inmenu" @@ -78,7 +74,7 @@ msgstr "Mostrar registro de cambios" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" -msgstr "" +msgstr "Actualizar firmware" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 msgctxt "@item:inmenu" @@ -822,7 +818,7 @@ msgstr "Archivo {0} presegmentado" #: /home/ruben/Projects/Cura/cura/API/Account.py:71 msgctxt "@info:title" msgid "Login failed" -msgstr "" +msgstr "Fallo de inicio de sesión" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 @@ -896,32 +892,32 @@ msgstr "Error al importar el perfil de {0}: {1}
!" msgid "No custom profile to import in file {0}" -msgstr "" +msgstr "No hay ningún perfil personalizado para importar en el archivo {0}." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Error al importar el perfil de {0}:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." -msgstr "" +msgstr "Este perfil {0} contiene datos incorrectos, no se han podido importar." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" +msgstr "El equipo definido en el perfil {0} ({1}) no coincide con el equipo actual ({2}), no se ha podido importar." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Error al importar el perfil de {0}:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format @@ -1073,12 +1069,7 @@ msgid "" "

Backups can be found in the configuration folder.

\n" "

Please send us this Crash Report to fix the problem.

\n" " " -msgstr "" -"

¡Vaya! Ultimaker Cura ha encontrado un error.

\n" -"

Hemos detectado un error irreversible durante el inicio, posiblemente como consecuencia de varios archivos de configuración erróneos. Le recomendamos que realice una copia de seguridad y que restablezca los ajustes.

\n" -"

Las copias de seguridad se encuentran en la carpeta de configuración.

\n" -"

Envíenos el informe de errores para que podamos solucionar el problema.

\n" -" " +msgstr "

¡Vaya! Ultimaker Cura ha encontrado un error.

\n

Hemos detectado un error irreversible durante el inicio, posiblemente como consecuencia de varios archivos de configuración erróneos. Le recomendamos que realice una copia de seguridad y que restablezca los ajustes.

\n

Las copias de seguridad se encuentran en la carpeta de configuración.

\n

Envíenos el informe de errores para que podamos solucionar el problema.

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@action:button" @@ -1111,10 +1102,7 @@ msgid "" "

A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

\n" "

Please use the \"Send report\" button to post a bug report automatically to our servers

\n" " " -msgstr "" -"

Se ha producido un error grave en Cura. Envíenos este informe de errores para que podamos solucionar el problema.

\n" -"

Utilice el botón \"Enviar informe\" para publicar automáticamente el informe de errores en nuestros servidores.

\n" -" " +msgstr "

Se ha producido un error grave en Cura. Envíenos este informe de errores para que podamos solucionar el problema.

\n

Utilice el botón \"Enviar informe\" para publicar automáticamente el informe de errores en nuestros servidores.

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 msgctxt "@title:groupbox" @@ -1408,7 +1396,7 @@ msgstr "Desplazamiento de la tobera sobre el eje Y" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Cooling Fan Number" -msgstr "" +msgstr "Número de ventilador de enfriamiento" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 msgctxt "@label" @@ -1512,7 +1500,7 @@ msgstr "Atrás" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:20 msgctxt "@title:window" msgid "Confirm uninstall" -msgstr "" +msgstr "Confirmar desinstalación" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:50 msgctxt "@text:window" @@ -1590,10 +1578,7 @@ msgid "" "This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "" -"Este complemento incluye una licencia.\n" -"Debe aceptar dicha licencia para instalar el complemento.\n" -"¿Acepta las condiciones que aparecen a continuación?" +msgstr "Este complemento incluye una licencia.\nDebe aceptar dicha licencia para instalar el complemento.\n¿Acepta las condiciones que aparecen a continuación?" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 msgctxt "@action:button" @@ -1655,7 +1640,7 @@ msgstr "Cerrar" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" -msgstr "" +msgstr "Actualizar firmware" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:39 msgctxt "@label" @@ -1680,12 +1665,12 @@ msgstr "Cargar firmware personalizado" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:83 msgctxt "@label" msgid "Firmware can not be updated because there is no connection with the printer." -msgstr "" +msgstr "No se puede actualizar el firmware porque no hay conexión con la impresora." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:91 msgctxt "@label" msgid "Firmware can not be updated because the connection with the printer does not support upgrading firmware." -msgstr "" +msgstr "No se puede actualizar el firmware porque la conexión con la impresora no permite actualizaciones de firmware." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:98 msgctxt "@title:window" @@ -1753,10 +1738,7 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "" -"Para imprimir directamente en la impresora a través de la red, asegúrese de que esta está conectada a la red utilizando un cable de red o conéctela a la red wifi. Si no conecta Cura con la impresora, también puede utilizar una unidad USB para transferir archivos GCode a la impresora.\n" -"\n" -"Seleccione la impresora de la siguiente lista:" +msgstr "Para imprimir directamente en la impresora a través de la red, asegúrese de que esta está conectada a la red utilizando un cable de red o conéctela a la red wifi. Si no conecta Cura con la impresora, también puede utilizar una unidad USB para transferir archivos GCode a la impresora.\n\nSeleccione la impresora de la siguiente lista:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 @@ -1920,62 +1902,62 @@ msgstr "Esperando: " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 msgctxt "@label" msgid "Configuration change" -msgstr "" +msgstr "Cambio de configuración" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 msgctxt "@label" msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" +msgstr "Es necesario modificar la siguiente configuración de la impresora asignada %1:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 msgctxt "@label" msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" +msgstr "Se ha asignado la impresora 1%, pero el trabajo tiene una configuración de material desconocido." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 msgctxt "@label" msgid "Change material %1 from %2 to %3." -msgstr "" +msgstr "Cambiar material %1, de %2 a %3." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 msgctxt "@label" msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" +msgstr "Cargar %3 como material %1 (no se puede anular)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 msgctxt "@label" msgid "Change print core %1 from %2 to %3." -msgstr "" +msgstr "Cambiar print core %1, de %2 a %3." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 msgctxt "@label" msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" +msgstr "Cambiar la placa de impresión a %1 (no se puede anular)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 msgctxt "@label" msgid "Override" -msgstr "" +msgstr "Anular" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 msgctxt "@label" msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" +msgstr "Iniciar un trabajo de impresión con una configuración no compatible puede causar daños en su impresora 3D. ¿Seguro de que desea sobrescribir la configuración e imprimir %1?" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 msgctxt "@window:title" msgid "Override configuration configuration and start print" -msgstr "" +msgstr "Sobrescribir la configuración e iniciar la impresión" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 msgctxt "@label" msgid "Glass" -msgstr "" +msgstr "Vidrio" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 msgctxt "@label" msgid "Aluminum" -msgstr "" +msgstr "Aluminio" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 msgctxt "@label link to connect manager" @@ -2664,9 +2646,7 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "" -"Ha personalizado parte de los ajustes del perfil.\n" -"¿Desea descartar los cambios o guardarlos?" +msgstr "Ha personalizado parte de los ajustes del perfil.\n¿Desea descartar los cambios o guardarlos?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -3368,9 +3348,7 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "" -"Ultimaker B.V. ha desarrollado Cura en cooperación con la comunidad.\n" -"Cura se enorgullece de utilizar los siguientes proyectos de código abierto:" +msgstr "Ultimaker B.V. ha desarrollado Cura en cooperación con la comunidad.\nCura se enorgullece de utilizar los siguientes proyectos de código abierto:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 msgctxt "@label" @@ -3435,17 +3413,17 @@ msgstr "Biblioteca de apoyo para gestionar archivos STL" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for handling planar objects" -msgstr "" +msgstr "Biblioteca de compatibilidad para trabajar con objetos planos" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for handling triangular meshes" -msgstr "" +msgstr "Biblioteca de compatibilidad para trabajar con mallas triangulares" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for analysis of complex networks" -msgstr "" +msgstr "Biblioteca de compatibilidad para analizar redes complejas" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 msgctxt "@label" @@ -3455,7 +3433,7 @@ msgstr "Biblioteca de compatibilidad para trabajar con archivos 3MF" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for file metadata and streaming" -msgstr "" +msgstr "Biblioteca de compatibilidad para metadatos y transmisión de archivos" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 msgctxt "@label" @@ -3503,10 +3481,7 @@ msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "" -"Algunos valores de los ajustes o sobrescrituras son distintos a los valores almacenados en el perfil.\n" -"\n" -"Haga clic para abrir el administrador de perfiles." +msgstr "Algunos valores de los ajustes o sobrescrituras son distintos a los valores almacenados en el perfil.\n\nHaga clic para abrir el administrador de perfiles." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 msgctxt "@label:textbox" @@ -3560,10 +3535,7 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "" -"Algunos ajustes ocultos utilizan valores diferentes de los valores normales calculados.\n" -"\n" -"Haga clic para mostrar estos ajustes." +msgstr "Algunos ajustes ocultos utilizan valores diferentes de los valores normales calculados.\n\nHaga clic para mostrar estos ajustes." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." @@ -3591,10 +3563,7 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "" -"Este ajuste tiene un valor distinto del perfil.\n" -"\n" -"Haga clic para restaurar el valor del perfil." +msgstr "Este ajuste tiene un valor distinto del perfil.\n\nHaga clic para restaurar el valor del perfil." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 msgctxt "@label" @@ -3602,10 +3571,7 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "" -"Este ajuste se calcula normalmente pero actualmente tiene un valor absoluto establecido.\n" -"\n" -"Haga clic para restaurar el valor calculado." +msgstr "Este ajuste se calcula normalmente pero actualmente tiene un valor absoluto establecido.\n\nHaga clic para restaurar el valor calculado." #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 msgctxt "@label" @@ -3830,9 +3796,7 @@ msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "" -"Ajustes de impresión deshabilitados\n" -"No se pueden modificar los archivos GCode" +msgstr "Ajustes de impresión deshabilitados\nNo se pueden modificar los archivos GCode" #: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 msgctxt "@label Hours and minutes" @@ -4606,12 +4570,12 @@ msgstr "Registro de cambios" #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." -msgstr "" +msgstr "Proporciona opciones a la máquina para actualizar el firmware." #: FirmwareUpdater/plugin.json msgctxt "name" msgid "Firmware Updater" -msgstr "" +msgstr "Actualizador de firmware" #: ProfileFlattener/plugin.json msgctxt "description" diff --git a/resources/i18n/es_ES/fdmextruder.def.json.po b/resources/i18n/es_ES/fdmextruder.def.json.po index f4791134ce..3da8d5251f 100644 --- a/resources/i18n/es_ES/fdmextruder.def.json.po +++ b/resources/i18n/es_ES/fdmextruder.def.json.po @@ -169,12 +169,12 @@ msgstr "Coordenada Z de la posición en la que la tobera queda preparada al inic #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number label" msgid "Extruder Print Cooling Fan" -msgstr "" +msgstr "Ventilador de refrigeración de impresión del extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number description" msgid "The number of the print cooling fan associated with this extruder. Only change this from the default value of 0 when you have a different print cooling fan for each extruder." -msgstr "" +msgstr "Número del ventilador de refrigeración de impresión asociado al extrusor. Modifique el valor predeterminado 0 solo cuando disponga de un ventilador de refrigeración de impresión diferente para cada extrusor." #: fdmextruder.def.json msgctxt "platform_adhesion label" diff --git a/resources/i18n/es_ES/fdmprinter.def.json.po b/resources/i18n/es_ES/fdmprinter.def.json.po index 3133fa86b8..bd4ad9fd7f 100644 --- a/resources/i18n/es_ES/fdmprinter.def.json.po +++ b/resources/i18n/es_ES/fdmprinter.def.json.po @@ -57,9 +57,7 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "" -"Los comandos de GCode que se ejecutarán justo al inicio separados por - \n" -"." +msgstr "Los comandos de GCode que se ejecutarán justo al inicio separados por - \n." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -71,9 +69,7 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "" -"Los comandos de GCode que se ejecutarán justo al final separados por -\n" -"." +msgstr "Los comandos de GCode que se ejecutarán justo al final separados por -\n." #: fdmprinter.def.json msgctxt "material_guid label" @@ -1078,7 +1074,7 @@ msgstr "Conectar polígonos superiores/inferiores" #: fdmprinter.def.json msgctxt "connect_skin_polygons description" msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality." -msgstr "" +msgstr "Conecta las trayectorias de forro superior/inferior cuando están próximas entre sí. Al habilitar este ajuste, en el patrón concéntrico se reduce considerablemente el tiempo de desplazamiento, pero las conexiones pueden producirse en mitad del relleno, con lo que bajaría la calidad de la superficie superior." #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1498,7 +1494,7 @@ msgstr "Patrón de relleno" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Patrón del material de relleno de la impresión. El relleno de línea y zigzag cambia de dirección en capas alternas, con lo que se reduce el coste de material. Los patrones de rejilla, triángulo, trihexágono, cubo, octeto, cubo bitruncado, transversal y concéntrico se imprimen en todas las capas por completo. El relleno giroide, cúbico, cúbico bitruncado y de octeto cambian en cada capa para proporcionar una distribución de fuerza equitativa en cada dirección." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1563,7 +1559,7 @@ msgstr "Cruz 3D" #: fdmprinter.def.json msgctxt "infill_pattern option gyroid" msgid "Gyroid" -msgstr "" +msgstr "Giroide" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" @@ -1635,9 +1631,7 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "" -"Agregar paredes adicionales alrededor del área de relleno. Estas paredes pueden hacer que las líneas del forro superior/inferior se aflojen menos, lo que significa que necesitaría menos capas de forro superior/inferior para obtener la misma calidad utilizando algo más de material.\n" -"Puede utilizar esta función junto a la de Conectar polígonos de relleno para conectar todo el relleno en una única trayectoria de extrusión sin necesidad de desplazamientos ni retracciones si se configura correctamente." +msgstr "Agregar paredes adicionales alrededor del área de relleno. Estas paredes pueden hacer que las líneas del forro superior/inferior se aflojen menos, lo que significa que necesitaría menos capas de forro superior/inferior para obtener la misma calidad utilizando algo más de material.\nPuede utilizar esta función junto a la de Conectar polígonos de relleno para conectar todo el relleno en una única trayectoria de extrusión sin necesidad de desplazamientos ni retracciones si se configura correctamente." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -3272,32 +3266,32 @@ msgstr "Orientación del patrón de relleno para soportes. El patrón de relleno #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "" +msgstr "Habilitar borde de soporte" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "" +msgstr "Genera un borde dentro de las zonas de relleno del soporte de la primera capa. Este borde se imprime por debajo del soporte y no a su alrededor. Si habilita esta configuración aumentará la adhesión del soporte a la placa de impresión." #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "" +msgstr "Ancho del borde de soporte" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Anchura del borde de impresión que se imprime por debajo del soporte. Una anchura de soporte amplia mejora la adhesión a la placa de impresión, pero requieren material adicional." #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "" +msgstr "Recuento de líneas del borde de soporte" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Número de líneas utilizadas para el borde de soporte. Más líneas de borde mejoran la adhesión a la placa de impresión, pero requieren material adicional." #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3834,9 +3828,7 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "" -"La distancia horizontal entre la falda y la primera capa de la impresión.\n" -"Se trata de la distancia mínima. Múltiples líneas de falda se extenderán hacia el exterior a partir de esta distancia." +msgstr "La distancia horizontal entre la falda y la primera capa de la impresión.\nSe trata de la distancia mínima. Múltiples líneas de falda se extenderán hacia el exterior a partir de esta distancia." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3871,12 +3863,12 @@ msgstr "Número de líneas utilizadas para un borde. Más líneas de borde mejor #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "" +msgstr "Sustituir soporte por borde" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "" +msgstr "Aplica la impresión de un borde alrededor del modelo, aunque en esa posición debiera estar el soporte. Sustituye algunas áreas de la primera capa de soporte por áreas de borde." #: fdmprinter.def.json msgctxt "brim_outside_only label" @@ -5283,9 +5275,7 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "" -"Distancia de un movimiento ascendente que se extrude a media velocidad.\n" -"Esto puede causar una mejor adherencia a las capas anteriores, aunque no calienta demasiado el material en esas capas. Solo se aplica a la impresión de alambre." +msgstr "Distancia de un movimiento ascendente que se extrude a media velocidad.\nEsto puede causar una mejor adherencia a las capas anteriores, aunque no calienta demasiado el material en esas capas. Solo se aplica a la impresión de alambre." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" diff --git a/resources/i18n/fr_FR/cura.po b/resources/i18n/fr_FR/cura.po index f477c14ac6..9b1fff4124 100644 --- a/resources/i18n/fr_FR/cura.po +++ b/resources/i18n/fr_FR/cura.po @@ -49,7 +49,7 @@ msgstr "GCodeWriter ne prend pas en charge le mode non-texte." #: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." -msgstr "" +msgstr "Veuillez préparer le G-Code avant d'exporter." #: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 msgctxt "@info:title" @@ -64,11 +64,7 @@ msgid "" "

{model_names}

\n" "

Find out how to ensure the best possible print quality and reliability.

\n" "

View print quality guide

" -msgstr "" -"

Un ou plusieurs modèles 3D peuvent ne pas s'imprimer de manière optimale en raison de la taille du modèle et de la configuration matérielle :

\n" -"

{model_names}

\n" -"

Découvrez comment optimiser la qualité et la fiabilité de l'impression.

\n" -"

Consultez le guide de qualité d'impression

" +msgstr "

Un ou plusieurs modèles 3D peuvent ne pas s'imprimer de manière optimale en raison de la taille du modèle et de la configuration matérielle :

\n

{model_names}

\n

Découvrez comment optimiser la qualité et la fiabilité de l'impression.

\n

Consultez le guide de qualité d'impression

" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 msgctxt "@item:inmenu" @@ -78,7 +74,7 @@ msgstr "Afficher le récapitulatif des changements" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" -msgstr "" +msgstr "Mettre à jour le firmware" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 msgctxt "@item:inmenu" @@ -822,7 +818,7 @@ msgstr "Fichier {0} prédécoupé" #: /home/ruben/Projects/Cura/cura/API/Account.py:71 msgctxt "@info:title" msgid "Login failed" -msgstr "" +msgstr "La connexion a échoué" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 @@ -896,32 +892,32 @@ msgstr "Échec de l'importation du profil depuis le fichier {0}!" msgid "No custom profile to import in file {0}" -msgstr "" +msgstr "Aucun profil personnalisé à importer dans le fichier {0}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Échec de l'importation du profil depuis le fichier {0} :" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." -msgstr "" +msgstr "Le profil {0} contient des données incorrectes ; échec de l'importation." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" +msgstr "La machine définie dans le profil {0} ({1}) ne correspond pas à votre machine actuelle ({2}) ; échec de l'importation." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Échec de l'importation du profil depuis le fichier {0} :" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format @@ -1073,12 +1069,7 @@ msgid "" "

Backups can be found in the configuration folder.

\n" "

Please send us this Crash Report to fix the problem.

\n" " " -msgstr "" -"

Oups, un problème est survenu dans Ultimaker Cura.

\n" -"

Une erreur irrécupérable est survenue lors du démarrage. Elle peut avoir été causée par des fichiers de configuration incorrects. Nous vous suggérons de sauvegarder et de réinitialiser votre configuration.

\n" -"

Les sauvegardes se trouvent dans le dossier de configuration.

\n" -"

Veuillez nous envoyer ce rapport d'incident pour que nous puissions résoudre le problème.

\n" -" " +msgstr "

Oups, un problème est survenu dans Ultimaker Cura.

\n

Une erreur irrécupérable est survenue lors du démarrage. Elle peut avoir été causée par des fichiers de configuration incorrects. Nous vous suggérons de sauvegarder et de réinitialiser votre configuration.

\n

Les sauvegardes se trouvent dans le dossier de configuration.

\n

Veuillez nous envoyer ce rapport d'incident pour que nous puissions résoudre le problème.

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@action:button" @@ -1111,10 +1102,7 @@ msgid "" "

A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

\n" "

Please use the \"Send report\" button to post a bug report automatically to our servers

\n" " " -msgstr "" -"

Une erreur fatale est survenue dans Cura. Veuillez nous envoyer ce rapport d'incident pour résoudre le problème

\n" -"

Veuillez utiliser le bouton « Envoyer rapport » pour publier automatiquement un rapport d'erreur sur nos serveurs

\n" -" " +msgstr "

Une erreur fatale est survenue dans Cura. Veuillez nous envoyer ce rapport d'incident pour résoudre le problème

\n

Veuillez utiliser le bouton « Envoyer rapport » pour publier automatiquement un rapport d'erreur sur nos serveurs

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 msgctxt "@title:groupbox" @@ -1408,7 +1396,7 @@ msgstr "Décalage buse Y" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Cooling Fan Number" -msgstr "" +msgstr "Numéro du ventilateur de refroidissement" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 msgctxt "@label" @@ -1512,7 +1500,7 @@ msgstr "Précédent" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:20 msgctxt "@title:window" msgid "Confirm uninstall" -msgstr "" +msgstr "Confirmer la désinstallation" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:50 msgctxt "@text:window" @@ -1590,10 +1578,7 @@ msgid "" "This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "" -"Ce plug-in contient une licence.\n" -"Vous devez approuver cette licence pour installer ce plug-in.\n" -"Acceptez-vous les clauses ci-dessous ?" +msgstr "Ce plug-in contient une licence.\nVous devez approuver cette licence pour installer ce plug-in.\nAcceptez-vous les clauses ci-dessous ?" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 msgctxt "@action:button" @@ -1655,7 +1640,7 @@ msgstr "Fermer" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" -msgstr "" +msgstr "Mettre à jour le firmware" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:39 msgctxt "@label" @@ -1680,12 +1665,12 @@ msgstr "Charger le firmware personnalisé" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:83 msgctxt "@label" msgid "Firmware can not be updated because there is no connection with the printer." -msgstr "" +msgstr "Impossible de se connecter à l'imprimante ; échec de la mise à jour du firmware." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:91 msgctxt "@label" msgid "Firmware can not be updated because the connection with the printer does not support upgrading firmware." -msgstr "" +msgstr "Échec de la mise à jour du firmware, car cette fonctionnalité n'est pas prise en charge par la connexion avec l'imprimante." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:98 msgctxt "@title:window" @@ -1753,10 +1738,7 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "" -"Pour imprimer directement sur votre imprimante sur le réseau, assurez-vous que votre imprimante est connectée au réseau via un câble réseau ou en connectant votre imprimante à votre réseau Wi-Fi. Si vous ne connectez pas Cura avec votre imprimante, vous pouvez utiliser une clé USB pour transférer les fichiers g-code sur votre imprimante.\n" -"\n" -"Sélectionnez votre imprimante dans la liste ci-dessous :" +msgstr "Pour imprimer directement sur votre imprimante sur le réseau, assurez-vous que votre imprimante est connectée au réseau via un câble réseau ou en connectant votre imprimante à votre réseau Wi-Fi. Si vous ne connectez pas Cura avec votre imprimante, vous pouvez utiliser une clé USB pour transférer les fichiers g-code sur votre imprimante.\n\nSélectionnez votre imprimante dans la liste ci-dessous :" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 @@ -1920,62 +1902,62 @@ msgstr "En attente : " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 msgctxt "@label" msgid "Configuration change" -msgstr "" +msgstr "Modification des configurations" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 msgctxt "@label" msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" +msgstr "L'imprimante assignée, %1, nécessite d'apporter la ou les modifications suivantes à la configuration :" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 msgctxt "@label" msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" +msgstr "L'imprimante %1 est assignée, mais le projet contient une configuration matérielle inconnue." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 msgctxt "@label" msgid "Change material %1 from %2 to %3." -msgstr "" +msgstr "Changer le matériau %1 de %2 à %3." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 msgctxt "@label" msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" +msgstr "Charger %3 comme matériau %1 (Ceci ne peut pas être remplacé)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 msgctxt "@label" msgid "Change print core %1 from %2 to %3." -msgstr "" +msgstr "Changer le print core %1 de %2 à %3." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 msgctxt "@label" msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" +msgstr "Changer le plateau en %1 (Ceci ne peut pas être remplacé)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 msgctxt "@label" msgid "Override" -msgstr "" +msgstr "Remplacer" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 msgctxt "@label" msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" +msgstr "Le fait de démarrer un travail d'impression avec une configuration incompatible peut endommager votre imprimante 3D. Êtes-vous sûr de vouloir remplacer la configuration et imprimer %1 ?" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 msgctxt "@window:title" msgid "Override configuration configuration and start print" -msgstr "" +msgstr "Remplacer la configuration et lancer l'impression" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 msgctxt "@label" msgid "Glass" -msgstr "" +msgstr "Verre" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 msgctxt "@label" msgid "Aluminum" -msgstr "" +msgstr "Aluminium" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 msgctxt "@label link to connect manager" @@ -2664,9 +2646,7 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "" -"Vous avez personnalisé certains paramètres du profil.\n" -"Souhaitez-vous conserver ces changements, ou les annuler ?" +msgstr "Vous avez personnalisé certains paramètres du profil.\nSouhaitez-vous conserver ces changements, ou les annuler ?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -3368,9 +3348,7 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "" -"Cura a été développé par Ultimaker B.V. en coopération avec la communauté Ultimaker.\n" -"Cura est fier d'utiliser les projets open source suivants :" +msgstr "Cura a été développé par Ultimaker B.V. en coopération avec la communauté Ultimaker.\nCura est fier d'utiliser les projets open source suivants :" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 msgctxt "@label" @@ -3435,17 +3413,17 @@ msgstr "Prise en charge de la bibliothèque pour le traitement des fichiers STL" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for handling planar objects" -msgstr "" +msgstr "Prise en charge de la bibliothèque pour le traitement des objets planaires" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for handling triangular meshes" -msgstr "" +msgstr "Prise en charge de la bibliothèque pour le traitement des mailles triangulaires" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for analysis of complex networks" -msgstr "" +msgstr "Prise en charge de la bibliothèque pour l'analyse de réseaux complexes" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 msgctxt "@label" @@ -3455,7 +3433,7 @@ msgstr "Prise en charge de la bibliothèque pour le traitement des fichiers 3MF" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for file metadata and streaming" -msgstr "" +msgstr "Prise en charge de la bibliothèque pour les métadonnées et le streaming de fichiers" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 msgctxt "@label" @@ -3503,10 +3481,7 @@ msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "" -"Certaines valeurs de paramètre / forçage sont différentes des valeurs enregistrées dans le profil. \n" -"\n" -"Cliquez pour ouvrir le gestionnaire de profils." +msgstr "Certaines valeurs de paramètre / forçage sont différentes des valeurs enregistrées dans le profil. \n\nCliquez pour ouvrir le gestionnaire de profils." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 msgctxt "@label:textbox" @@ -3560,10 +3535,7 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "" -"Certains paramètres masqués utilisent des valeurs différentes de leur valeur normalement calculée.\n" -"\n" -"Cliquez pour rendre ces paramètres visibles." +msgstr "Certains paramètres masqués utilisent des valeurs différentes de leur valeur normalement calculée.\n\nCliquez pour rendre ces paramètres visibles." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." @@ -3591,10 +3563,7 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "" -"Ce paramètre possède une valeur qui est différente du profil.\n" -"\n" -"Cliquez pour restaurer la valeur du profil." +msgstr "Ce paramètre possède une valeur qui est différente du profil.\n\nCliquez pour restaurer la valeur du profil." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 msgctxt "@label" @@ -3602,10 +3571,7 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "" -"Ce paramètre est normalement calculé mais il possède actuellement une valeur absolue définie.\n" -"\n" -"Cliquez pour restaurer la valeur calculée." +msgstr "Ce paramètre est normalement calculé mais il possède actuellement une valeur absolue définie.\n\nCliquez pour restaurer la valeur calculée." #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 msgctxt "@label" @@ -3830,9 +3796,7 @@ msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "" -"Configuration de l'impression désactivée\n" -"Les fichiers G-Code ne peuvent pas être modifiés" +msgstr "Configuration de l'impression désactivée\nLes fichiers G-Code ne peuvent pas être modifiés" #: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 msgctxt "@label Hours and minutes" @@ -4606,12 +4570,12 @@ msgstr "Récapitulatif des changements" #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." -msgstr "" +msgstr "Fournit à une machine des actions permettant la mise à jour du firmware." #: FirmwareUpdater/plugin.json msgctxt "name" msgid "Firmware Updater" -msgstr "" +msgstr "Programme de mise à jour du firmware" #: ProfileFlattener/plugin.json msgctxt "description" diff --git a/resources/i18n/fr_FR/fdmextruder.def.json.po b/resources/i18n/fr_FR/fdmextruder.def.json.po index 6fc72c38e1..52969f511f 100644 --- a/resources/i18n/fr_FR/fdmextruder.def.json.po +++ b/resources/i18n/fr_FR/fdmextruder.def.json.po @@ -169,12 +169,12 @@ msgstr "Les coordonnées Z de la position à laquelle la buse s'amorce au début #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number label" msgid "Extruder Print Cooling Fan" -msgstr "" +msgstr "Ventilateur de refroidissement d'impression de l'extrudeuse" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number description" msgid "The number of the print cooling fan associated with this extruder. Only change this from the default value of 0 when you have a different print cooling fan for each extruder." -msgstr "" +msgstr "Numéro du ventilateur de refroidissement d'impression associé à cette extrudeuse. Ne modifiez cette valeur par rapport à la valeur par défaut 0 que si vous utilisez un ventilateur de refroidissement d'impression différent pour chaque extrudeuse." #: fdmextruder.def.json msgctxt "platform_adhesion label" diff --git a/resources/i18n/fr_FR/fdmprinter.def.json.po b/resources/i18n/fr_FR/fdmprinter.def.json.po index 4eb7d674f5..87aa9d5a27 100644 --- a/resources/i18n/fr_FR/fdmprinter.def.json.po +++ b/resources/i18n/fr_FR/fdmprinter.def.json.po @@ -57,9 +57,7 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "" -"Commandes G-Code à exécuter au tout début, séparées par \n" -"." +msgstr "Commandes G-Code à exécuter au tout début, séparées par \n." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -71,9 +69,7 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "" -"Commandes G-Code à exécuter tout à la fin, séparées par \n" -"." +msgstr "Commandes G-Code à exécuter tout à la fin, séparées par \n." #: fdmprinter.def.json msgctxt "material_guid label" @@ -1078,7 +1074,7 @@ msgstr "Relier les polygones supérieurs / inférieurs" #: fdmprinter.def.json msgctxt "connect_skin_polygons description" msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality." -msgstr "" +msgstr "Relier les voies de couche extérieure supérieures / inférieures lorsqu'elles sont côte à côte. Pour le motif concentrique, ce paramètre réduit considérablement le temps de parcours, mais comme les liens peuvent se trouver à mi-chemin sur le remplissage, cette fonctionnalité peut réduire la qualité de la surface supérieure." #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1498,7 +1494,7 @@ msgstr "Motif de remplissage" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Motif du matériau de remplissage de l'impression. La ligne et le remplissage en zigzag changent de sens à chaque alternance de couche, réduisant ainsi les coûts matériels. Les motifs en grille, en triangle, trihexagonaux, cubiques, octaédriques, quart cubiques et concentriques sont entièrement imprimés sur chaque couche. Les remplissages gyroïde, cubique, quart cubique et octaédrique changent à chaque couche afin d'offrir une répartition plus égale de la solidité dans chaque direction." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1563,7 +1559,7 @@ msgstr "Entrecroisé 3D" #: fdmprinter.def.json msgctxt "infill_pattern option gyroid" msgid "Gyroid" -msgstr "" +msgstr "Gyroïde" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" @@ -1635,9 +1631,7 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "" -"Ajoutez des parois supplémentaires autour de la zone de remplissage. De telles parois peuvent réduire l'affaissement des lignes de couche extérieure supérieure / inférieure, réduisant le nombre de couches extérieures supérieures / inférieures nécessaires pour obtenir la même qualité, au prix d'un peu de matériau supplémentaire.\n" -"Configurée correctement, cette fonctionnalité peut être combinée avec « Relier les polygones de remplissage » pour relier tous les remplissages en un seul mouvement d'extrusion sans avoir besoin de déplacements ou de rétractions." +msgstr "Ajoutez des parois supplémentaires autour de la zone de remplissage. De telles parois peuvent réduire l'affaissement des lignes de couche extérieure supérieure / inférieure, réduisant le nombre de couches extérieures supérieures / inférieures nécessaires pour obtenir la même qualité, au prix d'un peu de matériau supplémentaire.\nConfigurée correctement, cette fonctionnalité peut être combinée avec « Relier les polygones de remplissage » pour relier tous les remplissages en un seul mouvement d'extrusion sans avoir besoin de déplacements ou de rétractions." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -3272,32 +3266,32 @@ msgstr "Orientation du motif de remplissage pour les supports. Le motif de rempl #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "" +msgstr "Activer la bordure du support" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "" +msgstr "Générer un bord à l'intérieur des zones de remplissage du support de la première couche. Cette bordure est imprimée sous le support et non autour de celui-ci, ce qui augmente l'adhérence du support au plateau." #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "" +msgstr "Largeur de la bordure du support" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Largeur de la bordure à imprimer sous le support. Une plus grande bordure améliore l'adhérence au plateau, mais demande un peu de matériau supplémentaire." #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "" +msgstr "Nombre de lignes de la bordure du support" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Nombre de lignes utilisées pour la bordure du support. L'augmentation du nombre de lignes de bordure améliore l'adhérence au plateau, mais demande un peu de matériau supplémentaire." #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3834,9 +3828,7 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "" -"La distance horizontale entre la jupe et la première couche de l’impression.\n" -"Il s’agit de la distance minimale séparant la jupe de l’objet. Si la jupe a d’autres lignes, celles-ci s’étendront vers l’extérieur." +msgstr "La distance horizontale entre la jupe et la première couche de l’impression.\nIl s’agit de la distance minimale séparant la jupe de l’objet. Si la jupe a d’autres lignes, celles-ci s’étendront vers l’extérieur." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3871,12 +3863,12 @@ msgstr "Le nombre de lignes utilisées pour une bordure. Un plus grand nombre de #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "" +msgstr "La bordure remplace le support" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "" +msgstr "Appliquer la bordure à imprimer autour du modèle même si cet espace aurait autrement dû être occupé par le support, en remplaçant certaines régions de la première couche de support par des régions de la bordure." #: fdmprinter.def.json msgctxt "brim_outside_only label" @@ -5283,9 +5275,7 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "" -"Distance d’un déplacement ascendant qui est extrudé à mi-vitesse.\n" -"Cela peut permettre une meilleure adhérence aux couches précédentes sans surchauffer le matériau dans ces couches. Uniquement applicable à l'impression filaire." +msgstr "Distance d’un déplacement ascendant qui est extrudé à mi-vitesse.\nCela peut permettre une meilleure adhérence aux couches précédentes sans surchauffer le matériau dans ces couches. Uniquement applicable à l'impression filaire." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" diff --git a/resources/i18n/it_IT/cura.po b/resources/i18n/it_IT/cura.po index 6a30a94865..d285cbfdc3 100644 --- a/resources/i18n/it_IT/cura.po +++ b/resources/i18n/it_IT/cura.po @@ -49,7 +49,7 @@ msgstr "GCodeWriter non supporta la modalità non di testo." #: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." -msgstr "" +msgstr "Preparare il codice G prima dell’esportazione." #: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 msgctxt "@info:title" @@ -64,11 +64,7 @@ msgid "" "

{model_names}

\n" "

Find out how to ensure the best possible print quality and reliability.

\n" "

View print quality guide

" -msgstr "" -"

La stampa di uno o più modelli 3D può non avvenire in modo ottimale a causa della dimensioni modello e della configurazione materiale:

\n" -"

{model_names}

\n" -"

Scopri come garantire la migliore qualità ed affidabilità di stampa.

\n" -"

Visualizza la guida alla qualità di stampa

" +msgstr "

La stampa di uno o più modelli 3D può non avvenire in modo ottimale a causa della dimensioni modello e della configurazione materiale:

\n

{model_names}

\n

Scopri come garantire la migliore qualità ed affidabilità di stampa.

\n

Visualizza la guida alla qualità di stampa

" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 msgctxt "@item:inmenu" @@ -78,7 +74,7 @@ msgstr "Visualizza registro modifiche" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" -msgstr "" +msgstr "Aggiornamento firmware" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 msgctxt "@item:inmenu" @@ -822,7 +818,7 @@ msgstr "File pre-sezionato {0}" #: /home/ruben/Projects/Cura/cura/API/Account.py:71 msgctxt "@info:title" msgid "Login failed" -msgstr "" +msgstr "Login non riuscito" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 @@ -896,32 +892,32 @@ msgstr "Impossibile importare il profilo da {0}: { #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" -msgstr "" +msgstr "Nessun profilo personalizzato da importare nel file {0}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Impossibile importare il profilo da {0}:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." -msgstr "" +msgstr "Questo profilo {0} contiene dati errati, impossibile importarlo." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" +msgstr "La macchina definita nel profilo {0} ({1}) non corrisponde alla macchina corrente ({2}), impossibile importarla." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Impossibile importare il profilo da {0}:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format @@ -1073,12 +1069,7 @@ msgid "" "

Backups can be found in the configuration folder.

\n" "

Please send us this Crash Report to fix the problem.

\n" " " -msgstr "" -"

Oops, Ultimaker Cura ha rilevato qualcosa che non sembra corretto.

\n" -"

Abbiamo riscontrato un errore irrecuperabile durante l’avvio. È stato probabilmente causato da alcuni file di configurazione errati. Suggeriamo di effettuare il backup e ripristinare la configurazione.

\n" -"

I backup sono contenuti nella cartella configurazione.

\n" -"

Si prega di inviare questo Rapporto su crash per correggere il problema.

\n" -" " +msgstr "

Oops, Ultimaker Cura ha rilevato qualcosa che non sembra corretto.

\n

Abbiamo riscontrato un errore irrecuperabile durante l’avvio. È stato probabilmente causato da alcuni file di configurazione errati. Suggeriamo di effettuare il backup e ripristinare la configurazione.

\n

I backup sono contenuti nella cartella configurazione.

\n

Si prega di inviare questo Rapporto su crash per correggere il problema.

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@action:button" @@ -1111,10 +1102,7 @@ msgid "" "

A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

\n" "

Please use the \"Send report\" button to post a bug report automatically to our servers

\n" " " -msgstr "" -"

Si è verificato un errore fatale in Cura. Si prega di inviare questo Rapporto su crash per correggere il problema

\n" -"

Usare il pulsante “Invia report\" per inviare automaticamente una segnalazione errore ai nostri server

\n" -" " +msgstr "

Si è verificato un errore fatale in Cura. Si prega di inviare questo Rapporto su crash per correggere il problema

\n

Usare il pulsante “Invia report\" per inviare automaticamente una segnalazione errore ai nostri server

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 msgctxt "@title:groupbox" @@ -1408,7 +1396,7 @@ msgstr "Scostamento Y ugello" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Cooling Fan Number" -msgstr "" +msgstr "Numero ventola di raffreddamento" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 msgctxt "@label" @@ -1512,7 +1500,7 @@ msgstr "Indietro" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:20 msgctxt "@title:window" msgid "Confirm uninstall" -msgstr "" +msgstr "Conferma disinstalla" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:50 msgctxt "@text:window" @@ -1590,10 +1578,7 @@ msgid "" "This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "" -"Questo plugin contiene una licenza.\n" -"È necessario accettare questa licenza per poter installare il plugin.\n" -"Accetti i termini sotto riportati?" +msgstr "Questo plugin contiene una licenza.\nÈ necessario accettare questa licenza per poter installare il plugin.\nAccetti i termini sotto riportati?" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 msgctxt "@action:button" @@ -1655,7 +1640,7 @@ msgstr "Chiudi" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" -msgstr "" +msgstr "Aggiornamento firmware" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:39 msgctxt "@label" @@ -1680,12 +1665,12 @@ msgstr "Carica il firmware personalizzato" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:83 msgctxt "@label" msgid "Firmware can not be updated because there is no connection with the printer." -msgstr "" +msgstr "Impossibile aggiornare il firmware: nessun collegamento con la stampante." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:91 msgctxt "@label" msgid "Firmware can not be updated because the connection with the printer does not support upgrading firmware." -msgstr "" +msgstr "Impossibile aggiornare il firmware: il collegamento con la stampante non supporta l’aggiornamento del firmware." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:98 msgctxt "@title:window" @@ -1753,10 +1738,7 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "" -"Per stampare direttamente sulla stampante in rete, verificare che la stampante desiderata sia collegata alla rete mediante un cavo di rete o mediante collegamento alla rete WIFI. Se si collega Cura alla stampante, è comunque possibile utilizzare una chiavetta USB per trasferire i file codice G alla stampante.\n" -"\n" -"Selezionare la stampante dall’elenco seguente:" +msgstr "Per stampare direttamente sulla stampante in rete, verificare che la stampante desiderata sia collegata alla rete mediante un cavo di rete o mediante collegamento alla rete WIFI. Se si collega Cura alla stampante, è comunque possibile utilizzare una chiavetta USB per trasferire i file codice G alla stampante.\n\nSelezionare la stampante dall’elenco seguente:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 @@ -1920,62 +1902,62 @@ msgstr "In attesa: " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 msgctxt "@label" msgid "Configuration change" -msgstr "" +msgstr "Modifica configurazione" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 msgctxt "@label" msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" +msgstr "La stampante assegnata, %1, richiede le seguenti modifiche di configurazione:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 msgctxt "@label" msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" +msgstr "La stampante %1 è assegnata, ma il processo contiene una configurazione materiale sconosciuta." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 msgctxt "@label" msgid "Change material %1 from %2 to %3." -msgstr "" +msgstr "Cambia materiale %1 da %2 a %3." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 msgctxt "@label" msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" +msgstr "Caricare %3 come materiale %1 (Operazione non annullabile)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 msgctxt "@label" msgid "Change print core %1 from %2 to %3." -msgstr "" +msgstr "Cambia print core %1 da %2 a %3." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 msgctxt "@label" msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" +msgstr "Cambia piano di stampa a %1 (Operazione non annullabile)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 msgctxt "@label" msgid "Override" -msgstr "" +msgstr "Override" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 msgctxt "@label" msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" +msgstr "L’avvio di un processo di stampa con una configurazione non compatibile potrebbe danneggiare la stampante 3D. Sei sicuro di voler annullare la configurazione e stampare %1?" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 msgctxt "@window:title" msgid "Override configuration configuration and start print" -msgstr "" +msgstr "Annullare la configurazione e avviare la stampa" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 msgctxt "@label" msgid "Glass" -msgstr "" +msgstr "Vetro" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 msgctxt "@label" msgid "Aluminum" -msgstr "" +msgstr "Alluminio" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 msgctxt "@label link to connect manager" @@ -2664,9 +2646,7 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "" -"Sono state personalizzate alcune impostazioni del profilo.\n" -"Mantenere o eliminare tali impostazioni?" +msgstr "Sono state personalizzate alcune impostazioni del profilo.\nMantenere o eliminare tali impostazioni?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -3368,9 +3348,7 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "" -"Cura è stato sviluppato da Ultimaker B.V. in cooperazione con la comunità.\n" -"Cura è orgogliosa di utilizzare i seguenti progetti open source:" +msgstr "Cura è stato sviluppato da Ultimaker B.V. in cooperazione con la comunità.\nCura è orgogliosa di utilizzare i seguenti progetti open source:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 msgctxt "@label" @@ -3435,17 +3413,17 @@ msgstr "Libreria di supporto per gestione file STL" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for handling planar objects" -msgstr "" +msgstr "Libreria di supporto per gestione oggetti planari" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for handling triangular meshes" -msgstr "" +msgstr "Libreria di supporto per gestione maglie triangolari" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for analysis of complex networks" -msgstr "" +msgstr "Libreria di supporto per l’analisi di reti complesse" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 msgctxt "@label" @@ -3455,7 +3433,7 @@ msgstr "Libreria di supporto per gestione file 3MF" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for file metadata and streaming" -msgstr "" +msgstr "Libreria di supporto per metadati file e streaming" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 msgctxt "@label" @@ -3503,10 +3481,7 @@ msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "" -"Alcuni valori di impostazione/esclusione sono diversi dai valori memorizzati nel profilo.\n" -"\n" -"Fare clic per aprire la gestione profili." +msgstr "Alcuni valori di impostazione/esclusione sono diversi dai valori memorizzati nel profilo.\n\nFare clic per aprire la gestione profili." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 msgctxt "@label:textbox" @@ -3560,10 +3535,7 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "" -"Alcune impostazioni nascoste utilizzano valori diversi dal proprio valore normale calcolato.\n" -"\n" -"Fare clic per rendere visibili queste impostazioni." +msgstr "Alcune impostazioni nascoste utilizzano valori diversi dal proprio valore normale calcolato.\n\nFare clic per rendere visibili queste impostazioni." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." @@ -3591,10 +3563,7 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "" -"Questa impostazione ha un valore diverso dal profilo.\n" -"\n" -"Fare clic per ripristinare il valore del profilo." +msgstr "Questa impostazione ha un valore diverso dal profilo.\n\nFare clic per ripristinare il valore del profilo." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 msgctxt "@label" @@ -3602,10 +3571,7 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "" -"Questa impostazione normalmente viene calcolata, ma attualmente ha impostato un valore assoluto.\n" -"\n" -"Fare clic per ripristinare il valore calcolato." +msgstr "Questa impostazione normalmente viene calcolata, ma attualmente ha impostato un valore assoluto.\n\nFare clic per ripristinare il valore calcolato." #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 msgctxt "@label" @@ -3830,9 +3796,7 @@ msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "" -"Impostazione di stampa disabilitata\n" -"I file codice G non possono essere modificati" +msgstr "Impostazione di stampa disabilitata\nI file codice G non possono essere modificati" #: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 msgctxt "@label Hours and minutes" @@ -4606,12 +4570,12 @@ msgstr "Registro modifiche" #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." -msgstr "" +msgstr "Fornisce azioni macchina per l’aggiornamento del firmware." #: FirmwareUpdater/plugin.json msgctxt "name" msgid "Firmware Updater" -msgstr "" +msgstr "Aggiornamento firmware" #: ProfileFlattener/plugin.json msgctxt "description" diff --git a/resources/i18n/it_IT/fdmextruder.def.json.po b/resources/i18n/it_IT/fdmextruder.def.json.po index 94439de443..aa170f18be 100644 --- a/resources/i18n/it_IT/fdmextruder.def.json.po +++ b/resources/i18n/it_IT/fdmextruder.def.json.po @@ -169,12 +169,12 @@ msgstr "Indica la coordinata Z della posizione in cui l’ugello si innesca all #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number label" msgid "Extruder Print Cooling Fan" -msgstr "" +msgstr "Ventola di raffreddamento stampa estrusore" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number description" msgid "The number of the print cooling fan associated with this extruder. Only change this from the default value of 0 when you have a different print cooling fan for each extruder." -msgstr "" +msgstr "Il numero di ventole di raffreddamento stampa abbinate a questo estrusore. Modificarlo dal valore predefinito 0 solo quando si ha una ventola di raffreddamento diversa per ciascun estrusore." #: fdmextruder.def.json msgctxt "platform_adhesion label" diff --git a/resources/i18n/it_IT/fdmprinter.def.json.po b/resources/i18n/it_IT/fdmprinter.def.json.po index b4b425da8d..e2d013f74c 100644 --- a/resources/i18n/it_IT/fdmprinter.def.json.po +++ b/resources/i18n/it_IT/fdmprinter.def.json.po @@ -57,9 +57,7 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "" -"I comandi codice G da eseguire all’avvio, separati da \n" -"." +msgstr "I comandi codice G da eseguire all’avvio, separati da \n." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -71,9 +69,7 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "" -"I comandi codice G da eseguire alla fine, separati da \n" -"." +msgstr "I comandi codice G da eseguire alla fine, separati da \n." #: fdmprinter.def.json msgctxt "material_guid label" @@ -1078,7 +1074,7 @@ msgstr "Collega poligoni superiori/inferiori" #: fdmprinter.def.json msgctxt "connect_skin_polygons description" msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality." -msgstr "" +msgstr "Collega i percorsi del rivestimento esterno superiore/inferiore quando corrono uno accanto all’altro. Per le configurazioni concentriche, l’abilitazione di questa impostazione riduce notevolmente il tempo di spostamento, tuttavia poiché i collegamenti possono aver luogo a metà del riempimento, con questa funzione la qualità della superficie superiore potrebbe risultare inferiore." #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1498,7 +1494,7 @@ msgstr "Configurazione di riempimento" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Configurazione del materiale di riempimento della stampa. Il riempimento a linea e a zig zag cambia direzione su strati alternati, riducendo il costo del materiale. Le configurazioni a griglia, a triangolo, tri-esagonali, cubiche, ottagonali, a quarto di cubo, incrociate e concentriche sono stampate completamente su ogni strato. Le configurazioni gyroid, cubiche, a quarto di cubo e ottagonali variano per ciascuno strato per garantire una più uniforme distribuzione della forza in ogni direzione." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1563,7 +1559,7 @@ msgstr "Incrociata 3D" #: fdmprinter.def.json msgctxt "infill_pattern option gyroid" msgid "Gyroid" -msgstr "" +msgstr "Gyroid" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" @@ -1635,9 +1631,7 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "" -"Aggiunge pareti supplementari intorno alla zona di riempimento. Queste pareti possono ridurre l’abbassamento delle linee del rivestimento esterno superiore/inferiore, pertanto saranno necessari meno strati di rivestimento esterno superiore/inferiore per ottenere la stessa qualità al costo del materiale supplementare.\n" -"Questa funzione può essere abbinata a Collega poligoni riempimento per collegare tutto il riempimento in un unico percorso di estrusione senza necessità di avanzamenti o arretramenti, se configurata correttamente." +msgstr "Aggiunge pareti supplementari intorno alla zona di riempimento. Queste pareti possono ridurre l’abbassamento delle linee del rivestimento esterno superiore/inferiore, pertanto saranno necessari meno strati di rivestimento esterno superiore/inferiore per ottenere la stessa qualità al costo del materiale supplementare.\nQuesta funzione può essere abbinata a Collega poligoni riempimento per collegare tutto il riempimento in un unico percorso di estrusione senza necessità di avanzamenti o arretramenti, se configurata correttamente." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -3272,32 +3266,32 @@ msgstr "Indica l’orientamento della configurazione del riempimento per i suppo #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "" +msgstr "Abilitazione brim del supporto" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "" +msgstr "Genera un brim entro le zone di riempimento del supporto del primo strato. Questo brim viene stampato al di sotto del supporto, non intorno ad esso. L’abilitazione di questa impostazione aumenta l’adesione del supporto al piano di stampa." #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "" +msgstr "Larghezza del brim del supporto" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Corrisponde alla larghezza del brim da stampare al di sotto del supporto. Un brim più largo migliora l’adesione al piano di stampa, ma utilizza una maggiore quantità di materiale." #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "" +msgstr "Numero di linee del brim del supporto" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Corrisponde al numero di linee utilizzate per il brim del supporto. Più linee brim migliorano l’adesione al piano di stampa, ma utilizzano una maggiore quantità di materiale." #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3834,9 +3828,7 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "" -"Indica la distanza orizzontale tra lo skirt ed il primo strato della stampa.\n" -"Questa è la distanza minima. Più linee di skirt aumenteranno tale distanza." +msgstr "Indica la distanza orizzontale tra lo skirt ed il primo strato della stampa.\nQuesta è la distanza minima. Più linee di skirt aumenteranno tale distanza." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3871,12 +3863,12 @@ msgstr "Corrisponde al numero di linee utilizzate per un brim. Più linee brim m #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "" +msgstr "Brim in sostituzione del supporto" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "" +msgstr "Abilita la stampa del brim intorno al modello anche se quello spazio dovrebbe essere occupato dal supporto. Sostituisce alcune zone del primo strato del supporto con zone del brim." #: fdmprinter.def.json msgctxt "brim_outside_only label" @@ -5283,9 +5275,7 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "" -"Indica la distanza di uno spostamento verso l'alto con estrusione a velocità dimezzata.\n" -"Ciò può garantire una migliore adesione agli strati precedenti, senza eccessivo riscaldamento del materiale su questi strati. Applicabile solo alla funzione Wire Printing." +msgstr "Indica la distanza di uno spostamento verso l'alto con estrusione a velocità dimezzata.\nCiò può garantire una migliore adesione agli strati precedenti, senza eccessivo riscaldamento del materiale su questi strati. Applicabile solo alla funzione Wire Printing." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" diff --git a/resources/i18n/ja_JP/cura.po b/resources/i18n/ja_JP/cura.po index ddc9447004..13916ef1e2 100644 --- a/resources/i18n/ja_JP/cura.po +++ b/resources/i18n/ja_JP/cura.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-09-28 15:19+0200\n" +"PO-Revision-Date: 2018-11-06 14:58+0100\n" "Last-Translator: Bothof \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -49,7 +49,7 @@ msgstr "GCodeWriter は非テキストモードはサポートしていません #: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." -msgstr "" +msgstr "エクスポートする前にG-codeの準備をしてください。" #: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 msgctxt "@info:title" @@ -78,7 +78,7 @@ msgstr "Changelogの表示" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" -msgstr "" +msgstr "ファームウェアアップデート" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 msgctxt "@item:inmenu" @@ -823,7 +823,7 @@ msgstr "スライス前ファイル {0}" #: /home/ruben/Projects/Cura/cura/API/Account.py:71 msgctxt "@info:title" msgid "Login failed" -msgstr "" +msgstr "ログインに失敗しました" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 @@ -874,7 +874,7 @@ msgstr "{0}にプロファイルを書き出すのに失敗 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr " {0}にプロファイルを書き出すことに失敗しました。:ライタープラグイン失敗の報告。" +msgstr "{0}にプロファイルを書き出すことに失敗しました。:ライタープラグイン失敗の報告。" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format @@ -897,32 +897,32 @@ msgstr "{0}: {1}からプロファイル #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" -msgstr "" +msgstr "ファイル{0}にはカスタムプロファイルがインポートされていません。" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "{0}からプロファイルの取り込に失敗しました。" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." -msgstr "" +msgstr "このプロファイル{0}には、正しくないデータが含まれているため、インポートできません。" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" +msgstr "プロファイル{0}の中で定義されているマシン({1})は、現在お使いのマシン({2})と一致しないため、インポートできませんでした。" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "{0}からプロファイルの取り込に失敗しました。" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format @@ -1409,7 +1409,7 @@ msgstr "ノズルオフセットY" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Cooling Fan Number" -msgstr "" +msgstr "冷却ファンの番号" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 msgctxt "@label" @@ -1513,7 +1513,7 @@ msgstr "戻る" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:20 msgctxt "@title:window" msgid "Confirm uninstall" -msgstr "" +msgstr "アンインストール確認" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:50 msgctxt "@text:window" @@ -1619,7 +1619,7 @@ msgstr "互換性" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." -msgstr "パッケージ取得中" +msgstr "パッケージ取得中…" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 msgctxt "@label" @@ -1656,7 +1656,7 @@ msgstr "閉める" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" -msgstr "" +msgstr "ファームウェアアップデート" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:39 msgctxt "@label" @@ -1681,12 +1681,12 @@ msgstr "カスタムファームウェアをアップロードする" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:83 msgctxt "@label" msgid "Firmware can not be updated because there is no connection with the printer." -msgstr "" +msgstr "プリンターと接続されていないため、ファームウェアをアップデートできません。" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:91 msgctxt "@label" msgid "Firmware can not be updated because the connection with the printer does not support upgrading firmware." -msgstr "" +msgstr "プリンターとの接続はファームウェアのアップデートをサポートしていないため、ファームウェアをアップデートできません。" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:98 msgctxt "@title:window" @@ -1918,62 +1918,62 @@ msgstr "待ち時間: " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 msgctxt "@label" msgid "Configuration change" -msgstr "" +msgstr "構成の変更" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 msgctxt "@label" msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" +msgstr "割り当てられたプリンター %1 には以下の構成変更が必要です。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 msgctxt "@label" msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" +msgstr "プリンター %1 が割り当てられましたが、ジョブには不明な材料構成があります。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 msgctxt "@label" msgid "Change material %1 from %2 to %3." -msgstr "" +msgstr "材料 %1 を %2 から %3 に変更します。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 msgctxt "@label" msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" +msgstr "%3 を 材料 %1 にロードします(これは上書きできません)。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 msgctxt "@label" msgid "Change print core %1 from %2 to %3." -msgstr "" +msgstr "プリントコア %1 を %2 から %3 に変更します。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 msgctxt "@label" msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" +msgstr "ビルドプレートを %1 に変更します(これは上書きできません)。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 msgctxt "@label" msgid "Override" -msgstr "" +msgstr "上書き" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 msgctxt "@label" msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" +msgstr "互換性のない構成で印刷ジョブを開始すると3Dプリンターを損傷することがあります。構成と印刷 %1 を上書きしますか?" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 msgctxt "@window:title" msgid "Override configuration configuration and start print" -msgstr "" +msgstr "構成を上書きしてから印刷を開始" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 msgctxt "@label" msgid "Glass" -msgstr "" +msgstr "ガラス" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 msgctxt "@label" msgid "Aluminum" -msgstr "" +msgstr "アルミニウム" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 msgctxt "@label link to connect manager" @@ -2625,7 +2625,7 @@ msgstr "プリンターへの接続が切断されました" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." -msgstr "プリント中" +msgstr "プリント中…" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 @@ -2637,7 +2637,7 @@ msgstr "一時停止しました" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." -msgstr "準備中" +msgstr "準備中…" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:154 msgctxt "@label:MonitorStatus" @@ -2862,12 +2862,12 @@ msgstr "フィラメントを取り込む" #: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr " %1フィラメントを取り込むことができない: %2" +msgstr "%1フィラメントを取り込むことができない: %2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "フィラメント%1の取り込みに成功しました。" +msgstr "フィラメント%1の取り込みに成功しました" #: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 #: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 @@ -2883,7 +2883,7 @@ msgstr "フィラメントの書き出しに失敗しました %1!" msgid "Successfully exported material to %1" -msgstr "フィラメントの%1への書き出しが完了ました。" +msgstr "フィラメントの%1への書き出しが完了ました" #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:14 msgctxt "@title:tab" @@ -3431,17 +3431,17 @@ msgstr "STLファイルを操作するためのライブラリーサポート" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for handling planar objects" -msgstr "" +msgstr "平面対象物を操作するためのライブラリーサポート" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for handling triangular meshes" -msgstr "" +msgstr "参画メッシュを操作するためのライブラリーサポート" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for analysis of complex networks" -msgstr "" +msgstr "複雑なネットワークを分析するためのライブラリーサポート" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 msgctxt "@label" @@ -3451,7 +3451,7 @@ msgstr "3MFファイルを操作するためのライブラリーサポート" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for file metadata and streaming" -msgstr "" +msgstr "ファイルメタデータとストリーミングのためのライブラリーサポート" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 msgctxt "@label" @@ -3537,7 +3537,7 @@ msgstr "常に見えるように設定する" #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." -msgstr "視野のセッティングを構成する" +msgstr "視野のセッティングを構成する…" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 msgctxt "@action:inmenu" @@ -3766,7 +3766,7 @@ msgstr "すべての設定を表示" #: /home/ruben/Projects/Cura/resources/qml/Menus/SettingVisibilityPresetsMenu.qml:53 msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." -msgstr "視野のセッティングを管理する" +msgstr "視野のセッティングを管理する…" # can’t enter japanese texts #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 @@ -3941,17 +3941,17 @@ msgstr "Curaを構成する…" #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." -msgstr "&プリンターを追加する" +msgstr "&プリンターを追加する…" #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." -msgstr "プリンターを管理する" +msgstr "プリンターを管理する…" #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." -msgstr "フィラメントを管理する" +msgstr "フィラメントを管理する…" #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 msgctxt "@action:inmenu menubar:profile" @@ -3971,7 +3971,7 @@ msgstr "&今の設定/無効からプロファイルを作成する…" #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." -msgstr "プロファイルを管理する" +msgstr "プロファイルを管理する…" #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" @@ -4092,7 +4092,7 @@ msgstr "&新しいプロジェクト…" #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." -msgstr "エンジン&ログを表示する" +msgstr "エンジン&ログを表示する…" #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" @@ -4295,7 +4295,7 @@ msgstr "設定" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "New project" -msgstr "新しいプロジェクト…" +msgstr "新しいプロジェクト" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 msgctxt "@info:question" @@ -4598,12 +4598,12 @@ msgstr "Changelog" #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." -msgstr "" +msgstr "ファームウェアアップデートのためのマシン操作を提供します。" #: FirmwareUpdater/plugin.json msgctxt "name" msgid "Firmware Updater" -msgstr "" +msgstr "ファームウェアアップデーター" #: ProfileFlattener/plugin.json msgctxt "description" diff --git a/resources/i18n/ja_JP/fdmextruder.def.json.po b/resources/i18n/ja_JP/fdmextruder.def.json.po index 826048fa4f..95f0382823 100644 --- a/resources/i18n/ja_JP/fdmextruder.def.json.po +++ b/resources/i18n/ja_JP/fdmextruder.def.json.po @@ -170,12 +170,12 @@ msgstr "印刷開始時にノズルがポジションを確認するZ座標。" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number label" msgid "Extruder Print Cooling Fan" -msgstr "" +msgstr "エクストルーダープリント冷却ファン" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number description" msgid "The number of the print cooling fan associated with this extruder. Only change this from the default value of 0 when you have a different print cooling fan for each extruder." -msgstr "" +msgstr "このエクストルーダーに関連付けられているプリント冷却ファンの数です。デフォルト値は0(ゼロ)です。各エクストルーダーに対してプリント冷却ファンが異なる場合にのみ変更します。" #: fdmextruder.def.json msgctxt "platform_adhesion label" diff --git a/resources/i18n/ja_JP/fdmprinter.def.json.po b/resources/i18n/ja_JP/fdmprinter.def.json.po index 72053ac7ac..3156e77288 100644 --- a/resources/i18n/ja_JP/fdmprinter.def.json.po +++ b/resources/i18n/ja_JP/fdmprinter.def.json.po @@ -61,9 +61,7 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "" -"最初に実行するG-codeコマンドは、\n" -"で区切ります。" +msgstr "最初に実行するG-codeコマンドは、\nで区切ります。" #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -75,9 +73,7 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "" -"最後に実行するG-codeコマンドは、\n" -"で区切ります。" +msgstr "最後に実行するG-codeコマンドは、\nで区切ります。" #: fdmprinter.def.json msgctxt "material_guid label" @@ -1123,7 +1119,7 @@ msgstr "上層/底層ポリゴンに接合" #: fdmprinter.def.json msgctxt "connect_skin_polygons description" msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality." -msgstr "" +msgstr "互いに次に実行する上層/底層スキンパスに接合します。同心円のパターンの場合、この設定を有効にすることにより、移動時間が短縮されますが、インフィルまでの途中で接合があるため、この機能で上層面の品質が損なわれることがあります。" #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1326,9 +1322,7 @@ msgstr "ZシームX" #: fdmprinter.def.json msgctxt "z_seam_x description" msgid "The X coordinate of the position near where to start printing each part in a layer." -msgstr "" -"レイヤー内の各印刷を開始するX座\n" -"標の位置。" +msgstr "レイヤー内の各印刷を開始するX座\n標の位置。" #: fdmprinter.def.json msgctxt "z_seam_y label" @@ -1569,7 +1563,7 @@ msgstr "インフィルパターン" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "印刷用インフィル材料のパターン。代替層のラインとジグザグの面詰めスワップ方向、材料コストを削減します。グリッド、トライアングル、トライ六角、キュービック、オクテット、クォーターキュービック、クロスと同心円のパターンは、すべてのレイヤーを完全に印刷されます。ジャイロイド、キュービック、クォーターキュービック、オクテットのインフィルは、各レイヤーを変更して各方向の強度をより均等な分布にします。" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1637,7 +1631,7 @@ msgstr "3Dクロス" #: fdmprinter.def.json msgctxt "infill_pattern option gyroid" msgid "Gyroid" -msgstr "" +msgstr "ジャイロイド" # msgstr "クロス3D" #: fdmprinter.def.json @@ -1711,9 +1705,7 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "" -"インフィルエリア周辺に外壁を追加します。このような壁は、上層/底層ラインにたるみを作ります。つまり、一部の外壁材料の費用で同じ品質を実現するためには、必要な上層/底層スキンが少ないことを意味します。\n" -"この機能は、インフィルポリゴン接合と組み合わせて、構成が正しい場合、移動または引き戻しが必要なく、すべてのインフィルを1つの押出経路に接続することができます。" +msgstr "インフィルエリア周辺に外壁を追加します。このような壁は、上層/底層ラインにたるみを作ります。つまり、一部の外壁材料の費用で同じ品質を実現するためには、必要な上層/底層スキンが少ないことを意味します。\nこの機能は、インフィルポリゴン接合と組み合わせて、構成が正しい場合、移動または引き戻しが必要なく、すべてのインフィルを1つの押出経路に接続することができます。" #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1816,9 +1808,7 @@ msgstr "インフィル優先" #: fdmprinter.def.json msgctxt "infill_before_walls description" msgid "Print the infill before printing the walls. Printing the walls first may lead to more accurate walls, but overhangs print worse. Printing the infill first leads to sturdier walls, but the infill pattern might sometimes show through the surface." -msgstr "" -"壁より前にインフィルをプリントします はじめに壁をプリントするとより精密な壁になりますが、オーバーハングのプリントは悪化します\n" -"はじめにインフィルをプリントすると丈夫な壁になりますが、インフィルの模様が時折表面から透けて表れます。" +msgstr "壁より前にインフィルをプリントします はじめに壁をプリントするとより精密な壁になりますが、オーバーハングのプリントは悪化します\nはじめにインフィルをプリントすると丈夫な壁になりますが、インフィルの模様が時折表面から透けて表れます。" #: fdmprinter.def.json msgctxt "min_infill_area label" @@ -3374,32 +3364,32 @@ msgstr "対応するインフィルラインの向きです。サポートイン #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "" +msgstr "サポートブリムを有効にする" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "" +msgstr "最初の層のインフィルエリア内ブリムを生成します。このブリムは、サポートの周囲ではなく、サポートの下に印刷されます。この設定を有効にすると、サポートのビルドプレートへの吸着性が高まります。" #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "" +msgstr "サポートブリムの幅" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "サポートの下に印刷されるブリムの幅。ブリムが大きいほど、追加材料の費用でビルドプレートへの接着性が強化されます。" #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "" +msgstr "サポートブリムのライン数" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "サポートブリムに使用される線の数。ブリムの線数を増やすと、追加材料の費用でビルドプレートへの接着性が強化されます。" #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3964,9 +3954,7 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "" -"スカートと印刷の最初の層の間の水平距離。\n" -"これは最小距離です。複数のスカートラインがこの距離から外側に展開されます。" +msgstr "スカートと印刷の最初の層の間の水平距離。\nこれは最小距離です。複数のスカートラインがこの距離から外側に展開されます。" #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4001,12 +3989,12 @@ msgstr "ブリムに使用される線数。ブリムの線数は、ビルドプ #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "" +msgstr "ブリム交換サポート" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "" +msgstr "スペースがサポートで埋まっている場合でも、モデルの周辺にブリムを印刷します。これにより、サポートの最初の層の一部のエリアがブリムになります。" #: fdmprinter.def.json msgctxt "brim_outside_only label" diff --git a/resources/i18n/ko_KR/cura.po b/resources/i18n/ko_KR/cura.po index ee93088df1..6f32d46cd7 100644 --- a/resources/i18n/ko_KR/cura.po +++ b/resources/i18n/ko_KR/cura.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-09-28 14:25+0100\n" +"PO-Revision-Date: 2018-11-06 15:00+0100\n" "Last-Translator: Jinbuhm Kim \n" "Language-Team: Jinbum Kim , Korean \n" "Language: ko_KR\n" @@ -49,7 +49,7 @@ msgstr "GCodeWriter는 텍스트가 아닌 모드는 지원하지 않습니다." #: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." -msgstr "" +msgstr "내보내기 전에 G-code를 준비하십시오." #: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 msgctxt "@info:title" @@ -78,7 +78,7 @@ msgstr "변경 내역 표시" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" -msgstr "" +msgstr "펌웨어 업데이트" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 msgctxt "@item:inmenu" @@ -822,7 +822,7 @@ msgstr "미리 슬라이싱한 파일 {0}" #: /home/ruben/Projects/Cura/cura/API/Account.py:71 msgctxt "@info:title" msgid "Login failed" -msgstr "" +msgstr "로그인 실패" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 @@ -896,32 +896,32 @@ msgstr "{0}: {1} 에서 프로파일을 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" -msgstr "" +msgstr "{0}(으)로 가져올 사용자 정의 프로파일이 없습니다" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "{0}에서 프로파일을 가져오지 못했습니다:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." -msgstr "" +msgstr "프로파일 {0}에는 정확하지 않은 데이터가 포함되어 있으므로, 불러올 수 없습니다." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" +msgstr "프로필 {0}({1})에 정의된 제품이 현재 제품({2})과 일치하지 않으므로, 불러올 수 없습니다." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "{0}에서 프로파일을 가져오지 못했습니다:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format @@ -1408,7 +1408,7 @@ msgstr "노즐 오프셋 Y" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Cooling Fan Number" -msgstr "" +msgstr "냉각 팬 번호" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 msgctxt "@label" @@ -1512,7 +1512,7 @@ msgstr "뒤로" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:20 msgctxt "@title:window" msgid "Confirm uninstall" -msgstr "" +msgstr "제거 확인" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:50 msgctxt "@text:window" @@ -1537,7 +1537,7 @@ msgstr "확인" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." -msgstr "패키지의 변경 사항이 적용되기 전에 Cura를 다시 시작해야 합니다" +msgstr "패키지의 변경 사항이 적용되기 전에 Cura를 다시 시작해야 합니다." #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 msgctxt "@info:button" @@ -1655,7 +1655,7 @@ msgstr "닫기" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" -msgstr "" +msgstr "펌웨어 업데이트" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:39 msgctxt "@label" @@ -1680,12 +1680,12 @@ msgstr "사용자 정의 펌웨어 업로드" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:83 msgctxt "@label" msgid "Firmware can not be updated because there is no connection with the printer." -msgstr "" +msgstr "프린터와 연결되지 않아 펌웨어를 업데이트할 수 없습니다." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:91 msgctxt "@label" msgid "Firmware can not be updated because the connection with the printer does not support upgrading firmware." -msgstr "" +msgstr "프린터와 연결이 펌웨어 업그레이드를 지원하지 않아 펌웨어를 업데이트할 수 없습니다." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:98 msgctxt "@title:window" @@ -1920,62 +1920,62 @@ msgstr "대기: " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 msgctxt "@label" msgid "Configuration change" -msgstr "" +msgstr "구성 변경" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 msgctxt "@label" msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" +msgstr "할당된 프린터 %1의 구성을 다음과 같이 변경해야 합니다:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 msgctxt "@label" msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" +msgstr "프린터 %1이(가) 할당되었으나 작업에 알 수 없는 재료 구성이 포함되어 있습니다." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 msgctxt "@label" msgid "Change material %1 from %2 to %3." -msgstr "" +msgstr "재료 %1을(를) %2에서 %3(으)로 변경합니다." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 msgctxt "@label" msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" +msgstr "%3을(를) 재료 %1(으)로 로드합니다(이 작업은 무효화할 수 없음)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 msgctxt "@label" msgid "Change print core %1 from %2 to %3." -msgstr "" +msgstr "PrintCore %1을(를) %2에서 %3(으)로 변경합니다." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 msgctxt "@label" msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" +msgstr "빌드 플레이트를 %1(으)로 변경합니다(이 작업은 무효화할 수 없음)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 msgctxt "@label" msgid "Override" -msgstr "" +msgstr "무시하기" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 msgctxt "@label" msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" +msgstr "호환되지 않는 구성이 있는 인쇄 작업을 시작하면 3D 프린터가 손상될 수 있습니다. 구성을 재정의하고 %1을(를) 인쇄하시겠습니까?" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 msgctxt "@window:title" msgid "Override configuration configuration and start print" -msgstr "" +msgstr "구성 재정의 및 인쇄 시작" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 msgctxt "@label" msgid "Glass" -msgstr "" +msgstr "유리" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 msgctxt "@label" msgid "Aluminum" -msgstr "" +msgstr "알루미늄" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 msgctxt "@label link to connect manager" @@ -2204,7 +2204,7 @@ msgstr "이미지 변환 ..." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:33 msgctxt "@info:tooltip" msgid "The maximum distance of each pixel from \"Base.\"" -msgstr "\"Base\"에서 각 픽셀까지의 최대 거리" +msgstr "\"Base\"에서 각 픽셀까지의 최대 거리." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:38 msgctxt "@action:label" @@ -3433,17 +3433,17 @@ msgstr "STL 파일 처리를 위한 라이브러리" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for handling planar objects" -msgstr "" +msgstr "평면 개체 처리를 위한 지원 라이브러리" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for handling triangular meshes" -msgstr "" +msgstr "삼각형 메쉬 처리를 위한 지원 라이브러리" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for analysis of complex networks" -msgstr "" +msgstr "복잡한 네트워크 분석을 위한 지원 라이브러리" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 msgctxt "@label" @@ -3453,7 +3453,7 @@ msgstr "3MF 파일 처리를 위한 라이브러리" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for file metadata and streaming" -msgstr "" +msgstr "파일 메타데이터 및 스트리밍을 위한 지원 라이브러리" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 msgctxt "@label" @@ -4488,7 +4488,7 @@ msgstr "재료" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 msgctxt "@label" msgid "Use glue with this material combination" -msgstr "이 재료 조합과 함께 접착제를 사용하십시오." +msgstr "이 재료 조합과 함께 접착제를 사용하십시오" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 msgctxt "@label" @@ -4598,12 +4598,12 @@ msgstr "변경 내역" #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." -msgstr "" +msgstr "펌웨어 업데이트를 위한 기계 동작을 제공합니다." #: FirmwareUpdater/plugin.json msgctxt "name" msgid "Firmware Updater" -msgstr "" +msgstr "펌웨어 업데이터" #: ProfileFlattener/plugin.json msgctxt "description" @@ -4688,7 +4688,7 @@ msgstr "이동식 드라이브 출력 장치 플러그인" #: UM3NetworkPrinting/plugin.json msgctxt "description" msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Ultimaker 3 프린터에 대한 네트워크 연결을 관리합니다" +msgstr "Ultimaker 3 프린터에 대한 네트워크 연결을 관리합니다." #: UM3NetworkPrinting/plugin.json msgctxt "name" diff --git a/resources/i18n/ko_KR/fdmextruder.def.json.po b/resources/i18n/ko_KR/fdmextruder.def.json.po index cef9d4ba3d..bbfe9429fb 100644 --- a/resources/i18n/ko_KR/fdmextruder.def.json.po +++ b/resources/i18n/ko_KR/fdmextruder.def.json.po @@ -171,12 +171,12 @@ msgstr "프린팅이 시작될 때 노즐이 시작하는 위치의 Z 좌표입 #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number label" msgid "Extruder Print Cooling Fan" -msgstr "" +msgstr "익스트루더 프린팅 냉각 팬" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number description" msgid "The number of the print cooling fan associated with this extruder. Only change this from the default value of 0 when you have a different print cooling fan for each extruder." -msgstr "" +msgstr "이 익스트루더와 관련된 프린팅 냉각 팬의 개수. 각 익스트루더마다 다른 프린팅 냉각 팬이 있을 때만 기본값 0에서 변경하십시오." #: fdmextruder.def.json msgctxt "platform_adhesion label" diff --git a/resources/i18n/ko_KR/fdmprinter.def.json.po b/resources/i18n/ko_KR/fdmprinter.def.json.po index 72a8b763f0..37392395ef 100644 --- a/resources/i18n/ko_KR/fdmprinter.def.json.po +++ b/resources/i18n/ko_KR/fdmprinter.def.json.po @@ -58,9 +58,7 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "" -"시작과 동시에형실행될 G 코드 명령어 \n" -"." +msgstr "시작과 동시에형실행될 G 코드 명령어 \n." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -72,9 +70,7 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "" -"맨 마지막에 실행될 G 코드 명령 \n" -"." +msgstr "맨 마지막에 실행될 G 코드 명령 \n." #: fdmprinter.def.json msgctxt "material_guid label" @@ -1079,7 +1075,7 @@ msgstr "상단/하단 다각형 연결" #: fdmprinter.def.json msgctxt "connect_skin_polygons description" msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality." -msgstr "" +msgstr "스킨 경로가 나란히 이어지는 상단/하단 스킨 경로를 연결합니다. 동심원 패턴의 경우 이 설정을 사용하면 이동 시간이 크게 감소하지만, 내부채움의 중간에 연결될 수 있기 때문에 이 기능은 상단 표면 품질을 저하시킬 수 있습니다." #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1499,7 +1495,7 @@ msgstr "내부채움 패턴" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "프린트 충진 재료의 패턴입니다. 선과 갈지자형 충진이 레이어를 하나 걸러서 방향을 바꾸므로 재료비가 절감됩니다. 격자, 삼각형, 삼육각형, 입방체, 옥텟, 4분 입방체, 십자, 동심원 패턴이 레이어마다 완전히 인쇄됩니다. 자이로이드, 입방체, 4분 입방체, 옥텟 충진이 레이어마다 변경되므로 각 방향으로 힘이 더 균등하게 분산됩니다." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1564,7 +1560,7 @@ msgstr "십자형 3D" #: fdmprinter.def.json msgctxt "infill_pattern option gyroid" msgid "Gyroid" -msgstr "" +msgstr "자이로이드" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" @@ -1636,9 +1632,7 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "" -"내부채움 영역 주변에 여분의 벽을 추가합니다. 이러한 벽은 상단/하단 스킨 라인이 늘어지는 것을 줄여줄 수 있습니다. 일부 여분 재료를 사용해도 같은 품질을 유지하는 데 필요한 필요한 상단/하단 스킨 층이 감소한다는 의미입니다.\n" -"이 기능을 올바르게 구성하는 경우 내부채움 다각형 연결과 함께 사용해 이동 또는 리트랙션없이 모든 내부채움을 단일 돌출 경로에 연결할 수 있습니다." +msgstr "내부채움 영역 주변에 여분의 벽을 추가합니다. 이러한 벽은 상단/하단 스킨 라인이 늘어지는 것을 줄여줄 수 있습니다. 일부 여분 재료를 사용해도 같은 품질을 유지하는 데 필요한 필요한 상단/하단 스킨 층이 감소한다는 의미입니다.\n이 기능을 올바르게 구성하는 경우 내부채움 다각형 연결과 함께 사용해 이동 또는 리트랙션없이 모든 내부채움을 단일 돌출 경로에 연결할 수 있습니다." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -3273,32 +3267,32 @@ msgstr "서포트에 대한 내부채움 패턴 방향. 서포트 내부채움 #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "" +msgstr "서포트 브림 사용" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "" +msgstr "첫 번째 레이어의 서포트 내부채움 영역 내에서 브림을 생성합니다. 이 브림은 서포트 주변이 아니라 아래에 인쇄됩니다. 이 설정을 사용하면 빌드 플레이트에 대한 서포트력이 향상됩니다." #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "" +msgstr "서포트 브림 폭" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "서포트 아래를 인쇄하기 위한 브림 폭. 브림이 커질수록 추가 재료가 소요되지만 빌드 플레이트에 대한 접착력이 향상됩니다." #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "" +msgstr "서포트 브림 라인 수" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "서포트 브림에 사용되는 라인의 수. 브림 라인이 많아질수록 추가 재료가 소요되지만 빌드 플레이트에 대한 접착력이 향상됩니다." #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3835,9 +3829,7 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "" -"프린트의 스커트와 첫 번째 레이어 사이의 수평 거리입니다.\n" -"이것은 최소 거리입니다. 여러 개의 스커트 선이 이 거리에서 바깥쪽으로 연장됩니다." +msgstr "프린트의 스커트와 첫 번째 레이어 사이의 수평 거리입니다.\n이것은 최소 거리입니다. 여러 개의 스커트 선이 이 거리에서 바깥쪽으로 연장됩니다." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3872,12 +3864,12 @@ msgstr "브림에 사용되는 선의 수입니다. 더 많은 브림 선이 빌 #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "" +msgstr "브림이 서포트 대체" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "" +msgstr "서포트가 차지할 공간이더라도 모델 주변에 브림이 인쇄되도록 합니다. 이렇게 하면 서포트의 첫 번째 레이어 영역 일부가 브림 영역으로 대체됩니다." #: fdmprinter.def.json msgctxt "brim_outside_only label" diff --git a/resources/i18n/nl_NL/cura.po b/resources/i18n/nl_NL/cura.po index ed0d045cd5..60b7671e6c 100644 --- a/resources/i18n/nl_NL/cura.po +++ b/resources/i18n/nl_NL/cura.po @@ -8,13 +8,15 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-10-01 11:30+0100\n" +"PO-Revision-Date: 2018-11-06 15:03+0100\n" "Last-Translator: Bothof \n" "Language-Team: Dutch\n" "Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.6\n" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 msgctxt "@action" @@ -47,7 +49,7 @@ msgstr "GCodeWriter ondersteunt geen non-tekstmodus." #: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." -msgstr "" +msgstr "Bereid voorafgaand aan het exporteren G-code voor." #: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 msgctxt "@info:title" @@ -76,7 +78,7 @@ msgstr "Wijzigingenlogboek Weergeven" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" -msgstr "" +msgstr "Firmware bijwerken" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 msgctxt "@item:inmenu" @@ -439,7 +441,7 @@ msgstr "De PrintCores en/of materialen in de printer wijken af van de PrintCores #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 msgctxt "@info:status" msgid "Connected over the network" -msgstr "Via het netwerk verbonden." +msgstr "Via het netwerk verbonden" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 msgctxt "@info:status" @@ -820,7 +822,7 @@ msgstr "Vooraf geslicet bestand {0}" #: /home/ruben/Projects/Cura/cura/API/Account.py:71 msgctxt "@info:title" msgid "Login failed" -msgstr "" +msgstr "Inloggen mislukt" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 @@ -894,32 +896,32 @@ msgstr "Kan het profiel niet importeren uit {0}: { #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" -msgstr "" +msgstr "Er is geen aangepast profiel om in het bestand {0} te importeren" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Kan het profiel niet importeren uit {0}:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." -msgstr "" +msgstr "Dit profiel {0} bevat incorrecte gegevens. Kan het profiel niet importeren." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" +msgstr "De machine die is vastgelegd in het profiel {0} ({1}), komt niet overeen met uw huidige machine ({2}). Kan het profiel niet importeren." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Kan het profiel niet importeren uit {0}:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format @@ -1346,7 +1348,7 @@ msgstr "Hoogte rijbrug" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "Het hoogteverschil tussen de punt van de nozzle en het rijbrugsysteem (X- en Y-as). Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en het rijbrugsysteem te voorkomen" +msgstr "Het hoogteverschil tussen de punt van de nozzle en het rijbrugsysteem (X- en Y-as). Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en het rijbrugsysteem te voorkomen." #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 msgctxt "@label" @@ -1406,7 +1408,7 @@ msgstr "Nozzle-offset Y" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Cooling Fan Number" -msgstr "" +msgstr "Nummer van koelventilator" # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER @@ -1525,7 +1527,7 @@ msgstr "Terug" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:20 msgctxt "@title:window" msgid "Confirm uninstall" -msgstr "" +msgstr "De-installeren bevestigen" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:50 msgctxt "@text:window" @@ -1668,7 +1670,7 @@ msgstr "Sluiten" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" -msgstr "" +msgstr "Firmware bijwerken" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:39 msgctxt "@label" @@ -1693,12 +1695,12 @@ msgstr "Aangepaste Firmware Uploaden" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:83 msgctxt "@label" msgid "Firmware can not be updated because there is no connection with the printer." -msgstr "" +msgstr "Kan de firmware niet bijwerken omdat er geen verbinding met de printer is." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:91 msgctxt "@label" msgid "Firmware can not be updated because the connection with the printer does not support upgrading firmware." -msgstr "" +msgstr "Kan de firmware niet bijwerken omdat de verbinding met de printer geen ondersteuning biedt voor het uitvoeren van een firmware-upgrade." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:98 msgctxt "@title:window" @@ -1933,62 +1935,62 @@ msgstr "Wachten op: " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 msgctxt "@label" msgid "Configuration change" -msgstr "" +msgstr "Configuratiewijziging" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 msgctxt "@label" msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" +msgstr "Voor de toegewezen printer, 1%, is/zijn de volgende configuratiewijziging/configuratiewijzigingen vereist:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 msgctxt "@label" msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" +msgstr "De printer 1% is toegewezen. De taak bevat echter een onbekende materiaalconfiguratie." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 msgctxt "@label" msgid "Change material %1 from %2 to %3." -msgstr "" +msgstr "Wijzig het materiaal %1 van %2 in %3." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 msgctxt "@label" msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" +msgstr "Laad %3 als materiaal %1 (kan niet worden overschreven)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 msgctxt "@label" msgid "Change print core %1 from %2 to %3." -msgstr "" +msgstr "Wijzig de print core %1 van %2 in %3." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 msgctxt "@label" msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" +msgstr "Wijzig het platform naar %1 (kan niet worden overschreven)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 msgctxt "@label" msgid "Override" -msgstr "" +msgstr "Overschrijven" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 msgctxt "@label" msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" +msgstr "Als u een printtaak met een incompatibele configuratie start, kan dit leiden tot schade aan de 3D-printer. Weet u zeker dat u de configuratie en print %1 wilt overschrijven?" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 msgctxt "@window:title" msgid "Override configuration configuration and start print" -msgstr "" +msgstr "Configuratie overschrijven en printen starten" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 msgctxt "@label" msgid "Glass" -msgstr "" +msgstr "Glas" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 msgctxt "@label" msgid "Aluminum" -msgstr "" +msgstr "Aluminium" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 msgctxt "@label link to connect manager" @@ -2202,12 +2204,12 @@ msgstr "Cura verzendt anonieme gegevens naar Ultimaker om de printkwaliteit en g #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 msgctxt "@text:window" msgid "I don't want to send these data" -msgstr "Ik wil deze gegevens niet verzenden." +msgstr "Ik wil deze gegevens niet verzenden" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 msgctxt "@text:window" msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "Verzenden van deze gegevens naar Ultimaker toestaan en ons helpen Cura te verbeteren." +msgstr "Verzenden van deze gegevens naar Ultimaker toestaan en ons helpen Cura te verbeteren" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2247,7 +2249,7 @@ msgstr "Breedte (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:103 msgctxt "@info:tooltip" msgid "The depth in millimeters on the build plate" -msgstr "De diepte op het platform in millimeters." +msgstr "De diepte op het platform in millimeters" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:108 msgctxt "@action:label" @@ -2478,7 +2480,7 @@ msgstr "Printerupgrades Selecteren" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "Selecteer eventuele upgrades die op deze Ultimaker 2 zijn uitgevoerd" +msgstr "Selecteer eventuele upgrades die op deze Ultimaker 2 zijn uitgevoerd." #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 msgctxt "@label" @@ -2866,7 +2868,7 @@ msgstr "Verwijderen Bevestigen" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" -msgstr "Weet u zeker dat u %1 wilt verwijderen? Deze bewerking kan niet ongedaan worden gemaakt." +msgstr "Weet u zeker dat u %1 wilt verwijderen? Deze bewerking kan niet ongedaan worden gemaakt!" #: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 #: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 @@ -3448,17 +3450,17 @@ msgstr "Ondersteuningsbibliotheek voor het verwerken van STL-bestanden" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for handling planar objects" -msgstr "" +msgstr "Ondersteuningsbibliotheek voor het verwerken van tweedimensionale objecten" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for handling triangular meshes" -msgstr "" +msgstr "Ondersteuningsbibliotheek voor het verwerken van driehoekig rasters" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for analysis of complex networks" -msgstr "" +msgstr "Ondersteuningsbibliotheek voor de analyse van complexe netwerken" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 msgctxt "@label" @@ -3468,7 +3470,7 @@ msgstr "Ondersteuningsbibliotheek voor het verwerken van 3MF-bestanden" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for file metadata and streaming" -msgstr "" +msgstr "Ondersteuningsbibliotheek voor bestandsmetadata en streaming" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 msgctxt "@label" @@ -3591,7 +3593,7 @@ msgstr "Beïnvloed door" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." -msgstr "Deze instelling wordt altijd door alle extruders gedeeld. Als u hier de instelling wijzigt, wordt de waarde voor alle extruders gewijzigd" +msgstr "Deze instelling wordt altijd door alle extruders gedeeld. Als u hier de instelling wijzigt, wordt de waarde voor alle extruders gewijzigd." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 msgctxt "@label" @@ -4539,7 +4541,7 @@ msgstr "Huidig platform schikken" #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -msgstr "Biedt een manier om de machine-instellingen (zoals bouwvolume, maat nozzle, enz.) te wijzigen" +msgstr "Biedt een manier om de machine-instellingen (zoals bouwvolume, maat nozzle, enz.) te wijzigen." #: MachineSettingsAction/plugin.json msgctxt "name" @@ -4619,12 +4621,12 @@ msgstr "Wijzigingenlogboek" #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." -msgstr "" +msgstr "Biedt machineacties voor het bijwerken van de firmware." #: FirmwareUpdater/plugin.json msgctxt "name" msgid "Firmware Updater" -msgstr "" +msgstr "Firmware-updater" #: ProfileFlattener/plugin.json msgctxt "description" @@ -4649,7 +4651,7 @@ msgstr "USB-printen" #: UserAgreement/plugin.json msgctxt "description" msgid "Ask the user once if he/she agrees with our license." -msgstr "Vraag de gebruiker één keer of deze akkoord gaat met de licentie" +msgstr "Vraag de gebruiker één keer of deze akkoord gaat met de licentie." #: UserAgreement/plugin.json msgctxt "name" @@ -4709,7 +4711,7 @@ msgstr "Invoegtoepassing voor Verwijderbaar uitvoerapparaat" #: UM3NetworkPrinting/plugin.json msgctxt "description" msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Hiermee beheert u netwerkverbindingen naar Ultimaker 3-printers" +msgstr "Hiermee beheert u netwerkverbindingen naar Ultimaker 3-printers." #: UM3NetworkPrinting/plugin.json msgctxt "name" @@ -4844,7 +4846,7 @@ msgstr "Hiermee worden configuraties bijgewerkt van Cura 2.5 naar Cura 2.6." #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" -msgstr "Versie-upgrade van 2.5 naar 2.6." +msgstr "Versie-upgrade van 2.5 naar 2.6" #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "description" @@ -4884,7 +4886,7 @@ msgstr "Hiermee worden configuraties bijgewerkt van Cura 2.6 naar Cura 2.7." #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "name" msgid "Version Upgrade 2.6 to 2.7" -msgstr "Versie-upgrade van 2.6 naar 2.7." +msgstr "Versie-upgrade van 2.6 naar 2.7" #: VersionUpgrade/VersionUpgrade21to22/plugin.json msgctxt "description" @@ -4904,7 +4906,7 @@ msgstr "Hiermee worden configuraties bijgewerkt van Cura 2.2 naar Cura 2.4." #: VersionUpgrade/VersionUpgrade22to24/plugin.json msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" -msgstr "Versie-upgrade van 2.2 naar 2.4." +msgstr "Versie-upgrade van 2.2 naar 2.4" #: ImageReader/plugin.json msgctxt "description" diff --git a/resources/i18n/nl_NL/fdmextruder.def.json.po b/resources/i18n/nl_NL/fdmextruder.def.json.po index 9fbf5e269a..9dfe5e859e 100644 --- a/resources/i18n/nl_NL/fdmextruder.def.json.po +++ b/resources/i18n/nl_NL/fdmextruder.def.json.po @@ -169,12 +169,12 @@ msgstr "De Z-coördinaat van de positie waar filament in de nozzle wordt terugge #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number label" msgid "Extruder Print Cooling Fan" -msgstr "" +msgstr "Printkoelventilator van extruder" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number description" msgid "The number of the print cooling fan associated with this extruder. Only change this from the default value of 0 when you have a different print cooling fan for each extruder." -msgstr "" +msgstr "Het nummer van de bij deze extruder behorende printkoelventilator. Verander de standaardwaarde 0 alleen als u voor elke extruder een andere printkoelventilator hebt." #: fdmextruder.def.json msgctxt "platform_adhesion label" diff --git a/resources/i18n/nl_NL/fdmprinter.def.json.po b/resources/i18n/nl_NL/fdmprinter.def.json.po index 8ebbaee3d6..1733d1830e 100644 --- a/resources/i18n/nl_NL/fdmprinter.def.json.po +++ b/resources/i18n/nl_NL/fdmprinter.def.json.po @@ -8,13 +8,14 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-10-01 14:10+0100\n" +"PO-Revision-Date: 2018-11-06 15:03+0100\n" "Last-Translator: Bothof \n" "Language-Team: Dutch\n" "Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -547,7 +548,7 @@ msgstr "Maximale Acceleratie X" #: fdmprinter.def.json msgctxt "machine_max_acceleration_x description" msgid "Maximum acceleration for the motor of the X-direction" -msgstr "De maximale acceleratie van de motor in de X-richting." +msgstr "De maximale acceleratie van de motor in de X-richting" #: fdmprinter.def.json msgctxt "machine_max_acceleration_y label" @@ -697,7 +698,7 @@ msgstr "Minimale Doorvoersnelheid" #: fdmprinter.def.json msgctxt "machine_minimum_feedrate description" msgid "The minimal movement speed of the print head." -msgstr "De minimale bewegingssnelheid van de printkop" +msgstr "De minimale bewegingssnelheid van de printkop." #: fdmprinter.def.json msgctxt "machine_feeder_wheel_diameter label" @@ -747,7 +748,7 @@ msgstr "Lijnbreedte" #: fdmprinter.def.json msgctxt "line_width description" msgid "Width of a single line. Generally, the width of each line should correspond to the width of the nozzle. However, slightly reducing this value could produce better prints." -msgstr "De breedte van een enkele lijn. Over het algemeen dient de breedte van elke lijn overeen te komen met de breedte van de nozzle. Wanneer deze waarde echter iets wordt verlaagd, resulteert dit in betere prints" +msgstr "De breedte van een enkele lijn. Over het algemeen dient de breedte van elke lijn overeen te komen met de breedte van de nozzle. Wanneer deze waarde echter iets wordt verlaagd, resulteert dit in betere prints." #: fdmprinter.def.json msgctxt "wall_line_width label" @@ -1077,7 +1078,7 @@ msgstr "Boven-/onderkant Polygonen Verbinden" #: fdmprinter.def.json msgctxt "connect_skin_polygons description" msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality." -msgstr "" +msgstr "Verbind skinpaden aan de boven-/onderkant waar ze naast elkaar lopen. Met deze instelling wordt bij concentrische patronen de bewegingstijd aanzienlijk verkort. Dit kan echter ten koste gaan van de kwaliteit van de bovenste laag aangezien de verbindingen in het midden van de vulling kunnen komen te liggen." #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1497,7 +1498,7 @@ msgstr "Vulpatroon" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Het patroon van het vulmateriaal van de print. De lijn- en zigzagvulling veranderen per vullaag van richting, waardoor wordt bespaard op materiaalkosten. De raster-, driehoeks-, tri-hexagonale, kubische, achtvlaks-, afgeknotte kubus-, kruis- en concentrische patronen worden elke laag volledig geprint. Gyroïde, kubische, afgeknotte kubus- en achtvlaksvullingen veranderen elke laag voor een meer gelijke krachtverdeling in elke richting." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1562,7 +1563,7 @@ msgstr "Kruis 3D" #: fdmprinter.def.json msgctxt "infill_pattern option gyroid" msgid "Gyroid" -msgstr "" +msgstr "Gyroïde" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" @@ -1866,7 +1867,7 @@ msgstr "Standaard printtemperatuur" #: fdmprinter.def.json msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" -msgstr "De standaardtemperatuur waarmee wordt geprint. Dit moet overeenkomen met de basistemperatuur van een materiaal. Voor alle andere printtemperaturen moet een offset worden gebruikt die gebaseerd is op deze waarde." +msgstr "De standaardtemperatuur waarmee wordt geprint. Dit moet overeenkomen met de basistemperatuur van een materiaal. Voor alle andere printtemperaturen moet een offset worden gebruikt die gebaseerd is op deze waarde" #: fdmprinter.def.json msgctxt "material_print_temperature label" @@ -1926,7 +1927,7 @@ msgstr "Standaardtemperatuur platform" #: fdmprinter.def.json msgctxt "default_material_bed_temperature description" msgid "The default temperature used for the heated build plate. This should be the \"base\" temperature of a build plate. All other print temperatures should use offsets based on this value" -msgstr "De standaardtemperatuur die wordt gebruikt voor het verwarmde platform. Dit moet overeenkomen met de basistemperatuur van een platform. Voor alle andere printtemperaturen moet een offset worden gebruikt die is gebaseerd op deze waarde." +msgstr "De standaardtemperatuur die wordt gebruikt voor het verwarmde platform. Dit moet overeenkomen met de basistemperatuur van een platform. Voor alle andere printtemperaturen moet een offset worden gebruikt die is gebaseerd op deze waarde" #: fdmprinter.def.json msgctxt "material_bed_temperature label" @@ -2016,7 +2017,7 @@ msgstr "Intrekken bij laagwisseling" #: fdmprinter.def.json msgctxt "retract_at_layer_change description" msgid "Retract the filament when the nozzle is moving to the next layer." -msgstr "Trek het filament in wanneer de nozzle naar de volgende laag beweegt. " +msgstr "Trek het filament in wanneer de nozzle naar de volgende laag beweegt." #: fdmprinter.def.json msgctxt "retraction_amount label" @@ -2386,7 +2387,7 @@ msgstr "Maximale Snelheid voor het Afstemmen van Doorvoer" #: fdmprinter.def.json msgctxt "speed_equalize_flow_max description" msgid "Maximum print speed when adjusting the print speed in order to equalize flow." -msgstr "Maximale printsnelheid tijdens het aanpassen van de printsnelheid om de doorvoer af te stemmen" +msgstr "Maximale printsnelheid tijdens het aanpassen van de printsnelheid om de doorvoer af te stemmen." #: fdmprinter.def.json msgctxt "acceleration_enabled label" @@ -3271,32 +3272,32 @@ msgstr "Richting van het vulpatroon voor supportstructuren. Het vulpatroon voor #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "" +msgstr "Supportbrim inschakelen" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "" +msgstr "Genereer een brim binnen de supportvulgebieden van de eerste laag. Deze brim wordt niet rondom maar onder de supportstructuur geprint. Als u deze instelling inschakelt, hecht de supportstructuur beter aan het platform." #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "" +msgstr "Breedte supportbrim" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "De breedte van de brim die onder de support wordt geprint. Een bredere brim kost meer materiaal, maar hecht beter aan het platform." #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "" +msgstr "Aantal supportbrimlijnen" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Het aantal lijnen dat voor de supportbrim wordt gebruikt. Meer brimlijnen zorgen voor betere hechting aan het platform, maar kosten wat extra materiaal." #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3870,12 +3871,12 @@ msgstr "Het aantal lijnen dat voor een brim wordt gebruikt. Meer lijnen zorgen v #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "" +msgstr "Brim vervangt supportstructuur" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "" +msgstr "Dwing af dat de brim rond het model wordt geprint, zelfs als deze ruimte anders door supportstructuur zou worden ingenomen. Hierdoor worden enkele gebieden van de eerste supportlaag vervangen door brimgebieden." #: fdmprinter.def.json msgctxt "brim_outside_only label" diff --git a/resources/i18n/pt_BR/cura.po b/resources/i18n/pt_BR/cura.po index 8aad16ed27..73b8d759ce 100644 --- a/resources/i18n/pt_BR/cura.po +++ b/resources/i18n/pt_BR/cura.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-10-01 03:20-0300\n" +"PO-Revision-Date: 2018-11-06 02:20-0300\n" "Last-Translator: Cláudio Sampaio \n" "Language-Team: Cláudio Sampaio \n" "Language: pt_BR\n" @@ -16,6 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.0.6\n" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 msgctxt "@action" @@ -48,7 +49,7 @@ msgstr "O GCodeWriter não suporta modo binário." #: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." -msgstr "" +msgstr "Por favor prepare o G-Code antes de exportar." #: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 msgctxt "@info:title" @@ -77,7 +78,7 @@ msgstr "Exibir registro de alterações" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" -msgstr "" +msgstr "Atualizar Firmware" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 msgctxt "@item:inmenu" @@ -414,7 +415,7 @@ msgstr "Nenhum material carregado no slot {slot_number}" #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "PrintCore Diferente (Cura: {cure_printcore_name}, Impressora: {remote_printcore_name}) selecionado para o extrusor {extruder_id}" +msgstr "PrintCore Diferente (Cura: {cura_printcore_name}, Impressora: {remote_printcore_name}) selecionado para o extrusor {extruder_id}" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 #, python-brace-format @@ -821,7 +822,7 @@ msgstr "Arquivo pré-fatiado {0}" #: /home/ruben/Projects/Cura/cura/API/Account.py:71 msgctxt "@info:title" msgid "Login failed" -msgstr "" +msgstr "Login falhou" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 @@ -895,32 +896,32 @@ msgstr "Falha ao importa perfil de {0}: {1}!" msgid "No custom profile to import in file {0}" -msgstr "" +msgstr "Não há perfil personalizado a importar no arquivo {0}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Erro ao importar perfil de {0}:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." -msgstr "" +msgstr "Este perfil {0} contém dados incorretos, não foi possível importá-lo." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" +msgstr "A máquina definida no perfil {0} ({1}) não equivale à sua máquina atual ({2}), não foi possível importá-lo." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Erro ao importar perfil de {0}:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format @@ -1407,7 +1408,7 @@ msgstr "Deslocamento Y do Bico" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Cooling Fan Number" -msgstr "" +msgstr "Número da Ventoinha de Resfriamento" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 msgctxt "@label" @@ -1511,7 +1512,7 @@ msgstr "Voltar" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:20 msgctxt "@title:window" msgid "Confirm uninstall" -msgstr "" +msgstr "Confirme a desinstalação" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:50 msgctxt "@text:window" @@ -1654,7 +1655,7 @@ msgstr "Fechar" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" -msgstr "" +msgstr "Atualizar Firmware" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:39 msgctxt "@label" @@ -1679,12 +1680,12 @@ msgstr "Carregar Firmware personalizado" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:83 msgctxt "@label" msgid "Firmware can not be updated because there is no connection with the printer." -msgstr "" +msgstr "O firmware não pode ser atualizado porque não há conexão com a impressora." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:91 msgctxt "@label" msgid "Firmware can not be updated because the connection with the printer does not support upgrading firmware." -msgstr "" +msgstr "O firmware não pode ser atualizado porque a conexão com a impressora não suporta atualização de firmware." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:98 msgctxt "@title:window" @@ -1919,62 +1920,62 @@ msgstr "Aguardando por: " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 msgctxt "@label" msgid "Configuration change" -msgstr "" +msgstr "Alteração de configuração" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 msgctxt "@label" msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" +msgstr "A impressora atribuída, %1, requer as seguintes alterações de configuração:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 msgctxt "@label" msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" +msgstr "A impressora %1 está atribuída, mas o trabalho contém configuração de material desconhecida." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 msgctxt "@label" msgid "Change material %1 from %2 to %3." -msgstr "" +msgstr "Alterar material %1 de %2 para %3." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 msgctxt "@label" msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" +msgstr "Carregar %3 como material %1 (isto não pode ser sobreposto)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 msgctxt "@label" msgid "Change print core %1 from %2 to %3." -msgstr "" +msgstr "Alterar núcleo de impressão %1 de %2 para %3." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 msgctxt "@label" msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" +msgstr "Alterar mesa de impressão para %1 (Isto não pode ser sobreposto)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 msgctxt "@label" msgid "Override" -msgstr "" +msgstr "Sobrepôr" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 msgctxt "@label" msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" +msgstr "Iniciar um trabalho de impressão com configuração incompatível pode danificar sua impressora 3D. Voce tem certeza que quer sobrepôr a configuração e imprimir %1?" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 msgctxt "@window:title" msgid "Override configuration configuration and start print" -msgstr "" +msgstr "Sobrepôr configuração e iniciar impressão" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 msgctxt "@label" msgid "Glass" -msgstr "" +msgstr "Vidro" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 msgctxt "@label" msgid "Aluminum" -msgstr "" +msgstr "Alumínio" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 msgctxt "@label link to connect manager" @@ -2058,7 +2059,7 @@ msgstr "Abortar impressão" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 msgctxt "@info:tooltip" msgid "Connect to a printer" -msgstr "Conecta a uma impressora." +msgstr "Conecta a uma impressora" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 msgctxt "@action:button" @@ -2602,7 +2603,7 @@ msgstr "Tudo está em ordem! A verificação terminou." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" -msgstr "Não conectado a nenhuma impressora." +msgstr "Não conectado a nenhuma impressora" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:123 msgctxt "@label:MonitorStatus" @@ -2980,7 +2981,7 @@ msgstr "Exibir seções pendentes" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" -msgstr "Move a câmera de modo que o modelo fique no centro da visão quando for selecionado." +msgstr "Move a câmera de modo que o modelo fique no centro da visão quando for selecionado" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 msgctxt "@action:button" @@ -3025,7 +3026,7 @@ msgstr "Os modelos devem ser movidos pra baixo pra se assentar na plataforma de #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 msgctxt "@option:check" msgid "Automatically drop models to the build plate" -msgstr "Automaticamente fazer os modelos caírem na mesa de impressão." +msgstr "Automaticamente fazer os modelos caírem na mesa de impressão" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" @@ -3110,7 +3111,7 @@ msgstr "Comportamento default ao abrir um arquivo de projeto" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@window:text" msgid "Default behavior when opening a project file: " -msgstr "Comportamento default ao abrir um arquivo de projeto" +msgstr "Comportamento default ao abrir um arquivo de projeto: " #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@option:openProject" @@ -3175,7 +3176,7 @@ msgstr "Dados anônimos sobre sua impressão podem ser enviados para a Ultimaker #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 msgctxt "@option:check" msgid "Send (anonymous) print information" -msgstr "Enviar informação (anônima) de impressão." +msgstr "Enviar informação (anônima) de impressão" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 msgctxt "@action:button" @@ -3562,7 +3563,7 @@ msgid "" msgstr "" "Alguns ajustes ocultados usam valores diferentes de seu valor calculado normal.\n" "\n" -"Clique para tornar estes ajustes visíveis. " +"Clique para tornar estes ajustes visíveis." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." @@ -3582,7 +3583,7 @@ msgstr "Este ajuste é sempre compartilhado entre todos os extrusores. Modificá #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 msgctxt "@label" msgid "The value is resolved from per-extruder values " -msgstr "O valor é resolvido de valores específicos de cada extrusor" +msgstr "O valor é resolvido de valores específicos de cada extrusor " #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 msgctxt "@label" @@ -3655,7 +3656,7 @@ msgstr "A temperatura-alvo do hotend. O hotend vai aquecer ou esfriar na direç #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 msgctxt "@tooltip" msgid "The current temperature of this hotend." -msgstr "A temperatura atual deste hotend" +msgstr "A temperatura atual deste hotend." #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 msgctxt "@tooltip of temperature input" @@ -4403,7 +4404,7 @@ msgstr "Você modificou alguns ajustes de perfil. Se você quiser alterá-los, u #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 msgctxt "@label" msgid "Infill" -msgstr "Preenchimento:" +msgstr "Preenchimento" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 msgctxt "@label" @@ -4495,7 +4496,7 @@ msgstr "Material" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 msgctxt "@label" msgid "Use glue with this material combination" -msgstr "Use cola com esta combinação de materiais." +msgstr "Use cola com esta combinação de materiais" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 msgctxt "@label" @@ -4845,7 +4846,7 @@ msgstr "Atualização de Versão de 2.7 para 3.0" #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -msgstr "Atualiza configurações do Cura 3.4 para o Cura 3.5" +msgstr "Atualiza configurações do Cura 3.4 para o Cura 3.5." #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "name" diff --git a/resources/i18n/pt_BR/fdmextruder.def.json.po b/resources/i18n/pt_BR/fdmextruder.def.json.po index b8ea7ec1e4..10db723a69 100644 --- a/resources/i18n/pt_BR/fdmextruder.def.json.po +++ b/resources/i18n/pt_BR/fdmextruder.def.json.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-10-02 05:00-0300\n" +"PO-Revision-Date: 2018-11-06 04:00-0300\n" "Last-Translator: Cláudio Sampaio \n" "Language-Team: Cláudio Sampaio \n" "Language: pt_BR\n" @@ -170,12 +170,12 @@ msgstr "A coordenada Z da posição onde o bico faz a purga no início da impres #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number label" msgid "Extruder Print Cooling Fan" -msgstr "" +msgstr "Ventoinha de Refrigeração da Impressão" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number description" msgid "The number of the print cooling fan associated with this extruder. Only change this from the default value of 0 when you have a different print cooling fan for each extruder." -msgstr "" +msgstr "O número da ventoinha de refrigeração da impressão associada a este extrusor. Somente altere o valor default de 0 quando você tiver uma ventoinha diferente para cada extrusor." #: fdmextruder.def.json msgctxt "platform_adhesion label" diff --git a/resources/i18n/pt_BR/fdmprinter.def.json.po b/resources/i18n/pt_BR/fdmprinter.def.json.po index 1b746e8b0b..bd55d331ae 100644 --- a/resources/i18n/pt_BR/fdmprinter.def.json.po +++ b/resources/i18n/pt_BR/fdmprinter.def.json.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-10-02 06:30-0300\n" +"PO-Revision-Date: 2018-10-06 04:30-0300\n" "Last-Translator: Cláudio Sampaio \n" "Language-Team: Cláudio Sampaio \n" "Language: pt_BR\n" @@ -16,6 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.0.6\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -458,7 +459,7 @@ msgstr "ID do Bico" #: fdmprinter.def.json msgctxt "machine_nozzle_id description" msgid "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\"." -msgstr "O identificador do bico para o carro extrusor, tais como \"AA 0.4\" ou \"BB 0.8\"" +msgstr "O identificador do bico para o carro extrusor, tais como \"AA 0.4\" ou \"BB 0.8.\"" #: fdmprinter.def.json msgctxt "machine_nozzle_size label" @@ -548,7 +549,7 @@ msgstr "Aceleração Máxima em X" #: fdmprinter.def.json msgctxt "machine_max_acceleration_x description" msgid "Maximum acceleration for the motor of the X-direction" -msgstr "A aceleração máxima para o motor da impressora na direção X." +msgstr "A aceleração máxima para o motor da impressora na direção X" #: fdmprinter.def.json msgctxt "machine_max_acceleration_y label" @@ -598,7 +599,7 @@ msgstr "Jerk Default nos eixos X-Y" #: fdmprinter.def.json msgctxt "machine_max_jerk_xy description" msgid "Default jerk for movement in the horizontal plane." -msgstr "O valor default de jerk para movimentos no plano horizontal" +msgstr "O valor default de jerk para movimentos no plano horizontal." #: fdmprinter.def.json msgctxt "machine_max_jerk_z label" @@ -1078,7 +1079,7 @@ msgstr "Conectar Polígonos do Topo e Base" #: fdmprinter.def.json msgctxt "connect_skin_polygons description" msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality." -msgstr "" +msgstr "Conectar caminhos de contorno da base e topo quando estiverem próximos entre si. Para o padrão concêntrico, habilitar este ajuste reduzirá bastante o tempo de percurso, mas por as conexões poderem acontecer no meio do preenchimento, este recurso pode reduzir a qualidade da superfície superior." #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1498,7 +1499,7 @@ msgstr "Padrão de Preenchimento" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "O padrão do material de preenchimento da impressão. Os preenchimentos de linha e ziguezague mudam de direção em camadas alternadas, reduzindo o custo do material. Os padrões de grade, triângulo, tri-hexágono, cúbico, octeto, quarto cúbico, cruzado e concêntrico são impressos em totalidade a cada camada. Os padrões giróide, cúbico, quarto cúbico e octeto mudam a cada camada para prover uma distribuição mais igualitária de força em cada direção." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1563,7 +1564,7 @@ msgstr "Cruzado 3D" #: fdmprinter.def.json msgctxt "infill_pattern option gyroid" msgid "Gyroid" -msgstr "" +msgstr "Giróide" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" @@ -1867,7 +1868,7 @@ msgstr "Temperatura Default de Impressão" #: fdmprinter.def.json msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" -msgstr "A temperatura default usada para a impressão. Esta deve ser a temperatura \"base\" de um material. Todas as outras temperaturas de impressão devem usar diferenças baseadas neste valor." +msgstr "A temperatura default usada para a impressão. Esta deve ser a temperatura \"base\" de um material. Todas as outras temperaturas de impressão devem usar diferenças baseadas neste valor" #: fdmprinter.def.json msgctxt "material_print_temperature label" @@ -1957,7 +1958,7 @@ msgstr "Tendência à Aderência" #: fdmprinter.def.json msgctxt "material_adhesion_tendency description" msgid "Surface adhesion tendency." -msgstr "Tendência de aderência da superfície" +msgstr "Tendência de aderência da superfície." #: fdmprinter.def.json msgctxt "material_surface_energy label" @@ -2007,7 +2008,7 @@ msgstr "Habilitar Retração" #: fdmprinter.def.json msgctxt "retraction_enable description" msgid "Retract the filament when the nozzle is moving over a non-printed area. " -msgstr "Retrai o filamento quando o bico está se movendo sobre uma área não impressa." +msgstr "Retrai o filamento quando o bico está se movendo sobre uma área não impressa. " #: fdmprinter.def.json msgctxt "retract_at_layer_change label" @@ -3272,32 +3273,32 @@ msgstr "Orientação do padrão de preenchimento para suportes. O padrão de pre #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "" +msgstr "Habilitar Brim de Suporte" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "" +msgstr "Gera o brim dentro das regiões de preenchimento de suporte da primeira camada. Este brim é impresso sob o suporte, não em volta dele. Habilitar este ajuste aumenta a aderência de suporte à mesa de impressão." #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "" +msgstr "Largura do Brim de Suporte" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "A largura do brim a ser impresso sob o suporte. Um brim mais largo melhora a aderência à mesa de impressão, ao custo de material extra." #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "" +msgstr "Número de Filetes do Brim de Suporte" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "O número de filetes usado para o brim de suporte. Mais filetes melhoram a aderência na mesa de impressão, ao custo de material extra." #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3547,7 +3548,7 @@ msgstr "Densidade da Base do Suporte" #: fdmprinter.def.json msgctxt "support_bottom_density description" msgid "The density of the floors of the support structure. A higher value results in better adhesion of the support on top of the model." -msgstr "A densidade das bases da estrutura de suporte. Um valor maior resulta em melhor aderência do suporte no topo da superfície" +msgstr "A densidade das bases da estrutura de suporte. Um valor maior resulta em melhor aderência do suporte no topo da superfície." #: fdmprinter.def.json msgctxt "support_bottom_line_distance label" @@ -3672,7 +3673,7 @@ msgstr "Sobrepor Velocidade de Ventoinha" #: fdmprinter.def.json msgctxt "support_fan_enable description" msgid "When enabled, the print cooling fan speed is altered for the skin regions immediately above the support." -msgstr "Quando habilitado, a velocidade da ventoinha de resfriamento é alterada para as regiões de contorno imediatamente acima do suporte" +msgstr "Quando habilitado, a velocidade da ventoinha de resfriamento é alterada para as regiões de contorno imediatamente acima do suporte." #: fdmprinter.def.json msgctxt "support_supported_skin_fan_speed label" @@ -3871,12 +3872,12 @@ msgstr "O número de linhas usada para o brim. Mais linhas de brim melhoram a ad #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "" +msgstr "Brim Substitui Suporte" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "" +msgstr "Força que o brim seja impresso em volta do modelo mesmo se este espaço fosse ser ocupado por suporte. Isto substitui algumas regiões da primeira camada de suporte por regiões de brim." #: fdmprinter.def.json msgctxt "brim_outside_only label" @@ -3946,7 +3947,7 @@ msgstr "Espessura da Camada Superior do Raft" #: fdmprinter.def.json msgctxt "raft_surface_thickness description" msgid "Layer thickness of the top raft layers." -msgstr "Espessura de camada das camadas superiores do raft" +msgstr "Espessura de camada das camadas superiores do raft." #: fdmprinter.def.json msgctxt "raft_surface_line_width label" @@ -5116,7 +5117,7 @@ msgstr "A distância média entre os pontos aleatórios introduzidos em cada seg #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" msgid "Flow rate compensation max extrusion offset" -msgstr "Deslocamento de extrusão máxima da compensação de taxa de fluxo." +msgstr "Deslocamento de extrusão máxima da compensação de taxa de fluxo" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" diff --git a/resources/i18n/pt_PT/cura.po b/resources/i18n/pt_PT/cura.po index 14e7e89801..bcfa154d11 100644 --- a/resources/i18n/pt_PT/cura.po +++ b/resources/i18n/pt_PT/cura.po @@ -49,7 +49,7 @@ msgstr "O GCodeWriter não suporta modo sem texto." #: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." -msgstr "" +msgstr "Prepare um G-code antes de exportar." #: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 msgctxt "@info:title" @@ -65,11 +65,7 @@ msgid "" "

{model_names}

\n" "

Find out how to ensure the best possible print quality and reliability.

\n" "

View print quality guide

" -msgstr "" -"

Um, ou mais, dos modelos 3D podem ter menos qualidade de impressão devido à dimensão do modelo 3D e definição de material:

\n" -"

{model_names}

\n" -"

Descubra como assegurar a melhor qualidade e fiabilidade possível da impressão.

\n" -"

Ver o guia de qualidade da impressão

" +msgstr "

Um, ou mais, dos modelos 3D podem ter menos qualidade de impressão devido à dimensão do modelo 3D e definição de material:

\n

{model_names}

\n

Descubra como assegurar a melhor qualidade e fiabilidade possível da impressão.

\n

Ver o guia de qualidade da impressão

" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 msgctxt "@item:inmenu" @@ -79,7 +75,7 @@ msgstr "Mostrar Lista das Alterações de cada Versão" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" -msgstr "" +msgstr "Atualizar firmware" # rever! # flatten -ver contexto! @@ -846,7 +842,7 @@ msgstr "Ficheiro pré-seccionado {0}" #: /home/ruben/Projects/Cura/cura/API/Account.py:71 msgctxt "@info:title" msgid "Login failed" -msgstr "" +msgstr "Falha no início de sessão" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 @@ -920,32 +916,32 @@ msgstr "Falha ao importar perfil de {0}: {1}!" msgid "No custom profile to import in file {0}" -msgstr "" +msgstr "Nenhum perfil personalizado para importar no ficheiro {0}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Falha ao importar perfil de {0}:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." -msgstr "" +msgstr "O perfil {0} contém dados incorretos, não foi possível importá-lo." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" +msgstr "A máquina definida no perfil {0} ({1}) não corresponde à sua máquina atual ({2}), não foi possível importá-la." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Falha ao importar perfil de {0}:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format @@ -1100,12 +1096,7 @@ msgid "" "

Backups can be found in the configuration folder.

\n" "

Please send us this Crash Report to fix the problem.

\n" " " -msgstr "" -"

Ups, o Ultimaker Cura encontrou um possível problema.

\n" -"

Foi encontrado um erro irrecuperável durante o arranque da aplicação. Este pode ter sido causado por alguns ficheiros de configuração incorrectos. Sugerimos que faça um backup e reponha a sua configuração.

\n" -"

Os backups estão localizados na pasta de configuração.

\n" -"

Por favor envie-nos este Relatório de Falhas para podermos resolver o problema.

\n" -" " +msgstr "

Ups, o Ultimaker Cura encontrou um possível problema.

\n

Foi encontrado um erro irrecuperável durante o arranque da aplicação. Este pode ter sido causado por alguns ficheiros de configuração incorrectos. Sugerimos que faça um backup e reponha a sua configuração.

\n

Os backups estão localizados na pasta de configuração.

\n

Por favor envie-nos este Relatório de Falhas para podermos resolver o problema.

\n " # rever! # button size? @@ -1140,10 +1131,7 @@ msgid "" "

A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

\n" "

Please use the \"Send report\" button to post a bug report automatically to our servers

\n" " " -msgstr "" -"

Ocorreu um erro fatal no Cura. Por favor envie-nos este Relatório de Falhas para podermos resolver o problema

\n" -"

Por favor utilize o botão \"Enviar relatório\" para publicar um relatório de erros automaticamente nos nossos servidores

\n" -" " +msgstr "

Ocorreu um erro fatal no Cura. Por favor envie-nos este Relatório de Falhas para podermos resolver o problema

\n

Por favor utilize o botão \"Enviar relatório\" para publicar um relatório de erros automaticamente nos nossos servidores

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 msgctxt "@title:groupbox" @@ -1439,7 +1427,7 @@ msgstr "Desvio Y do Nozzle" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Cooling Fan Number" -msgstr "" +msgstr "Número de ventoinha de arrefecimento" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 msgctxt "@label" @@ -1543,7 +1531,7 @@ msgstr "Anterior" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:20 msgctxt "@title:window" msgid "Confirm uninstall" -msgstr "" +msgstr "Confirmar desinstalação" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:50 msgctxt "@text:window" @@ -1621,10 +1609,7 @@ msgid "" "This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "" -"Este plug-in contém uma licença.\n" -"É necessário aceitar esta licença para instalar o plug-in.\n" -"Concorda com os termos abaixo?" +msgstr "Este plug-in contém uma licença.\nÉ necessário aceitar esta licença para instalar o plug-in.\nConcorda com os termos abaixo?" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 msgctxt "@action:button" @@ -1686,7 +1671,7 @@ msgstr "Fechar" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" -msgstr "" +msgstr "Atualizar firmware" # rever! #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:39 @@ -1712,12 +1697,12 @@ msgstr "Carregar firmware personalizado" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:83 msgctxt "@label" msgid "Firmware can not be updated because there is no connection with the printer." -msgstr "" +msgstr "O firmware não pode ser atualizado por não existir ligação com a impressora." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:91 msgctxt "@label" msgid "Firmware can not be updated because the connection with the printer does not support upgrading firmware." -msgstr "" +msgstr "O firmware não pode ser atualizado porque a ligação com a impressora não suporta a atualização de firmware." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:98 msgctxt "@title:window" @@ -1785,10 +1770,7 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "" -"Para imprimir diretamente para a sua impressora através da rede, certifique-se de que a sua impressora está ligada à rede por meio de um cabo de rede ou através de ligação à rede Wi-Fi. Se não ligar o Cura por rede à impressora, poderá ainda assim utilizar uma unidade USB para transferir ficheiros g-code para a impressora.\n" -"\n" -"Selecione a sua impressora na lista em baixo:" +msgstr "Para imprimir diretamente para a sua impressora através da rede, certifique-se de que a sua impressora está ligada à rede por meio de um cabo de rede ou através de ligação à rede Wi-Fi. Se não ligar o Cura por rede à impressora, poderá ainda assim utilizar uma unidade USB para transferir ficheiros g-code para a impressora.\n\nSelecione a sua impressora na lista em baixo:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 @@ -1954,62 +1936,62 @@ msgstr "A aguardar: " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 msgctxt "@label" msgid "Configuration change" -msgstr "" +msgstr "Configuração alterada" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 msgctxt "@label" msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" +msgstr "A impressora atribuída %1 requer as seguintes alterações de configuração:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 msgctxt "@label" msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" +msgstr "A impressora %1 está atribuída, mas o trabalho tem uma configuração de material desconhecida." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 msgctxt "@label" msgid "Change material %1 from %2 to %3." -msgstr "" +msgstr "Alterar o material %1 de %2 para %3." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 msgctxt "@label" msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" +msgstr "Carregar %3 como material %1 (isto não pode ser substituído)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 msgctxt "@label" msgid "Change print core %1 from %2 to %3." -msgstr "" +msgstr "Substituir o núcleo de impressão %1 de %2 para %3." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 msgctxt "@label" msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" +msgstr "Alterar placa de construção para %1 (isto não pode ser substituído)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 msgctxt "@label" msgid "Override" -msgstr "" +msgstr "Ignorar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 msgctxt "@label" msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" +msgstr "Iniciar um trabalho de impressão com uma configuração incompatível pode danificar a impressora 3D. Tem a certeza de que pretende ignorar a configuração e imprimir %1?" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 msgctxt "@window:title" msgid "Override configuration configuration and start print" -msgstr "" +msgstr "Ignorar configuração e iniciar impressão" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 msgctxt "@label" msgid "Glass" -msgstr "" +msgstr "Vidro" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 msgctxt "@label" msgid "Aluminum" -msgstr "" +msgstr "Alumínio" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 msgctxt "@label link to connect manager" @@ -2714,9 +2696,7 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "" -"Alterou algumas das definições do perfil.\n" -"Gostaria de manter ou descartar essas alterações?" +msgstr "Alterou algumas das definições do perfil.\nGostaria de manter ou descartar essas alterações?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -3422,9 +3402,7 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "" -"O Cura foi desenvolvido pela Ultimaker B.V. em colaboração com a comunidade.\n" -"O Cura tem o prazer de utilizar os seguintes projetos open source:" +msgstr "O Cura foi desenvolvido pela Ultimaker B.V. em colaboração com a comunidade.\nO Cura tem o prazer de utilizar os seguintes projetos open source:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 msgctxt "@label" @@ -3491,17 +3469,17 @@ msgstr "Biblioteca de apoio para processamento de ficheiros STL" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for handling planar objects" -msgstr "" +msgstr "Biblioteca de apoio para processamento de objetos planos" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for handling triangular meshes" -msgstr "" +msgstr "Biblioteca de apoio para processamento de malhas triangulares" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for analysis of complex networks" -msgstr "" +msgstr "Biblioteca de apoio para análise de redes complexas" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 msgctxt "@label" @@ -3511,7 +3489,7 @@ msgstr "Biblioteca de apoio para processamento de ficheiros 3MF" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for file metadata and streaming" -msgstr "" +msgstr "Biblioteca de apoio para transmissões de fluxo e metadados de ficheiros" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 msgctxt "@label" @@ -3560,10 +3538,7 @@ msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "" -"Alguns valores de definição/substituição são diferentes dos valores armazenados no perfil.\n" -"\n" -"Clique para abrir o gestor de perfis." +msgstr "Alguns valores de definição/substituição são diferentes dos valores armazenados no perfil.\n\nClique para abrir o gestor de perfis." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 msgctxt "@label:textbox" @@ -3621,10 +3596,7 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "" -"Algumas das definições invisíveis têm valores diferentes dos valores normais calculados automaticamente.\n" -"\n" -"Clique para tornar estas definições visíveis." +msgstr "Algumas das definições invisíveis têm valores diferentes dos valores normais calculados automaticamente.\n\nClique para tornar estas definições visíveis." # rever! # Afeta? @@ -3661,10 +3633,7 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "" -"Esta definição tem um valor que é diferente do perfil.\n" -"\n" -"Clique para restaurar o valor do perfil." +msgstr "Esta definição tem um valor que é diferente do perfil.\n\nClique para restaurar o valor do perfil." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 msgctxt "@label" @@ -3672,10 +3641,7 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "" -"Normalmente, o valor desta definição é calculado, mas atualmente tem definido um valor diferente.\n" -"\n" -"Clique para restaurar o valor calculado." +msgstr "Normalmente, o valor desta definição é calculado, mas atualmente tem definido um valor diferente.\n\nClique para restaurar o valor calculado." #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 msgctxt "@label" @@ -3908,9 +3874,7 @@ msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "" -"Configuração da Impressão desativada\n" -"Os ficheiros G-code não podem ser modificados" +msgstr "Configuração da Impressão desativada\nOs ficheiros G-code não podem ser modificados" #: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 msgctxt "@label Hours and minutes" @@ -4706,12 +4670,12 @@ msgstr "Lista das Alterações" #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." -msgstr "" +msgstr "Disponibiliza as ações da máquina para atualizar o firmware." #: FirmwareUpdater/plugin.json msgctxt "name" msgid "Firmware Updater" -msgstr "" +msgstr "Atualizador de firmware" # rever! # contexto! diff --git a/resources/i18n/pt_PT/fdmextruder.def.json.po b/resources/i18n/pt_PT/fdmextruder.def.json.po index da320cbc9b..6d0d26b34c 100644 --- a/resources/i18n/pt_PT/fdmextruder.def.json.po +++ b/resources/i18n/pt_PT/fdmextruder.def.json.po @@ -171,12 +171,12 @@ msgstr "A coordenada Z da posição onde o nozzle é preparado ao iniciar a impr #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number label" msgid "Extruder Print Cooling Fan" -msgstr "" +msgstr "Ventoinha de arrefecimento de impressão do Extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number description" msgid "The number of the print cooling fan associated with this extruder. Only change this from the default value of 0 when you have a different print cooling fan for each extruder." -msgstr "" +msgstr "O número de ventoinhas de arrefecimento de impressão associadas a este extrusor. Apenas alterar o valor predefinido de 0 quando tiver uma ventoinha de arrefecimento de impressão diferente para cada extrusor." #: fdmextruder.def.json msgctxt "platform_adhesion label" diff --git a/resources/i18n/pt_PT/fdmprinter.def.json.po b/resources/i18n/pt_PT/fdmprinter.def.json.po index 35becb7199..4e33fedb36 100644 --- a/resources/i18n/pt_PT/fdmprinter.def.json.po +++ b/resources/i18n/pt_PT/fdmprinter.def.json.po @@ -58,9 +58,7 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "" -"Comandos G-code a serem executados no início – separados por \n" -"." +msgstr "Comandos G-code a serem executados no início – separados por \n." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -72,9 +70,7 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "" -"Comandos G-code a serem executados no fim – separados por \n" -"." +msgstr "Comandos G-code a serem executados no fim – separados por \n." #: fdmprinter.def.json msgctxt "material_guid label" @@ -1099,7 +1095,7 @@ msgstr "Ligar polígonos superiores/inferiores" #: fdmprinter.def.json msgctxt "connect_skin_polygons description" msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality." -msgstr "" +msgstr "Ligar caminhos de revestimento superiores/inferiores quando as trajetórias são paralelas. Para o padrão concêntrico, ativar esta definição reduz consideravelmente o tempo de deslocação mas, uma vez que as ligações podem suceder num ponto intermediário sobre o enchimento, esta funcionalidade pode reduzir a qualidade da superfície superior." #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1559,7 +1555,7 @@ msgstr "Padrão de Enchimento" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "O padrão do material de enchimento da impressão. A direção de troca de enchimento de linha e ziguezague em camadas alternadas, reduzindo os custos de material. Os padrões de grelha, triângulo, tri-hexágono, cubo, octeto, quarto cúbico, cruz e concêntrico são totalmente impressos em cada camada. Os enchimentos Gyroid, cúbico, quarto cúbico e octeto são alterados a cada camada para fornecer uma distribuição mais uniforme da resistência em cada direção." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1624,7 +1620,7 @@ msgstr "Cruz 3D" #: fdmprinter.def.json msgctxt "infill_pattern option gyroid" msgid "Gyroid" -msgstr "" +msgstr "Gyroid" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" @@ -1699,9 +1695,7 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "" -"Adicionar paredes adicionais em torno da área de enchimento. Essas paredes podem fazer com que as linhas de revestimento superiores/inferiores desçam menos, o que significa que são necessárias menos camadas de revestimento superior/inferior para a mesma qualidade à custa de algum material adicional.\n" -"Esta funcionalidade pode ser combinada com a opção Ligar polígonos de enchimento para unir todo o enchimento num único caminho de extrusão sem necessidade de deslocações ou retrações, se configurado corretamente." +msgstr "Adicionar paredes adicionais em torno da área de enchimento. Essas paredes podem fazer com que as linhas de revestimento superiores/inferiores desçam menos, o que significa que são necessárias menos camadas de revestimento superior/inferior para a mesma qualidade à custa de algum material adicional.\nEsta funcionalidade pode ser combinada com a opção Ligar polígonos de enchimento para unir todo o enchimento num único caminho de extrusão sem necessidade de deslocações ou retrações, se configurado corretamente." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -3403,32 +3397,32 @@ msgstr "Orientação do padrão de enchimento para suportes. O padrão de enchim #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "" +msgstr "Ativar borda de suporte" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "" +msgstr "Gera uma borda dentro das regiões de enchimento do suporte da primeira camada. Esta borda é impressa na parte por baixo do suporte e não em torno do mesmo. Ativar esta definição aumenta a aderência do suporte à placa de construção." #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "" +msgstr "Largura da borda do suporte" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "A largura da borda para imprimir na parte por baixo do suporte. Uma borda mais larga melhora a aderência à placa de construção à custa de algum material adicional." #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "" +msgstr "Contagem de linhas da borda do suporte" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "O número de linhas utilizado para a borda do suporte. Uma borda com mais linhas melhora a aderência à placa de construção à custa de algum material adicional." #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3971,9 +3965,7 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "" -"A distância horizontal entre o contorno e o perímetro exterior da primeira camada da impressão.\n" -"Esta é a distância mínima. Linhas múltiplas de contorno serão impressas para o exterior." +msgstr "A distância horizontal entre o contorno e o perímetro exterior da primeira camada da impressão.\nEsta é a distância mínima. Linhas múltiplas de contorno serão impressas para o exterior." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4008,12 +4000,12 @@ msgstr "O número de linhas utilizado para uma aba. Um maior número de linhas d #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "" +msgstr "A borda substitui o suporte" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "" +msgstr "Aplicar a borda para ser impressa em torno do modelo, mesmo se esse espaço fosse ocupado de outra forma pelo suporte. Isto substitui algumas regiões da primeira camada do suporte por regiões de borda." #: fdmprinter.def.json msgctxt "brim_outside_only label" @@ -5462,9 +5454,7 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "" -"A distância de um movimento ascendente que é extrudido a metade da velocidade.\n" -"Isto pode causar melhor aderência às camadas anteriores, sendo que o material nessas camadas não é demasiado aquecido. Aplica-se apenas à impressão de fios." +msgstr "A distância de um movimento ascendente que é extrudido a metade da velocidade.\nIsto pode causar melhor aderência às camadas anteriores, sendo que o material nessas camadas não é demasiado aquecido. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" diff --git a/resources/i18n/ru_RU/cura.po b/resources/i18n/ru_RU/cura.po index 012d92af9f..c5fe8b331f 100644 --- a/resources/i18n/ru_RU/cura.po +++ b/resources/i18n/ru_RU/cura.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-10-01 13:25+0100\n" +"PO-Revision-Date: 2018-11-06 15:29+0100\n" "Last-Translator: Bothof \n" "Language-Team: Ruslan Popov , Russian \n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.4\n" +"X-Generator: Poedit 2.0.6\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 @@ -49,7 +49,7 @@ msgstr "Средство записи G-кода (GCodeWriter) не поддер #: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." -msgstr "" +msgstr "Подготовьте G-код перед экспортом." #: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 msgctxt "@info:title" @@ -78,7 +78,7 @@ msgstr "Показать журнал изменений" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" -msgstr "" +msgstr "Обновить прошивку" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 msgctxt "@item:inmenu" @@ -441,7 +441,7 @@ msgstr "Модуль PrintCore и/или материал в вашем прин #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 msgctxt "@info:status" msgid "Connected over the network" -msgstr "Подключен по сети." +msgstr "Подключен по сети" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 msgctxt "@info:status" @@ -822,7 +822,7 @@ msgstr "Предообратка файла {0}" #: /home/ruben/Projects/Cura/cura/API/Account.py:71 msgctxt "@info:title" msgid "Login failed" -msgstr "" +msgstr "Вход не выполнен" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 @@ -896,32 +896,32 @@ msgstr "Невозможно импортировать профиль из !" msgid "No custom profile to import in file {0}" -msgstr "" +msgstr "Отсутствует собственный профиль для импорта в файл {0}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Не удалось импортировать профиль из {0}:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." -msgstr "" +msgstr "Данный профиль {0} содержит неверные данные, поэтому его невозможно импортировать." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" +msgstr "Принтер, заданный в профиле {0} ({1}), не совпадает с вашим текущим принтером ({2}), поэтому его невозможно импортировать." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Не удалось импортировать профиль из {0}:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format @@ -1408,7 +1408,7 @@ msgstr "Смещение сопла по оси Y" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Cooling Fan Number" -msgstr "" +msgstr "Номер охлаждающего вентилятора" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 msgctxt "@label" @@ -1491,7 +1491,7 @@ msgstr "Обновить" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 msgctxt "@action:button" msgid "Updating" -msgstr "Обновление..." +msgstr "Обновление" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 @@ -1512,7 +1512,7 @@ msgstr "Назад" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:20 msgctxt "@title:window" msgid "Confirm uninstall" -msgstr "" +msgstr "Подтвердить удаление" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:50 msgctxt "@text:window" @@ -1655,7 +1655,7 @@ msgstr "Закрыть" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" -msgstr "" +msgstr "Обновить прошивку" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:39 msgctxt "@label" @@ -1680,12 +1680,12 @@ msgstr "Залить собственную прошивку" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:83 msgctxt "@label" msgid "Firmware can not be updated because there is no connection with the printer." -msgstr "" +msgstr "Невозможно обновить прошивку, так как нет подключения к принтеру." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:91 msgctxt "@label" msgid "Firmware can not be updated because the connection with the printer does not support upgrading firmware." -msgstr "" +msgstr "Невозможно обновить прошивку, так как подключение к принтеру не поддерживает функцию обновления прошивки." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:98 msgctxt "@title:window" @@ -1920,62 +1920,62 @@ msgstr "Ожидание: " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 msgctxt "@label" msgid "Configuration change" -msgstr "" +msgstr "Изменение конфигурации" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 msgctxt "@label" msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" +msgstr "Для назначенного принтера %1 требуются следующие изменения конфигурации:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 msgctxt "@label" msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" +msgstr "Принтер %1 назначен, однако в задании указана неизвестная конфигурация материала." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 msgctxt "@label" msgid "Change material %1 from %2 to %3." -msgstr "" +msgstr "Изменить материал %1 с %2 на %3." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 msgctxt "@label" msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" +msgstr "Загрузите %3 как материал %1 (переопределение этого действия невозможно)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 msgctxt "@label" msgid "Change print core %1 from %2 to %3." -msgstr "" +msgstr "Изменить экструдер %1 с %2 на %3." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 msgctxt "@label" msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" +msgstr "Заменить рабочий стол на %1 (переопределение этого действия невозможно)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 msgctxt "@label" msgid "Override" -msgstr "" +msgstr "Переопределить" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 msgctxt "@label" msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" +msgstr "Начало задания печати с несовместимой конфигурацией может привести к повреждению 3D-принтера. Действительно переопределить конфигурацию и печатать %1?" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 msgctxt "@window:title" msgid "Override configuration configuration and start print" -msgstr "" +msgstr "Переопределить конфигурацию и начать печать" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 msgctxt "@label" msgid "Glass" -msgstr "" +msgstr "Стекло" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 msgctxt "@label" msgid "Aluminum" -msgstr "" +msgstr "Алюминий" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 msgctxt "@label link to connect manager" @@ -2000,7 +2000,7 @@ msgstr "Управление принтерами" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 msgctxt "@label" msgid "Move to top" -msgstr "переместить в начало" +msgstr "Переместить в начало" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 msgctxt "@label" @@ -3437,17 +3437,17 @@ msgstr "Вспомогательная библиотека для работы #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for handling planar objects" -msgstr "" +msgstr "Вспомогательная библиотека для работы с плоскими объектами" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for handling triangular meshes" -msgstr "" +msgstr "Вспомогательная библиотека для работы с треугольными сетками" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for analysis of complex networks" -msgstr "" +msgstr "Вспомогательная библиотека для анализа сложных сетей" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 msgctxt "@label" @@ -3457,7 +3457,7 @@ msgstr "Вспомогательная библиотека для работы #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for file metadata and streaming" -msgstr "" +msgstr "Вспомогательная библиотека для метаданных файла и потоковой передачи" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 msgctxt "@label" @@ -4614,12 +4614,12 @@ msgstr "Журнал изменений" #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." -msgstr "" +msgstr "Обеспечение действий принтера для обновления прошивки." #: FirmwareUpdater/plugin.json msgctxt "name" msgid "Firmware Updater" -msgstr "" +msgstr "Средство обновления прошивки" #: ProfileFlattener/plugin.json msgctxt "description" @@ -4644,7 +4644,7 @@ msgstr "Печать через USB" #: UserAgreement/plugin.json msgctxt "description" msgid "Ask the user once if he/she agrees with our license." -msgstr "Запрашивает согласие пользователя с условиями лицензии" +msgstr "Запрашивает согласие пользователя с условиями лицензии." #: UserAgreement/plugin.json msgctxt "name" @@ -4704,7 +4704,7 @@ msgstr "Плагин для работы с внешним носителем" #: UM3NetworkPrinting/plugin.json msgctxt "description" msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Управляет сетевыми соединениями с принтерами Ultimaker 3" +msgstr "Управляет сетевыми соединениями с принтерами Ultimaker 3." #: UM3NetworkPrinting/plugin.json msgctxt "name" diff --git a/resources/i18n/ru_RU/fdmextruder.def.json.po b/resources/i18n/ru_RU/fdmextruder.def.json.po index a75cc5dd6b..65e6698016 100644 --- a/resources/i18n/ru_RU/fdmextruder.def.json.po +++ b/resources/i18n/ru_RU/fdmextruder.def.json.po @@ -171,12 +171,12 @@ msgstr "Позиция кончика сопла на оси Z при старт #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number label" msgid "Extruder Print Cooling Fan" -msgstr "" +msgstr "Охлаждающий вентилятор экструдера, используемый во время печати" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number description" msgid "The number of the print cooling fan associated with this extruder. Only change this from the default value of 0 when you have a different print cooling fan for each extruder." -msgstr "" +msgstr "Номер охлаждающего вентилятора, используемого при печати и ассоциированного с этим экструдером. Применяемое по умолчанию значение 0 следует менять только при наличии другого охлаждающего вентилятора, используемого при печати, для каждого экструдера." #: fdmextruder.def.json msgctxt "platform_adhesion label" diff --git a/resources/i18n/ru_RU/fdmprinter.def.json.po b/resources/i18n/ru_RU/fdmprinter.def.json.po index 16c265f007..58dde033be 100644 --- a/resources/i18n/ru_RU/fdmprinter.def.json.po +++ b/resources/i18n/ru_RU/fdmprinter.def.json.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-10-01 14:15+0100\n" +"PO-Revision-Date: 2018-11-06 15:29+0100\n" "Last-Translator: Bothof \n" "Language-Team: Ruslan Popov , Russian \n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.4\n" +"X-Generator: Poedit 2.0.6\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: fdmprinter.def.json @@ -1079,7 +1079,7 @@ msgstr "Соединение верхних/нижних полигонов" #: fdmprinter.def.json msgctxt "connect_skin_polygons description" msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality." -msgstr "" +msgstr "Соединение верхних/нижних путей оболочки на участках, где они проходят рядом. При использовании концентрического шаблона активация данной настройки значительно сокращает время перемещения, но, учитывая возможность наличия соединений на полпути над заполнением, эта функция может ухудшить качество верхней поверхности." #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1419,7 +1419,7 @@ msgstr "Границы разглаживания" #: fdmprinter.def.json msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." -msgstr "Расстояние от краёв модели. Разглаживание от края до края может выразится в загибании краёв при печати." +msgstr "Расстояние от краёв модели. Разглаживание от края до края может выразиться в загибании краёв при печати." #: fdmprinter.def.json msgctxt "speed_ironing label" @@ -1499,7 +1499,7 @@ msgstr "Шаблон заполнения" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Шаблон заполняющего материала печати. Линейное и зигзагообразное заполнение меняет направление на чередующихся слоях, снижая расходы на материал. Шаблоны «сетка», «треугольник», «шестигранник из треугольников», «куб», «восьмигранник», «четверть куба», «крестовое», «концентрическое» полностью печатаются в каждом слое. Шаблоны заполнения «гироид», «куб», «четверть куба» и «восьмигранник» меняются в каждом слое, чтобы обеспечить более равномерное распределение прочности в каждом направлении." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1564,7 +1564,7 @@ msgstr "Крестовое 3D" #: fdmprinter.def.json msgctxt "infill_pattern option gyroid" msgid "Gyroid" -msgstr "" +msgstr "Гироид" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" @@ -1868,7 +1868,7 @@ msgstr "Температура сопла" #: fdmprinter.def.json msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" -msgstr "Стандартная температура сопла, используемая при печати. Значением должна быть \"базовая\" температура для материала. Все другие температуры печати должны быть выражены смещениями от основного значения." +msgstr "Стандартная температура сопла, используемая при печати. Значением должна быть \"базовая\" температура для материала. Все другие температуры печати должны быть выражены смещениями от основного значения" #: fdmprinter.def.json msgctxt "material_print_temperature label" @@ -3018,7 +3018,7 @@ msgstr "Обычная скорость вентилятора на слое" #: fdmprinter.def.json msgctxt "cool_fan_full_layer description" msgid "The layer at which the fans spin on regular fan speed. If regular fan speed at height is set, this value is calculated and rounded to a whole number." -msgstr "Слой, на котором вентилятор должен вращаться с обыкновенной скорость. Если определена обычная скорость для вентилятора на высоте, это значение вычисляется и округляется до целого." +msgstr "Слой, на котором вентилятор должен вращаться с обыкновенной скоростью. Если определена обычная скорость для вентилятора на высоте, это значение вычисляется и округляется до целого." #: fdmprinter.def.json msgctxt "cool_min_layer_time label" @@ -3273,32 +3273,32 @@ msgstr "Ориентация шаблона заполнения для подд #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "" +msgstr "Разрешить кайму поддержек" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "" +msgstr "Создайте кайму внутри участков заполнения поддержек первого слоя. Эта кайма печатается под поддержкой, а не вокруг нее. Включение этого параметра увеличивает адгезию поддержки к рабочему столу." #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "" +msgstr "Ширина каймы поддержки" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Ширина каймы для печати под поддержкой. При увеличении каймы улучшается адгезия к рабочему столу и увеличивается расход материала." #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "" +msgstr "Количество линий каймы поддержки" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Количество линий, используемых для каймы поддержки. При увеличении линий каймы улучшается адгезия к рабочему столу и увеличивается расход материала." #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3428,7 +3428,7 @@ msgstr "Степень заполнения поддержек" #: fdmprinter.def.json msgctxt "gradual_support_infill_steps description" msgid "Number of times to reduce the support infill density by half when getting further below top surfaces. Areas which are closer to top surfaces get a higher density, up to the Support Infill Density." -msgstr "Количество раз, на которое на половину можно уменьшать плотность заполнения поддержек при прохоже вглубь структуры от поверхности. Области ближе к оболочке имеют большую плотность, вплоть до значения \"Плотность заполнения поддержек\"." +msgstr "Количество раз, на которое на половину можно уменьшать плотность заполнения поддержек при проходе вглубь структуры от поверхности. Области ближе к оболочке имеют большую плотность, вплоть до значения \"Плотность заполнения поддержек\"." #: fdmprinter.def.json msgctxt "gradual_support_infill_step_height label" @@ -3872,12 +3872,12 @@ msgstr "Количество линий, используемых для печ #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "" +msgstr "Кайма заменяет поддержку" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "" +msgstr "Принудительная печать каймы вокруг модели, даже если пространство в ином случае было бы занято поддержкой. При этом некоторые участки первого слоя поддержки заменяются участками каймы." #: fdmprinter.def.json msgctxt "brim_outside_only label" @@ -4567,7 +4567,7 @@ msgstr "Сглаживает спиральные контуры для умен #: fdmprinter.def.json msgctxt "relative_extrusion label" msgid "Relative Extrusion" -msgstr "Отностительная экструзия" +msgstr "Относительная экструзия" #: fdmprinter.def.json msgctxt "relative_extrusion description" @@ -5002,7 +5002,7 @@ msgstr "Максимальный угол спагетти заполнения" #: fdmprinter.def.json msgctxt "spaghetti_max_infill_angle description" msgid "The maximum angle w.r.t. the Z axis of the inside of the print for areas which are to be filled with spaghetti infill afterwards. Lowering this value causes more angled parts in your model to be filled on each layer." -msgstr "Максимальный угол по отношению к оси Z внутри печатаемого объёма для заполняемых областей. Уменьшение этого значения приводит к тому, что более наклонённый части вашей модели будут заполнены на каждом слое." +msgstr "Максимальный угол по отношению к оси Z внутри печатаемого объёма для заполняемых областей. Уменьшение этого значения приводит к тому, что более наклонённые части вашей модели будут заполнены на каждом слое." #: fdmprinter.def.json msgctxt "spaghetti_max_height label" @@ -5306,7 +5306,7 @@ msgstr "Падение (КП)" #: fdmprinter.def.json msgctxt "wireframe_fall_down description" msgid "Distance with which the material falls down after an upward extrusion. This distance is compensated for. Only applies to Wire Printing." -msgstr "Расстояние с которой материал падает вниз после восходящего выдавливания. Расстояние компенсируется. Применяется только при каркасной печати." +msgstr "Расстояние, с которого материал падает вниз после восходящего выдавливания. Расстояние компенсируется. Применяется только при каркасной печати." #: fdmprinter.def.json msgctxt "wireframe_drag_along label" @@ -5426,7 +5426,7 @@ msgstr "Разница между высотой следующего слоя #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" msgid "Adaptive layers threshold" -msgstr "Порог для адаптивных слове" +msgstr "Порог для адаптивных слоев" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" @@ -5671,7 +5671,7 @@ msgstr "X позиция объекта" #: fdmprinter.def.json msgctxt "mesh_position_x description" msgid "Offset applied to the object in the x direction." -msgstr "Смещение, применяемое к объект по оси X." +msgstr "Смещение, применяемое к объекту по оси X." #: fdmprinter.def.json msgctxt "mesh_position_y label" @@ -5681,7 +5681,7 @@ msgstr "Y позиция объекта" #: fdmprinter.def.json msgctxt "mesh_position_y description" msgid "Offset applied to the object in the y direction." -msgstr "Смещение, применяемое к объект по оси Y." +msgstr "Смещение, применяемое к объекту по оси Y." #: fdmprinter.def.json msgctxt "mesh_position_z label" @@ -5691,7 +5691,7 @@ msgstr "Z позиция объекта" #: fdmprinter.def.json msgctxt "mesh_position_z description" msgid "Offset applied to the object in the z direction. With this you can perform what was used to be called 'Object Sink'." -msgstr "Смещение, применяемое к объект по оси Z. Это позволяет выполнять операцию, ранее известную как проваливание объекта под поверхность стола." +msgstr "Смещение, применяемое к объекту по оси Z. Это позволяет выполнять операцию, ранее известную как проваливание объекта под поверхность стола." #: fdmprinter.def.json msgctxt "mesh_rotation_matrix label" @@ -5701,7 +5701,7 @@ msgstr "Матрица вращения объекта" #: fdmprinter.def.json msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." -msgstr "Матрица преобразования, применяемая к модели при её загрузки из файла." +msgstr "Матрица преобразования, применяемая к модели при её загрузке из файла." #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." diff --git a/resources/i18n/tr_TR/cura.po b/resources/i18n/tr_TR/cura.po index 9b5a47135b..f801db7f78 100644 --- a/resources/i18n/tr_TR/cura.po +++ b/resources/i18n/tr_TR/cura.po @@ -8,13 +8,15 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-10-01 13:40+0100\n" +"PO-Revision-Date: 2018-11-06 15:33+0100\n" "Last-Translator: Bothof \n" "Language-Team: Turkish\n" "Language: tr_TR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.6\n" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 msgctxt "@action" @@ -47,7 +49,7 @@ msgstr "GCodeWriter metin dışı modu desteklemez." #: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." -msgstr "" +msgstr "Lütfen dışa aktarmadan önce G-code'u hazırlayın." #: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 msgctxt "@info:title" @@ -76,7 +78,7 @@ msgstr "Değişiklik Günlüğünü Göster" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" -msgstr "" +msgstr "Aygıt Yazılımını Güncelle" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 msgctxt "@item:inmenu" @@ -171,7 +173,7 @@ msgstr "Yazılacak dosya biçimleri mevcut değil!" #, python-brace-format msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "Çıkarılabilir Sürücü {0} Üzerine Kaydediliyor " +msgstr "Çıkarılabilir Sürücü {0} Üzerine Kaydediliyor" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:94 msgctxt "@info:title" @@ -439,7 +441,7 @@ msgstr "Yazıcınızda bulunan PrintCore’lar ve/veya malzemeler geçerli proje #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 msgctxt "@info:status" msgid "Connected over the network" -msgstr "Ağ üzerinden bağlandı." +msgstr "Ağ üzerinden bağlandı" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 msgctxt "@info:status" @@ -513,7 +515,7 @@ msgstr "Katman görünümü" #: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" -msgstr "Tel Yazma etkinleştirildiğinde, Cura katmanları doğru olarak görüntülemez." +msgstr "Tel Yazma etkinleştirildiğinde, Cura katmanları doğru olarak görüntülemez" #: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 msgctxt "@info:title" @@ -552,7 +554,7 @@ msgstr "Daha fazla bilgi" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 msgctxt "@action:tooltip" msgid "See more information on what data Cura sends." -msgstr "Cura’nın gönderdiği veriler hakkında daha fazla bilgi alın" +msgstr "Cura’nın gönderdiği veriler hakkında daha fazla bilgi alın." #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 msgctxt "@action:button" @@ -651,7 +653,7 @@ msgstr "Bilgi" #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" -msgstr "Model Başına Ayarlar " +msgstr "Model Başına Ayarlar" #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:15 msgctxt "@info:tooltip" @@ -820,7 +822,7 @@ msgstr "Önceden dilimlenmiş dosya {0}" #: /home/ruben/Projects/Cura/cura/API/Account.py:71 msgctxt "@info:title" msgid "Login failed" -msgstr "" +msgstr "Giriş başarısız" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 @@ -894,32 +896,32 @@ msgstr "{0} dosyasından profil içe aktarımı başarısı #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" -msgstr "" +msgstr "{0} dosyasında içe aktarılabilecek özel profil yok" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "{0} dosyasından profil içe aktarımı başarısız oldu:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." -msgstr "" +msgstr "Bu {0} profili yanlış veri içeriyor, içeri aktarılamadı." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" +msgstr "{0} ({1}) profilinde tanımlanan makine, mevcut makineniz ({2}) ile eşleşmiyor, içe aktarılamadı." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "{0} dosyasından profil içe aktarımı başarısız oldu:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format @@ -1406,7 +1408,7 @@ msgstr "Nozül Y ofseti" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Cooling Fan Number" -msgstr "" +msgstr "Soğutma Fanı Numarası" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 msgctxt "@label" @@ -1510,7 +1512,7 @@ msgstr "Geri" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:20 msgctxt "@title:window" msgid "Confirm uninstall" -msgstr "" +msgstr "Kaldırmayı onayla" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:50 msgctxt "@text:window" @@ -1653,7 +1655,7 @@ msgstr "Kapat" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" -msgstr "" +msgstr "Aygıt Yazılımını Güncelle" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:39 msgctxt "@label" @@ -1678,12 +1680,12 @@ msgstr "Özel Aygıt Yazılımı Yükle" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:83 msgctxt "@label" msgid "Firmware can not be updated because there is no connection with the printer." -msgstr "" +msgstr "Yazıcı ile bağlantı kurulmadığı için aygıt yazılımı güncellenemiyor." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:91 msgctxt "@label" msgid "Firmware can not be updated because the connection with the printer does not support upgrading firmware." -msgstr "" +msgstr "Yazıcı bağlantısı aygıt yazılımını yükseltmeyi desteklemediği için aygıt yazılımı güncellenemiyor." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:98 msgctxt "@title:window" @@ -1918,62 +1920,62 @@ msgstr "Bekleniyor: " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 msgctxt "@label" msgid "Configuration change" -msgstr "" +msgstr "Yapılandırma değişikliği" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 msgctxt "@label" msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" +msgstr "Atanan yazıcı %1, aşağıdaki yapılandırma değişikliklerini gerektiriyor:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 msgctxt "@label" msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" +msgstr "Yazıcı %1 atandı, fakat iş bilinmeyen bir malzeme yapılandırması içeriyor." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 msgctxt "@label" msgid "Change material %1 from %2 to %3." -msgstr "" +msgstr "%2 olan %1 malzemesini %3 yapın." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 msgctxt "@label" msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" +msgstr "%3 malzemesini %1 malzemesi olarak yükleyin (Bu işlem geçersiz kılınamaz)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 msgctxt "@label" msgid "Change print core %1 from %2 to %3." -msgstr "" +msgstr "%2 olan %1 print core'u %3 yapın." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 msgctxt "@label" msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" +msgstr "Baskı tablasını %1 olarak değiştirin (Bu işlem geçersiz kılınamaz)." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 msgctxt "@label" msgid "Override" -msgstr "" +msgstr "Geçersiz kıl" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 msgctxt "@label" msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" +msgstr "Bir yazdırma işini uyumsuz bir yapılandırmayla başlatmak 3D yazıcınıza zarar verebilir. Yapılandırmayı geçersiz kılmak ve %1 öğesini yazdırmak istediğinizden emin misiniz?" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 msgctxt "@window:title" msgid "Override configuration configuration and start print" -msgstr "" +msgstr "Yapılandırmayı geçersiz kıl ve yazdırmayı başlat" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 msgctxt "@label" msgid "Glass" -msgstr "" +msgstr "Cam" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 msgctxt "@label" msgid "Aluminum" -msgstr "" +msgstr "Alüminyum" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 msgctxt "@label link to connect manager" @@ -2257,7 +2259,7 @@ msgstr "Daha koyu olan daha yüksek" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." -msgstr "Resme uygulanacak düzeltme miktarı" +msgstr "Resme uygulanacak düzeltme miktarı." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:154 msgctxt "@action:label" @@ -2640,7 +2642,7 @@ msgstr "Hazırlanıyor..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:154 msgctxt "@label:MonitorStatus" msgid "Please remove the print" -msgstr "Lütfen yazıcıyı çıkarın " +msgstr "Lütfen yazıcıyı çıkarın" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:325 msgctxt "@label" @@ -2979,7 +2981,7 @@ msgstr "Dışarıda kalan alanı göster" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" -msgstr "Bir model seçildiğinde bu model görüntünün ortasında kalacak şekilde kamera hareket eder." +msgstr "Bir model seçildiğinde bu model görüntünün ortasında kalacak şekilde kamera hareket eder" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 msgctxt "@action:button" @@ -3433,17 +3435,17 @@ msgstr "STL dosyalarının işlenmesi için destek kitaplığı" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for handling planar objects" -msgstr "" +msgstr "Düzlemsel nesnelerin işlenmesi için destek kitaplığı" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for handling triangular meshes" -msgstr "" +msgstr "Üçgen birleşimlerin işlenmesi için destek kitaplığı" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for analysis of complex networks" -msgstr "" +msgstr "Karmaşık ağların analizi için destek kitaplığı" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 msgctxt "@label" @@ -3453,7 +3455,7 @@ msgstr "3MF dosyalarının işlenmesi için destek kitaplığı" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for file metadata and streaming" -msgstr "" +msgstr "Dosya meta verileri ve akış için destek kitaplığı" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 msgctxt "@label" @@ -4604,12 +4606,12 @@ msgstr "Değişiklik Günlüğü" #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." -msgstr "" +msgstr "Aygıt yazılımını güncellemeye yönelik makine eylemleri sağlar." #: FirmwareUpdater/plugin.json msgctxt "name" msgid "Firmware Updater" -msgstr "" +msgstr "Aygıt Yazılımı Güncelleyici" #: ProfileFlattener/plugin.json msgctxt "description" @@ -4634,7 +4636,7 @@ msgstr "USB yazdırma" #: UserAgreement/plugin.json msgctxt "description" msgid "Ask the user once if he/she agrees with our license." -msgstr "Kullanıcıya bir kez lisansımızı kabul edip etmediğini sorun" +msgstr "Kullanıcıya bir kez lisansımızı kabul edip etmediğini sorun." #: UserAgreement/plugin.json msgctxt "name" @@ -4694,7 +4696,7 @@ msgstr "Çıkarılabilir Sürücü Çıkış Cihazı Eklentisi" #: UM3NetworkPrinting/plugin.json msgctxt "description" msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Ultimaker 3 yazıcıları için ağ bağlantılarını yönetir" +msgstr "Ultimaker 3 yazıcıları için ağ bağlantılarını yönetir." #: UM3NetworkPrinting/plugin.json msgctxt "name" diff --git a/resources/i18n/tr_TR/fdmextruder.def.json.po b/resources/i18n/tr_TR/fdmextruder.def.json.po index 1c93b99706..f9519e7e68 100644 --- a/resources/i18n/tr_TR/fdmextruder.def.json.po +++ b/resources/i18n/tr_TR/fdmextruder.def.json.po @@ -169,12 +169,12 @@ msgstr "Nozül yazdırma işlemini başlatmaya hazırlandığında konumun Z koo #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number label" msgid "Extruder Print Cooling Fan" -msgstr "" +msgstr "Ekstrüder Yazıcı Soğutma Fanı" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number description" msgid "The number of the print cooling fan associated with this extruder. Only change this from the default value of 0 when you have a different print cooling fan for each extruder." -msgstr "" +msgstr "Bu ekstrüdere bağlı yazıcı soğutma fanı sayısı. Yalnızca her bir ekstrüder için farklı yazıcı soğutma fanınız varsa bunu 0 varsayılan değeri olarak değiştirin." #: fdmextruder.def.json msgctxt "platform_adhesion label" diff --git a/resources/i18n/tr_TR/fdmprinter.def.json.po b/resources/i18n/tr_TR/fdmprinter.def.json.po index 2d84548848..955eab686a 100644 --- a/resources/i18n/tr_TR/fdmprinter.def.json.po +++ b/resources/i18n/tr_TR/fdmprinter.def.json.po @@ -8,13 +8,14 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-10-01 14:20+0100\n" +"PO-Revision-Date: 2018-11-06 15:36+0100\n" "Last-Translator: Bothof \n" "Language-Team: Turkish\n" "Language: tr_TR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -1077,7 +1078,7 @@ msgstr "Üst/Alt Poligonları Bağla" #: fdmprinter.def.json msgctxt "connect_skin_polygons description" msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality." -msgstr "" +msgstr "Üst/alt yüzey yollarını yan yana ise bağla. Eş merkezli şekil için bu ayarı etkinleştirmek, hareket süresini önemli ölçüde kısaltır ancak bağlantılar dolgunun üzerinde meydana gelebileceğinden bu özellik üst yüzeyin kalitesini düşürebilir." #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1497,7 +1498,7 @@ msgstr "Dolgu Şekli" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Baskının dolgu malzemesinin şeklidir. Hat ve zikzak dolgu, farklı katmanlar üzerinde yön değiştirerek malzeme maliyetini azaltır. Izgara, üçgen, üçlü altıgen, kübik, sekizlik, çeyrek kübik, çapraz ve eşmerkezli şekiller, her katmana tam olarak basılır. Gyroid, kübik, çeyrek kübik ve sekizlik dolgu, her yönde daha eşit bir kuvvet dağılımı sağlamak için her katmanda değişir." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1562,7 +1563,7 @@ msgstr "Çapraz 3D" #: fdmprinter.def.json msgctxt "infill_pattern option gyroid" msgid "Gyroid" -msgstr "" +msgstr "Gyroid" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" @@ -1866,7 +1867,7 @@ msgstr "Varsayılan Yazdırma Sıcaklığı" #: fdmprinter.def.json msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" -msgstr "Yazdırma için kullanılan varsayılan sıcaklık. Bu sıcaklık malzemenin “temel” sıcaklığı olmalıdır. Diğer tüm yazıcı sıcaklıkları bu değere dayanan ofsetler kullanmalıdır." +msgstr "Yazdırma için kullanılan varsayılan sıcaklık. Bu sıcaklık malzemenin “temel” sıcaklığı olmalıdır. Diğer tüm yazıcı sıcaklıkları bu değere dayanan ofsetler kullanmalıdır" #: fdmprinter.def.json msgctxt "material_print_temperature label" @@ -1896,7 +1897,7 @@ msgstr "İlk Yazdırma Sıcaklığı" #: fdmprinter.def.json msgctxt "material_initial_print_temperature description" msgid "The minimal temperature while heating up to the Printing Temperature at which printing can already start." -msgstr "Yazdırmanın başlayacağı Yazdırma Sıcaklığına ulaşırken görülen minimum sıcaklık" +msgstr "Yazdırmanın başlayacağı Yazdırma Sıcaklığına ulaşırken görülen minimum sıcaklık." #: fdmprinter.def.json msgctxt "material_final_print_temperature label" @@ -1926,7 +1927,7 @@ msgstr "Varsayılan Yapı Levhası Sıcaklığı" #: fdmprinter.def.json msgctxt "default_material_bed_temperature description" msgid "The default temperature used for the heated build plate. This should be the \"base\" temperature of a build plate. All other print temperatures should use offsets based on this value" -msgstr "Isınan yapı levhası için kullanılan varsayılan sıcaklık. Bu sıcaklık yapı levhasının “temel” sıcaklığı olmalıdır. Diğer tüm yazıcı sıcaklıkları bu değere dayanan ofsetler kullanmalıdır." +msgstr "Isınan yapı levhası için kullanılan varsayılan sıcaklık. Bu sıcaklık yapı levhasının “temel” sıcaklığı olmalıdır. Diğer tüm yazıcı sıcaklıkları bu değere dayanan ofsetler kullanmalıdır" #: fdmprinter.def.json msgctxt "material_bed_temperature label" @@ -2016,7 +2017,7 @@ msgstr "Katman Değişimindeki Geri Çekme" #: fdmprinter.def.json msgctxt "retract_at_layer_change description" msgid "Retract the filament when the nozzle is moving to the next layer." -msgstr "Nozül bir sonraki katmana doğru hareket ettiğinde filamanı geri çekin. " +msgstr "Nozül bir sonraki katmana doğru hareket ettiğinde filamanı geri çekin." #: fdmprinter.def.json msgctxt "retraction_amount label" @@ -3271,32 +3272,32 @@ msgstr "Destekler için dolgu şeklinin döndürülmesi. Destek dolgu şekli yat #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "" +msgstr "Destek Kenarını Etkinleştir" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "" +msgstr "İlk katmanın destek dolgu alanı içinde bir kenar oluşturun. Bu kenar, desteğin çevresine değil, altına yazdırılır. Bu ayarı etkinleştirmek, desteğin baskı tablasına yapışma alanını artırır." #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "" +msgstr "Destek Kenar Genişliği" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Desteğin altına yazdırılacak kenarın genişliği. Daha geniş kenar, ekstra malzeme karşılığında baskı tablasına daha fazla alanın yapışacağı anlamına gelir." #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "" +msgstr "Destek Kenar Hattı Sayısı" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Bir destek kenarı için kullanılan hatların sayısı. Daha fazla kenar hattı, ekstra malzeme karşılığında baskı tablasına daha fazla alanın yapışacağı anlamına gelir." #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3476,7 +3477,7 @@ msgstr "Destek Arayüzü Kalınlığı" #: fdmprinter.def.json msgctxt "support_interface_height description" msgid "The thickness of the interface of the support where it touches with the model on the bottom or the top." -msgstr "Alt veya üst kısımdaki modele değdiği yerde destek arayüzü kalınlığı" +msgstr "Alt veya üst kısımdaki modele değdiği yerde destek arayüzü kalınlığı." #: fdmprinter.def.json msgctxt "support_roof_height label" @@ -3870,12 +3871,12 @@ msgstr "Bir kenar için kullanılan hatların sayısı Daha fazla kenar hattı y #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "" +msgstr "Kenar, Desteği Değiştirir" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "" +msgstr "İlgili alan üzerinde destek olsa bile kenarı modelin çevresine yazdırmaya zorlayın. Desteğin ilk katmanının bazı alanlarını kenar alanları ile değiştirir." #: fdmprinter.def.json msgctxt "brim_outside_only label" @@ -4155,7 +4156,7 @@ msgstr "Radye Fan Hızı" #: fdmprinter.def.json msgctxt "raft_fan_speed description" msgid "The fan speed for the raft." -msgstr "Radye için fan hızı" +msgstr "Radye için fan hızı." #: fdmprinter.def.json msgctxt "raft_surface_fan_speed label" @@ -4165,7 +4166,7 @@ msgstr "Radye Üst Fan Hızı" #: fdmprinter.def.json msgctxt "raft_surface_fan_speed description" msgid "The fan speed for the top raft layers." -msgstr "Üst radye katmanları için fan hızı" +msgstr "Üst radye katmanları için fan hızı." #: fdmprinter.def.json msgctxt "raft_interface_fan_speed label" @@ -4175,7 +4176,7 @@ msgstr "Radyenin Orta Fan Hızı" #: fdmprinter.def.json msgctxt "raft_interface_fan_speed description" msgid "The fan speed for the middle raft layer." -msgstr "Radyenin orta katmanı için fan hızı" +msgstr "Radyenin orta katmanı için fan hızı." #: fdmprinter.def.json msgctxt "raft_base_fan_speed label" @@ -4185,7 +4186,7 @@ msgstr "Radyenin Taban Fan Hızı" #: fdmprinter.def.json msgctxt "raft_base_fan_speed description" msgid "The fan speed for the base raft layer." -msgstr "Radyenin taban katmanı için fan hızı" +msgstr "Radyenin taban katmanı için fan hızı." #: fdmprinter.def.json msgctxt "dual label" @@ -4225,7 +4226,7 @@ msgstr "İlk Direk Boyutu" #: fdmprinter.def.json msgctxt "prime_tower_size description" msgid "The width of the prime tower." -msgstr "İlk Direk Genişliği" +msgstr "İlk Direk Genişliği." #: fdmprinter.def.json msgctxt "prime_tower_min_volume label" @@ -5699,7 +5700,7 @@ msgstr "Bileşim Rotasyon Matrisi" #: fdmprinter.def.json msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." -msgstr "Modeli dosyadan indirirken modele uygulanacak olan dönüşüm matrisi" +msgstr "Modeli dosyadan indirirken modele uygulanacak olan dönüşüm matrisi." #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." diff --git a/resources/i18n/zh_CN/cura.po b/resources/i18n/zh_CN/cura.po index 8bcaf11ab1..cecca58cdd 100644 --- a/resources/i18n/zh_CN/cura.po +++ b/resources/i18n/zh_CN/cura.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-10-01 13:45+0100\n" +"PO-Revision-Date: 2018-11-06 15:38+0100\n" "Last-Translator: Bothof \n" "Language-Team: PCDotFan , Bothof \n" "Language: zh_CN\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 1.8.13\n" +"X-Generator: Poedit 2.0.6\n" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 msgctxt "@action" @@ -49,7 +49,7 @@ msgstr "GCodeWriter 不支持非文本模式。" #: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." -msgstr "" +msgstr "导出前请先准备 G-code。" #: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 msgctxt "@info:title" @@ -78,7 +78,7 @@ msgstr "显示更新日志" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" -msgstr "" +msgstr "更新固件" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 msgctxt "@item:inmenu" @@ -290,7 +290,7 @@ msgstr "已通过网络连接,但没有打印机的控制权限。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 msgctxt "@info:status" msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "已发送打印机访问请求,请在打印机上批准该请求。" +msgstr "已发送打印机访问请求,请在打印机上批准该请求" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 msgctxt "@info:title" @@ -441,7 +441,7 @@ msgstr "打印机上的打印头和/或材料与当前项目中的不同。 为 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 msgctxt "@info:status" msgid "Connected over the network" -msgstr "已通过网络连接。" +msgstr "已通过网络连接" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 msgctxt "@info:status" @@ -822,7 +822,7 @@ msgstr "预切片文件 {0}" #: /home/ruben/Projects/Cura/cura/API/Account.py:71 msgctxt "@info:title" msgid "Login failed" -msgstr "" +msgstr "登录失败" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 @@ -896,32 +896,32 @@ msgstr "无法从 {0} 导入配置文件: {1}< #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" -msgstr "" +msgstr "没有可导入文件 {0} 的自定义配置文件" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "无法从 {0} 导入配置文件:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." -msgstr "" +msgstr "此配置文件 {0} 包含错误数据,无法导入。" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" +msgstr "配置文件 {0} ({1}) 中定义的机器与当前机器 ({2}) 不匹配,无法导入。" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "无法从 {0} 导入配置文件:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format @@ -1408,7 +1408,7 @@ msgstr "喷嘴偏移 Y" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Cooling Fan Number" -msgstr "" +msgstr "冷却风扇数量" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 msgctxt "@label" @@ -1512,7 +1512,7 @@ msgstr "背部" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:20 msgctxt "@title:window" msgid "Confirm uninstall" -msgstr "" +msgstr "确认卸载" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:50 msgctxt "@text:window" @@ -1655,7 +1655,7 @@ msgstr "关闭" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" -msgstr "" +msgstr "更新固件" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:39 msgctxt "@label" @@ -1680,12 +1680,12 @@ msgstr "上传自定义固件" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:83 msgctxt "@label" msgid "Firmware can not be updated because there is no connection with the printer." -msgstr "" +msgstr "未连接打印机,无法更新固件。" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:91 msgctxt "@label" msgid "Firmware can not be updated because the connection with the printer does not support upgrading firmware." -msgstr "" +msgstr "与打印机间的连接不支持固件更新,因此无法更新固件。" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:98 msgctxt "@title:window" @@ -1920,62 +1920,62 @@ msgstr "等待: " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 msgctxt "@label" msgid "Configuration change" -msgstr "" +msgstr "配置更改" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 msgctxt "@label" msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" +msgstr "分配的打印机 %1 需要以下配置更改:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 msgctxt "@label" msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" +msgstr "已向打印机 %1 分配作业,但作业包含未知的材料配置。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 msgctxt "@label" msgid "Change material %1 from %2 to %3." -msgstr "" +msgstr "将材料 %1 从 %2 更改为 %3。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 msgctxt "@label" msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" +msgstr "将 %3 作为材料 %1 进行加载(此操作无法覆盖)。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 msgctxt "@label" msgid "Change print core %1 from %2 to %3." -msgstr "" +msgstr "将 Print Core %1 从 %2 更改为 %3。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 msgctxt "@label" msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" +msgstr "将打印平台更改为 %1(此操作无法覆盖)。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 msgctxt "@label" msgid "Override" -msgstr "" +msgstr "覆盖" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 msgctxt "@label" msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" +msgstr "使用不兼容的配置启动打印作业可能会损坏 3D 打印机。您确定要覆盖配置并打印 %1 吗?" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 msgctxt "@window:title" msgid "Override configuration configuration and start print" -msgstr "" +msgstr "覆盖配置并开始打印" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 msgctxt "@label" msgid "Glass" -msgstr "" +msgstr "玻璃" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 msgctxt "@label" msgid "Aluminum" -msgstr "" +msgstr "铝" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 msgctxt "@label link to connect manager" @@ -2204,7 +2204,7 @@ msgstr "转换图像..." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:33 msgctxt "@info:tooltip" msgid "The maximum distance of each pixel from \"Base.\"" -msgstr "每个像素与底板的最大距离。" +msgstr "每个像素与底板的最大距离" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:38 msgctxt "@action:label" @@ -2234,7 +2234,7 @@ msgstr "宽度 (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:103 msgctxt "@info:tooltip" msgid "The depth in millimeters on the build plate" -msgstr "打印平台深度,以毫米为单位。" +msgstr "打印平台深度,以毫米为单位" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:108 msgctxt "@action:label" @@ -2523,7 +2523,7 @@ msgstr "开始打印机检查" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 msgctxt "@label" msgid "Connection: " -msgstr "连接:" +msgstr "连接: " #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 msgctxt "@info:status" @@ -2538,7 +2538,7 @@ msgstr "未连接" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 msgctxt "@label" msgid "Min endstop X: " -msgstr "X Min 限位开关:" +msgstr "X Min 限位开关: " #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 @@ -2559,17 +2559,17 @@ msgstr "未检查" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 msgctxt "@label" msgid "Min endstop Y: " -msgstr "Y Min 限位开关:" +msgstr "Y Min 限位开关: " #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 msgctxt "@label" msgid "Min endstop Z: " -msgstr "Z Min 限位开关:" +msgstr "Z Min 限位开关: " #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 msgctxt "@label" msgid "Nozzle temperature check: " -msgstr "检查喷嘴温度:" +msgstr "检查喷嘴温度: " #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 @@ -3109,7 +3109,7 @@ msgstr "打开项目文件时的默认行为" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@window:text" msgid "Default behavior when opening a project file: " -msgstr "打开项目文件时的默认行为:" +msgstr "打开项目文件时的默认行为: " #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@option:openProject" @@ -3433,17 +3433,17 @@ msgstr "用于处理 STL 文件的支持库" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for handling planar objects" -msgstr "" +msgstr "用于处理平面对象的支持库" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for handling triangular meshes" -msgstr "" +msgstr "用于处理三角网格的支持库" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for analysis of complex networks" -msgstr "" +msgstr "用于分析复杂网络的支持库" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 msgctxt "@label" @@ -3453,7 +3453,7 @@ msgstr "用于处理 3MF 文件的支持库" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for file metadata and streaming" -msgstr "" +msgstr "用于文件元数据和流媒体的支持库" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 msgctxt "@label" @@ -3571,7 +3571,7 @@ msgstr "影响" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" -msgstr "受影响项目:" +msgstr "受影响项目" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 msgctxt "@label" @@ -3581,7 +3581,7 @@ msgstr "此设置始终在所有挤出机之间共享。在此处更改它将改 #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 msgctxt "@label" msgid "The value is resolved from per-extruder values " -msgstr "该值将会根据每一个挤出机的设置而确定" +msgstr "该值将会根据每一个挤出机的设置而确定 " #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 msgctxt "@label" @@ -3762,7 +3762,7 @@ msgstr "打印平台(&B)" #: /home/ruben/Projects/Cura/resources/qml/Menus/SettingVisibilityPresetsMenu.qml:13 msgctxt "@action:inmenu" msgid "Visible Settings" -msgstr "可见设置:" +msgstr "可见设置" #: /home/ruben/Projects/Cura/resources/qml/Menus/SettingVisibilityPresetsMenu.qml:42 msgctxt "@action:inmenu" @@ -4478,7 +4478,7 @@ msgstr "引擎日志" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 msgctxt "@label" msgid "Printer type" -msgstr "打印机类型:" +msgstr "打印机类型" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 msgctxt "@label" @@ -4598,12 +4598,12 @@ msgstr "更新日志" #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." -msgstr "" +msgstr "为固件更新提供操作选项。" #: FirmwareUpdater/plugin.json msgctxt "name" msgid "Firmware Updater" -msgstr "" +msgstr "固件更新程序" #: ProfileFlattener/plugin.json msgctxt "description" @@ -4718,7 +4718,7 @@ msgstr "固件更新检查程序" #: SimulationView/plugin.json msgctxt "description" msgid "Provides the Simulation view." -msgstr "提供仿真视图" +msgstr "提供仿真视图。" #: SimulationView/plugin.json msgctxt "name" diff --git a/resources/i18n/zh_CN/fdmextruder.def.json.po b/resources/i18n/zh_CN/fdmextruder.def.json.po index f8a875cec6..cddfeae984 100644 --- a/resources/i18n/zh_CN/fdmextruder.def.json.po +++ b/resources/i18n/zh_CN/fdmextruder.def.json.po @@ -171,12 +171,12 @@ msgstr "打印开始时,喷头在 Z 轴坐标上的起始位置." #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number label" msgid "Extruder Print Cooling Fan" -msgstr "" +msgstr "挤出机打印冷却风扇" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number description" msgid "The number of the print cooling fan associated with this extruder. Only change this from the default value of 0 when you have a different print cooling fan for each extruder." -msgstr "" +msgstr "打印冷却风扇的数量与该挤出机有关。仅在每个挤出机都对应不同的打印冷却风扇时,对默认值 0 进行更改。" #: fdmextruder.def.json msgctxt "platform_adhesion label" diff --git a/resources/i18n/zh_CN/fdmprinter.def.json.po b/resources/i18n/zh_CN/fdmprinter.def.json.po index 15a04ac92c..3a85b1b454 100644 --- a/resources/i18n/zh_CN/fdmprinter.def.json.po +++ b/resources/i18n/zh_CN/fdmprinter.def.json.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-10-01 14:20+0100\n" +"PO-Revision-Date: 2018-11-06 15:38+0100\n" "Last-Translator: Bothof \n" "Language-Team: PCDotFan , Bothof \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.13\n" +"X-Generator: Poedit 2.0.6\n" "Plural-Forms: nplurals=1; plural=0;\n" #: fdmprinter.def.json @@ -84,7 +84,7 @@ msgstr "材料 GUID" #: fdmprinter.def.json msgctxt "material_guid description" msgid "GUID of the material. This is set automatically. " -msgstr "材料 GUID,此项为自动设置。" +msgstr "材料 GUID,此项为自动设置。 " #: fdmprinter.def.json msgctxt "material_diameter label" @@ -239,7 +239,7 @@ msgstr "挤出机组数目。 挤出机组是指进料装置、鲍登管和喷 #: fdmprinter.def.json msgctxt "extruders_enabled_count label" msgid "Number of Extruders that are enabled" -msgstr "已启用的挤出机数目。" +msgstr "已启用的挤出机数目" #: fdmprinter.def.json msgctxt "extruders_enabled_count description" @@ -554,7 +554,7 @@ msgstr "X 轴方向电机的最大加速度" #: fdmprinter.def.json msgctxt "machine_max_acceleration_y label" msgid "Maximum Acceleration Y" -msgstr " 轴最大加速度" +msgstr "轴最大加速度" #: fdmprinter.def.json msgctxt "machine_max_acceleration_y description" @@ -854,7 +854,7 @@ msgstr "单一支撑底板走线宽度。" #: fdmprinter.def.json msgctxt "prime_tower_line_width label" msgid "Prime Tower Line Width" -msgstr "装填塔走线宽度。" +msgstr "装填塔走线宽度" #: fdmprinter.def.json msgctxt "prime_tower_line_width description" @@ -1079,7 +1079,7 @@ msgstr "连接顶部/底部多边形" #: fdmprinter.def.json msgctxt "connect_skin_polygons description" msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality." -msgstr "" +msgstr "在顶部/底部皮肤路径互相紧靠运行的地方连接它们。对于同心图案,启用此设置可大大减少空驶时间,但由于连接可在填充中途发生,此功能可能会降低顶部表面质量。" #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1499,7 +1499,7 @@ msgstr "填充图案" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "打印填充材料的图案。线条和锯齿形填充在交替层上交换方向,从而降低材料成本。网格、三角形、内六角、立方体、八角形、四面体、交叉和同心图案在每层完整打印。螺旋二十四面体、立方体、四面体和八角形填充随每层变化,以在各个方向提供更均衡的强度分布。" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1564,7 +1564,7 @@ msgstr "交叉 3D" #: fdmprinter.def.json msgctxt "infill_pattern option gyroid" msgid "Gyroid" -msgstr "" +msgstr "螺旋二十四面体" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" @@ -3273,32 +3273,32 @@ msgstr "用于支撑的填充图案的方向。支撑填充图案在水平面中 #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "" +msgstr "启用支撑 Brim" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "" +msgstr "在第一层的支撑填充区域内生成一个 Brim。此 Brim 在支撑下方打印,而非周围。启用此设置会增强支撑与打印平台的附着。" #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "" +msgstr "支撑 Brim 宽度" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "在支撑下方要打印的 Brim 的宽度。较大的 Brim 可增强与打印平台的附着,但也会增加一些额外材料成本。" #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "" +msgstr "支撑 Brim 走线次数" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "用于支撑 Brim 的走线数量。更多 Brim 走线可增强与打印平台的附着,但也会增加一些额外材料成本。" #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3872,12 +3872,12 @@ msgstr "brim 所用走线数量。 更多 brim 走线可增强与打印平台的 #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "" +msgstr "Brim 替换支撑" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "" +msgstr "强制围绕模型打印 Brim,即使该空间本该由支撑占据。此操作会将第一层的某些支撑区域替换为 Brim 区域。" #: fdmprinter.def.json msgctxt "brim_outside_only label" diff --git a/resources/i18n/zh_TW/cura.po b/resources/i18n/zh_TW/cura.po index c2d733fce1..c27349ffe3 100644 --- a/resources/i18n/zh_TW/cura.po +++ b/resources/i18n/zh_TW/cura.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-10-02 10:25+0100\n" +"PO-Revision-Date: 2018-11-06 15:39+0100\n" "Last-Translator: Zhang Heh Ji \n" "Language-Team: Zhang Heh Ji \n" "Language: zh_TW\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.1.1\n" +"X-Generator: Poedit 2.0.6\n" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 msgctxt "@action" @@ -49,7 +49,7 @@ msgstr "G-code 寫入器不支援非文字模式。" #: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." -msgstr "" +msgstr "匯出前請先將 G-code 準備好。" #: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 msgctxt "@info:title" @@ -78,7 +78,7 @@ msgstr "顯示更新日誌" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" -msgstr "" +msgstr "更新韌體" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 msgctxt "@item:inmenu" @@ -823,7 +823,7 @@ msgstr "預切片檔案 {0}" #: /home/ruben/Projects/Cura/cura/API/Account.py:71 msgctxt "@info:title" msgid "Login failed" -msgstr "" +msgstr "登入失敗" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 @@ -897,32 +897,32 @@ msgstr "無法從 {0} 匯入列印參數:{1}!" msgid "No custom profile to import in file {0}" -msgstr "" +msgstr "檔案 {0} 內沒有自訂列印參數可匯入" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "從 {0} 匯入列印參數失敗:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." -msgstr "" +msgstr "列印參數 {0} 含有不正確的資料,無法匯入。" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" +msgstr "列印參數 {0} 內定義的機器({1})與你目前的機器({2})不匹配, 無法匯入。" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "從 {0} 匯入列印參數失敗:" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format @@ -1409,7 +1409,7 @@ msgstr "噴頭偏移 Y" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Cooling Fan Number" -msgstr "" +msgstr "冷卻風扇數量" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 msgctxt "@label" @@ -1513,7 +1513,7 @@ msgstr "返回" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:20 msgctxt "@title:window" msgid "Confirm uninstall" -msgstr "" +msgstr "移除確認" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:50 msgctxt "@text:window" @@ -1656,7 +1656,7 @@ msgstr "關閉" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" -msgstr "" +msgstr "更新韌體" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:39 msgctxt "@label" @@ -1681,12 +1681,12 @@ msgstr "上傳自訂韌體" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:83 msgctxt "@label" msgid "Firmware can not be updated because there is no connection with the printer." -msgstr "" +msgstr "因為沒有與印表機連線,無法更新韌體。" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:91 msgctxt "@label" msgid "Firmware can not be updated because the connection with the printer does not support upgrading firmware." -msgstr "" +msgstr "因為連線的印表機不支援更新韌體,無法更新韌體。" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:98 msgctxt "@title:window" @@ -1916,67 +1916,67 @@ msgstr "等待:第一可用" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 msgctxt "@label" msgid "Waiting for: " -msgstr "等待:" +msgstr "等待: " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 msgctxt "@label" msgid "Configuration change" -msgstr "" +msgstr "設定更動" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 msgctxt "@label" msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" +msgstr "分配的印表機 %1 需要下列的設定更動:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 msgctxt "@label" msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" +msgstr "已分配到印表機 %1,但列印工作含有未知的耗材設定。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 msgctxt "@label" msgid "Change material %1 from %2 to %3." -msgstr "" +msgstr "將耗材 %1 從 %2 改成 %3。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 msgctxt "@label" msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" +msgstr "將 %3 做為耗材 %1 載入(無法覆寫)。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 msgctxt "@label" msgid "Change print core %1 from %2 to %3." -msgstr "" +msgstr "將 print core %1 從 %2 改成 %3。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 msgctxt "@label" msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" +msgstr "將列印平台改成 %1(無法覆寫)。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 msgctxt "@label" msgid "Override" -msgstr "" +msgstr "覆寫" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 msgctxt "@label" msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" +msgstr "使用不相容的設定啟動列印工作可能會損壞你的 3D 印表機。你確定要覆寫設定並列印 %1 嗎?" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 msgctxt "@window:title" msgid "Override configuration configuration and start print" -msgstr "" +msgstr "覆寫設定並開始列印" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 msgctxt "@label" msgid "Glass" -msgstr "" +msgstr "玻璃" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 msgctxt "@label" msgid "Aluminum" -msgstr "" +msgstr "鋁" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 msgctxt "@label link to connect manager" @@ -2524,7 +2524,7 @@ msgstr "開始印表機檢查" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 msgctxt "@label" msgid "Connection: " -msgstr "連線:" +msgstr "連線: " #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 msgctxt "@info:status" @@ -2539,7 +2539,7 @@ msgstr "未連線" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 msgctxt "@label" msgid "Min endstop X: " -msgstr "X Min 限位開關:" +msgstr "X Min 限位開關: " #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 @@ -2560,17 +2560,17 @@ msgstr "未檢查" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 msgctxt "@label" msgid "Min endstop Y: " -msgstr "Y Min 限位開關:" +msgstr "Y Min 限位開關: " #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 msgctxt "@label" msgid "Min endstop Z: " -msgstr "Z Min 限位開關:" +msgstr "Z Min 限位開關: " #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 msgctxt "@label" msgid "Nozzle temperature check: " -msgstr "檢查噴頭溫度:" +msgstr "檢查噴頭溫度: " #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 @@ -3110,7 +3110,7 @@ msgstr "開啟專案檔案時的預設行為" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@window:text" msgid "Default behavior when opening a project file: " -msgstr "開啟專案檔案時的預設行為:" +msgstr "開啟專案檔案時的預設行為: " #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@option:openProject" @@ -3140,7 +3140,7 @@ msgstr "列印參數" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " -msgstr "當切換到另一組列印參數時,對於被修改過的設定的預設行為:" +msgstr "當切換到另一組列印參數時,對於被修改過的設定的預設行為: " #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 msgctxt "@option:discardOrKeep" @@ -3434,17 +3434,17 @@ msgstr "用於處理 STL 檔案的函式庫" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for handling planar objects" -msgstr "" +msgstr "用於處理平面物件的函式庫" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for handling triangular meshes" -msgstr "" +msgstr "用於處理三角形網格的函式庫" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for analysis of complex networks" -msgstr "" +msgstr "用於分析複雜網路的函式庫" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 msgctxt "@label" @@ -3454,7 +3454,7 @@ msgstr "用於處理 3MF 檔案的函式庫" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for file metadata and streaming" -msgstr "" +msgstr "用於檔案 metadata 和串流的函式庫" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 msgctxt "@label" @@ -4599,12 +4599,12 @@ msgstr "更新日誌" #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." -msgstr "" +msgstr "提供升級韌體用的機器操作。" #: FirmwareUpdater/plugin.json msgctxt "name" msgid "Firmware Updater" -msgstr "" +msgstr "韌體更新器" #: ProfileFlattener/plugin.json msgctxt "description" diff --git a/resources/i18n/zh_TW/fdmextruder.def.json.po b/resources/i18n/zh_TW/fdmextruder.def.json.po index 7ce9ef1ddd..93d62b5155 100644 --- a/resources/i18n/zh_TW/fdmextruder.def.json.po +++ b/resources/i18n/zh_TW/fdmextruder.def.json.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-03-31 15:18+0800\n" +"PO-Revision-Date: 2018-11-04 13:04+0800\n" "Last-Translator: Zhang Heh Ji \n" "Language-Team: Zhang Heh Ji \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2\n" #: fdmextruder.def.json msgctxt "machine_settings label" @@ -170,12 +170,12 @@ msgstr "列印開始時,噴頭在 Z 軸座標上的起始位置." #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number label" msgid "Extruder Print Cooling Fan" -msgstr "" +msgstr "擠出機列印冷卻風扇" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number description" msgid "The number of the print cooling fan associated with this extruder. Only change this from the default value of 0 when you have a different print cooling fan for each extruder." -msgstr "" +msgstr "與此擠出機關聯的列印冷卻風扇的數量。只有當每個擠出機的列印冷卻風扇數量不同時,才需更改此值為正確數量,否則保持預設值 0 即可。" #: fdmextruder.def.json msgctxt "platform_adhesion label" diff --git a/resources/i18n/zh_TW/fdmprinter.def.json.po b/resources/i18n/zh_TW/fdmprinter.def.json.po index 57268d752d..1571d7648c 100644 --- a/resources/i18n/zh_TW/fdmprinter.def.json.po +++ b/resources/i18n/zh_TW/fdmprinter.def.json.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: Cura 3.6\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-10-02 10:30+0100\n" +"PO-Revision-Date: 2018-11-06 16:00+0100\n" "Last-Translator: Zhang Heh Ji \n" "Language-Team: Zhang Heh Ji \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.1.1\n" +"X-Generator: Poedit 2.0.6\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -59,7 +59,7 @@ msgid "" "." msgstr "" "開始時最先執行的 G-code 命令 - 使用 \n" -". 隔開" +"隔開。" #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -73,7 +73,7 @@ msgid "" "." msgstr "" "結束前最後執行的 G-code 命令 - 使用 \n" -". 隔開" +" 隔開。" #: fdmprinter.def.json msgctxt "material_guid label" @@ -83,7 +83,7 @@ msgstr "耗材 GUID" #: fdmprinter.def.json msgctxt "material_guid description" msgid "GUID of the material. This is set automatically. " -msgstr "耗材 GUID,此項為自動設定。" +msgstr "耗材 GUID,此項為自動設定。 " #: fdmprinter.def.json msgctxt "material_diameter label" @@ -1078,7 +1078,7 @@ msgstr "連接頂部/底部多邊形" #: fdmprinter.def.json msgctxt "connect_skin_polygons description" msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality." -msgstr "" +msgstr "將頂部/底部表層路徑相鄰的位置連接。同心模式時啟用此設定,可以大大地減少移動時間。但因連接可能碰巧在途中跨越填充,所以此功能可能會降低頂部表層的品質。" #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1498,7 +1498,7 @@ msgstr "填充列印樣式" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "選擇填充耗材的樣式。直線和鋸齒狀填充輪流在每一層交換方向,以降低耗材成本。網格、三角形、三-六邊形、立方體、八面體、四分立方體、十字形和同心的列印樣式在每層完整列印。螺旋形、立方體、四分立方體和八面體填充隨每層變化,以在各個方向提供更均衡的强度分布。" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1563,7 +1563,7 @@ msgstr "立體十字形" #: fdmprinter.def.json msgctxt "infill_pattern option gyroid" msgid "Gyroid" -msgstr "" +msgstr "螺旋形" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" @@ -2007,7 +2007,7 @@ msgstr "啟用回抽" #: fdmprinter.def.json msgctxt "retraction_enable description" msgid "Retract the filament when the nozzle is moving over a non-printed area. " -msgstr "當噴頭移動到非列印區域上方時回抽耗材。" +msgstr "當噴頭移動到非列印區域上方時回抽耗材。 " #: fdmprinter.def.json msgctxt "retract_at_layer_change label" @@ -3272,32 +3272,32 @@ msgstr "支撐填充樣式的方向。 支撐填充樣式的旋轉方向是在 #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "" +msgstr "啟用支撐邊緣" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "" +msgstr "在第一層的支撐填充區域內產生邊緣。這些邊緣列印在支撐下面,而不是支撐的周圍。啟用此設定可增加支撐對列印平台的附著力。" #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "" +msgstr "支撐邊緣寬度" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "列印在支撐下面邊緣的寬度。較大的邊緣會加強對列印平台的附著力,但會需要一些額外的耗材。" #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "" +msgstr "支撐邊緣線條數量" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "支撐邊緣所使用的線條數量。邊緣使用較多的線條會加強對列印平台的附著力,但會需要一些額外的耗材。" #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3367,7 +3367,7 @@ msgstr "最小支撐 X/Y 間距" #: fdmprinter.def.json msgctxt "support_xy_distance_overhang description" msgid "Distance of the support structure from the overhang in the X/Y directions. " -msgstr "支撐結構在 X/Y 方向與突出部分的間距。" +msgstr "支撐結構在 X/Y 方向與突出部分的間距。 " #: fdmprinter.def.json msgctxt "support_bottom_stair_step_height label" @@ -3871,12 +3871,12 @@ msgstr "邊緣所用線條數量。更多邊緣線條可增强與列印平台的 #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "" +msgstr "邊綠取代支撐" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "" +msgstr "強制在模型周圍列印邊緣,即使該空間已被支撐佔用。在第一層的部份區域會以邊綠取代支撐。" #: fdmprinter.def.json msgctxt "brim_outside_only label" diff --git a/resources/meshes/bq_witbox_platform.stl b/resources/meshes/bq_witbox_platform.stl index 7d83c0f4d8..17b7a3913b 100644 Binary files a/resources/meshes/bq_witbox_platform.stl and b/resources/meshes/bq_witbox_platform.stl differ diff --git a/resources/meshes/builder_premium_platform.stl b/resources/meshes/builder_premium_platform.stl index b315d4b6d4..8003f83f7e 100644 Binary files a/resources/meshes/builder_premium_platform.stl and b/resources/meshes/builder_premium_platform.stl differ diff --git a/resources/meshes/creality_ender3_platform.stl b/resources/meshes/creality_ender3_platform.stl index b362330c9c..4c3699a530 100644 --- a/resources/meshes/creality_ender3_platform.stl +++ b/resources/meshes/creality_ender3_platform.stl @@ -1,43990 +1,14828 @@ solid OpenSCAD_Model - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 19.3736 -10.7173 -0.2 - vertex 19.6895 -11.13 -0.2 - vertex 19.6819 -11.0243 -0.2 + vertex -36.5262 -13.4531 -3 + vertex -35.4871 -14.1281 -3 + vertex -35.6081 -14.799 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 19.4763 -10.749 -0.2 - vertex 19.6819 -11.0243 -0.2 - vertex 19.6583 -10.9333 -0.2 + vertex -35.4871 -14.1281 -3 + vertex -35.9073 -13.512 -3 + vertex -35.5739 -13.718 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 19.557 -10.7956 -0.2 - vertex 19.6583 -10.9333 -0.2 - vertex 19.6172 -10.8571 -0.2 + vertex -35.4871 -14.1281 -3 + vertex -36.5262 -13.4531 -3 + vertex -35.9073 -13.512 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 19.6895 -11.13 -0.2 - vertex 19.3736 -10.7173 -0.2 - vertex 19.6598 -11.2975 -0.2 + vertex -37.2393 -13.2576 -3 + vertex -35.6081 -14.799 -3 + vertex -37.0548 -18.7102 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 19.6583 -10.9333 -0.2 - vertex 19.557 -10.7956 -0.2 - vertex 19.4763 -10.749 -0.2 + vertex -35.6081 -14.799 -3 + vertex -37.2393 -13.2576 -3 + vertex -36.5262 -13.4531 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 19.6819 -11.0243 -0.2 - vertex 19.4763 -10.749 -0.2 - vertex 19.3736 -10.7173 -0.2 + vertex -37.0548 -18.7102 -3 + vertex -37.5366 -12.7854 -3 + vertex -37.2393 -13.2576 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 19.0963 -10.6988 -0.2 - vertex 19.6598 -11.2975 -0.2 - vertex 19.3736 -10.7173 -0.2 + vertex -37.3951 -12.1929 -3 + vertex -38.3729 23.836 -3 + vertex -37.6991 23.0789 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 19.6598 -11.2975 -0.2 - vertex 19.0963 -10.6988 -0.2 - vertex 19.5653 -11.6083 -0.2 + vertex -37.3951 -12.1929 -3 + vertex -38.8382 24.6102 -3 + vertex -38.3729 23.836 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 18.7132 -10.7406 -0.2 - vertex 19.5653 -11.6083 -0.2 - vertex 19.0963 -10.6988 -0.2 + vertex -37.3951 -12.1929 -3 + vertex -39.1303 25.4589 -3 + vertex -38.8382 24.6102 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 18.2126 -10.843 -0.2 - vertex 19.5653 -11.6083 -0.2 - vertex 18.7132 -10.7406 -0.2 + vertex -47.2102 -36.2359 -3 + vertex -37.5366 -12.7854 -3 + vertex -39.9072 -25.4747 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 19.5653 -11.6083 -0.2 - vertex 18.2126 -10.843 -0.2 - vertex 19.1479 -12.7477 -0.2 + vertex -39.9072 -25.4747 -3 + vertex -37.5366 -12.7854 -3 + vertex -37.0548 -18.7102 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 17.5824 -11.0066 -0.2 - vertex 19.1479 -12.7477 -0.2 - vertex 18.2126 -10.843 -0.2 + vertex -30.0976 22.0525 -3 + vertex -29.0303 22.3563 -3 + vertex -28.3511 21.9725 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 16.811 -11.2316 -0.2 - vertex 19.1479 -12.7477 -0.2 - vertex 17.5824 -11.0066 -0.2 + vertex -30.0976 22.0525 -3 + vertex -30.3878 23.2826 -3 + vertex -29.0303 22.3563 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 19.1479 -12.7477 -0.2 - vertex 16.811 -11.2316 -0.2 - vertex 18.3699 -14.7241 -0.2 + vertex -32.1178 22.3529 -3 + vertex -30.3878 23.2826 -3 + vertex -30.0976 22.0525 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0 0 -1 outer loop - vertex 14.1363 -14.3424 -0.2 - vertex 18.3699 -14.7241 -0.2 - vertex 16.811 -11.2316 -0.2 + vertex -31.0943 24.213 -3 + vertex -34.2108 23.023 -3 + vertex -31.2773 24.779 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 14.0967 -14.5873 -0.2 - vertex 18.3699 -14.7241 -0.2 - vertex 14.1362 -14.4186 -0.2 + vertex -34.2108 23.023 -3 + vertex -31.0943 24.213 -3 + vertex -32.1178 22.3529 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 18.3699 -14.7241 -0.2 - vertex 14.1363 -14.3424 -0.2 - vertex 14.1362 -14.4186 -0.2 + vertex -30.3878 23.2826 -3 + vertex -32.1178 22.3529 -3 + vertex -31.0943 24.213 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 13.7217 -12.1451 -0.2 - vertex 14.1363 -14.3424 -0.2 - vertex 16.811 -11.2316 -0.2 + vertex -26.0647 23.8437 -3 + vertex -26.0224 24.2804 -3 + vertex -24.664 24.0122 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 14.1363 -14.3424 -0.2 - vertex 13.7217 -12.1451 -0.2 - vertex 14.0881 -14.3092 -0.2 + vertex -27.3687 23.7586 -3 + vertex -26.0224 24.2804 -3 + vertex -26.0647 23.8437 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 14.0881 -14.3092 -0.2 - vertex 13.7217 -12.1451 -0.2 - vertex 14.0003 -14.2763 -0.2 + vertex -27.3687 23.7586 -3 + vertex -28.1365 24.9019 -3 + vertex -26.0224 24.2804 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 14.0003 -14.2763 -0.2 - vertex 13.7217 -12.1451 -0.2 - vertex 13.7222 -14.2141 -0.2 + vertex -28.4642 23.8513 -3 + vertex -28.1365 24.9019 -3 + vertex -27.3687 23.7586 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 13.4022 -12.26 -0.2 - vertex 13.7222 -14.2141 -0.2 - vertex 13.7217 -12.1451 -0.2 + vertex -29.3958 24.13 -3 + vertex -28.1365 24.9019 -3 + vertex -28.4642 23.8513 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 13.1153 -12.4148 -0.2 - vertex 13.7222 -14.2141 -0.2 - vertex 13.4022 -12.26 -0.2 + vertex -29.3958 24.13 -3 + vertex -29.9035 25.8898 -3 + vertex -28.1365 24.9019 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 13.7222 -14.2141 -0.2 - vertex 13.1153 -12.4148 -0.2 - vertex 13.3346 -14.1615 -0.2 + vertex -30.2081 24.6027 -3 + vertex -29.9035 25.8898 -3 + vertex -29.3958 24.13 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 12.8673 -12.6015 -0.2 - vertex 13.3346 -14.1615 -0.2 - vertex 13.1153 -12.4148 -0.2 + vertex -30.8173 24.9813 -3 + vertex -29.9035 25.8898 -3 + vertex -30.2081 24.6027 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 12.6645 -12.8127 -0.2 - vertex 13.3346 -14.1615 -0.2 - vertex 12.8673 -12.6015 -0.2 + vertex -31.1793 25.0376 -3 + vertex -29.9035 25.8898 -3 + vertex -30.8173 24.9813 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0 0 -1 outer loop - vertex 12.513 -13.0405 -0.2 - vertex 13.3346 -14.1615 -0.2 - vertex 12.6645 -12.8127 -0.2 + vertex -29.9035 25.8898 -3 + vertex -31.1793 25.0376 -3 + vertex -31.116 26.9038 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 13.3346 -14.1615 -0.2 - vertex 12.513 -13.0405 -0.2 - vertex 12.8698 -14.1239 -0.2 + vertex -31.2912 27.2229 -3 + vertex -31.1793 25.0376 -3 + vertex -31.2773 24.779 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 12.419 -13.2773 -0.2 - vertex 12.8698 -14.1239 -0.2 - vertex 12.513 -13.0405 -0.2 + vertex -31.1793 25.0376 -3 + vertex -31.2912 27.2229 -3 + vertex -31.116 26.9038 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 12.3889 -13.5153 -0.2 - vertex 12.8698 -14.1239 -0.2 - vertex 12.419 -13.2773 -0.2 + vertex -22.4212 26.8695 -3 + vertex -21.4485 26.3569 -3 + vertex -22.0473 26.2369 -3 endloop endfacet - facet normal -0 -0 1 + facet normal 0 0 -1 outer loop - vertex 12.3997 -13.6324 -0.2 - vertex 12.8698 -14.1239 -0.2 - vertex 12.3889 -13.5153 -0.2 + vertex -21.4485 26.3569 -3 + vertex -22.4212 26.8695 -3 + vertex -21.2681 26.5576 -3 endloop endfacet - facet normal -0 -0 1 + facet normal 0 0 -1 outer loop - vertex 12.5013 -13.8876 -0.2 - vertex 12.8698 -14.1239 -0.2 - vertex 12.3997 -13.6324 -0.2 + vertex -24.8433 26.205 -3 + vertex -22.4212 26.8695 -3 + vertex -22.0473 26.2369 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 12.8698 -14.1239 -0.2 - vertex 12.6087 -14.0056 -0.2 - vertex 12.7363 -14.0885 -0.2 + vertex -27.4214 26.3653 -3 + vertex -24.3225 27.6757 -3 + vertex -24.8433 26.205 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 12.8698 -14.1239 -0.2 - vertex 12.5013 -13.8876 -0.2 - vertex 12.6087 -14.0056 -0.2 + vertex -23.8902 27.3484 -3 + vertex -24.8433 26.205 -3 + vertex -24.3225 27.6757 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 12.5013 -13.8876 -0.2 - vertex 12.3997 -13.6324 -0.2 - vertex 12.4287 -13.7469 -0.2 + vertex -22.4212 26.8695 -3 + vertex -24.8433 26.205 -3 + vertex -23.8902 27.3484 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 13.9185 -15.1524 -0.2 - vertex 18.3699 -14.7241 -0.2 - vertex 14.0967 -14.5873 -0.2 + vertex 0.168338 -24.355 -3 + vertex -3.89417 -22.8317 -3 + vertex -3.85646 -21.6547 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 18.3699 -14.7241 -0.2 - vertex 13.9185 -15.1524 -0.2 - vertex 17.1638 -17.7131 -0.2 + vertex -6.41168 -29.738 -3 + vertex -3.7659 -32.0301 -3 + vertex -3.99709 -33.5697 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 13.6397 -15.9386 -0.2 - vertex 17.1638 -17.7131 -0.2 - vertex 13.9185 -15.1524 -0.2 + vertex -3.14673 -30.0798 -3 + vertex -4.26405 -24.3543 -3 + vertex -3.89417 -22.8317 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 13.2984 -16.8469 -0.2 - vertex 17.1638 -17.7131 -0.2 - vertex 13.6397 -15.9386 -0.2 + vertex 13.2867 -16.8469 -3 + vertex 12.858 -14.1239 -3 + vertex 14.1246 -14.3424 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 12.5806 -18.6336 -0.2 - vertex 17.1638 -17.7131 -0.2 - vertex 13.2984 -16.8469 -0.2 + vertex 13.2867 -16.8469 -3 + vertex 12.417 -13.7469 -3 + vertex 12.858 -14.1239 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 12.2803 -19.3138 -0.2 - vertex 17.1638 -17.7131 -0.2 - vertex 12.5806 -18.6336 -0.2 + vertex 10.3474 -19.1774 -3 + vertex 13.2867 -16.8469 -3 + vertex 11.2177 -19.5302 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 17.1638 -17.7131 -0.2 - vertex 12.2803 -19.3138 -0.2 - vertex 14.5952 -23.8342 -0.2 + vertex 11.2177 -19.5302 -3 + vertex 13.2867 -16.8469 -3 + vertex 12.058 -19.7199 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 12.0697 -19.7199 -0.2 - vertex 14.5952 -23.8342 -0.2 - vertex 12.2803 -19.3138 -0.2 + vertex 12.0544 30.7144 -3 + vertex 5.19939 38.083 -3 + vertex 5.25321 38.4452 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 12.0185 -19.7802 -0.2 - vertex 14.5952 -23.8342 -0.2 - vertex 12.0697 -19.7199 -0.2 + vertex 11.5971 30.3591 -3 + vertex 4.72188 37.0399 -3 + vertex 5.19939 38.083 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.9563 -19.8175 -0.2 - vertex 14.5952 -23.8342 -0.2 - vertex 12.0185 -19.7802 -0.2 + vertex 11.2319 29.4873 -3 + vertex 3.57109 31.3388 -3 + vertex 11.5971 30.3591 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 -0 -1 outer loop - vertex 10.1598 -23.7848 -0.2 - vertex 14.5952 -23.8342 -0.2 - vertex 10.1807 -23.3758 -0.2 + vertex 4.30515 36.0346 -3 + vertex 11.5971 30.3591 -3 + vertex 3.93589 34.5584 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.1103 -22.7594 -0.2 - vertex 14.5952 -23.8342 -0.2 - vertex 11.9563 -19.8175 -0.2 + vertex 11.5971 30.3591 -3 + vertex 4.30515 36.0346 -3 + vertex 4.72188 37.0399 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.1103 -22.7594 -0.2 - vertex 11.9563 -19.8175 -0.2 - vertex 11.881 -19.8313 -0.2 + vertex 3.57109 31.3388 -3 + vertex 4.3138 28.4461 -3 + vertex 3.67763 29.7129 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 9.99008 -22.4166 -0.2 - vertex 11.881 -19.8313 -0.2 - vertex 11.7902 -19.8211 -0.2 + vertex 11.5971 30.3591 -3 + vertex 3.57109 31.3388 -3 + vertex 3.93589 34.5584 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 9.81668 -22.1284 -0.2 - vertex 11.7902 -19.8211 -0.2 - vertex 11.5538 -19.7266 -0.2 + vertex 7.21237 -5.88439 -3 + vertex 7.03104 -4.97268 -3 + vertex 7.79727 -5.75259 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 9.95745 -24.7805 -0.2 - vertex 14.5952 -23.8342 -0.2 - vertex 10.0892 -24.2416 -0.2 + vertex 5.81183 -5.98051 -3 + vertex 7.03104 -4.97268 -3 + vertex 7.21237 -5.88439 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 9.59484 -21.895 -0.2 - vertex 11.5538 -19.7266 -0.2 - vertex 11.2294 -19.5302 -0.2 + vertex 7.03104 -4.97268 -3 + vertex 5.81183 -5.98051 -3 + vertex 5.97791 -3.63939 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 14.5952 -23.8342 -0.2 - vertex 9.95745 -24.7805 -0.2 - vertex 12.8097 -28.1484 -0.2 + vertex 3.9592 -5.58648 -3 + vertex 5.97791 -3.63939 -3 + vertex 5.81183 -5.98051 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 9.46723 -21.7989 -0.2 - vertex 11.2294 -19.5302 -0.2 - vertex 11.0203 -19.4009 -0.2 + vertex 5.97791 -3.63939 -3 + vertex 3.9592 -5.58648 -3 + vertex 5.02006 -2.01238 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0 0 -1 outer loop - vertex 9.75283 -25.4359 -0.2 - vertex 12.8097 -28.1484 -0.2 - vertex 9.95745 -24.7805 -0.2 + vertex 5.02006 -2.01238 -3 + vertex 1.09298 -4.60426 -3 + vertex 4.37015 -0.506109 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 9.46723 -21.7989 -0.2 - vertex 11.0203 -19.4009 -0.2 - vertex 10.8168 -19.3006 -0.2 + vertex 1.09298 -4.60426 -3 + vertex 5.02006 -2.01238 -3 + vertex 3.9592 -5.58648 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 9.46376 -26.2422 -0.2 - vertex 12.8097 -28.1484 -0.2 - vertex 9.75283 -25.4359 -0.2 + vertex 24.7931 16.6725 -3 + vertex 24.1542 17.4223 -3 + vertex 24.7174 17.1695 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 9.07864 -27.2338 -0.2 - vertex 12.8097 -28.1484 -0.2 - vertex 9.46376 -26.2422 -0.2 + vertex 23.3802 15.8262 -3 + vertex 24.1542 17.4223 -3 + vertex 24.7931 16.6725 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 12.8097 -28.1484 -0.2 - vertex 9.07864 -27.2338 -0.2 - vertex 12.0447 -30.0547 -0.2 + vertex 23.3802 15.8262 -3 + vertex 22.547 17.5015 -3 + vertex 24.1542 17.4223 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 9.46723 -21.7989 -0.2 - vertex 10.8168 -19.3006 -0.2 - vertex 10.602 -19.227 -0.2 + vertex 21.1653 14.8489 -3 + vertex 22.547 17.5015 -3 + vertex 23.3802 15.8262 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.6919 -34.4621 -0.2 - vertex 12.2468 -35.1875 -0.2 - vertex 12.2214 -34.9805 -0.2 + vertex 21.1653 14.8489 -3 + vertex 20.2159 17.5562 -3 + vertex 22.547 17.5015 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.6919 -34.4621 -0.2 - vertex 12.2214 -34.9805 -0.2 - vertex 12.1503 -34.7994 -0.2 + vertex 20.0668 14.6265 -3 + vertex 20.2159 17.5562 -3 + vertex 21.1653 14.8489 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.4668 -34.4353 -0.2 - vertex 12.2468 -35.1875 -0.2 - vertex 11.6919 -34.4621 -0.2 + vertex 18.4164 15.1559 -3 + vertex 20.2159 17.5562 -3 + vertex 20.0668 14.6265 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 12.2239 -35.4151 -0.2 - vertex 11.4668 -34.4353 -0.2 - vertex 12.1496 -35.6584 -0.2 + vertex 20.2159 17.5562 -3 + vertex 18.4164 15.1559 -3 + vertex 19.8437 17.7553 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.8827 -34.5351 -0.2 - vertex 12.1503 -34.7994 -0.2 - vertex 12.0364 -34.6492 -0.2 + vertex 16.5954 15.8977 -3 + vertex 19.8437 17.7553 -3 + vertex 18.4164 15.1559 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 12.2468 -35.1875 -0.2 - vertex 11.4668 -34.4353 -0.2 - vertex 12.2239 -35.4151 -0.2 + vertex 19.8437 17.7553 -3 + vertex 16.5954 15.8977 -3 + vertex 19.5351 18.2611 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 12.1503 -34.7994 -0.2 - vertex 11.8827 -34.5351 -0.2 - vertex 11.6919 -34.4621 -0.2 + vertex 15.2045 16.623 -3 + vertex 19.5351 18.2611 -3 + vertex 16.5954 15.8977 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 12.1496 -35.6584 -0.2 - vertex 11.4668 -34.4353 -0.2 - vertex 12.0956 -35.7642 -0.2 + vertex 19.5351 18.2611 -3 + vertex 15.2045 16.623 -3 + vertex 19.0948 20.2262 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 12.0956 -35.7642 -0.2 - vertex 11.4668 -34.4353 -0.2 - vertex 12.0181 -35.8752 -0.2 + vertex 13.99 17.4864 -3 + vertex 19.0948 20.2262 -3 + vertex 15.2045 16.623 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.143 -34.4171 -0.2 - vertex 12.0181 -35.8752 -0.2 - vertex 11.4668 -34.4353 -0.2 + vertex 19.0948 20.2262 -3 + vertex 17.155 22.8321 -3 + vertex 18.6529 22.0992 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 12.0181 -35.8752 -0.2 - vertex 11.143 -34.4171 -0.2 - vertex 11.8034 -36.1064 -0.2 + vertex 19.0948 20.2262 -3 + vertex 13.99 17.4864 -3 + vertex 17.155 22.8321 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.8034 -36.1064 -0.2 - vertex 11.143 -34.4171 -0.2 - vertex 11.5264 -36.339 -0.2 + vertex 12.6982 18.6425 -3 + vertex 17.155 22.8321 -3 + vertex 13.99 17.4864 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 11.016 -34.3915 -0.2 - vertex 11.5264 -36.339 -0.2 - vertex 11.143 -34.4171 -0.2 + vertex 17.155 22.8321 -3 + vertex 12.6982 18.6425 -3 + vertex 15.5055 23.4995 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.5264 -36.339 -0.2 - vertex 11.016 -34.3915 -0.2 - vertex 11.208 -36.5595 -0.2 + vertex 10.9729 20.5521 -3 + vertex 15.5055 23.4995 -3 + vertex 12.6982 18.6425 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 10.9123 -34.3507 -0.2 - vertex 11.208 -36.5595 -0.2 - vertex 11.016 -34.3915 -0.2 + vertex 15.5055 23.4995 -3 + vertex 10.9729 20.5521 -3 + vertex 14.0164 24.1527 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 10.9123 -34.3507 -0.2 - vertex 10.8691 -36.7549 -0.2 - vertex 11.208 -36.5595 -0.2 + vertex 14.0164 24.1527 -3 + vertex 10.9729 20.5521 -3 + vertex 13.0733 24.7212 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.5307 -36.9119 -0.2 - vertex 10.9123 -34.3507 -0.2 - vertex 10.832 -34.2912 -0.2 + vertex 9.71033 23.0922 -3 + vertex 13.0733 24.7212 -3 + vertex 10.9729 20.5521 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 9.71926 -37.0921 -0.2 - vertex 10.832 -34.2912 -0.2 - vertex 10.775 -34.2097 -0.2 + vertex 13.0733 24.7212 -3 + vertex 9.71033 23.0922 -3 + vertex 12.1975 25.5292 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 8.94379 -37.3156 -0.2 - vertex 10.775 -34.2097 -0.2 - vertex 10.7415 -34.103 -0.2 + vertex 12.1975 25.5292 -3 + vertex 9.07032 24.476 -3 + vertex 11.5037 26.4501 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 6.63949 -32.8952 -0.2 - vertex 10.7415 -34.103 -0.2 - vertex 10.7315 -33.9677 -0.2 + vertex 9.07032 24.476 -3 + vertex 12.1975 25.5292 -3 + vertex 9.71033 23.0922 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.9123 -34.3507 -0.2 - vertex 10.5307 -36.9119 -0.2 - vertex 10.8691 -36.7549 -0.2 + vertex 25.704 16.8274 -3 + vertex 26.0816 17.5963 -3 + vertex 25.8979 16.7563 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 7.97377 -29.9101 -0.2 - vertex 12.0447 -30.0547 -0.2 - vertex 9.07864 -27.2338 -0.2 + vertex 25.1513 17.7384 -3 + vertex 26.0816 17.5963 -3 + vertex 25.4738 17.2443 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 9.46723 -21.7989 -0.2 - vertex 10.602 -19.227 -0.2 - vertex 10.3591 -19.1774 -0.2 + vertex 26.0816 17.5963 -3 + vertex 25.704 16.8274 -3 + vertex 25.4738 17.2443 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.0892 -24.2416 -0.2 - vertex 14.5952 -23.8342 -0.2 - vertex 10.1598 -23.7848 -0.2 + vertex 26.0816 17.5963 -3 + vertex 25.1513 17.7384 -3 + vertex 25.9892 18.2943 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 12.0447 -30.0547 -0.2 - vertex 7.97377 -29.9101 -0.2 - vertex 11.5005 -31.4602 -0.2 + vertex 25.9892 18.2943 -3 + vertex 25.1513 17.7384 -3 + vertex 25.7331 18.8483 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 14.5952 -23.8342 -0.2 - vertex 10.149 -22.9513 -0.2 - vertex 10.1807 -23.3758 -0.2 + vertex 24.5942 18.0475 -3 + vertex 25.7331 18.8483 -3 + vertex 25.1513 17.7384 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 14.5952 -23.8342 -0.2 - vertex 10.1103 -22.7594 -0.2 - vertex 10.149 -22.9513 -0.2 + vertex 25.7331 18.8483 -3 + vertex 24.5942 18.0475 -3 + vertex 25.3447 19.2137 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 9.46723 -21.7989 -0.2 - vertex 10.3591 -19.1774 -0.2 - vertex 10.0711 -19.1496 -0.2 + vertex 25.3447 19.2137 -3 + vertex 24.5942 18.0475 -3 + vertex 24.8554 19.3454 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.881 -19.8313 -0.2 - vertex 10.0571 -22.5812 -0.2 - vertex 10.1103 -22.7594 -0.2 + vertex 24.5942 18.0475 -3 + vertex 23.3909 19.6849 -3 + vertex 24.8554 19.3454 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.881 -19.8313 -0.2 - vertex 9.99008 -22.4166 -0.2 - vertex 10.0571 -22.5812 -0.2 + vertex 22.335 18.2522 -3 + vertex 23.3909 19.6849 -3 + vertex 24.5942 18.0475 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 11.7902 -19.8211 -0.2 - vertex 9.90973 -22.2656 -0.2 - vertex 9.99008 -22.4166 -0.2 + vertex 23.3909 19.6849 -3 + vertex 22.335 18.2522 -3 + vertex 22.6368 20.047 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.7902 -19.8211 -0.2 - vertex 9.81668 -22.1284 -0.2 - vertex 9.90973 -22.2656 -0.2 + vertex 20.9591 18.304 -3 + vertex 22.6368 20.047 -3 + vertex 22.335 18.2522 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 9.18157 -21.6481 -0.2 - vertex 10.0711 -19.1496 -0.2 - vertex 9.72114 -19.1409 -0.2 + vertex 22.6368 20.047 -3 + vertex 20.9591 18.304 -3 + vertex 22.0911 20.5797 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.5538 -19.7266 -0.2 - vertex 9.71152 -22.0048 -0.2 - vertex 9.81668 -22.1284 -0.2 + vertex 19.8405 19.3078 -3 + vertex 22.0911 20.5797 -3 + vertex 20.9591 18.304 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.5538 -19.7266 -0.2 - vertex 9.59484 -21.895 -0.2 - vertex 9.71152 -22.0048 -0.2 + vertex 19.4421 21.9215 -3 + vertex 21.7245 21.3239 -3 + vertex 19.6596 20.6529 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.2294 -19.5302 -0.2 - vertex 9.46723 -21.7989 -0.2 - vertex 9.59484 -21.895 -0.2 + vertex 19.6596 20.6529 -3 + vertex 22.0911 20.5797 -3 + vertex 19.8405 19.3078 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.0711 -19.1496 -0.2 - vertex 9.18157 -21.6481 -0.2 - vertex 9.46723 -21.7989 -0.2 + vertex 21.7245 21.3239 -3 + vertex 19.4421 21.9215 -3 + vertex 21.508 22.3204 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 9.72114 -19.1409 -0.2 - vertex 8.85925 -21.5524 -0.2 - vertex 9.18157 -21.6481 -0.2 + vertex 19.8405 19.3078 -3 + vertex 20.9591 18.304 -3 + vertex 20.2006 18.5903 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0 0 -1 outer loop - vertex 8.76754 -19.1712 -0.2 - vertex 8.85925 -21.5524 -0.2 - vertex 9.72114 -19.1409 -0.2 + vertex 21.508 22.3204 -3 + vertex 19.4421 21.9215 -3 + vertex 21.2518 23.2891 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 8.76754 -19.1712 -0.2 - vertex 8.50498 -21.5121 -0.2 - vertex 8.85925 -21.5524 -0.2 + vertex 22.0911 20.5797 -3 + vertex 19.6596 20.6529 -3 + vertex 21.7245 21.3239 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 7.80885 -19.2424 -0.2 - vertex 8.50498 -21.5121 -0.2 - vertex 8.76754 -19.1712 -0.2 + vertex 18.9185 22.6398 -3 + vertex 21.2518 23.2891 -3 + vertex 19.4421 21.9215 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 8.50498 -21.5121 -0.2 - vertex 7.80885 -19.2424 -0.2 - vertex 8.12348 -21.5274 -0.2 + vertex 21.2518 23.2891 -3 + vertex 18.9185 22.6398 -3 + vertex 20.762 24.0784 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0 0 -1 outer loop - vertex 7.42262 -19.2967 -0.2 - vertex 8.12348 -21.5274 -0.2 - vertex 7.80885 -19.2424 -0.2 + vertex 20.762 24.0784 -3 + vertex 18.9185 22.6398 -3 + vertex 20.0338 24.6942 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 8.12348 -21.5274 -0.2 - vertex 7.42262 -19.2967 -0.2 - vertex 7.71946 -21.5983 -0.2 + vertex 20.0338 24.6942 -3 + vertex 18.9185 22.6398 -3 + vertex 19.062 25.1422 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 7.07441 -19.3694 -0.2 - vertex 7.71946 -21.5983 -0.2 - vertex 7.42262 -19.2967 -0.2 + vertex 17.6852 23.4449 -3 + vertex 19.062 25.1422 -3 + vertex 18.9185 22.6398 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 6.74616 -19.4649 -0.2 - vertex 7.71946 -21.5983 -0.2 - vertex 7.07441 -19.3694 -0.2 + vertex 17.6852 23.4449 -3 + vertex 17.2513 25.98 -3 + vertex 19.062 25.1422 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 7.71946 -21.5983 -0.2 - vertex 6.74616 -19.4649 -0.2 - vertex 7.29763 -21.7251 -0.2 + vertex 15.1211 24.4531 -3 + vertex 17.2513 25.98 -3 + vertex 17.6852 23.4449 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0 0 -1 outer loop - vertex 6.41984 -19.5879 -0.2 - vertex 7.29763 -21.7251 -0.2 - vertex 6.74616 -19.4649 -0.2 + vertex 17.2513 25.98 -3 + vertex 15.1211 24.4531 -3 + vertex 15.7223 27.2873 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 6.07737 -19.7427 -0.2 - vertex 7.29763 -21.7251 -0.2 - vertex 6.41984 -19.5879 -0.2 + vertex 13.4969 25.2416 -3 + vertex 15.7223 27.2873 -3 + vertex 15.1211 24.4531 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 7.29763 -21.7251 -0.2 - vertex 6.07737 -19.7427 -0.2 - vertex 6.8627 -21.9079 -0.2 + vertex 15.7223 27.2873 -3 + vertex 13.4969 25.2416 -3 + vertex 15.122 28.0941 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 5.70074 -19.9339 -0.2 - vertex 6.8627 -21.9079 -0.2 - vertex 6.07737 -19.7427 -0.2 + vertex 12.5486 25.9653 -3 + vertex 15.122 28.0941 -3 + vertex 13.4969 25.2416 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 6.8627 -21.9079 -0.2 - vertex 5.70074 -19.9339 -0.2 - vertex 6.41939 -22.1469 -0.2 + vertex 17.1521 -17.7131 -3 + vertex 20.2954 -22.4759 -3 + vertex 19.0386 -23.7798 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 5.20766 -20.2058 -0.2 - vertex 6.41939 -22.1469 -0.2 - vertex 5.70074 -19.9339 -0.2 + vertex 14.5835 -23.8342 -3 + vertex 19.0386 -23.7798 -3 + vertex 17.855 -25.2923 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 6.41939 -22.1469 -0.2 - vertex 5.20766 -20.2058 -0.2 - vertex 5.97241 -22.4422 -0.2 + vertex 20.2954 -22.4759 -3 + vertex 17.1521 -17.7131 -3 + vertex 19.6777 -11.13 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 4.71458 -20.5006 -0.2 - vertex 5.97241 -22.4422 -0.2 - vertex 5.20766 -20.2058 -0.2 + vertex 14.5835 -23.8342 -3 + vertex 17.855 -25.2923 -3 + vertex 16.4055 -27.6373 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 4.22328 -20.8168 -0.2 - vertex 5.97241 -22.4422 -0.2 - vertex 4.71458 -20.5006 -0.2 + vertex 14.5835 -23.8342 -3 + vertex 16.4055 -27.6373 -3 + vertex 15.3794 -29.9771 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 5.97241 -22.4422 -0.2 - vertex 4.22328 -20.8168 -0.2 - vertex 5.52647 -22.794 -0.2 + vertex 11.4887 -31.4602 -3 + vertex 15.3794 -29.9771 -3 + vertex 14.7938 -32.2631 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0 0 -1 outer loop - vertex 3.73558 -21.1527 -0.2 - vertex 5.52647 -22.794 -0.2 - vertex 4.22328 -20.8168 -0.2 + vertex 19.0386 -23.7798 -3 + vertex 14.5835 -23.8342 -3 + vertex 17.1521 -17.7131 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 5.52647 -22.794 -0.2 - vertex 3.73558 -21.1527 -0.2 - vertex 5.08628 -23.2024 -0.2 + vertex 11.871 -34.5351 -3 + vertex 14.7938 -32.2631 -3 + vertex 14.6656 -34.4466 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 3.25328 -21.5067 -0.2 - vertex 5.08628 -23.2024 -0.2 - vertex 3.73558 -21.1527 -0.2 + vertex 26.7235 1.18648 -3 + vertex 20.9081 -2.19366 -3 + vertex 21.0968 -1.15452 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 5.08628 -23.2024 -0.2 - vertex 3.25328 -21.5067 -0.2 - vertex 4.45147 -23.8871 -0.2 + vertex 23.0737 -20.4525 -3 + vertex 19.6777 -11.13 -3 + vertex 20.9081 -2.19366 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 2.77819 -21.8771 -0.2 - vertex 4.45147 -23.8871 -0.2 - vertex 3.25328 -21.5067 -0.2 + vertex 19.6777 -11.13 -3 + vertex 21.6367 -21.3703 -3 + vertex 20.2954 -22.4759 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 2.31211 -22.2625 -0.2 - vertex 4.45147 -23.8871 -0.2 - vertex 2.77819 -21.8771 -0.2 + vertex 20.9081 -2.19366 -3 + vertex 19.6777 -11.13 -3 + vertex 20.4179 -3.0084 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 4.45147 -23.8871 -0.2 - vertex 2.31211 -22.2625 -0.2 - vertex 3.85887 -24.6213 -0.2 + vertex 19.5452 -10.7956 -3 + vertex 20.4179 -3.0084 -3 + vertex 19.6777 -11.13 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.85684 -22.661 -0.2 - vertex 3.85887 -24.6213 -0.2 - vertex 2.31211 -22.2625 -0.2 + vertex 19.5452 -10.7956 -3 + vertex 19.4334 -3.80993 -3 + vertex 20.4179 -3.0084 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.4142 -23.0712 -0.2 - vertex 3.85887 -24.6213 -0.2 - vertex 1.85684 -22.661 -0.2 + vertex 17.7619 -4.80944 -3 + vertex 19.5452 -10.7956 -3 + vertex 19.0845 -10.6988 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 3.85887 -24.6213 -0.2 - vertex 1.4142 -23.0712 -0.2 - vertex 3.31148 -25.3951 -0.2 + vertex 19.5452 -10.7956 -3 + vertex 17.7619 -4.80944 -3 + vertex 19.4334 -3.80993 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 0.985991 -23.4913 -0.2 - vertex 3.31148 -25.3951 -0.2 - vertex 1.4142 -23.0712 -0.2 + vertex 15.0012 -6.23992 -3 + vertex 19.0845 -10.6988 -3 + vertex 16.7993 -11.2316 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 0.574011 -23.9198 -0.2 - vertex 3.31148 -25.3951 -0.2 - vertex 0.985991 -23.4913 -0.2 + vertex 19.0845 -10.6988 -3 + vertex 15.0012 -6.23992 -3 + vertex 17.7619 -4.80944 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 3.31148 -25.3951 -0.2 - vertex 0.574011 -23.9198 -0.2 - vertex 2.81229 -26.1986 -0.2 + vertex 12.6103 -7.15898 -3 + vertex 16.7993 -11.2316 -3 + vertex 13.71 -12.1451 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 0.18007 -24.355 -0.2 - vertex 2.81229 -26.1986 -0.2 - vertex 0.574011 -23.9198 -0.2 + vertex 12.6103 -7.15898 -3 + vertex 13.71 -12.1451 -3 + vertex 13.1035 -12.4147 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex -0.194025 -24.7953 -0.2 - vertex 2.81229 -26.1986 -0.2 - vertex 0.18007 -24.355 -0.2 + vertex 10.2421 -7.67101 -3 + vertex 13.1035 -12.4147 -3 + vertex 12.6527 -12.8127 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 2.81229 -26.1986 -0.2 - vertex -0.194025 -24.7953 -0.2 - vertex 2.36428 -27.0218 -0.2 + vertex 16.7993 -11.2316 -3 + vertex 12.6103 -7.15898 -3 + vertex 15.0012 -6.23992 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex -0.546472 -25.2391 -0.2 - vertex 2.36428 -27.0218 -0.2 - vertex -0.194025 -24.7953 -0.2 + vertex 10.2421 -7.67101 -3 + vertex 12.6527 -12.8127 -3 + vertex 12.4073 -13.2773 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0 0 -1 outer loop - vertex -0.875463 -25.6847 -0.2 - vertex 2.36428 -27.0218 -0.2 - vertex -0.546472 -25.2391 -0.2 + vertex 13.2867 -16.8469 -3 + vertex 10.3474 -19.1774 -3 + vertex 12.417 -13.7469 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 2.36428 -27.0218 -0.2 - vertex -0.875463 -25.6847 -0.2 - vertex 1.97046 -27.8549 -0.2 + vertex 11.2177 -19.5302 -3 + vertex 12.058 -19.7199 -3 + vertex 11.7785 -19.8211 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex -1.17919 -26.1306 -0.2 - vertex 1.97046 -27.8549 -0.2 - vertex -0.875463 -25.6847 -0.2 + vertex 8.75581 -19.1712 -3 + vertex 12.417 -13.7469 -3 + vertex 10.3474 -19.1774 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex -1.45361 -26.5684 -0.2 - vertex 1.97046 -27.8549 -0.2 - vertex -1.17919 -26.1306 -0.2 + vertex 7.06268 -19.3694 -3 + vertex 12.417 -13.7469 -3 + vertex 8.75581 -19.1712 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.5005 -31.4602 -0.2 - vertex 7.97377 -29.9101 -0.2 - vertex 11.1661 -32.3709 -0.2 + vertex 13.1035 -12.4147 -3 + vertex 10.2421 -7.67101 -3 + vertex 12.6103 -7.15898 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0 0 -1 outer loop - vertex 7.44603 -31.1479 -0.2 - vertex 11.1661 -32.3709 -0.2 - vertex 7.97377 -29.9101 -0.2 + vertex 12.417 -13.7469 -3 + vertex 7.06268 -19.3694 -3 + vertex 12.4073 -13.2773 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 11.1661 -32.3709 -0.2 - vertex 7.44603 -31.1479 -0.2 - vertex 10.9267 -33.0747 -0.2 + vertex 12.4073 -13.2773 -3 + vertex 7.54923 -7.88041 -3 + vertex 10.2421 -7.67101 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0 0 -1 outer loop - vertex 7.00854 -32.1311 -0.2 - vertex 10.9267 -33.0747 -0.2 - vertex 7.44603 -31.1479 -0.2 + vertex 12.4073 -13.2773 -3 + vertex 7.06268 -19.3694 -3 + vertex 7.54923 -7.88041 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.9267 -33.0747 -0.2 - vertex 7.00854 -32.1311 -0.2 - vertex 10.7819 -33.5982 -0.2 + vertex 5.03167 -7.88498 -3 + vertex 7.06268 -19.3694 -3 + vertex 5.689 -19.9339 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.7819 -33.5982 -0.2 - vertex 7.00854 -32.1311 -0.2 - vertex 10.7449 -33.8005 -0.2 + vertex 7.06268 -19.3694 -3 + vertex 5.03167 -7.88498 -3 + vertex 7.54923 -7.88041 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 6.63949 -32.8952 -0.2 - vertex 10.7449 -33.8005 -0.2 - vertex 7.00854 -32.1311 -0.2 + vertex 5.689 -19.9339 -3 + vertex 3.854 -7.59505 -3 + vertex 5.03167 -7.88498 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.7449 -33.8005 -0.2 - vertex 6.63949 -32.8952 -0.2 - vertex 10.7315 -33.9677 -0.2 + vertex 3.72385 -21.1527 -3 + vertex 3.854 -7.59505 -3 + vertex 5.689 -19.9339 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.7415 -34.103 -0.2 - vertex 6.63949 -32.8952 -0.2 - vertex 6.31707 -33.4759 -0.2 + vertex -4.06681 -20.6308 -3 + vertex 3.72385 -21.1527 -3 + vertex 1.84511 -22.661 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.832 -34.2912 -0.2 - vertex 9.93892 -37.0575 -0.2 - vertex 10.2137 -37.0171 -0.2 + vertex 3.72385 -21.1527 -3 + vertex -4.70045 -19.8327 -3 + vertex 3.854 -7.59505 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.832 -34.2912 -0.2 - vertex 10.2137 -37.0171 -0.2 - vertex 10.5307 -36.9119 -0.2 + vertex -3.85646 -21.6547 -3 + vertex 1.84511 -22.661 -3 + vertex 0.168338 -24.355 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.832 -34.2912 -0.2 - vertex 9.71926 -37.0921 -0.2 - vertex 9.93892 -37.0575 -0.2 + vertex -3.89417 -22.8317 -3 + vertex 0.168338 -24.355 -3 + vertex -1.19093 -26.1306 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.775 -34.2097 -0.2 - vertex 9.37163 -37.1827 -0.2 - vertex 9.71926 -37.0921 -0.2 + vertex 3.72385 -21.1527 -3 + vertex -4.06681 -20.6308 -3 + vertex -4.70045 -19.8327 -3 endloop endfacet - facet normal 0 -0 1 + facet normal 0 0 -1 outer loop - vertex 8.94379 -37.3156 -0.2 - vertex 10.7415 -34.103 -0.2 - vertex 6.31707 -33.4759 -0.2 + vertex -3.89417 -22.8317 -3 + vertex -1.19093 -26.1306 -3 + vertex -2.25121 -28.0146 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 10.775 -34.2097 -0.2 - vertex 8.94379 -37.3156 -0.2 - vertex 9.37163 -37.1827 -0.2 + vertex -3.89417 -22.8317 -3 + vertex -2.25121 -28.0146 -3 + vertex -3.14673 -30.0798 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 6.01946 -33.9088 -0.2 - vertex 8.94379 -37.3156 -0.2 - vertex 6.31707 -33.4759 -0.2 + vertex 1.84511 -22.661 -3 + vertex -3.85646 -21.6547 -3 + vertex -4.06681 -20.6308 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 8.94379 -37.3156 -0.2 - vertex 6.01946 -33.9088 -0.2 - vertex 8.4835 -37.477 -0.2 + vertex -5.57075 -19.2012 -3 + vertex 3.854 -7.59505 -3 + vertex -4.70045 -19.8327 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 5.87315 -34.0811 -0.2 - vertex 8.4835 -37.477 -0.2 - vertex 6.01946 -33.9088 -0.2 + vertex -6.41168 -29.738 -3 + vertex -3.14673 -30.0798 -3 + vertex -3.7659 -32.0301 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 5.72486 -34.2297 -0.2 - vertex 8.4835 -37.477 -0.2 - vertex 5.87315 -34.0811 -0.2 + vertex 47.2139 -19.2263 -3 + vertex 27.528 9.70386 -3 + vertex 27.6094 12.2412 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 8.4835 -37.477 -0.2 - vertex 5.72486 -34.2297 -0.2 - vertex 7.35232 -37.8908 -0.2 + vertex 28.989 -19.2301 -3 + vertex 26.953 2.16551 -3 + vertex 27.528 9.70386 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 5.41146 -34.4742 -0.2 - vertex 7.35232 -37.8908 -0.2 - vertex 5.72486 -34.2297 -0.2 + vertex 26.9177 3.98634 -3 + vertex 27.528 9.70386 -3 + vertex 26.953 2.16551 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 4.69132 -37.3222 -0.2 - vertex 7.35232 -37.8908 -0.2 - vertex 5.41146 -34.4742 -0.2 + vertex 28.989 -19.2301 -3 + vertex 26.8464 1.29842 -3 + vertex 26.953 2.16551 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 7.35232 -37.8908 -0.2 - vertex 4.69132 -37.3222 -0.2 - vertex 6.47346 -38.1927 -0.2 + vertex 28.989 -19.2301 -3 + vertex 26.7235 1.18648 -3 + vertex 26.8464 1.29842 -3 endloop endfacet - facet normal -0 -0 1 + facet normal 0 0 -1 outer loop - vertex 4.72035 -37.4346 -0.2 - vertex 6.47346 -38.1927 -0.2 - vertex 4.69132 -37.3222 -0.2 + vertex 20.9081 -2.19366 -3 + vertex 26.7235 1.18648 -3 + vertex 27.8281 -19.1444 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 6.47346 -38.1927 -0.2 - vertex 4.72035 -37.4346 -0.2 - vertex 5.81563 -38.3852 -0.2 + vertex 20.9081 -2.19366 -3 + vertex 27.8281 -19.1444 -3 + vertex 26.5413 -19.2026 -3 endloop endfacet - facet normal -0 -0 1 + facet normal -0 0 -1 outer loop - vertex 4.74716 -37.8041 -0.2 - vertex 5.81563 -38.3852 -0.2 - vertex 4.72035 -37.4346 -0.2 + vertex 26.7235 1.18648 -3 + vertex 21.0968 -1.15452 -3 + vertex 26.5455 1.2697 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 4.69132 -37.3222 -0.2 - vertex 5.41146 -34.4742 -0.2 - vertex 5.05744 -34.678 -0.2 + vertex 20.9081 -2.19366 -3 + vertex 26.5413 -19.2026 -3 + vertex 25.4359 -19.4082 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 -0 -1 outer loop - vertex 5.55983 -38.4413 -0.2 - vertex 4.74716 -37.8041 -0.2 - vertex 5.34756 -38.4712 -0.2 + vertex 23.9858 2.16372 -3 + vertex 26.5455 1.2697 -3 + vertex 21.0968 -1.15452 -3 endloop endfacet - facet normal -0 -0 1 + facet normal 0 0 -1 outer loop - vertex 4.76904 -38.117 -0.2 - vertex 5.34756 -38.4712 -0.2 - vertex 4.74716 -37.8041 -0.2 + vertex 26.5455 1.2697 -3 + vertex 23.9858 2.16372 -3 + vertex 25.9977 1.96397 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 5.34756 -38.4712 -0.2 - vertex 4.76904 -38.117 -0.2 - vertex 5.17491 -38.475 -0.2 + vertex 25.3153 2.68052 -3 + vertex 24.7523 2.4559 -3 + vertex 25.0347 2.67962 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 5.17491 -38.475 -0.2 - vertex 4.76904 -38.117 -0.2 - vertex 5.03796 -38.4533 -0.2 + vertex 25.9977 1.96397 -3 + vertex 24.7523 2.4559 -3 + vertex 25.3153 2.68052 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 5.03796 -38.4533 -0.2 - vertex 4.80226 -38.2378 -0.2 - vertex 4.93281 -38.4063 -0.2 + vertex 25.9977 1.96397 -3 + vertex 23.9858 2.16372 -3 + vertex 24.7523 2.4559 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 4.93281 -38.4063 -0.2 - vertex 4.80226 -38.2378 -0.2 - vertex 4.85555 -38.3343 -0.2 + vertex 20.9081 -2.19366 -3 + vertex 25.4359 -19.4082 -3 + vertex 23.0737 -20.4525 -3 endloop endfacet - facet normal -0 -0 1 + facet normal 0 0 -1 outer loop - vertex 4.80226 -38.2378 -0.2 - vertex 5.03796 -38.4533 -0.2 - vertex 4.76904 -38.117 -0.2 + vertex 23.9858 2.16372 -3 + vertex 21.0968 -1.15452 -3 + vertex 23.1222 1.97635 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 5.81563 -38.3852 -0.2 - vertex 4.74716 -37.8041 -0.2 - vertex 5.55983 -38.4413 -0.2 + vertex 21.0282 0.220415 -3 + vertex 23.1222 1.97635 -3 + vertex 21.0968 -1.15452 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 5.05744 -34.678 -0.2 - vertex 4.65588 -37.2809 -0.2 - vertex 4.69132 -37.3222 -0.2 + vertex 23.1222 1.97635 -3 + vertex 21.0282 0.220415 -3 + vertex 22.8505 1.9828 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 4.59905 -34.8756 -0.2 - vertex 4.65588 -37.2809 -0.2 - vertex 5.05744 -34.678 -0.2 + vertex 19.6777 -11.13 -3 + vertex 23.0737 -20.4525 -3 + vertex 21.6367 -21.3703 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0 0 -1 outer loop - vertex 4.12685 -35.011 -0.2 - vertex 4.65588 -37.2809 -0.2 - vertex 4.59905 -34.8756 -0.2 + vertex 22.8505 1.9828 -3 + vertex 21.0282 0.220415 -3 + vertex 22.7784 2.30129 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex 3.65273 -35.0844 -0.2 - vertex 4.65588 -37.2809 -0.2 - vertex 4.12685 -35.011 -0.2 + vertex 19.4865 -0.127098 -3 + vertex 22.7784 2.30129 -3 + vertex 21.0282 0.220415 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 4.65588 -37.2809 -0.2 - vertex 3.65273 -35.0844 -0.2 - vertex 4.26446 -37.4494 -0.2 + vertex 22.7784 2.30129 -3 + vertex 16.0239 2.90744 -3 + vertex 21.7142 8.22365 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0 0 -1 outer loop - vertex 3.18861 -35.0966 -0.2 - vertex 4.26446 -37.4494 -0.2 - vertex 3.65273 -35.0844 -0.2 + vertex 22.7784 2.30129 -3 + vertex 19.4865 -0.127098 -3 + vertex 16.0239 2.90744 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 4.26446 -37.4494 -0.2 - vertex 3.18861 -35.0966 -0.2 - vertex 3.45158 -37.8545 -0.2 + vertex 15.3368 5.33522 -3 + vertex 21.7142 8.22365 -3 + vertex 16.0239 2.90744 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 2.7464 -35.0478 -0.2 - vertex 3.45158 -37.8545 -0.2 - vertex 3.18861 -35.0966 -0.2 + vertex 16.8564 0.883682 -3 + vertex 19.4865 -0.127098 -3 + vertex 18.2674 -0.466912 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 3.45158 -37.8545 -0.2 - vertex 2.7464 -35.0478 -0.2 - vertex 3.20396 -37.9704 -0.2 + vertex 16.8564 0.883682 -3 + vertex 18.2674 -0.466912 -3 + vertex 17.6745 -0.267811 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 3.20396 -37.9704 -0.2 - vertex 2.7464 -35.0478 -0.2 - vertex 2.93102 -38.0768 -0.2 + vertex 19.4865 -0.127098 -3 + vertex 16.8564 0.883682 -3 + vertex 16.0239 2.90744 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 2.53723 -35.0007 -0.2 - vertex 2.93102 -38.0768 -0.2 - vertex 2.7464 -35.0478 -0.2 + vertex 21.7142 8.22365 -3 + vertex 15.3368 5.33522 -3 + vertex 19.7157 9.66569 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 2.32439 -38.26 -0.2 - vertex 2.53723 -35.0007 -0.2 - vertex 2.33801 -34.9386 -0.2 + vertex 14.9551 7.69881 -3 + vertex 19.7157 9.66569 -3 + vertex 15.3368 5.33522 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 2.53723 -35.0007 -0.2 - vertex 2.32439 -38.26 -0.2 - vertex 2.93102 -38.0768 -0.2 + vertex 19.7157 9.66569 -3 + vertex 14.9551 7.69881 -3 + vertex 18.6847 10.137 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 1.66207 -38.4009 -0.2 - vertex 2.33801 -34.9386 -0.2 - vertex 2.15022 -34.8616 -0.2 + vertex 18.6847 10.137 -3 + vertex 14.9551 7.69881 -3 + vertex 17.337 10.3363 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.66207 -38.4009 -0.2 - vertex 2.15022 -34.8616 -0.2 - vertex 1.97535 -34.7696 -0.2 + vertex 14.9426 8.95486 -3 + vertex 17.337 10.3363 -3 + vertex 14.9551 7.69881 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 0.974434 -38.4962 -0.2 - vertex 1.97535 -34.7696 -0.2 - vertex 1.8149 -34.6627 -0.2 + vertex 17.337 10.3363 -3 + vertex 15.3572 9.74689 -3 + vertex 15.9933 10.3315 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 0.291868 -38.543 -0.2 - vertex 1.8149 -34.6627 -0.2 - vertex 1.67035 -34.5411 -0.2 + vertex 15.9933 10.3315 -3 + vertex 15.3572 9.74689 -3 + vertex 15.6762 10.1383 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 2.33801 -34.9386 -0.2 - vertex 1.66207 -38.4009 -0.2 - vertex 2.32439 -38.26 -0.2 + vertex 17.337 10.3363 -3 + vertex 14.9426 8.95486 -3 + vertex 15.3572 9.74689 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex -0.355246 -38.538 -0.2 - vertex 1.67035 -34.5411 -0.2 - vertex 1.50339 -34.3603 -0.2 + vertex 34.7441 -22.7166 -3 + vertex 31.8275 -24.8188 -3 + vertex 32.0255 -23.3848 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex -2.66982 -37.4742 -0.2 - vertex 1.50339 -34.3603 -0.2 - vertex 1.35782 -34.1559 -0.2 + vertex 29.8709 -31.8517 -3 + vertex 32.5255 -33.371 -3 + vertex 31.6707 -35.0376 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex -3.25661 -36.6145 -0.2 - vertex 1.35782 -34.1559 -0.2 - vertex 1.23329 -33.9292 -0.2 + vertex 33.8444 -30.1753 -3 + vertex 31.4974 -26.3899 -3 + vertex 31.8275 -24.8188 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex -3.68783 -35.5721 -0.2 - vertex 1.23329 -33.9292 -0.2 - vertex 1.1294 -33.6813 -0.2 + vertex 33.8444 -30.1753 -3 + vertex 31.2318 -26.857 -3 + vertex 31.4974 -26.3899 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex -3.87516 -34.8013 -0.2 - vertex 1.1294 -33.6813 -0.2 - vertex 1.04578 -33.4136 -0.2 + vertex 29.8709 -31.8517 -3 + vertex 31.6707 -35.0376 -3 + vertex 30.8837 -35.7486 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex -3.97277 -33.9877 -0.2 - vertex 1.04578 -33.4136 -0.2 - vertex 0.982074 -33.1272 -0.2 + vertex 33.8444 -30.1753 -3 + vertex 30.2029 -31.1764 -3 + vertex 30.1062 -30.7807 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 -0 -1 outer loop - vertex 1.97535 -34.7696 -0.2 - vertex 0.974434 -38.4962 -0.2 - vertex 1.66207 -38.4009 -0.2 + vertex 30.7817 -27.1595 -3 + vertex 33.8444 -30.1753 -3 + vertex 30.1062 -30.7807 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex -3.97004 -33.2395 -0.2 - vertex 0.982074 -33.1272 -0.2 - vertex 0.937893 -32.8234 -0.2 + vertex 32.5255 -33.371 -3 + vertex 29.8709 -31.8517 -3 + vertex 30.2029 -31.1764 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex -3.8527 -32.4651 -0.2 - vertex 0.937893 -32.8234 -0.2 - vertex 0.912865 -32.5034 -0.2 + vertex 27.8442 -34.1555 -3 + vertex 30.8837 -35.7486 -3 + vertex 29.7686 -36.0779 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex -3.75417 -32.0301 -0.2 - vertex 0.912865 -32.5034 -0.2 - vertex 0.906618 -32.1685 -0.2 + vertex 27.8442 -34.1555 -3 + vertex 29.7686 -36.0779 -3 + vertex 29.0223 -36.3831 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.97046 -27.8549 -0.2 - vertex -1.45361 -26.5684 -0.2 - vertex 1.63381 -28.6878 -0.2 + vertex 27.8442 -34.1555 -3 + vertex 29.0223 -36.3831 -3 + vertex 28.553 -36.8405 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex -1.72295 -27.0315 -0.2 - vertex 1.63381 -28.6878 -0.2 - vertex -1.45361 -26.5684 -0.2 + vertex 25.9895 -35.834 -3 + vertex 28.553 -36.8405 -3 + vertex 28.4102 -37.3704 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex -2.23947 -28.0146 -0.2 - vertex 1.63381 -28.6878 -0.2 - vertex -1.72295 -27.0315 -0.2 + vertex 30.8837 -35.7486 -3 + vertex 27.8442 -34.1555 -3 + vertex 29.8709 -31.8517 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.63381 -28.6878 -0.2 - vertex -2.23947 -28.0146 -0.2 - vertex 1.35733 -29.5107 -0.2 + vertex 33.8444 -30.1753 -3 + vertex 30.7817 -27.1595 -3 + vertex 31.2318 -26.857 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex -2.71481 -29.043 -0.2 - vertex 1.35733 -29.5107 -0.2 - vertex -2.23947 -28.0146 -0.2 + vertex 29.6885 -30.4984 -3 + vertex 30.7817 -27.1595 -3 + vertex 30.1062 -30.7807 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.35733 -29.5107 -0.2 - vertex -2.71481 -29.043 -0.2 - vertex 1.144 -30.3137 -0.2 + vertex 28.9763 -27.4135 -3 + vertex 29.6885 -30.4984 -3 + vertex 29.2916 -30.4642 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.144 -30.3137 -0.2 - vertex -2.71481 -29.043 -0.2 - vertex 0.99682 -31.0867 -0.2 + vertex 29.6885 -30.4984 -3 + vertex 28.9763 -27.4135 -3 + vertex 30.7817 -27.1595 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex -3.135 -30.0798 -0.2 - vertex 0.99682 -31.0867 -0.2 - vertex -2.71481 -29.043 -0.2 + vertex 28.199 -31.2235 -3 + vertex 28.9763 -27.4135 -3 + vertex 29.2916 -30.4642 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 0.99682 -31.0867 -0.2 - vertex -3.135 -30.0798 -0.2 - vertex 0.918778 -31.8199 -0.2 + vertex 25.3774 -27.4375 -3 + vertex 28.199 -31.2235 -3 + vertex 26.4192 -32.7448 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex -3.4861 -31.0878 -0.2 - vertex 0.918778 -31.8199 -0.2 - vertex -3.135 -30.0798 -0.2 + vertex 28.199 -31.2235 -3 + vertex 25.3774 -27.4375 -3 + vertex 28.9763 -27.4135 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 0.918778 -31.8199 -0.2 - vertex -3.4861 -31.0878 -0.2 - vertex 0.906618 -32.1685 -0.2 + vertex 24.9271 -33.7368 -3 + vertex 25.3774 -27.4375 -3 + vertex 26.4192 -32.7448 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 -1 outer loop - vertex -3.75417 -32.0301 -0.2 - vertex 0.906618 -32.1685 -0.2 - vertex -3.4861 -31.0878 -0.2 + vertex 19.5138 -29.5327 -3 + vertex 24.9271 -33.7368 -3 + vertex 23.5816 -34.2758 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 0.912865 -32.5034 -0.2 - vertex -3.75417 -32.0301 -0.2 - vertex -3.8527 -32.4651 -0.2 + vertex 19.3087 -31.0557 -3 + vertex 23.5816 -34.2758 -3 + vertex 22.2417 -34.4379 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 0.937893 -32.8234 -0.2 - vertex -3.8527 -32.4651 -0.2 - vertex -3.92523 -32.8697 -0.2 + vertex 19.3087 -31.0557 -3 + vertex 22.2417 -34.4379 -3 + vertex 21.4183 -34.349 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 0.937893 -32.8234 -0.2 - vertex -3.92523 -32.8697 -0.2 - vertex -3.97004 -33.2395 -0.2 + vertex 19.3085 -32.3556 -3 + vertex 21.4183 -34.349 -3 + vertex 20.6651 -34.0963 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.04578 -33.4136 -0.2 - vertex -3.97277 -33.9877 -0.2 - vertex -3.93569 -34.3989 -0.2 + vertex 23.5816 -34.2758 -3 + vertex 19.3087 -31.0557 -3 + vertex 19.5138 -29.5327 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.04578 -33.4136 -0.2 - vertex -3.93569 -34.3989 -0.2 - vertex -3.87516 -34.8013 -0.2 + vertex 19.3085 -32.3556 -3 + vertex 20.6651 -34.0963 -3 + vertex 20.0228 -33.6987 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.1294 -33.6813 -0.2 - vertex -3.87516 -34.8013 -0.2 - vertex -3.79219 -35.193 -0.2 + vertex 25.3774 -27.4375 -3 + vertex 19.9054 -28.0436 -3 + vertex 20.1129 -27.4424 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.8149 -34.6627 -0.2 - vertex 0.291868 -38.543 -0.2 - vertex 0.974434 -38.4962 -0.2 + vertex 19.3085 -32.3556 -3 + vertex 20.0228 -33.6987 -3 + vertex 19.5322 -33.1754 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.23329 -33.9292 -0.2 - vertex -3.56309 -35.9367 -0.2 - vertex -3.41901 -36.2848 -0.2 + vertex 25.3774 -27.4375 -3 + vertex 19.5138 -29.5327 -3 + vertex 19.9054 -28.0436 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.23329 -33.9292 -0.2 - vertex -3.41901 -36.2848 -0.2 - vertex -3.25661 -36.6145 -0.2 + vertex 24.9271 -33.7368 -3 + vertex 19.5138 -29.5327 -3 + vertex 25.3774 -27.4375 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.35782 -34.1559 -0.2 - vertex -3.25661 -36.6145 -0.2 - vertex -3.07693 -36.924 -0.2 + vertex 21.4183 -34.349 -3 + vertex 19.3085 -32.3556 -3 + vertex 19.3087 -31.0557 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.35782 -34.1559 -0.2 - vertex -3.07693 -36.924 -0.2 - vertex -2.88099 -37.2112 -0.2 + vertex 27.528 9.70386 -3 + vertex 26.9177 3.98634 -3 + vertex 27.209 8.08714 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.35782 -34.1559 -0.2 - vertex -2.88099 -37.2112 -0.2 - vertex -2.66982 -37.4742 -0.2 + vertex 27.209 8.08714 -3 + vertex 26.9177 3.98634 -3 + vertex 26.8985 6.51977 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.50339 -34.3603 -0.2 - vertex -2.20592 -37.9202 -0.2 - vertex -0.936529 -38.478 -0.2 + vertex 23.2082 3.44442 -3 + vertex 23.5966 4.95794 -3 + vertex 23.5377 4.18291 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex -1.19299 -38.4265 -0.2 - vertex -2.20592 -37.9202 -0.2 - vertex -1.4216 -38.36 -0.2 + vertex 23.5966 4.95794 -3 + vertex 23.2082 3.44442 -3 + vertex 23.3811 5.8089 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex -1.69347 -38.2465 -0.2 - vertex -2.20592 -37.9202 -0.2 - vertex -1.95525 -38.0993 -0.2 + vertex 23.2082 3.44442 -3 + vertex 22.8875 6.77518 -3 + vertex 23.3811 5.8089 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex -1.4216 -38.36 -0.2 - vertex -2.20592 -37.9202 -0.2 - vertex -1.69347 -38.2465 -0.2 + vertex 21.7142 8.22365 -3 + vertex 23.2082 3.44442 -3 + vertex 22.7784 2.30129 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex -0.936529 -38.478 -0.2 - vertex -2.20592 -37.9202 -0.2 - vertex -1.19299 -38.4265 -0.2 + vertex 23.2082 3.44442 -3 + vertex 21.7142 8.22365 -3 + vertex 22.8875 6.77518 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.50339 -34.3603 -0.2 - vertex -2.44446 -37.7112 -0.2 - vertex -2.20592 -37.9202 -0.2 + vertex 15.0577 29.0611 -3 + vertex 12.0187 29.9363 -3 + vertex 12.2907 30.5214 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.50339 -34.3603 -0.2 - vertex -0.936529 -38.478 -0.2 - vertex -0.355246 -38.538 -0.2 + vertex 11.7374 28.4518 -3 + vertex 15.122 28.0941 -3 + vertex 11.8052 27.5343 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 -0 -1 outer loop - vertex 1.50339 -34.3603 -0.2 - vertex -2.66982 -37.4742 -0.2 - vertex -2.44446 -37.7112 -0.2 + vertex 11.8088 29.3224 -3 + vertex 15.0577 29.0611 -3 + vertex 11.7374 28.4518 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.1294 -33.6813 -0.2 - vertex -3.79219 -35.193 -0.2 - vertex -3.68783 -35.5721 -0.2 + vertex 15.122 28.0941 -3 + vertex 11.7374 28.4518 -3 + vertex 15.0577 29.0611 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 1.67035 -34.5411 -0.2 - vertex -0.355246 -38.538 -0.2 - vertex 0.291868 -38.543 -0.2 + vertex 15.0577 29.0611 -3 + vertex 11.8088 29.3224 -3 + vertex 12.0187 29.9363 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0 0 -1 outer loop - vertex 0.982074 -33.1272 -0.2 - vertex -3.97004 -33.2395 -0.2 - vertex -3.98536 -33.5697 -0.2 + vertex 11.871 -34.5351 -3 + vertex 14.6656 -34.4466 -3 + vertex 12.1385 -34.7994 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 1.23329 -33.9292 -0.2 - vertex -3.68783 -35.5721 -0.2 - vertex -3.56309 -35.9367 -0.2 + vertex 14.7938 -32.2631 -3 + vertex 11.871 -34.5351 -3 + vertex 11.4887 -31.4602 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0 0 -1 outer loop - vertex 0.982074 -33.1272 -0.2 - vertex -3.98536 -33.5697 -0.2 - vertex -3.97277 -33.9877 -0.2 + vertex 15.3794 -29.9771 -3 + vertex 11.4887 -31.4602 -3 + vertex 14.5835 -23.8342 -3 endloop endfacet - facet normal -0.2949 -0.955528 0 + facet normal 0 0 -1 outer loop - vertex 19.3736 -10.7173 -0.2 - vertex 19.4763 -10.749 0 - vertex 19.3736 -10.7173 0 + vertex 10.915 -33.0747 -3 + vertex 11.871 -34.5351 -3 + vertex 11.4551 -34.4353 -3 endloop endfacet - facet normal -0.2949 -0.955528 -0 + facet normal 0 0 -1 outer loop - vertex 19.4763 -10.749 0 - vertex 19.3736 -10.7173 -0.2 - vertex 19.4763 -10.749 -0.2 + vertex 11.871 -34.5351 -3 + vertex 10.915 -33.0747 -3 + vertex 11.4887 -31.4602 -3 endloop endfacet - facet normal -0.500051 -0.865996 0 + facet normal 0 0 -1 outer loop - vertex 19.4763 -10.749 -0.2 - vertex 19.557 -10.7956 0 - vertex 19.4763 -10.749 0 + vertex 10.7197 -33.9677 -3 + vertex 11.4551 -34.4353 -3 + vertex 10.9006 -34.3507 -3 endloop endfacet - facet normal -0.500051 -0.865996 -0 + facet normal 0 0 -1 outer loop - vertex 19.557 -10.7956 0 - vertex 19.4763 -10.749 -0.2 - vertex 19.557 -10.7956 -0.2 + vertex 11.4551 -34.4353 -3 + vertex 10.7197 -33.9677 -3 + vertex 10.915 -33.0747 -3 endloop endfacet - facet normal -0.714409 -0.699729 0 + facet normal 0 0 -1 outer loop - vertex 19.6172 -10.8571 -0.2 - vertex 19.557 -10.7956 0 - vertex 19.557 -10.7956 -0.2 + vertex 14.2516 -3.15818 -3 + vertex 14.2455 -2.23644 -3 + vertex 14.333 -2.7489 -3 endloop endfacet - facet normal -0.714409 -0.699729 0 + facet normal 0 0 -1 outer loop - vertex 19.557 -10.7956 0 - vertex 19.6172 -10.8571 -0.2 - vertex 19.6172 -10.8571 0 + vertex 13.8131 -3.7697 -3 + vertex 14.2455 -2.23644 -3 + vertex 14.2516 -3.15818 -3 endloop endfacet - facet normal -0.879991 -0.47499 0 + facet normal 0 0 -1 outer loop - vertex 19.6583 -10.9333 -0.2 - vertex 19.6172 -10.8571 0 - vertex 19.6172 -10.8571 -0.2 + vertex 13.172 -4.2601 -3 + vertex 14.2455 -2.23644 -3 + vertex 13.8131 -3.7697 -3 endloop endfacet - facet normal -0.879991 -0.47499 0 + facet normal -0 0 -1 outer loop - vertex 19.6172 -10.8571 0 - vertex 19.6583 -10.9333 -0.2 - vertex 19.6583 -10.9333 0 + vertex 14.2455 -2.23644 -3 + vertex 13.172 -4.2601 -3 + vertex 13.5923 -0.94501 -3 endloop endfacet - facet normal -0.967951 -0.251138 0 + facet normal 0 0 -1 outer loop - vertex 19.6819 -11.0243 -0.2 - vertex 19.6583 -10.9333 0 - vertex 19.6583 -10.9333 -0.2 + vertex 12.4032 -4.58609 -3 + vertex 13.5923 -0.94501 -3 + vertex 13.172 -4.2601 -3 endloop endfacet - facet normal -0.967951 -0.251138 0 + facet normal 0 0 -1 outer loop - vertex 19.6583 -10.9333 0 - vertex 19.6819 -11.0243 -0.2 - vertex 19.6819 -11.0243 0 + vertex 11.5814 -4.70438 -3 + vertex 13.5923 -0.94501 -3 + vertex 12.4032 -4.58609 -3 endloop endfacet - facet normal -0.997465 -0.0711569 0 + facet normal 0 0 -1 outer loop - vertex 19.6895 -11.13 -0.2 - vertex 19.6819 -11.0243 0 - vertex 19.6819 -11.0243 -0.2 + vertex 10.2758 -4.53506 -3 + vertex 13.5923 -0.94501 -3 + vertex 11.5814 -4.70438 -3 endloop endfacet - facet normal -0.997465 -0.0711569 0 + facet normal -0 0 -1 outer loop - vertex 19.6819 -11.0243 0 - vertex 19.6895 -11.13 -0.2 - vertex 19.6895 -11.13 0 + vertex 13.5923 -0.94501 -3 + vertex 10.2758 -4.53506 -3 + vertex 12.3489 0.629998 -3 endloop endfacet - facet normal -0.984705 0.17423 0 + facet normal 0 0 -1 outer loop - vertex 19.6598 -11.2975 -0.2 - vertex 19.6895 -11.13 0 - vertex 19.6895 -11.13 -0.2 + vertex 9.01294 -4.00814 -3 + vertex 12.3489 0.629998 -3 + vertex 10.2758 -4.53506 -3 endloop endfacet - facet normal -0.984705 0.17423 0 + facet normal 0 0 -1 outer loop - vertex 19.6895 -11.13 0 - vertex 19.6598 -11.2975 -0.2 - vertex 19.6598 -11.2975 0 + vertex 7.74282 -3.09522 -3 + vertex 12.3489 0.629998 -3 + vertex 9.01294 -4.00814 -3 endloop endfacet - facet normal -0.956743 0.290933 0 + facet normal -0 0 -1 outer loop - vertex 19.5653 -11.6083 -0.2 - vertex 19.6598 -11.2975 0 - vertex 19.6598 -11.2975 -0.2 + vertex 12.3489 0.629998 -3 + vertex 7.74282 -3.09522 -3 + vertex 10.5724 2.40247 -3 endloop endfacet - facet normal -0.956743 0.290933 0 + facet normal 0 0 -1 outer loop - vertex 19.6598 -11.2975 0 - vertex 19.5653 -11.6083 -0.2 - vertex 19.5653 -11.6083 0 + vertex 6.41545 -1.76788 -3 + vertex 10.5724 2.40247 -3 + vertex 7.74282 -3.09522 -3 endloop endfacet - facet normal -0.93899 0.343946 0 + facet normal -0 0 -1 outer loop - vertex 19.1479 -12.7477 -0.2 - vertex 19.5653 -11.6083 0 - vertex 19.5653 -11.6083 -0.2 + vertex 10.5724 2.40247 -3 + vertex 6.41545 -1.76788 -3 + vertex 9.13441 3.60373 -3 endloop endfacet - facet normal -0.93899 0.343946 0 + facet normal 0 0 -1 outer loop - vertex 19.5653 -11.6083 0 - vertex 19.1479 -12.7477 -0.2 - vertex 19.1479 -12.7477 0 + vertex 4.6091 0.441775 -3 + vertex 9.13441 3.60373 -3 + vertex 6.41545 -1.76788 -3 endloop endfacet - facet normal -0.930496 0.366302 0 + facet normal -0 0 -1 outer loop - vertex 18.3699 -14.7241 -0.2 - vertex 19.1479 -12.7477 0 - vertex 19.1479 -12.7477 -0.2 + vertex 9.13441 3.60373 -3 + vertex 4.6091 0.441775 -3 + vertex 8.18559 4.25764 -3 endloop endfacet - facet normal -0.930496 0.366302 0 + facet normal 0 0 -1 outer loop - vertex 19.1479 -12.7477 0 - vertex 18.3699 -14.7241 -0.2 - vertex 18.3699 -14.7241 0 + vertex 4.39665 0.754678 -3 + vertex 8.18559 4.25764 -3 + vertex 4.6091 0.441775 -3 endloop endfacet - facet normal -0.92735 0.374196 0 + facet normal -0 0 -1 outer loop - vertex 17.1638 -17.7131 -0.2 - vertex 18.3699 -14.7241 0 - vertex 18.3699 -14.7241 -0.2 + vertex 8.18559 4.25764 -3 + vertex 4.39665 0.754678 -3 + vertex 5.26682 5.76024 -3 endloop endfacet - facet normal -0.92735 0.374196 0 + facet normal 0 0 -1 outer loop - vertex 18.3699 -14.7241 0 - vertex 17.1638 -17.7131 -0.2 - vertex 17.1638 -17.7131 0 + vertex 1.66409 7.13679 -3 + vertex 4.39665 0.754678 -3 + vertex 4.24084 0.464987 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 4.39665 0.754678 -3 + vertex 1.66409 7.13679 -3 + vertex 5.26682 5.76024 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -1.72768 -3.30659 -3 + vertex 4.37015 -0.506109 -3 + vertex 1.09298 -4.60426 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 4.37015 -0.506109 -3 + vertex -1.72768 -3.30659 -3 + vertex 4.24084 0.464987 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -3.55278 -2.51803 -3 + vertex 4.24084 0.464987 -3 + vertex -1.72768 -3.30659 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 4.24084 0.464987 -3 + vertex -3.55278 -2.51803 -3 + vertex 1.66409 7.13679 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 1.66409 7.13679 -3 + vertex -3.55278 -2.51803 -3 + vertex -0.248642 7.94666 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -0.248642 7.94666 -3 + vertex -3.55278 -2.51803 -3 + vertex -2.78119 9.30203 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -4.99153 10.6633 -3 + vertex -3.55278 -2.51803 -3 + vertex -3.71458 -2.66291 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 3.854 -7.59505 -3 + vertex -5.57075 -19.2012 -3 + vertex 1.04019 -5.91722 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 1.04019 -5.91722 -3 + vertex -5.57075 -19.2012 -3 + vertex -2.05653 -4.03047 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -7.1272 -19.1706 -3 + vertex -2.05653 -4.03047 -3 + vertex -5.57075 -19.2012 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -3.55278 -2.51803 -3 + vertex -4.99153 10.6633 -3 + vertex -2.78119 9.30203 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -2.05653 -4.03047 -3 + vertex -7.1272 -19.1706 -3 + vertex -3.45272 -3.03042 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.4385 -11.5861 -3 + vertex -3.45272 -3.03042 -3 + vertex -7.1272 -19.1706 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.7993 -11.4712 -3 + vertex -3.71458 -2.66291 -3 + vertex -17.4385 -11.5861 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -3.45272 -3.03042 -3 + vertex -17.4385 -11.5861 -3 + vertex -3.71458 -2.66291 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 1.41055 11.926 -3 + vertex 1.8467 12.7398 -3 + vertex 1.87173 12.344 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 1.8467 12.7398 -3 + vertex 1.41055 11.926 -3 + vertex 1.50002 13.1874 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 1.41055 11.926 -3 + vertex 0.918757 13.5702 -3 + vertex 1.50002 13.1874 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 0.535115 11.4454 -3 + vertex 0.918757 13.5702 -3 + vertex 1.41055 11.926 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -0.394194 11.1972 -3 + vertex 0.918757 13.5702 -3 + vertex 0.535115 11.4454 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -0.394194 11.1972 -3 + vertex -0.928844 14.138 -3 + vertex 0.918757 13.5702 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -1.46211 11.1697 -3 + vertex -0.928844 14.138 -3 + vertex -0.394194 11.1972 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -2.75335 11.3511 -3 + vertex -0.928844 14.138 -3 + vertex -1.46211 11.1697 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -2.75335 11.3511 -3 + vertex -3.65881 14.4362 -3 + vertex -0.928844 14.138 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -5.07797 11.6776 -3 + vertex -3.65881 14.4362 -3 + vertex -2.75335 11.3511 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -7.23385 14.4578 -3 + vertex -5.07797 11.6776 -3 + vertex -5.71478 11.6495 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -7.23385 14.4578 -3 + vertex -5.71478 11.6495 -3 + vertex -5.93765 11.491 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -5.07797 11.6776 -3 + vertex -7.23385 14.4578 -3 + vertex -3.65881 14.4362 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -13.7227 13.3517 -3 + vertex -3.71458 -2.66291 -3 + vertex -17.5299 12.3491 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.4385 -11.5861 -3 + vertex -7.1272 -19.1706 -3 + vertex -8.78621 -19.378 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -11.7016 -19.4898 -3 + vertex -8.78621 -19.378 -3 + vertex -10.3766 -20.1728 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -3.71458 -2.66291 -3 + vertex -13.7227 13.3517 -3 + vertex -4.99153 10.6633 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -11.7016 -19.4898 -3 + vertex -10.3766 -20.1728 -3 + vertex -11.6824 -19.9072 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -10.3766 -20.1728 -3 + vertex -11.8627 -20.4599 -3 + vertex -11.6824 -19.9072 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -11.8627 -20.4599 -3 + vertex -10.3766 -20.1728 -3 + vertex -12.0544 -21.102 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -20.6062 -18.108 -3 + vertex -22.6991 -20.0641 -3 + vertex -22.6057 -19.3555 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -23.6767 -35.9691 -3 + vertex -22.458 -35.4568 -3 + vertex -23.007 -35.8619 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -24.4076 -24.3815 -3 + vertex -21.28 -33.2523 -3 + vertex -23.4462 -30.738 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -21.28 -33.2523 -3 + vertex -23.1278 -21.2395 -3 + vertex -22.6991 -20.0641 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -22.458 -35.4568 -3 + vertex -23.6767 -35.9691 -3 + vertex -24.7956 -33.2498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -21.28 -33.2523 -3 + vertex -23.8149 -31.5911 -3 + vertex -23.4462 -30.738 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -24.7956 -33.2498 -3 + vertex -23.6767 -35.9691 -3 + vertex -24.4194 -36.2501 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -21.28 -33.2523 -3 + vertex -24.7956 -33.2498 -3 + vertex -23.8149 -31.5911 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -27.2791 -36.8782 -3 + vertex -24.4194 -36.2501 -3 + vertex -24.9699 -36.888 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -27.2791 -36.8782 -3 + vertex -24.9699 -36.888 -3 + vertex -25.157 -37.5754 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -24.4194 -36.2501 -3 + vertex -27.2791 -36.8782 -3 + vertex -24.7956 -33.2498 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.299 -23.335 -3 + vertex -17.8179 -22.6324 -3 + vertex -17.2695 -22.7276 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.299 -23.335 -3 + vertex -18.3659 -22.5704 -3 + vertex -17.8179 -22.6324 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -18.5428 -26.6889 -3 + vertex -18.3659 -22.5704 -3 + vertex -17.299 -23.335 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -18.5428 -26.6889 -3 + vertex -18.6886 -22.3738 -3 + vertex -18.3659 -22.5704 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -22.6991 -20.0641 -3 + vertex -18.6886 -22.3738 -3 + vertex -18.5428 -26.6889 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -22.6991 -20.0641 -3 + vertex -18.7986 -22.0269 -3 + vertex -18.6886 -22.3738 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -18.7986 -22.0269 -3 + vertex -19.683 -17.584 -3 + vertex -19.3785 -17.1305 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -18.7986 -22.0269 -3 + vertex -20.1126 -17.9213 -3 + vertex -19.683 -17.584 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -18.7986 -22.0269 -3 + vertex -20.6062 -18.108 -3 + vertex -20.1126 -17.9213 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -22.6991 -20.0641 -3 + vertex -20.6062 -18.108 -3 + vertex -18.7986 -22.0269 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -22.6991 -20.0641 -3 + vertex -18.5428 -26.6889 -3 + vertex -21.28 -33.2523 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -20.6062 -18.108 -3 + vertex -22.6057 -19.3555 -3 + vertex -21.1029 -18.1093 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -21.1029 -18.1093 -3 + vertex -22.6057 -19.3555 -3 + vertex -21.3898 -18.0171 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -22.8641 -19.008 -3 + vertex -21.3898 -18.0171 -3 + vertex -22.6057 -19.3555 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -21.3898 -18.0171 -3 + vertex -22.8641 -19.008 -3 + vertex -21.538 -17.8042 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -23.4908 -18.9156 -3 + vertex -21.538 -17.8042 -3 + vertex -22.8641 -19.008 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -24.7956 -33.2498 -3 + vertex -21.9191 -34.6287 -3 + vertex -22.458 -35.4568 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -21.538 -17.8042 -3 + vertex -23.4908 -18.9156 -3 + vertex -21.5846 -16.4428 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -21.9191 -34.6287 -3 + vertex -24.7956 -33.2498 -3 + vertex -21.28 -33.2523 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -23.3419 -14.2877 -3 + vertex -21.5846 -16.4428 -3 + vertex -23.4908 -18.9156 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex -22.1413 -14.5577 -3 + vertex -21.5846 -16.4428 -3 + vertex -23.3419 -14.2877 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -21.6401 -15.0493 -3 + vertex -22.1413 -14.5577 -3 + vertex -21.8106 -14.7733 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -21.5846 -16.4428 -3 + vertex -22.1413 -14.5577 -3 + vertex -21.6401 -15.0493 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -24.1111 -19.1062 -3 + vertex -23.3419 -14.2877 -3 + vertex -23.4908 -18.9156 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -26.1195 -14.1654 -3 + vertex -24.1111 -19.1062 -3 + vertex -24.7225 -19.9745 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -30.8809 -15.6487 -3 + vertex -24.7225 -19.9745 -3 + vertex -25.7001 -21.2849 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -24.1111 -19.1062 -3 + vertex -26.1195 -14.1654 -3 + vertex -23.3419 -14.2877 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -32.1593 -18.5412 -3 + vertex -25.7001 -21.2849 -3 + vertex -26.9351 -22.1109 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -32.1593 -18.5412 -3 + vertex -26.9351 -22.1109 -3 + vertex -28.6031 -22.5277 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -24.7225 -19.9745 -3 + vertex -30.8809 -15.6487 -3 + vertex -26.1195 -14.1654 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -26.1195 -14.1654 -3 + vertex -30.8809 -15.6487 -3 + vertex -29.5608 -14.1906 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -30.3887 -14.5514 -3 + vertex -29.5608 -14.1906 -3 + vertex -30.8809 -15.6487 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -32.1593 -18.5412 -3 + vertex -28.6031 -22.5277 -3 + vertex -30.8797 -22.6102 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -29.5608 -14.1906 -3 + vertex -30.3887 -14.5514 -3 + vertex -30.2116 -14.321 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -25.7001 -21.2849 -3 + vertex -32.1593 -18.5412 -3 + vertex -30.8809 -15.6487 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -33.3019 -21.4299 -3 + vertex -30.8797 -22.6102 -3 + vertex -32.5249 -22.5543 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -30.8797 -22.6102 -3 + vertex -33.3019 -21.4299 -3 + vertex -32.1593 -18.5412 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -33.3295 -22.4108 -3 + vertex -33.3019 -21.4299 -3 + vertex -32.5249 -22.5543 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -33.3019 -21.4299 -3 + vertex -33.3295 -22.4108 -3 + vertex -33.5147 -22.0719 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -8.78621 -19.378 -3 + vertex -17.4456 -12.0833 -3 + vertex -17.4385 -11.5861 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -19.3785 -17.1305 -3 + vertex -15.1553 -19.8912 -3 + vertex -17.9982 -20.7653 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -19.3785 -17.1305 -3 + vertex -17.9982 -20.7653 -3 + vertex -18.4336 -21.0091 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -19.3785 -17.1305 -3 + vertex -18.4336 -21.0091 -3 + vertex -18.7084 -21.5139 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -19.3785 -17.1305 -3 + vertex -18.7084 -21.5139 -3 + vertex -18.7986 -22.0269 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -15.1553 -19.8912 -3 + vertex -19.3785 -17.1305 -3 + vertex -17.4456 -12.0833 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -8.33648 -34.384 -3 + vertex -3.99709 -33.5697 -3 + vertex -7.51249 -36.3769 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -8.33648 -34.384 -3 + vertex -7.51249 -36.3769 -3 + vertex -7.98605 -36.0592 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -3.99709 -33.5697 -3 + vertex -8.33648 -34.384 -3 + vertex -6.41168 -29.738 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -8.56822 -35.3052 -3 + vertex -7.98605 -36.0592 -3 + vertex -8.51129 -35.7129 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -7.98605 -36.0592 -3 + vertex -8.56822 -35.3052 -3 + vertex -8.33648 -34.384 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -8.78621 -19.378 -3 + vertex -11.7016 -19.4898 -3 + vertex -11.9141 -19.2259 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.4456 -12.0833 -3 + vertex -8.78621 -19.378 -3 + vertex -11.9141 -19.2259 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.4456 -12.0833 -3 + vertex -11.9141 -19.2259 -3 + vertex -12.3137 -19.1333 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -5.93765 11.491 -3 + vertex -10.6367 14.238 -3 + vertex -7.23385 14.4578 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.4456 -12.0833 -3 + vertex -12.3137 -19.1333 -3 + vertex -15.1553 -19.8912 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -5.93765 11.491 -3 + vertex -13.7227 13.3517 -3 + vertex -10.6367 14.238 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -4.99153 10.6633 -3 + vertex -13.7227 13.3517 -3 + vertex -5.93765 11.491 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -3.71458 -2.66291 -3 + vertex -17.7993 -11.4712 -3 + vertex -17.5299 12.3491 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.7993 -11.4712 -3 + vertex -20.0298 12.0063 -3 + vertex -17.5299 12.3491 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.7993 -11.4712 -3 + vertex -22.4428 11.7593 -3 + vertex -20.0298 12.0063 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -27.1868 -11.3523 -3 + vertex -22.4428 11.7593 -3 + vertex -17.7993 -11.4712 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -22.4428 11.7593 -3 + vertex -27.1868 -11.3523 -3 + vertex -25.7097 11.6586 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -27.1868 -11.3523 -3 + vertex -28.6588 11.7129 -3 + vertex -25.7097 11.6586 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -34.87 -11.3196 -3 + vertex -28.6588 11.7129 -3 + vertex -27.1868 -11.3523 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -28.6588 11.7129 -3 + vertex -34.87 -11.3196 -3 + vertex -30.1182 11.9311 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -36.1936 -11.4238 -3 + vertex -30.1182 11.9311 -3 + vertex -34.87 -11.3196 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -36.792 -11.6364 -3 + vertex -30.1182 11.9311 -3 + vertex -36.1936 -11.4238 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -30.1182 11.9311 -3 + vertex -36.792 -11.6364 -3 + vertex -30.3887 12.6783 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -30.3887 12.6783 -3 + vertex -35.7552 21.6337 -3 + vertex -33.0651 20.3093 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -37.6991 23.0789 -3 + vertex -30.3887 12.6783 -3 + vertex -36.792 -11.6364 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -37.6991 23.0789 -3 + vertex -36.792 -11.6364 -3 + vertex -37.3951 -12.1929 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -39.1303 25.4589 -3 + vertex -37.3951 -12.1929 -3 + vertex -37.5366 -12.7854 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -30.3887 12.6783 -3 + vertex -37.6991 23.0789 -3 + vertex -35.7552 21.6337 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -9.69161 -22.56 -3 + vertex -8.46819 -23.4267 -3 + vertex -8.72405 -24.8218 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex -8.78909 -22.7249 -3 + vertex -8.46819 -23.4267 -3 + vertex -9.69161 -22.56 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -12.4124 -23.7203 -3 + vertex -8.72405 -24.8218 -3 + vertex -9.55184 -27.0667 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -8.46819 -23.4267 -3 + vertex -8.78909 -22.7249 -3 + vertex -8.55624 -22.9989 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -8.72405 -24.8218 -3 + vertex -10.5461 -22.7271 -3 + vertex -9.69161 -22.56 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -8.72405 -24.8218 -3 + vertex -11.3967 -23.0769 -3 + vertex -10.5461 -22.7271 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -15.3894 -29.1914 -3 + vertex -9.55184 -27.0667 -3 + vertex -11.5932 -32.143 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -16.8281 -32.7116 -3 + vertex -11.5932 -32.143 -3 + vertex -12.3385 -33.8339 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -9.55184 -27.0667 -3 + vertex -14.2216 -26.3227 -3 + vertex -13.7062 -25.2068 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -16.8281 -32.7116 -3 + vertex -12.3385 -33.8339 -3 + vertex -13.0448 -35.0276 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -8.72405 -24.8218 -3 + vertex -12.4124 -23.7203 -3 + vertex -11.3967 -23.0769 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -13.1427 -24.3848 -3 + vertex -9.55184 -27.0667 -3 + vertex -13.7062 -25.2068 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -14.3732 -35.9691 -3 + vertex -13.0448 -35.0276 -3 + vertex -13.7203 -35.7356 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -9.55184 -27.0667 -3 + vertex -13.1427 -24.3848 -3 + vertex -12.4124 -23.7203 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -13.0448 -35.0276 -3 + vertex -14.3732 -35.9691 -3 + vertex -16.8281 -32.7116 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -16.8281 -32.7116 -3 + vertex -14.3732 -35.9691 -3 + vertex -14.8949 -36.1495 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -9.55184 -27.0667 -3 + vertex -15.3894 -29.1914 -3 + vertex -14.2216 -26.3227 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -16.5846 -36.2152 -3 + vertex -14.8949 -36.1495 -3 + vertex -15.4682 -36.5832 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -16.2226 -36.752 -3 + vertex -15.4682 -36.5832 -3 + vertex -15.9213 -37.1689 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -16.6989 -37.6188 -3 + vertex -15.9213 -37.1689 -3 + vertex -15.9433 -37.6764 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -16.5846 -36.2152 -3 + vertex -15.4682 -36.5832 -3 + vertex -16.2226 -36.752 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -14.8949 -36.1495 -3 + vertex -16.5846 -36.2152 -3 + vertex -16.8281 -32.7116 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -11.5932 -32.143 -3 + vertex -16.8281 -32.7116 -3 + vertex -15.3894 -29.1914 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.7285 -35.3062 -3 + vertex -16.5846 -36.2152 -3 + vertex -17.3742 -35.9691 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.7285 -35.3062 -3 + vertex -17.3742 -35.9691 -3 + vertex -17.6987 -35.8223 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -16.5846 -36.2152 -3 + vertex -17.7285 -35.3062 -3 + vertex -16.8281 -32.7116 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -24.4076 -24.3815 -3 + vertex -23.4462 -30.738 -3 + vertex -23.655 -30.4649 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -25.4741 -26.9141 -3 + vertex -23.655 -30.4649 -3 + vertex -24.0819 -30.2475 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -21.28 -33.2523 -3 + vertex -24.4076 -24.3815 -3 + vertex -23.1278 -21.2395 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -25.4741 -26.9141 -3 + vertex -24.0819 -30.2475 -3 + vertex -24.4667 -30.1541 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -26.2338 -28.3696 -3 + vertex -24.4667 -30.1541 -3 + vertex -24.8569 -30.2998 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -23.655 -30.4649 -3 + vertex -25.4741 -26.9141 -3 + vertex -24.4076 -24.3815 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -24.4667 -30.1541 -3 + vertex -26.2338 -28.3696 -3 + vertex -25.4741 -26.9141 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -26.8752 -29.0336 -3 + vertex -24.8569 -30.2998 -3 + vertex -26.8283 -32.1012 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -24.8569 -30.2998 -3 + vertex -26.8752 -29.0336 -3 + vertex -26.2338 -28.3696 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -26.8283 -32.1012 -3 + vertex -27.5872 -29.1914 -3 + vertex -26.8752 -29.0336 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -26.8283 -32.1012 -3 + vertex -28.1878 -29.097 -3 + vertex -27.5872 -29.1914 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -29.0969 -33.8499 -3 + vertex -28.1878 -29.097 -3 + vertex -26.8283 -32.1012 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -30.2578 -34.4631 -3 + vertex -28.1878 -29.097 -3 + vertex -29.0969 -33.8499 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -31.3644 -34.8586 -3 + vertex -28.1878 -29.097 -3 + vertex -30.2578 -34.4631 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -35.4824 -26.6225 -3 + vertex -28.1878 -29.097 -3 + vertex -31.3644 -34.8586 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -28.1878 -29.097 -3 + vertex -32.142 -25.4759 -3 + vertex -28.5713 -25.7117 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -28.1878 -29.097 -3 + vertex -35.4824 -26.6225 -3 + vertex -32.142 -25.4759 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -35.4824 -26.6225 -3 + vertex -31.3644 -34.8586 -3 + vertex -35.0529 -35.0835 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -32.142 -25.4759 -3 + vertex -35.4824 -26.6225 -3 + vertex -34.9626 -25.4747 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -38.7331 -34.5543 -3 + vertex -35.0529 -35.0835 -3 + vertex -38.4261 -34.9619 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -35.0529 -35.0835 -3 + vertex -38.7331 -34.5543 -3 + vertex -35.4824 -26.6225 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -28.5713 -25.7117 -3 + vertex -27.9105 -26.2055 -3 + vertex -28.1838 -28.4809 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -27.9105 -26.2055 -3 + vertex -28.5713 -25.7117 -3 + vertex -28.1036 -25.8829 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -28.5713 -25.7117 -3 + vertex -28.1838 -28.4809 -3 + vertex -28.1878 -29.097 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -11.1208 19.5935 -3 + vertex -11.5389 20.1801 -3 + vertex -10.9412 20.0018 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -12.0133 18.8648 -3 + vertex -11.5389 20.1801 -3 + vertex -11.1208 19.5935 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -12.0133 18.8648 -3 + vertex -12.9783 20.2187 -3 + vertex -11.5389 20.1801 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -15.009 16.7116 -3 + vertex -12.9783 20.2187 -3 + vertex -12.0133 18.8648 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -15.009 16.7116 -3 + vertex -16.3196 19.9968 -3 + vertex -12.9783 20.2187 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.0754 15.711 -3 + vertex -16.3196 19.9968 -3 + vertex -15.009 16.7116 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -20.1789 19.4139 -3 + vertex -17.0754 15.711 -3 + vertex -19.733 14.7364 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.0754 15.711 -3 + vertex -20.1789 19.4139 -3 + vertex -16.3196 19.9968 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -22.3118 14.0374 -3 + vertex -20.1789 19.4139 -3 + vertex -19.733 14.7364 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -22.3118 14.0374 -3 + vertex -24.1572 19.0472 -3 + vertex -20.1789 19.4139 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -24.873 13.6003 -3 + vertex -24.1572 19.0472 -3 + vertex -22.3118 14.0374 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -27.5587 18.9414 -3 + vertex -24.873 13.6003 -3 + vertex -27.4778 13.4117 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -24.873 13.6003 -3 + vertex -27.5587 18.9414 -3 + vertex -24.1572 19.0472 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -27.4778 13.4117 -3 + vertex -29.687 19.1409 -3 + vertex -27.5587 18.9414 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -29.9412 13.2465 -3 + vertex -29.687 19.1409 -3 + vertex -27.4778 13.4117 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -30.3118 13.0393 -3 + vertex -29.687 19.1409 -3 + vertex -29.9412 13.2465 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -33.0651 20.3093 -3 + vertex -30.3118 13.0393 -3 + vertex -30.3887 12.6783 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -30.3118 13.0393 -3 + vertex -33.0651 20.3093 -3 + vertex -29.687 19.1409 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 36.2859 -23.7121 -3 + vertex 36.104 -22.9178 -3 + vertex 36.3422 -23.0402 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 35.2001 -22.9271 -3 + vertex 36.2859 -23.7121 -3 + vertex 35.3305 -26.5156 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 36.2859 -23.7121 -3 + vertex 35.2001 -22.9271 -3 + vertex 36.104 -22.9178 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 35.3305 -26.5156 -3 + vertex 34.7441 -22.7166 -3 + vertex 35.2001 -22.9271 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 31.8275 -24.8188 -3 + vertex 34.7441 -22.7166 -3 + vertex 35.3305 -26.5156 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 31.8275 -24.8188 -3 + vertex 35.3305 -26.5156 -3 + vertex 33.8444 -30.1753 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 42.943 -20.2657 -3 + vertex 42.0238 -20.3507 -3 + vertex 42.1032 -19.4743 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 41.971 -20.8453 -3 + vertex 42.0238 -20.3507 -3 + vertex 42.943 -20.2657 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 42.0238 -20.3507 -3 + vertex 41.971 -20.8453 -3 + vertex 41.8981 -20.7296 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 117.5 -117.5 -3 + vertex 47.9875 -20.1225 -3 + vertex 117.5 117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 117.5 -117.5 -3 + vertex 47.8425 -21.0531 -3 + vertex 47.9875 -20.1225 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 117.5 -117.5 -3 + vertex 47.5305 -21.9981 -3 + vertex 47.8425 -21.0531 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 117.5 -117.5 -3 + vertex 47.0957 -22.796 -3 + vertex 47.5305 -21.9981 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 117.5 -117.5 -3 + vertex 46.5684 -23.4293 -3 + vertex 47.0957 -22.796 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 37.9939 -37.5705 -3 + vertex 46.5684 -23.4293 -3 + vertex 117.5 -117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 46.5684 -23.4293 -3 + vertex 37.9939 -37.5705 -3 + vertex 45.9792 -23.8802 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 38.113 -36.8464 -3 + vertex 45.9792 -23.8802 -3 + vertex 37.9939 -37.5705 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 45.9792 -23.8802 -3 + vertex 38.113 -36.8464 -3 + vertex 45.3585 -24.1311 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 37.9618 -36.3241 -3 + vertex 45.3585 -24.1311 -3 + vertex 38.113 -36.8464 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 38.2188 -29.6614 -3 + vertex 45.3585 -24.1311 -3 + vertex 37.9618 -36.3241 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 45.3585 -24.1311 -3 + vertex 38.2188 -29.6614 -3 + vertex 44.7368 -24.1643 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 40.5923 -24.6171 -3 + vertex 44.1445 -23.9621 -3 + vertex 40.0289 -25.46 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 41.2986 -23.9223 -3 + vertex 44.1445 -23.9621 -3 + vertex 40.5923 -24.6171 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 44.1445 -23.9621 -3 + vertex 41.2986 -23.9223 -3 + vertex 43.6122 -23.5069 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 43.6122 -23.5069 -3 + vertex 41.2986 -23.9223 -3 + vertex 42.7682 -22.851 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 44.7368 -24.1643 -3 + vertex 40.0289 -25.46 -3 + vertex 44.1445 -23.9621 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 117.5 -117.5 -3 + vertex 37.381 -37.9628 -3 + vertex 37.9939 -37.5705 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 117.5 -117.5 -3 + vertex 35.8907 -38.1241 -3 + vertex 37.381 -37.9628 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 117.5 -117.5 -3 + vertex 33.1396 -38.1555 -3 + vertex 35.8907 -38.1241 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 117.5 -117.5 -3 + vertex 29.8074 -38.0948 -3 + vertex 33.1396 -38.1555 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 20.3084 -38.5182 -3 + vertex 29.8074 -38.0948 -3 + vertex 117.5 -117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 28.553 -36.8405 -3 + vertex 25.9895 -35.834 -3 + vertex 27.8442 -34.1555 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 24.0601 -37.0678 -3 + vertex 28.4102 -37.3704 -3 + vertex 28.6431 -37.8931 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 21.4079 -38.2833 -3 + vertex 29.8074 -38.0948 -3 + vertex 20.3084 -38.5182 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 28.4102 -37.3704 -3 + vertex 24.0601 -37.0678 -3 + vertex 25.9895 -35.834 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 28.6431 -37.8931 -3 + vertex 21.4079 -38.2833 -3 + vertex 24.0601 -37.0678 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 29.8074 -38.0948 -3 + vertex 21.4079 -38.2833 -3 + vertex 28.6431 -37.8931 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 117.5 -117.5 -3 + vertex 19.0956 -38.5852 -3 + vertex 20.3084 -38.5182 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 5.33583 -38.4712 -3 + vertex 19.0956 -38.5852 -3 + vertex 117.5 -117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 19.0956 -38.5852 -3 + vertex 5.33583 -38.4712 -3 + vertex 17.8945 -38.4707 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 17.8945 -38.4707 -3 + vertex 5.33583 -38.4712 -3 + vertex 16.8412 -38.0675 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 12.1385 -34.7994 -3 + vertex 14.6656 -34.4466 -3 + vertex 12.2351 -35.1874 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 14.8379 -35.6738 -3 + vertex 12.2351 -35.1874 -3 + vertex 14.6656 -34.4466 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 12.1379 -35.6584 -3 + vertex 14.8379 -35.6738 -3 + vertex 15.2376 -36.6526 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 11.1962 -36.5595 -3 + vertex 15.2376 -36.6526 -3 + vertex 15.8953 -37.4336 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 8.47177 -37.477 -3 + vertex 16.8412 -38.0675 -3 + vertex 5.33583 -38.4712 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 14.8379 -35.6738 -3 + vertex 12.1379 -35.6584 -3 + vertex 12.2351 -35.1874 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 15.2376 -36.6526 -3 + vertex 11.7916 -36.1064 -3 + vertex 12.1379 -35.6584 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 15.2376 -36.6526 -3 + vertex 11.1962 -36.5595 -3 + vertex 11.7916 -36.1064 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 15.8953 -37.4336 -3 + vertex 10.519 -36.9119 -3 + vertex 11.1962 -36.5595 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 10.519 -36.9119 -3 + vertex 16.8412 -38.0675 -3 + vertex 9.92719 -37.0575 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 16.8412 -38.0675 -3 + vertex 10.519 -36.9119 -3 + vertex 15.8953 -37.4336 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 9.92719 -37.0575 -3 + vertex 16.8412 -38.0675 -3 + vertex 8.47177 -37.477 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 0.962702 -38.4962 -3 + vertex 5.33583 -38.4712 -3 + vertex 117.5 -117.5 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 4.73542 -37.8041 -3 + vertex 3.43985 -37.8545 -3 + vertex 4.64415 -37.2809 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 4.84381 -38.3343 -3 + vertex 3.43985 -37.8545 -3 + vertex 4.73542 -37.8041 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 2.31266 -38.26 -3 + vertex 5.33583 -38.4712 -3 + vertex 0.962702 -38.4962 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 4.84381 -38.3343 -3 + vertex 2.31266 -38.26 -3 + vertex 3.43985 -37.8545 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 5.33583 -38.4712 -3 + vertex 2.31266 -38.26 -3 + vertex 4.84381 -38.3343 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 117.5 -117.5 -3 + vertex -0.366978 -38.538 -3 + vertex 0.962702 -38.4962 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -117.5 -117.5 -3 + vertex -0.366978 -38.538 -3 + vertex 117.5 -117.5 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -12.0013 -38.1555 -3 + vertex -0.366978 -38.538 -3 + vertex -117.5 -117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -3.14673 -30.0798 -3 + vertex -6.41168 -29.738 -3 + vertex -4.26405 -24.3543 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -7.51249 -36.3769 -3 + vertex -3.80393 -35.193 -3 + vertex -7.31439 -36.7536 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -7.31439 -36.7536 -3 + vertex -3.80393 -35.193 -3 + vertex -3.26834 -36.6145 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -3.80393 -35.193 -3 + vertex -7.51249 -36.3769 -3 + vertex -3.99709 -33.5697 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -7.3919 -37.1883 -3 + vertex -3.26834 -36.6145 -3 + vertex -2.45619 -37.7112 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -8.07933 -37.9462 -3 + vertex -1.43333 -38.36 -3 + vertex -8.66873 -38.0883 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -3.26834 -36.6145 -3 + vertex -7.3919 -37.1883 -3 + vertex -7.31439 -36.7536 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -2.45619 -37.7112 -3 + vertex -7.74517 -37.6801 -3 + vertex -7.3919 -37.1883 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -2.45619 -37.7112 -3 + vertex -8.07933 -37.9462 -3 + vertex -7.74517 -37.6801 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -1.43333 -38.36 -3 + vertex -8.07933 -37.9462 -3 + vertex -2.45619 -37.7112 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -8.66873 -38.0883 -3 + vertex -0.366978 -38.538 -3 + vertex -12.0013 -38.1555 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -0.366978 -38.538 -3 + vertex -8.66873 -38.0883 -3 + vertex -1.43333 -38.36 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -12.0013 -38.1555 -3 + vertex -117.5 -117.5 -3 + vertex -15.3277 -38.0928 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -15.9213 -37.1689 -3 + vertex -16.6989 -37.6188 -3 + vertex -16.2226 -36.752 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -15.7983 -37.9502 -3 + vertex -16.6989 -37.6188 -3 + vertex -15.9433 -37.6764 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -17.5781 -38.0841 -3 + vertex -15.3277 -38.0928 -3 + vertex -117.5 -117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -15.7983 -37.9502 -3 + vertex -17.033 -37.9274 -3 + vertex -16.6989 -37.6188 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -15.7983 -37.9502 -3 + vertex -17.5781 -38.0841 -3 + vertex -17.033 -37.9274 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -15.3277 -38.0928 -3 + vertex -17.5781 -38.0841 -3 + vertex -15.7983 -37.9502 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -17.5781 -38.0841 -3 + vertex -117.5 -117.5 -3 + vertex -20.8226 -38.1301 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -25.0608 -37.8416 -3 + vertex -27.2791 -36.8782 -3 + vertex -25.157 -37.5754 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -28.2835 -38.1638 -3 + vertex -25.0608 -37.8416 -3 + vertex -24.8096 -38.0047 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex -28.2835 -38.1638 -3 + vertex -20.8226 -38.1301 -3 + vertex -117.5 -117.5 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -25.0608 -37.8416 -3 + vertex -28.2835 -38.1638 -3 + vertex -27.2791 -36.8782 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -20.8226 -38.1301 -3 + vertex -28.2835 -38.1638 -3 + vertex -24.8096 -38.0047 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -28.2835 -38.1638 -3 + vertex -117.5 -117.5 -3 + vertex -37.632 -38.1325 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -47.8161 -37.7712 -3 + vertex -117.5 -117.5 -3 + vertex -47.9875 -37.5097 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -47.4646 -37.9547 -3 + vertex -117.5 -117.5 -3 + vertex -47.8161 -37.7712 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -37.632 -38.1325 -3 + vertex -117.5 -117.5 -3 + vertex -47.4646 -37.9547 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 47.7267 -19.5813 -3 + vertex 117.5 117.5 -3 + vertex 47.9875 -20.1225 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 27.5422 14.7505 -3 + vertex 47.7267 -19.5813 -3 + vertex 47.2139 -19.2263 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 27.528 9.70386 -3 + vertex 47.2139 -19.2263 -3 + vertex 46.2623 -19.1343 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 41.5319 -19.1343 -3 + vertex 46.2623 -19.1343 -3 + vertex 44.5909 -19.3768 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 42.1032 -19.4743 -3 + vertex 44.5909 -19.3768 -3 + vertex 42.943 -20.2657 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 44.5909 -19.3768 -3 + vertex 42.1032 -19.4743 -3 + vertex 41.8934 -19.2238 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 41.5319 -19.1343 -3 + vertex 44.5909 -19.3768 -3 + vertex 41.8934 -19.2238 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 27.528 9.70386 -3 + vertex 46.2623 -19.1343 -3 + vertex 41.5319 -19.1343 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 29.9429 -19.4981 -3 + vertex 41.5319 -19.1343 -3 + vertex 38.4798 -20.1181 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 30.7248 -19.9631 -3 + vertex 38.4798 -20.1181 -3 + vertex 35.5661 -21.102 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 30.7248 -19.9631 -3 + vertex 35.5661 -21.102 -3 + vertex 35.2187 -21.2043 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 31.3699 -20.64 -3 + vertex 35.2187 -21.2043 -3 + vertex 34.9156 -21.474 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 30.2029 -31.1764 -3 + vertex 33.8444 -30.1753 -3 + vertex 32.5255 -33.371 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 34.7441 -22.7166 -3 + vertex 32.0255 -23.3848 -3 + vertex 34.62 -22.2927 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 32.0232 -22.2828 -3 + vertex 34.62 -22.2927 -3 + vertex 32.0255 -23.3848 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 31.8086 -21.404 -3 + vertex 34.62 -22.2927 -3 + vertex 32.0232 -22.2828 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 34.62 -22.2927 -3 + vertex 31.8086 -21.404 -3 + vertex 34.9156 -21.474 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 31.3699 -20.64 -3 + vertex 34.9156 -21.474 -3 + vertex 31.8086 -21.404 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 35.2187 -21.2043 -3 + vertex 31.3699 -20.64 -3 + vertex 30.7248 -19.9631 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 38.4798 -20.1181 -3 + vertex 30.7248 -19.9631 -3 + vertex 29.9429 -19.4981 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 27.528 9.70386 -3 + vertex 41.5319 -19.1343 -3 + vertex 29.9429 -19.4981 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 27.528 9.70386 -3 + vertex 29.9429 -19.4981 -3 + vertex 28.989 -19.2301 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 26.7235 1.18648 -3 + vertex 28.989 -19.2301 -3 + vertex 27.8281 -19.1444 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 47.2139 -19.2263 -3 + vertex 27.6094 12.2412 -3 + vertex 27.5422 14.7505 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 47.7267 -19.5813 -3 + vertex 27.5422 14.7505 -3 + vertex 117.5 117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 26.4742 18.624 -3 + vertex 27.5422 14.7505 -3 + vertex 27.1755 15.8473 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 26.4742 18.624 -3 + vertex 27.1755 15.8473 -3 + vertex 26.6933 17.4601 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 27.5422 14.7505 -3 + vertex 26.4742 18.624 -3 + vertex 117.5 117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 25.9424 19.4837 -3 + vertex 117.5 117.5 -3 + vertex 26.4742 18.624 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 21.8319 23.6658 -3 + vertex 25.9424 19.4837 -3 + vertex 25.0752 20.0627 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 22.0827 22.427 -3 + vertex 25.0752 20.0627 -3 + vertex 23.8499 20.3844 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 22.2698 21.5943 -3 + vertex 23.8499 20.3844 -3 + vertex 23.1387 20.59 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 22.2698 21.5943 -3 + vertex 23.1387 20.59 -3 + vertex 22.6169 20.9877 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 23.8499 20.3844 -3 + vertex 22.2698 21.5943 -3 + vertex 22.0827 22.427 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 25.0752 20.0627 -3 + vertex 22.0827 22.427 -3 + vertex 21.8319 23.6658 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 25.9424 19.4837 -3 + vertex 21.8319 23.6658 -3 + vertex 21.2755 24.568 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 25.9424 19.4837 -3 + vertex 21.2755 24.568 -3 + vertex 117.5 117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 15.3134 30.0845 -3 + vertex 21.2755 24.568 -3 + vertex 20.1819 25.3734 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 15.4783 29.8698 -3 + vertex 20.1819 25.3734 -3 + vertex 18.3193 26.3216 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 15.4783 29.8698 -3 + vertex 18.3193 26.3216 -3 + vertex 17.0772 26.9817 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 15.6084 29.1601 -3 + vertex 17.0772 26.9817 -3 + vertex 16.2688 27.6146 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 15.6084 29.1601 -3 + vertex 16.2688 27.6146 -3 + vertex 15.808 28.3106 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 17.0772 26.9817 -3 + vertex 15.6084 29.1601 -3 + vertex 15.4783 29.8698 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 15.3134 30.0845 -3 + vertex 20.1819 25.3734 -3 + vertex 15.4783 29.8698 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 21.2755 24.568 -3 + vertex 15.3134 30.0845 -3 + vertex 117.5 117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 12.0123 26.7794 -3 + vertex 15.122 28.0941 -3 + vertex 12.5486 25.9653 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 11.8052 27.5343 -3 + vertex 15.122 28.0941 -3 + vertex 12.0123 26.7794 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 15.0577 29.0611 -3 + vertex 12.2907 30.5214 -3 + vertex 15.1584 29.8123 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 15.1584 29.8123 -3 + vertex 12.2907 30.5214 -3 + vertex 15.3134 30.0845 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 12.0544 30.7144 -3 + vertex 15.3134 30.0845 -3 + vertex 12.2907 30.5214 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 15.3134 30.0845 -3 + vertex 12.0544 30.7144 -3 + vertex 5.25321 38.4452 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 5.19939 38.083 -3 + vertex 12.0544 30.7144 -3 + vertex 11.5971 30.3591 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 8.51885 25.3107 -3 + vertex 11.5037 26.4501 -3 + vertex 9.07032 24.476 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 11.5037 26.4501 -3 + vertex 8.51885 25.3107 -3 + vertex 11.1066 27.3577 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 7.91411 25.7528 -3 + vertex 11.1066 27.3577 -3 + vertex 8.51885 25.3107 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 11.1066 27.3577 -3 + vertex 7.91411 25.7528 -3 + vertex 11.0411 28.3898 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 7.11433 25.9588 -3 + vertex 11.0411 28.3898 -3 + vertex 7.91411 25.7528 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 5.72413 26.6445 -3 + vertex 11.0411 28.3898 -3 + vertex 7.11433 25.9588 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 11.0411 28.3898 -3 + vertex 5.72413 26.6445 -3 + vertex 11.2319 29.4873 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 5.72413 26.6445 -3 + vertex 7.11433 25.9588 -3 + vertex 6.4022 26.1795 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 4.3138 28.4461 -3 + vertex 11.2319 29.4873 -3 + vertex 5.72413 26.6445 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 3.57109 31.3388 -3 + vertex 11.2319 29.4873 -3 + vertex 4.3138 28.4461 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 15.3134 30.0845 -3 + vertex 5.25321 38.4452 -3 + vertex 5.15152 38.5852 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 15.3134 30.0845 -3 + vertex 5.15152 38.5852 -3 + vertex 117.5 117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -0.115935 27.2162 -3 + vertex 1.04836 28.6106 -3 + vertex 0.858783 27.1101 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -0.786632 27.5359 -3 + vertex 1.04836 28.6106 -3 + vertex -0.115935 27.2162 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -1.46161 28.0795 -3 + vertex 1.04836 28.6106 -3 + vertex -0.786632 27.5359 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 1.04836 28.6106 -3 + vertex -1.46161 28.0795 -3 + vertex 1.1273 29.8907 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -2.77953 29.7664 -3 + vertex 1.1273 29.8907 -3 + vertex -1.46161 28.0795 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 1.1273 29.8907 -3 + vertex -2.77953 29.7664 -3 + vertex 1.37489 31.173 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -3.97987 32.1322 -3 + vertex 1.37489 31.173 -3 + vertex -2.77953 29.7664 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 1.37489 31.173 -3 + vertex -3.97987 32.1322 -3 + vertex 2.44067 33.9939 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -4.97284 35.0324 -3 + vertex 2.44067 33.9939 -3 + vertex -3.97987 32.1322 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -5.55994 36.5001 -3 + vertex 2.44067 33.9939 -3 + vertex -4.97284 35.0324 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 2.44067 33.9939 -3 + vertex -5.55994 36.5001 -3 + vertex 4.08079 37.0842 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 4.08079 37.0842 -3 + vertex -5.55994 36.5001 -3 + vertex 5.15152 38.5852 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -5.8163 36.5812 -3 + vertex 5.15152 38.5852 -3 + vertex -5.55994 36.5001 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -117.5 117.5 -3 + vertex 5.15152 38.5852 -3 + vertex -5.8163 36.5812 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -7.25507 27.2437 -3 + vertex -6.28322 28.2565 -3 + vertex -6.38329 27.6173 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -6.28322 28.2565 -3 + vertex -8.80952 27.3973 -3 + vertex -6.22131 31.7226 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -7.25507 27.2437 -3 + vertex -6.38329 27.6173 -3 + vertex -6.55612 27.3597 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -6.28322 28.2565 -3 + vertex -7.25507 27.2437 -3 + vertex -8.80952 27.3973 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -11.546 27.7352 -3 + vertex -6.22131 31.7226 -3 + vertex -8.80952 27.3973 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -6.22131 31.7226 -3 + vertex -11.546 27.7352 -3 + vertex -6.055 36.2349 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -13.5562 27.8374 -3 + vertex -6.055 36.2349 -3 + vertex -11.546 27.7352 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -15.2376 27.7001 -3 + vertex -6.055 36.2349 -3 + vertex -13.5562 27.8374 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -20.8096 27.6578 -3 + vertex -6.055 36.2349 -3 + vertex -15.2376 27.7001 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -20.8096 27.6578 -3 + vertex -15.2376 27.7001 -3 + vertex -16.9875 27.3196 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -19.9485 27.2141 -3 + vertex -16.9875 27.3196 -3 + vertex -19.335 26.703 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -20.8096 27.6578 -3 + vertex -16.9875 27.3196 -3 + vertex -19.9485 27.2141 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -22.4093 27.9007 -3 + vertex -6.055 36.2349 -3 + vertex -20.8096 27.6578 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -6.055 36.2349 -3 + vertex -22.4093 27.9007 -3 + vertex -5.8163 36.5812 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -24.3632 27.9554 -3 + vertex -5.8163 36.5812 -3 + vertex -22.4093 27.9007 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -30.666 27.4912 -3 + vertex -5.8163 36.5812 -3 + vertex -24.3632 27.9554 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -24.3225 27.6757 -3 + vertex -27.4214 26.3653 -3 + vertex -24.3632 27.9554 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -29.2879 26.9865 -3 + vertex -24.3632 27.9554 -3 + vertex -27.4214 26.3653 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -24.3632 27.9554 -3 + vertex -29.2879 26.9865 -3 + vertex -30.666 27.4912 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -31.2177 27.4629 -3 + vertex -5.8163 36.5812 -3 + vertex -30.666 27.4912 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -5.8163 36.5812 -3 + vertex -31.2177 27.4629 -3 + vertex -117.5 117.5 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -31.2773 24.779 -3 + vertex -34.2108 23.023 -3 + vertex -31.2912 27.2229 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -36.1697 23.9798 -3 + vertex -31.2912 27.2229 -3 + vertex -34.2108 23.023 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -37.7877 25.1404 -3 + vertex -31.2912 27.2229 -3 + vertex -36.1697 23.9798 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -31.2912 27.2229 -3 + vertex -37.7877 25.1404 -3 + vertex -31.2177 27.4629 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -38.5782 25.7376 -3 + vertex -31.2177 27.4629 -3 + vertex -37.7877 25.1404 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -39.0347 25.8392 -3 + vertex -31.2177 27.4629 -3 + vertex -38.5782 25.7376 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -31.2177 27.4629 -3 + vertex -39.0347 25.8392 -3 + vertex -117.5 117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -47.2102 -36.2359 -3 + vertex -39.9072 -25.4747 -3 + vertex -42.237 -30.9405 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -47.2102 -36.2359 -3 + vertex -42.237 -30.9405 -3 + vertex -43.2543 -33.2915 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -46.1801 -35.8499 -3 + vertex -43.2543 -33.2915 -3 + vertex -44.1198 -34.7306 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -46.1801 -35.8499 -3 + vertex -44.1198 -34.7306 -3 + vertex -45.0296 -35.5019 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -43.2543 -33.2915 -3 + vertex -46.1801 -35.8499 -3 + vertex -47.2102 -36.2359 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -37.5366 -12.7854 -3 + vertex -47.2102 -36.2359 -3 + vertex -47.8577 -36.863 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -37.5366 -12.7854 -3 + vertex -47.8577 -36.863 -3 + vertex -39.1303 25.4589 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -117.5 -117.5 -3 + vertex -47.8577 -36.863 -3 + vertex -47.9875 -37.5097 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -47.8577 -36.863 -3 + vertex -117.5 -117.5 -3 + vertex -117.5 117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -47.8577 -36.863 -3 + vertex -117.5 117.5 -3 + vertex -39.1303 25.4589 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 5.15152 38.5852 -3 + vertex -117.5 117.5 -3 + vertex 117.5 117.5 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -39.1303 25.4589 -3 + vertex -117.5 117.5 -3 + vertex -39.0347 25.8392 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 40.0289 -25.46 -3 + vertex 44.7368 -24.1643 -3 + vertex 38.2188 -29.6614 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 36.8272 -33.2656 -3 + vertex 37.9618 -36.3241 -3 + vertex 37.1913 -36.0604 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 37.9618 -36.3241 -3 + vertex 36.8272 -33.2656 -3 + vertex 38.2188 -29.6614 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 36.2918 -35.0946 -3 + vertex 37.1913 -36.0604 -3 + vertex 36.3972 -35.7834 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 37.1913 -36.0604 -3 + vertex 36.2918 -35.0946 -3 + vertex 36.8272 -33.2656 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 9.72145 16.1788 -3 + vertex 9.76373 17.1908 -3 + vertex 10.4258 16.5104 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 8.86535 15.8492 -3 + vertex 9.76373 17.1908 -3 + vertex 9.72145 16.1788 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 8.028 17.0592 -3 + vertex 9.76373 17.1908 -3 + vertex 8.86535 15.8492 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 9.76373 17.1908 -3 + vertex 8.028 17.0592 -3 + vertex 8.30319 18.4459 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 7.15178 18.7442 -3 + vertex 8.30319 18.4459 -3 + vertex 8.028 17.0592 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 8.30319 18.4459 -3 + vertex 7.15178 18.7442 -3 + vertex 7.1994 19.1268 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -10.5829 24.4 -3 + vertex -11.2742 24.7069 -3 + vertex -10.6709 24.5009 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -14.1729 23.8467 -3 + vertex -11.2742 24.7069 -3 + vertex -10.5829 24.4 -3 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex -11.2742 24.7069 -3 + vertex -14.1729 23.8467 -3 + vertex -13.9393 24.99 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -14.1729 23.8467 -3 + vertex -16.6107 24.7853 -3 + vertex -13.9393 24.99 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -19.3275 23.0662 -3 + vertex -16.6107 24.7853 -3 + vertex -14.1729 23.8467 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -19.3275 23.0662 -3 + vertex -20.4324 24.2101 -3 + vertex -16.6107 24.7853 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -21.5591 22.7309 -3 + vertex -20.4324 24.2101 -3 + vertex -19.3275 23.0662 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -22.0432 22.8497 -3 + vertex -20.4324 24.2101 -3 + vertex -21.5591 22.7309 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -22.6641 23.2546 -3 + vertex -20.4324 24.2101 -3 + vertex -22.0432 22.8497 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex -20.4324 24.2101 -3 + vertex -22.6641 23.2546 -3 + vertex -23.3809 23.8604 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 24.4233 -24.8188 -3 + vertex 27.3613 -24.0204 -3 + vertex 27.2283 -24.8188 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 26.0804 -21.8157 -3 + vertex 27.3613 -24.0204 -3 + vertex 24.4233 -24.8188 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 27.3668 -22.8574 -3 + vertex 26.0804 -21.8157 -3 + vertex 26.9354 -22.1189 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 27.3613 -24.0204 -3 + vertex 26.0804 -21.8157 -3 + vertex 27.3668 -22.8574 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 26.0804 -21.8157 -3 + vertex 24.4233 -24.8188 -3 + vertex 24.8153 -21.9586 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 24.4233 -24.8188 -3 + vertex 23.7526 -22.3987 -3 + vertex 24.8153 -21.9586 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 24.4233 -24.8188 -3 + vertex 22.6861 -23.3258 -3 + vertex 23.7526 -22.3987 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 22.6861 -23.3258 -3 + vertex 24.4233 -24.8188 -3 + vertex 21.6183 -24.6221 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 7.70773 -21.5983 -3 + vertex 10.169 -23.3758 -3 + vertex 10.0775 -24.2416 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 6.85097 -21.9079 -3 + vertex 10.0775 -24.2416 -3 + vertex 9.7411 -25.4359 -3 + endloop + endfacet + facet normal 0 -0 -1 + outer loop + vertex 8.49325 -21.5121 -3 + vertex 10.169 -23.3758 -3 + vertex 7.70773 -21.5983 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 10.169 -23.3758 -3 + vertex 8.49325 -21.5121 -3 + vertex 10.0454 -22.5812 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 10.0454 -22.5812 -3 + vertex 9.16984 -21.6481 -3 + vertex 9.69979 -22.0048 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 3.84714 -24.6213 -3 + vertex 9.7411 -25.4359 -3 + vertex 7.96204 -29.9101 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 10.0775 -24.2416 -3 + vertex 6.85097 -21.9079 -3 + vertex 7.70773 -21.5983 -3 + endloop + endfacet + facet normal -0 -0 -1 + outer loop + vertex 9.16984 -21.6481 -3 + vertex 10.0454 -22.5812 -3 + vertex 8.49325 -21.5121 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 1.3456 -29.5107 -3 + vertex 7.96204 -29.9101 -3 + vertex 6.30534 -33.4759 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 9.7411 -25.4359 -3 + vertex 5.96068 -22.4422 -3 + vertex 6.85097 -21.9079 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 0.901133 -32.5034 -3 + vertex 6.30534 -33.4759 -3 + vertex 5.71313 -34.2297 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 9.7411 -25.4359 -3 + vertex 5.07455 -23.2024 -3 + vertex 5.96068 -22.4422 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 0.901133 -32.5034 -3 + vertex 5.71313 -34.2297 -3 + vertex 5.04571 -34.678 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 0.901133 -32.5034 -3 + vertex 5.04571 -34.678 -3 + vertex 4.11511 -35.011 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 9.7411 -25.4359 -3 + vertex 3.84714 -24.6213 -3 + vertex 5.07455 -23.2024 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 0.901133 -32.5034 -3 + vertex 4.11511 -35.011 -3 + vertex 3.17687 -35.0966 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 7.96204 -29.9101 -3 + vertex 2.80055 -26.1986 -3 + vertex 3.84714 -24.6213 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 1.11766 -33.6813 -3 + vertex 3.17687 -35.0966 -3 + vertex 2.32628 -34.9386 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 7.96204 -29.9101 -3 + vertex 1.95873 -27.8549 -3 + vertex 2.80055 -26.1986 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 1.11766 -33.6813 -3 + vertex 2.32628 -34.9386 -3 + vertex 1.65861 -34.5411 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 7.96204 -29.9101 -3 + vertex 1.3456 -29.5107 -3 + vertex 1.95873 -27.8549 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 3.17687 -35.0966 -3 + vertex 1.11766 -33.6813 -3 + vertex 0.901133 -32.5034 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 6.30534 -33.4759 -3 + vertex 0.985088 -31.0867 -3 + vertex 1.3456 -29.5107 -3 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 6.30534 -33.4759 -3 + vertex 0.901133 -32.5034 -3 + vertex 0.985088 -31.0867 -3 + endloop + endfacet + facet normal -0.929682 -0.368364 0 + outer loop + vertex 19.6777 -11.13 -3 + vertex 19.5452 -10.7956 0 + vertex 19.5452 -10.7956 -3 + endloop + endfacet + facet normal -0.929682 -0.368364 0 + outer loop + vertex 19.5452 -10.7956 0 + vertex 19.6777 -11.13 -3 + vertex 19.6777 -11.13 0 + endloop + endfacet + facet normal -0.933646 0.358197 0 + outer loop + vertex 17.1521 -17.7131 -3 + vertex 19.6777 -11.13 0 + vertex 19.6777 -11.13 -3 + endloop + endfacet + facet normal -0.933646 0.358197 0 + outer loop + vertex 19.6777 -11.13 0 + vertex 17.1521 -17.7131 -3 + vertex 17.1521 -17.7131 0 endloop endfacet facet normal -0.922106 0.386938 0 outer loop - vertex 14.5952 -23.8342 -0.2 - vertex 17.1638 -17.7131 0 - vertex 17.1638 -17.7131 -0.2 + vertex 14.5835 -23.8342 -3 + vertex 17.1521 -17.7131 0 + vertex 17.1521 -17.7131 -3 endloop endfacet facet normal -0.922106 0.386938 0 outer loop - vertex 17.1638 -17.7131 0 - vertex 14.5952 -23.8342 -0.2 - vertex 14.5952 -23.8342 0 + vertex 17.1521 -17.7131 0 + vertex 14.5835 -23.8342 -3 + vertex 14.5835 -23.8342 0 endloop endfacet - facet normal -0.923985 0.382428 0 + facet normal -0.926605 0.376035 0 outer loop - vertex 12.8097 -28.1484 -0.2 - vertex 14.5952 -23.8342 0 - vertex 14.5952 -23.8342 -0.2 + vertex 11.4887 -31.4602 -3 + vertex 14.5835 -23.8342 0 + vertex 14.5835 -23.8342 -3 endloop endfacet - facet normal -0.923985 0.382428 0 + facet normal -0.926605 0.376035 0 outer loop - vertex 14.5952 -23.8342 0 - vertex 12.8097 -28.1484 -0.2 - vertex 12.8097 -28.1484 0 + vertex 14.5835 -23.8342 0 + vertex 11.4887 -31.4602 -3 + vertex 11.4887 -31.4602 0 endloop endfacet - facet normal -0.928075 0.372394 0 + facet normal -0.942271 0.334852 0 outer loop - vertex 12.0447 -30.0547 -0.2 - vertex 12.8097 -28.1484 0 - vertex 12.8097 -28.1484 -0.2 + vertex 10.915 -33.0747 -3 + vertex 11.4887 -31.4602 0 + vertex 11.4887 -31.4602 -3 endloop endfacet - facet normal -0.928075 0.372394 0 + facet normal -0.942271 0.334852 0 outer loop - vertex 12.8097 -28.1484 0 - vertex 12.0447 -30.0547 -0.2 - vertex 12.0447 -30.0547 0 + vertex 11.4887 -31.4602 0 + vertex 10.915 -33.0747 -3 + vertex 10.915 -33.0747 0 endloop endfacet - facet normal -0.932522 0.361114 0 + facet normal -0.976917 0.213621 0 outer loop - vertex 11.5005 -31.4602 -0.2 - vertex 12.0447 -30.0547 0 - vertex 12.0447 -30.0547 -0.2 + vertex 10.7197 -33.9677 -3 + vertex 10.915 -33.0747 0 + vertex 10.915 -33.0747 -3 endloop endfacet - facet normal -0.932522 0.361114 0 + facet normal -0.976917 0.213621 0 outer loop - vertex 12.0447 -30.0547 0 - vertex 11.5005 -31.4602 -0.2 - vertex 11.5005 -31.4602 0 + vertex 10.915 -33.0747 0 + vertex 10.7197 -33.9677 -3 + vertex 10.7197 -33.9677 0 endloop endfacet - facet normal -0.938737 0.344634 0 + facet normal -0.904266 -0.42697 0 outer loop - vertex 11.1661 -32.3709 -0.2 - vertex 11.5005 -31.4602 0 - vertex 11.5005 -31.4602 -0.2 + vertex 10.9006 -34.3507 -3 + vertex 10.7197 -33.9677 0 + vertex 10.7197 -33.9677 -3 endloop endfacet - facet normal -0.938737 0.344634 0 + facet normal -0.904266 -0.42697 0 outer loop - vertex 11.5005 -31.4602 0 - vertex 11.1661 -32.3709 -0.2 - vertex 11.1661 -32.3709 0 + vertex 10.7197 -33.9677 0 + vertex 10.9006 -34.3507 -3 + vertex 10.9006 -34.3507 0 endloop endfacet - facet normal -0.946728 0.322034 0 + facet normal -0.15089 -0.988551 0 outer loop - vertex 10.9267 -33.0747 -0.2 - vertex 11.1661 -32.3709 0 - vertex 11.1661 -32.3709 -0.2 + vertex 10.9006 -34.3507 -3 + vertex 11.4551 -34.4353 0 + vertex 10.9006 -34.3507 0 endloop endfacet - facet normal -0.946728 0.322034 0 + facet normal -0.15089 -0.988551 -0 outer loop - vertex 11.1661 -32.3709 0 - vertex 10.9267 -33.0747 -0.2 - vertex 10.9267 -33.0747 0 + vertex 11.4551 -34.4353 0 + vertex 10.9006 -34.3507 -3 + vertex 11.4551 -34.4353 -3 endloop endfacet - facet normal -0.963806 0.266603 0 + facet normal -0.233297 -0.972406 0 outer loop - vertex 10.7819 -33.5982 -0.2 - vertex 10.9267 -33.0747 0 - vertex 10.9267 -33.0747 -0.2 + vertex 11.4551 -34.4353 -3 + vertex 11.871 -34.5351 0 + vertex 11.4551 -34.4353 0 endloop endfacet - facet normal -0.963806 0.266603 0 + facet normal -0.233297 -0.972406 -0 outer loop - vertex 10.9267 -33.0747 0 - vertex 10.7819 -33.5982 -0.2 - vertex 10.7819 -33.5982 0 + vertex 11.871 -34.5351 0 + vertex 11.4551 -34.4353 -3 + vertex 11.871 -34.5351 -3 endloop endfacet - facet normal -0.983685 0.179901 0 + facet normal -0.702731 -0.711456 0 outer loop - vertex 10.7449 -33.8005 -0.2 - vertex 10.7819 -33.5982 0 - vertex 10.7819 -33.5982 -0.2 + vertex 11.871 -34.5351 -3 + vertex 12.1385 -34.7994 0 + vertex 11.871 -34.5351 0 endloop endfacet - facet normal -0.983685 0.179901 0 + facet normal -0.702731 -0.711456 -0 outer loop - vertex 10.7819 -33.5982 0 - vertex 10.7449 -33.8005 -0.2 - vertex 10.7449 -33.8005 0 + vertex 12.1385 -34.7994 0 + vertex 11.871 -34.5351 -3 + vertex 12.1385 -34.7994 -3 endloop endfacet - facet normal -0.996773 0.0802779 0 + facet normal -0.970405 -0.241485 0 outer loop - vertex 10.7315 -33.9677 -0.2 - vertex 10.7449 -33.8005 0 - vertex 10.7449 -33.8005 -0.2 + vertex 12.2351 -35.1874 -3 + vertex 12.1385 -34.7994 0 + vertex 12.1385 -34.7994 -3 endloop endfacet - facet normal -0.996773 0.0802779 0 + facet normal -0.970405 -0.241485 0 outer loop - vertex 10.7449 -33.8005 0 - vertex 10.7315 -33.9677 -0.2 - vertex 10.7315 -33.9677 0 + vertex 12.1385 -34.7994 0 + vertex 12.2351 -35.1874 -3 + vertex 12.2351 -35.1874 0 endloop endfacet - facet normal -0.997256 -0.0740364 0 + facet normal -0.979345 0.202199 0 outer loop - vertex 10.7415 -34.103 -0.2 - vertex 10.7315 -33.9677 0 - vertex 10.7315 -33.9677 -0.2 + vertex 12.1379 -35.6584 -3 + vertex 12.2351 -35.1874 0 + vertex 12.2351 -35.1874 -3 endloop endfacet - facet normal -0.997256 -0.0740364 0 + facet normal -0.979345 0.202199 0 outer loop - vertex 10.7315 -33.9677 0 - vertex 10.7415 -34.103 -0.2 - vertex 10.7415 -34.103 0 + vertex 12.2351 -35.1874 0 + vertex 12.1379 -35.6584 -3 + vertex 12.1379 -35.6584 0 endloop endfacet - facet normal -0.954067 -0.299593 0 + facet normal -0.791253 0.611489 0 outer loop - vertex 10.775 -34.2097 -0.2 - vertex 10.7415 -34.103 0 - vertex 10.7415 -34.103 -0.2 + vertex 11.7916 -36.1064 -3 + vertex 12.1379 -35.6584 0 + vertex 12.1379 -35.6584 -3 endloop endfacet - facet normal -0.954067 -0.299593 0 + facet normal -0.791253 0.611489 0 outer loop - vertex 10.7415 -34.103 0 - vertex 10.775 -34.2097 -0.2 - vertex 10.775 -34.2097 0 + vertex 12.1379 -35.6584 0 + vertex 11.7916 -36.1064 -3 + vertex 11.7916 -36.1064 0 endloop endfacet - facet normal -0.81961 -0.572921 0 + facet normal -0.605591 0.795776 0 outer loop - vertex 10.832 -34.2912 -0.2 - vertex 10.775 -34.2097 0 - vertex 10.775 -34.2097 -0.2 + vertex 11.7916 -36.1064 -3 + vertex 11.1962 -36.5595 0 + vertex 11.7916 -36.1064 0 endloop endfacet - facet normal -0.81961 -0.572921 0 + facet normal -0.605591 0.795776 0 outer loop - vertex 10.775 -34.2097 0 - vertex 10.832 -34.2912 -0.2 - vertex 10.832 -34.2912 0 + vertex 11.1962 -36.5595 0 + vertex 11.7916 -36.1064 -3 + vertex 11.1962 -36.5595 -3 endloop endfacet - facet normal -0.595252 -0.803539 0 + facet normal -0.461492 0.887144 0 outer loop - vertex 10.832 -34.2912 -0.2 - vertex 10.9123 -34.3507 0 - vertex 10.832 -34.2912 0 + vertex 11.1962 -36.5595 -3 + vertex 10.519 -36.9119 0 + vertex 11.1962 -36.5595 0 endloop endfacet - facet normal -0.595252 -0.803539 -0 + facet normal -0.461492 0.887144 0 outer loop - vertex 10.9123 -34.3507 0 - vertex 10.832 -34.2912 -0.2 - vertex 10.9123 -34.3507 -0.2 + vertex 10.519 -36.9119 0 + vertex 11.1962 -36.5595 -3 + vertex 10.519 -36.9119 -3 endloop endfacet - facet normal -0.366659 -0.930355 0 + facet normal -0.238946 0.971033 0 outer loop - vertex 10.9123 -34.3507 -0.2 - vertex 11.016 -34.3915 0 - vertex 10.9123 -34.3507 0 + vertex 10.519 -36.9119 -3 + vertex 9.92719 -37.0575 0 + vertex 10.519 -36.9119 0 endloop endfacet - facet normal -0.366659 -0.930355 -0 + facet normal -0.238946 0.971033 0 outer loop - vertex 11.016 -34.3915 0 - vertex 10.9123 -34.3507 -0.2 - vertex 11.016 -34.3915 -0.2 + vertex 9.92719 -37.0575 0 + vertex 10.519 -36.9119 -3 + vertex 9.92719 -37.0575 -3 endloop endfacet - facet normal -0.197016 -0.9804 0 + facet normal -0.276943 0.960886 0 outer loop - vertex 11.016 -34.3915 -0.2 - vertex 11.143 -34.4171 0 - vertex 11.016 -34.3915 0 + vertex 9.92719 -37.0575 -3 + vertex 8.47177 -37.477 0 + vertex 9.92719 -37.0575 0 endloop endfacet - facet normal -0.197016 -0.9804 -0 + facet normal -0.276943 0.960886 0 outer loop - vertex 11.143 -34.4171 0 - vertex 11.016 -34.3915 -0.2 - vertex 11.143 -34.4171 -0.2 + vertex 8.47177 -37.477 0 + vertex 9.92719 -37.0575 -3 + vertex 8.47177 -37.477 -3 endloop endfacet - facet normal -0.0562764 -0.998415 0 + facet normal -0.302213 0.95324 0 outer loop - vertex 11.143 -34.4171 -0.2 - vertex 11.4668 -34.4353 0 - vertex 11.143 -34.4171 0 + vertex 8.47177 -37.477 -3 + vertex 5.33583 -38.4712 0 + vertex 8.47177 -37.477 0 endloop endfacet - facet normal -0.0562764 -0.998415 -0 + facet normal -0.302213 0.95324 0 outer loop - vertex 11.4668 -34.4353 0 - vertex 11.143 -34.4171 -0.2 - vertex 11.4668 -34.4353 -0.2 + vertex 5.33583 -38.4712 0 + vertex 8.47177 -37.477 -3 + vertex 5.33583 -38.4712 -3 endloop endfacet - facet normal -0.118118 -0.993 0 + facet normal 0.267926 0.96344 -0 outer loop - vertex 11.4668 -34.4353 -0.2 - vertex 11.6919 -34.4621 0 - vertex 11.4668 -34.4353 0 + vertex 5.33583 -38.4712 -3 + vertex 4.84381 -38.3343 0 + vertex 5.33583 -38.4712 0 endloop endfacet - facet normal -0.118118 -0.993 -0 + facet normal 0.267926 0.96344 0 outer loop - vertex 11.6919 -34.4621 0 - vertex 11.4668 -34.4353 -0.2 - vertex 11.6919 -34.4621 -0.2 + vertex 4.84381 -38.3343 0 + vertex 5.33583 -38.4712 -3 + vertex 4.84381 -38.3343 -3 endloop endfacet - facet normal -0.357337 -0.933976 0 + facet normal 0.979739 0.200279 0 outer loop - vertex 11.6919 -34.4621 -0.2 - vertex 11.8827 -34.5351 0 - vertex 11.6919 -34.4621 0 + vertex 4.84381 -38.3343 0 + vertex 4.73542 -37.8041 -3 + vertex 4.73542 -37.8041 0 endloop endfacet - facet normal -0.357337 -0.933976 -0 + facet normal 0.979739 0.200279 0 outer loop - vertex 11.8827 -34.5351 0 - vertex 11.6919 -34.4621 -0.2 - vertex 11.8827 -34.5351 -0.2 + vertex 4.73542 -37.8041 -3 + vertex 4.84381 -38.3343 0 + vertex 4.84381 -38.3343 -3 endloop endfacet - facet normal -0.596054 -0.802944 0 + facet normal 0.985121 0.171864 0 outer loop - vertex 11.8827 -34.5351 -0.2 - vertex 12.0364 -34.6492 0 - vertex 11.8827 -34.5351 0 + vertex 4.73542 -37.8041 0 + vertex 4.64415 -37.2809 -3 + vertex 4.64415 -37.2809 0 endloop endfacet - facet normal -0.596054 -0.802944 -0 + facet normal 0.985121 0.171864 0 outer loop - vertex 12.0364 -34.6492 0 - vertex 11.8827 -34.5351 -0.2 - vertex 12.0364 -34.6492 -0.2 + vertex 4.64415 -37.2809 -3 + vertex 4.73542 -37.8041 0 + vertex 4.73542 -37.8041 -3 endloop endfacet - facet normal -0.796902 -0.604109 0 + facet normal -0.43 0.902829 0 outer loop - vertex 12.1503 -34.7994 -0.2 - vertex 12.0364 -34.6492 0 - vertex 12.0364 -34.6492 -0.2 + vertex 4.64415 -37.2809 -3 + vertex 3.43985 -37.8545 0 + vertex 4.64415 -37.2809 0 endloop endfacet - facet normal -0.796902 -0.604109 0 + facet normal -0.43 0.902829 0 outer loop - vertex 12.0364 -34.6492 0 - vertex 12.1503 -34.7994 -0.2 - vertex 12.1503 -34.7994 0 + vertex 3.43985 -37.8545 0 + vertex 4.64415 -37.2809 -3 + vertex 3.43985 -37.8545 -3 endloop endfacet - facet normal -0.930863 -0.365367 0 + facet normal -0.338512 0.940962 0 outer loop - vertex 12.2214 -34.9805 -0.2 - vertex 12.1503 -34.7994 0 - vertex 12.1503 -34.7994 -0.2 + vertex 3.43985 -37.8545 -3 + vertex 2.31266 -38.26 0 + vertex 3.43985 -37.8545 0 endloop endfacet - facet normal -0.930863 -0.365367 0 + facet normal -0.338512 0.940962 0 outer loop - vertex 12.1503 -34.7994 0 - vertex 12.2214 -34.9805 -0.2 - vertex 12.2214 -34.9805 0 + vertex 2.31266 -38.26 0 + vertex 3.43985 -37.8545 -3 + vertex 2.31266 -38.26 -3 endloop endfacet - facet normal -0.992505 -0.122206 0 + facet normal -0.172368 0.985033 0 outer loop - vertex 12.2468 -35.1875 -0.2 - vertex 12.2214 -34.9805 0 - vertex 12.2214 -34.9805 -0.2 + vertex 2.31266 -38.26 -3 + vertex 0.962702 -38.4962 0 + vertex 2.31266 -38.26 0 endloop endfacet - facet normal -0.992505 -0.122206 0 + facet normal -0.172368 0.985033 0 outer loop - vertex 12.2214 -34.9805 0 - vertex 12.2468 -35.1875 -0.2 - vertex 12.2468 -35.1875 0 + vertex 0.962702 -38.4962 0 + vertex 2.31266 -38.26 -3 + vertex 0.962702 -38.4962 -3 endloop endfacet - facet normal -0.994949 0.100386 0 + facet normal -0.0313759 0.999508 0 outer loop - vertex 12.2239 -35.4151 -0.2 - vertex 12.2468 -35.1875 0 - vertex 12.2468 -35.1875 -0.2 + vertex 0.962702 -38.4962 -3 + vertex -0.366978 -38.538 0 + vertex 0.962702 -38.4962 0 endloop endfacet - facet normal -0.994949 0.100386 0 + facet normal -0.0313759 0.999508 0 outer loop - vertex 12.2468 -35.1875 0 - vertex 12.2239 -35.4151 -0.2 - vertex 12.2239 -35.4151 0 + vertex -0.366978 -38.538 0 + vertex 0.962702 -38.4962 -3 + vertex -0.366978 -38.538 -3 endloop endfacet - facet normal -0.956433 0.291953 0 + facet normal 0.16461 0.986359 -0 outer loop - vertex 12.1496 -35.6584 -0.2 - vertex 12.2239 -35.4151 0 - vertex 12.2239 -35.4151 -0.2 + vertex -0.366978 -38.538 -3 + vertex -1.43333 -38.36 0 + vertex -0.366978 -38.538 0 endloop endfacet - facet normal -0.956433 0.291953 0 + facet normal 0.16461 0.986359 0 outer loop - vertex 12.2239 -35.4151 0 - vertex 12.1496 -35.6584 -0.2 - vertex 12.1496 -35.6584 0 + vertex -1.43333 -38.36 0 + vertex -0.366978 -38.538 -3 + vertex -1.43333 -38.36 -3 endloop endfacet - facet normal -0.890412 0.455156 0 + facet normal 0.535641 0.844446 -0 outer loop - vertex 12.0956 -35.7642 -0.2 - vertex 12.1496 -35.6584 0 - vertex 12.1496 -35.6584 -0.2 + vertex -1.43333 -38.36 -3 + vertex -2.45619 -37.7112 0 + vertex -1.43333 -38.36 0 endloop endfacet - facet normal -0.890412 0.455156 0 + facet normal 0.535641 0.844446 0 outer loop - vertex 12.1496 -35.6584 0 - vertex 12.0956 -35.7642 -0.2 - vertex 12.0956 -35.7642 0 + vertex -2.45619 -37.7112 0 + vertex -1.43333 -38.36 -3 + vertex -2.45619 -37.7112 -3 endloop endfacet - facet normal -0.820093 0.572231 0 + facet normal 0.80363 0.595129 0 outer loop - vertex 12.0181 -35.8752 -0.2 - vertex 12.0956 -35.7642 0 - vertex 12.0956 -35.7642 -0.2 + vertex -2.45619 -37.7112 0 + vertex -3.26834 -36.6145 -3 + vertex -3.26834 -36.6145 0 endloop endfacet - facet normal -0.820093 0.572231 0 + facet normal 0.80363 0.595129 0 outer loop - vertex 12.0956 -35.7642 0 - vertex 12.0181 -35.8752 -0.2 - vertex 12.0181 -35.8752 0 + vertex -3.26834 -36.6145 -3 + vertex -2.45619 -37.7112 0 + vertex -2.45619 -37.7112 -3 endloop endfacet - facet normal -0.732832 0.680409 0 + facet normal 0.935783 0.352578 0 outer loop - vertex 11.8034 -36.1064 -0.2 - vertex 12.0181 -35.8752 0 - vertex 12.0181 -35.8752 -0.2 + vertex -3.26834 -36.6145 0 + vertex -3.80393 -35.193 -3 + vertex -3.80393 -35.193 0 endloop endfacet - facet normal -0.732832 0.680409 0 + facet normal 0.935783 0.352578 0 outer loop - vertex 12.0181 -35.8752 0 - vertex 11.8034 -36.1064 -0.2 - vertex 11.8034 -36.1064 0 + vertex -3.80393 -35.193 -3 + vertex -3.26834 -36.6145 0 + vertex -3.26834 -36.6145 -3 endloop endfacet - facet normal -0.642938 0.765918 0 + facet normal 0.992994 0.118162 0 outer loop - vertex 11.8034 -36.1064 -0.2 - vertex 11.5264 -36.339 0 - vertex 11.8034 -36.1064 0 + vertex -3.80393 -35.193 0 + vertex -3.99709 -33.5697 -3 + vertex -3.99709 -33.5697 0 endloop endfacet - facet normal -0.642938 0.765918 0 + facet normal 0.992994 0.118162 0 outer loop - vertex 11.5264 -36.339 0 - vertex 11.8034 -36.1064 -0.2 - vertex 11.5264 -36.339 -0.2 + vertex -3.99709 -33.5697 -3 + vertex -3.80393 -35.193 0 + vertex -3.80393 -35.193 -3 endloop endfacet - facet normal -0.569468 0.822014 0 + facet normal 0.988913 -0.148494 0 outer loop - vertex 11.5264 -36.339 -0.2 - vertex 11.208 -36.5595 0 - vertex 11.5264 -36.339 0 + vertex -3.99709 -33.5697 0 + vertex -3.7659 -32.0301 -3 + vertex -3.7659 -32.0301 0 endloop endfacet - facet normal -0.569468 0.822014 0 + facet normal 0.988913 -0.148494 0 outer loop - vertex 11.208 -36.5595 0 - vertex 11.5264 -36.339 -0.2 - vertex 11.208 -36.5595 -0.2 + vertex -3.7659 -32.0301 -3 + vertex -3.99709 -33.5697 0 + vertex -3.99709 -33.5697 -3 endloop endfacet - facet normal -0.499497 0.866315 0 + facet normal 0.953123 -0.302584 0 outer loop - vertex 11.208 -36.5595 -0.2 - vertex 10.8691 -36.7549 0 - vertex 11.208 -36.5595 0 + vertex -3.7659 -32.0301 0 + vertex -3.14673 -30.0798 -3 + vertex -3.14673 -30.0798 0 endloop endfacet - facet normal -0.499497 0.866315 0 + facet normal 0.953123 -0.302584 0 outer loop - vertex 10.8691 -36.7549 0 - vertex 11.208 -36.5595 -0.2 - vertex 10.8691 -36.7549 -0.2 + vertex -3.14673 -30.0798 -3 + vertex -3.7659 -32.0301 0 + vertex -3.7659 -32.0301 -3 endloop endfacet - facet normal -0.420709 0.907196 0 + facet normal 0.917453 -0.397844 0 outer loop - vertex 10.8691 -36.7549 -0.2 - vertex 10.5307 -36.9119 0 - vertex 10.8691 -36.7549 0 + vertex -3.14673 -30.0798 0 + vertex -2.25121 -28.0146 -3 + vertex -2.25121 -28.0146 0 endloop endfacet - facet normal -0.420709 0.907196 0 + facet normal 0.917453 -0.397844 0 outer loop - vertex 10.5307 -36.9119 0 - vertex 10.8691 -36.7549 -0.2 - vertex 10.5307 -36.9119 -0.2 + vertex -2.25121 -28.0146 -3 + vertex -3.14673 -30.0798 0 + vertex -3.14673 -30.0798 -3 endloop endfacet - facet normal -0.315116 0.949053 0 + facet normal 0.871478 -0.490435 0 outer loop - vertex 10.5307 -36.9119 -0.2 - vertex 10.2137 -37.0171 0 - vertex 10.5307 -36.9119 0 + vertex -2.25121 -28.0146 0 + vertex -1.19093 -26.1306 -3 + vertex -1.19093 -26.1306 0 endloop endfacet - facet normal -0.315116 0.949053 0 + facet normal 0.871478 -0.490435 0 outer loop - vertex 10.2137 -37.0171 0 - vertex 10.5307 -36.9119 -0.2 - vertex 10.2137 -37.0171 -0.2 + vertex -1.19093 -26.1306 -3 + vertex -2.25121 -28.0146 0 + vertex -2.25121 -28.0146 -3 endloop endfacet - facet normal -0.145343 0.989381 0 + facet normal 0.794031 -0.607877 0 outer loop - vertex 10.2137 -37.0171 -0.2 - vertex 9.93892 -37.0575 0 - vertex 10.2137 -37.0171 0 + vertex -1.19093 -26.1306 0 + vertex 0.168338 -24.355 -3 + vertex 0.168338 -24.355 0 endloop endfacet - facet normal -0.145343 0.989381 0 + facet normal 0.794031 -0.607877 0 outer loop - vertex 9.93892 -37.0575 0 - vertex 10.2137 -37.0171 -0.2 - vertex 9.93892 -37.0575 -0.2 + vertex 0.168338 -24.355 -3 + vertex -1.19093 -26.1306 0 + vertex -1.19093 -26.1306 -3 endloop endfacet - facet normal -0.15554 0.98783 0 + facet normal 0.710709 -0.703486 0 outer loop - vertex 9.93892 -37.0575 -0.2 - vertex 9.71926 -37.0921 0 - vertex 9.93892 -37.0575 0 + vertex 0.168338 -24.355 0 + vertex 1.84511 -22.661 -3 + vertex 1.84511 -22.661 0 endloop endfacet - facet normal -0.15554 0.98783 0 + facet normal 0.710709 -0.703486 0 outer loop - vertex 9.71926 -37.0921 0 - vertex 9.93892 -37.0575 -0.2 - vertex 9.71926 -37.0921 -0.2 + vertex 1.84511 -22.661 -3 + vertex 0.168338 -24.355 0 + vertex 0.168338 -24.355 -3 endloop endfacet - facet normal -0.252236 0.967666 0 + facet normal 0.626061 -0.779774 0 outer loop - vertex 9.71926 -37.0921 -0.2 - vertex 9.37163 -37.1827 0 - vertex 9.71926 -37.0921 0 + vertex 1.84511 -22.661 -3 + vertex 3.72385 -21.1527 0 + vertex 1.84511 -22.661 0 endloop endfacet - facet normal -0.252236 0.967666 0 + facet normal 0.626061 -0.779774 0 outer loop - vertex 9.37163 -37.1827 0 - vertex 9.71926 -37.0921 -0.2 - vertex 9.37163 -37.1827 -0.2 + vertex 3.72385 -21.1527 0 + vertex 1.84511 -22.661 -3 + vertex 3.72385 -21.1527 -3 endloop endfacet - facet normal -0.296619 0.954996 0 + facet normal 0.527042 -0.849839 0 outer loop - vertex 9.37163 -37.1827 -0.2 - vertex 8.94379 -37.3156 0 - vertex 9.37163 -37.1827 0 + vertex 3.72385 -21.1527 -3 + vertex 5.689 -19.9339 0 + vertex 3.72385 -21.1527 0 endloop endfacet - facet normal -0.296619 0.954996 0 + facet normal 0.527042 -0.849839 0 outer loop - vertex 8.94379 -37.3156 0 - vertex 9.37163 -37.1827 -0.2 - vertex 8.94379 -37.3156 -0.2 + vertex 5.689 -19.9339 0 + vertex 3.72385 -21.1527 -3 + vertex 5.689 -19.9339 -3 endloop endfacet - facet normal -0.330869 0.943677 0 + facet normal 0.380142 -0.924928 0 outer loop - vertex 8.94379 -37.3156 -0.2 - vertex 8.4835 -37.477 0 - vertex 8.94379 -37.3156 0 + vertex 5.689 -19.9339 -3 + vertex 7.06268 -19.3694 0 + vertex 5.689 -19.9339 0 endloop endfacet - facet normal -0.330869 0.943677 0 + facet normal 0.380142 -0.924928 0 outer loop - vertex 8.4835 -37.477 0 - vertex 8.94379 -37.3156 -0.2 - vertex 8.4835 -37.477 -0.2 + vertex 7.06268 -19.3694 0 + vertex 5.689 -19.9339 -3 + vertex 7.06268 -19.3694 -3 endloop endfacet - facet normal -0.343608 0.939113 0 + facet normal 0.11624 -0.993221 0 outer loop - vertex 8.4835 -37.477 -0.2 - vertex 7.35232 -37.8908 0 - vertex 8.4835 -37.477 0 + vertex 7.06268 -19.3694 -3 + vertex 8.75581 -19.1712 0 + vertex 7.06268 -19.3694 0 endloop endfacet - facet normal -0.343608 0.939113 0 + facet normal 0.11624 -0.993221 0 outer loop - vertex 7.35232 -37.8908 0 - vertex 8.4835 -37.477 -0.2 - vertex 7.35232 -37.8908 -0.2 + vertex 8.75581 -19.1712 0 + vertex 7.06268 -19.3694 -3 + vertex 8.75581 -19.1712 -3 endloop endfacet - facet normal -0.324819 0.945776 0 + facet normal -0.00391511 -0.999992 0 outer loop - vertex 7.35232 -37.8908 -0.2 - vertex 6.47346 -38.1927 0 - vertex 7.35232 -37.8908 0 + vertex 8.75581 -19.1712 -3 + vertex 10.3474 -19.1774 0 + vertex 8.75581 -19.1712 0 endloop endfacet - facet normal -0.324819 0.945776 0 + facet normal -0.00391511 -0.999992 -0 outer loop - vertex 6.47346 -38.1927 0 - vertex 7.35232 -37.8908 -0.2 - vertex 6.47346 -38.1927 -0.2 + vertex 10.3474 -19.1774 0 + vertex 8.75581 -19.1712 -3 + vertex 10.3474 -19.1774 -3 endloop endfacet - facet normal -0.280895 0.959739 0 + facet normal -0.375648 -0.926763 0 outer loop - vertex 6.47346 -38.1927 -0.2 - vertex 5.81563 -38.3852 0 - vertex 6.47346 -38.1927 0 + vertex 10.3474 -19.1774 -3 + vertex 11.2177 -19.5302 0 + vertex 10.3474 -19.1774 0 endloop endfacet - facet normal -0.280895 0.959739 0 + facet normal -0.375648 -0.926763 -0 outer loop - vertex 5.81563 -38.3852 0 - vertex 6.47346 -38.1927 -0.2 - vertex 5.81563 -38.3852 -0.2 + vertex 11.2177 -19.5302 0 + vertex 10.3474 -19.1774 -3 + vertex 11.2177 -19.5302 -3 endloop endfacet - facet normal -0.214328 0.976762 0 + facet normal -0.460444 -0.887689 0 outer loop - vertex 5.81563 -38.3852 -0.2 - vertex 5.55983 -38.4413 0 - vertex 5.81563 -38.3852 0 + vertex 11.2177 -19.5302 -3 + vertex 11.7785 -19.8211 0 + vertex 11.2177 -19.5302 0 endloop endfacet - facet normal -0.214328 0.976762 0 + facet normal -0.460444 -0.887689 -0 outer loop - vertex 5.55983 -38.4413 0 - vertex 5.81563 -38.3852 -0.2 - vertex 5.55983 -38.4413 -0.2 + vertex 11.7785 -19.8211 0 + vertex 11.2177 -19.5302 -3 + vertex 11.7785 -19.8211 -3 endloop endfacet - facet normal -0.139165 0.990269 0 + facet normal 0.340288 -0.940321 0 outer loop - vertex 5.55983 -38.4413 -0.2 - vertex 5.34756 -38.4712 0 - vertex 5.55983 -38.4413 0 + vertex 11.7785 -19.8211 -3 + vertex 12.058 -19.7199 0 + vertex 11.7785 -19.8211 0 endloop endfacet - facet normal -0.139165 0.990269 0 + facet normal 0.340288 -0.940321 0 outer loop - vertex 5.34756 -38.4712 0 - vertex 5.55983 -38.4413 -0.2 - vertex 5.34756 -38.4712 -0.2 + vertex 12.058 -19.7199 0 + vertex 11.7785 -19.8211 -3 + vertex 12.058 -19.7199 -3 endloop endfacet - facet normal -0.0224422 0.999748 0 + facet normal 0.919444 -0.393221 0 outer loop - vertex 5.34756 -38.4712 -0.2 - vertex 5.17491 -38.475 0 - vertex 5.34756 -38.4712 0 + vertex 12.058 -19.7199 0 + vertex 13.2867 -16.8469 -3 + vertex 13.2867 -16.8469 0 endloop endfacet - facet normal -0.0224422 0.999748 0 + facet normal 0.919444 -0.393221 0 outer loop - vertex 5.17491 -38.475 0 - vertex 5.34756 -38.4712 -0.2 - vertex 5.17491 -38.475 -0.2 + vertex 13.2867 -16.8469 -3 + vertex 12.058 -19.7199 0 + vertex 12.058 -19.7199 -3 endloop endfacet - facet normal 0.156812 0.987628 -0 + facet normal 0.948333 -0.317278 0 outer loop - vertex 5.17491 -38.475 -0.2 - vertex 5.03796 -38.4533 0 - vertex 5.17491 -38.475 0 + vertex 13.2867 -16.8469 0 + vertex 14.1246 -14.3424 -3 + vertex 14.1246 -14.3424 0 endloop endfacet - facet normal 0.156812 0.987628 0 + facet normal 0.948333 -0.317278 0 outer loop - vertex 5.03796 -38.4533 0 - vertex 5.17491 -38.475 -0.2 - vertex 5.03796 -38.4533 -0.2 + vertex 14.1246 -14.3424 -3 + vertex 13.2867 -16.8469 0 + vertex 13.2867 -16.8469 -3 endloop endfacet - facet normal 0.408161 0.91291 -0 + facet normal 0.170025 0.98544 -0 outer loop - vertex 5.03796 -38.4533 -0.2 - vertex 4.93281 -38.4063 0 - vertex 5.03796 -38.4533 0 + vertex 14.1246 -14.3424 -3 + vertex 12.858 -14.1239 0 + vertex 14.1246 -14.3424 0 endloop endfacet - facet normal 0.408161 0.91291 0 + facet normal 0.170025 0.98544 0 outer loop - vertex 4.93281 -38.4063 0 - vertex 5.03796 -38.4533 -0.2 - vertex 4.93281 -38.4063 -0.2 + vertex 12.858 -14.1239 0 + vertex 14.1246 -14.3424 -3 + vertex 12.858 -14.1239 -3 endloop endfacet - facet normal 0.681473 0.731843 -0 + facet normal 0.649749 0.760149 -0 outer loop - vertex 4.93281 -38.4063 -0.2 - vertex 4.85555 -38.3343 0 - vertex 4.93281 -38.4063 0 + vertex 12.858 -14.1239 -3 + vertex 12.417 -13.7469 0 + vertex 12.858 -14.1239 0 endloop endfacet - facet normal 0.681473 0.731843 0 + facet normal 0.649749 0.760149 0 outer loop - vertex 4.85555 -38.3343 0 - vertex 4.93281 -38.4063 -0.2 - vertex 4.85555 -38.3343 -0.2 + vertex 12.417 -13.7469 0 + vertex 12.858 -14.1239 -3 + vertex 12.417 -13.7469 -3 endloop endfacet - facet normal 0.875472 0.48327 0 + facet normal 0.999788 0.0206018 0 outer loop - vertex 4.85555 -38.3343 0 - vertex 4.80226 -38.2378 -0.2 - vertex 4.80226 -38.2378 0 + vertex 12.417 -13.7469 0 + vertex 12.4073 -13.2773 -3 + vertex 12.4073 -13.2773 0 endloop endfacet - facet normal 0.875472 0.48327 0 + facet normal 0.999788 0.0206018 0 outer loop - vertex 4.80226 -38.2378 -0.2 - vertex 4.85555 -38.3343 0 - vertex 4.85555 -38.3343 -0.2 + vertex 12.4073 -13.2773 -3 + vertex 12.417 -13.7469 0 + vertex 12.417 -13.7469 -3 endloop endfacet - facet normal 0.964192 0.265205 0 + facet normal 0.884204 -0.467101 0 outer loop - vertex 4.80226 -38.2378 0 - vertex 4.76904 -38.117 -0.2 - vertex 4.76904 -38.117 0 + vertex 12.4073 -13.2773 0 + vertex 12.6527 -12.8127 -3 + vertex 12.6527 -12.8127 0 endloop endfacet - facet normal 0.964192 0.265205 0 + facet normal 0.884204 -0.467101 0 outer loop - vertex 4.76904 -38.117 -0.2 - vertex 4.80226 -38.2378 0 - vertex 4.80226 -38.2378 -0.2 + vertex 12.6527 -12.8127 -3 + vertex 12.4073 -13.2773 0 + vertex 12.4073 -13.2773 -3 endloop endfacet - facet normal 0.997564 0.069762 0 + facet normal 0.661795 -0.749685 0 outer loop - vertex 4.76904 -38.117 0 - vertex 4.74716 -37.8041 -0.2 - vertex 4.74716 -37.8041 0 + vertex 12.6527 -12.8127 -3 + vertex 13.1035 -12.4147 0 + vertex 12.6527 -12.8127 0 endloop endfacet - facet normal 0.997564 0.069762 0 + facet normal 0.661795 -0.749685 0 outer loop - vertex 4.74716 -37.8041 -0.2 - vertex 4.76904 -38.117 0 - vertex 4.76904 -38.117 -0.2 + vertex 13.1035 -12.4147 0 + vertex 12.6527 -12.8127 -3 + vertex 13.1035 -12.4147 -3 endloop endfacet - facet normal 0.997378 0.0723715 0 + facet normal 0.406349 -0.913718 0 outer loop - vertex 4.74716 -37.8041 0 - vertex 4.72035 -37.4346 -0.2 - vertex 4.72035 -37.4346 0 + vertex 13.1035 -12.4147 -3 + vertex 13.71 -12.1451 0 + vertex 13.1035 -12.4147 0 endloop endfacet - facet normal 0.997378 0.0723715 0 + facet normal 0.406349 -0.913718 0 outer loop - vertex 4.72035 -37.4346 -0.2 - vertex 4.74716 -37.8041 0 - vertex 4.74716 -37.8041 -0.2 + vertex 13.71 -12.1451 0 + vertex 13.1035 -12.4147 -3 + vertex 13.71 -12.1451 -3 endloop endfacet - facet normal 0.968245 0.250005 0 + facet normal 0.283559 -0.958955 0 outer loop - vertex 4.72035 -37.4346 0 - vertex 4.69132 -37.3222 -0.2 - vertex 4.69132 -37.3222 0 + vertex 13.71 -12.1451 -3 + vertex 16.7993 -11.2316 0 + vertex 13.71 -12.1451 0 endloop endfacet - facet normal 0.968245 0.250005 0 + facet normal 0.283559 -0.958955 0 outer loop - vertex 4.69132 -37.3222 -0.2 - vertex 4.72035 -37.4346 0 - vertex 4.72035 -37.4346 -0.2 + vertex 16.7993 -11.2316 0 + vertex 13.71 -12.1451 -3 + vertex 16.7993 -11.2316 -3 endloop endfacet - facet normal 0.758745 0.651387 0 + facet normal 0.227026 -0.973889 0 outer loop - vertex 4.69132 -37.3222 0 - vertex 4.65588 -37.2809 -0.2 - vertex 4.65588 -37.2809 0 + vertex 16.7993 -11.2316 -3 + vertex 19.0845 -10.6988 0 + vertex 16.7993 -11.2316 0 endloop endfacet - facet normal 0.758745 0.651387 0 + facet normal 0.227026 -0.973889 0 outer loop - vertex 4.65588 -37.2809 -0.2 - vertex 4.69132 -37.3222 0 - vertex 4.69132 -37.3222 -0.2 + vertex 19.0845 -10.6988 0 + vertex 16.7993 -11.2316 -3 + vertex 19.0845 -10.6988 -3 endloop endfacet - facet normal -0.395389 0.918514 0 + facet normal -0.20555 -0.978647 0 outer loop - vertex 4.65588 -37.2809 -0.2 - vertex 4.26446 -37.4494 0 - vertex 4.65588 -37.2809 0 + vertex 19.0845 -10.6988 -3 + vertex 19.5452 -10.7956 0 + vertex 19.0845 -10.6988 0 endloop endfacet - facet normal -0.395389 0.918514 0 + facet normal -0.20555 -0.978647 -0 outer loop - vertex 4.26446 -37.4494 0 - vertex 4.65588 -37.2809 -0.2 - vertex 4.26446 -37.4494 -0.2 + vertex 19.5452 -10.7956 0 + vertex 19.0845 -10.6988 -3 + vertex 19.5452 -10.7956 -3 endloop endfacet - facet normal -0.446029 0.895018 0 + facet normal -0.339851 0.940479 0 outer loop - vertex 4.26446 -37.4494 -0.2 - vertex 3.45158 -37.8545 0 - vertex 4.26446 -37.4494 0 + vertex 7.70773 -21.5983 -3 + vertex 6.85097 -21.9079 0 + vertex 7.70773 -21.5983 0 endloop endfacet - facet normal -0.446029 0.895018 0 + facet normal -0.339851 0.940479 0 outer loop - vertex 3.45158 -37.8545 0 - vertex 4.26446 -37.4494 -0.2 - vertex 3.45158 -37.8545 -0.2 + vertex 6.85097 -21.9079 0 + vertex 7.70773 -21.5983 -3 + vertex 6.85097 -21.9079 -3 endloop endfacet - facet normal -0.42381 0.905751 0 + facet normal -0.514575 0.857445 0 outer loop - vertex 3.45158 -37.8545 -0.2 - vertex 3.20396 -37.9704 0 - vertex 3.45158 -37.8545 0 + vertex 6.85097 -21.9079 -3 + vertex 5.96068 -22.4422 0 + vertex 6.85097 -21.9079 0 endloop endfacet - facet normal -0.42381 0.905751 0 + facet normal -0.514575 0.857445 0 outer loop - vertex 3.20396 -37.9704 0 - vertex 3.45158 -37.8545 -0.2 - vertex 3.20396 -37.9704 -0.2 + vertex 5.96068 -22.4422 0 + vertex 6.85097 -21.9079 -3 + vertex 5.96068 -22.4422 -3 endloop endfacet - facet normal -0.363414 0.931628 0 + facet normal -0.651148 0.758951 0 outer loop - vertex 3.20396 -37.9704 -0.2 - vertex 2.93102 -38.0768 0 - vertex 3.20396 -37.9704 0 + vertex 5.96068 -22.4422 -3 + vertex 5.07455 -23.2024 0 + vertex 5.96068 -22.4422 0 endloop endfacet - facet normal -0.363414 0.931628 0 + facet normal -0.651148 0.758951 0 outer loop - vertex 2.93102 -38.0768 0 - vertex 3.20396 -37.9704 -0.2 - vertex 2.93102 -38.0768 -0.2 + vertex 5.07455 -23.2024 0 + vertex 5.96068 -22.4422 -3 + vertex 5.07455 -23.2024 -3 endloop endfacet - facet normal -0.289057 0.957312 0 + facet normal -0.756285 0.654243 0 outer loop - vertex 2.93102 -38.0768 -0.2 - vertex 2.32439 -38.26 0 - vertex 2.93102 -38.0768 0 + vertex 3.84714 -24.6213 -3 + vertex 5.07455 -23.2024 0 + vertex 5.07455 -23.2024 -3 endloop endfacet - facet normal -0.289057 0.957312 0 + facet normal -0.756285 0.654243 0 outer loop - vertex 2.32439 -38.26 0 - vertex 2.93102 -38.0768 -0.2 - vertex 2.32439 -38.26 -0.2 + vertex 5.07455 -23.2024 0 + vertex 3.84714 -24.6213 -3 + vertex 3.84714 -24.6213 0 endloop endfacet - facet normal -0.208009 0.978127 0 + facet normal -0.833253 0.552891 0 outer loop - vertex 2.32439 -38.26 -0.2 - vertex 1.66207 -38.4009 0 - vertex 2.32439 -38.26 0 + vertex 2.80055 -26.1986 -3 + vertex 3.84714 -24.6213 0 + vertex 3.84714 -24.6213 -3 endloop endfacet - facet normal -0.208009 0.978127 0 + facet normal -0.833253 0.552891 0 outer loop - vertex 1.66207 -38.4009 0 - vertex 2.32439 -38.26 -0.2 - vertex 1.66207 -38.4009 -0.2 + vertex 3.84714 -24.6213 0 + vertex 2.80055 -26.1986 -3 + vertex 2.80055 -26.1986 0 endloop endfacet - facet normal -0.13739 0.990517 0 + facet normal -0.891463 0.453094 0 outer loop - vertex 1.66207 -38.4009 -0.2 - vertex 0.974434 -38.4962 0 - vertex 1.66207 -38.4009 0 + vertex 1.95873 -27.8549 -3 + vertex 2.80055 -26.1986 0 + vertex 2.80055 -26.1986 -3 endloop endfacet - facet normal -0.13739 0.990517 0 + facet normal -0.891463 0.453094 0 outer loop - vertex 0.974434 -38.4962 0 - vertex 1.66207 -38.4009 -0.2 - vertex 0.974434 -38.4962 -0.2 + vertex 2.80055 -26.1986 0 + vertex 1.95873 -27.8549 -3 + vertex 1.95873 -27.8549 0 endloop endfacet - facet normal -0.0683412 0.997662 0 + facet normal -0.937776 0.347241 0 outer loop - vertex 0.974434 -38.4962 -0.2 - vertex 0.291868 -38.543 0 - vertex 0.974434 -38.4962 0 + vertex 1.3456 -29.5107 -3 + vertex 1.95873 -27.8549 0 + vertex 1.95873 -27.8549 -3 endloop endfacet - facet normal -0.0683412 0.997662 0 + facet normal -0.937776 0.347241 0 outer loop - vertex 0.291868 -38.543 0 - vertex 0.974434 -38.4962 -0.2 - vertex 0.291868 -38.543 -0.2 + vertex 1.95873 -27.8549 0 + vertex 1.3456 -29.5107 -3 + vertex 1.3456 -29.5107 0 endloop endfacet - facet normal 0.00775161 0.99997 -0 + facet normal -0.97482 0.222992 0 outer loop - vertex 0.291868 -38.543 -0.2 - vertex -0.355246 -38.538 0 - vertex 0.291868 -38.543 0 + vertex 0.985088 -31.0867 -3 + vertex 1.3456 -29.5107 0 + vertex 1.3456 -29.5107 -3 endloop endfacet - facet normal 0.00775161 0.99997 0 + facet normal -0.97482 0.222992 0 outer loop - vertex -0.355246 -38.538 0 - vertex 0.291868 -38.543 -0.2 - vertex -0.355246 -38.538 -0.2 + vertex 1.3456 -29.5107 0 + vertex 0.985088 -31.0867 -3 + vertex 0.985088 -31.0867 0 endloop endfacet - facet normal 0.10258 0.994725 -0 + facet normal -0.998249 0.0591584 0 outer loop - vertex -0.355246 -38.538 -0.2 - vertex -0.936529 -38.478 0 - vertex -0.355246 -38.538 0 + vertex 0.901133 -32.5034 -3 + vertex 0.985088 -31.0867 0 + vertex 0.985088 -31.0867 -3 endloop endfacet - facet normal 0.10258 0.994725 0 + facet normal -0.998249 0.0591584 0 outer loop - vertex -0.936529 -38.478 0 - vertex -0.355246 -38.538 -0.2 - vertex -0.936529 -38.478 -0.2 + vertex 0.985088 -31.0867 0 + vertex 0.901133 -32.5034 -3 + vertex 0.901133 -32.5034 0 endloop endfacet - facet normal 0.197071 0.980389 -0 + facet normal -0.983521 -0.180795 0 outer loop - vertex -0.936529 -38.478 -0.2 - vertex -1.19299 -38.4265 0 - vertex -0.936529 -38.478 0 + vertex 1.11766 -33.6813 -3 + vertex 0.901133 -32.5034 0 + vertex 0.901133 -32.5034 -3 endloop endfacet - facet normal 0.197071 0.980389 0 + facet normal -0.983521 -0.180795 0 outer loop - vertex -1.19299 -38.4265 0 - vertex -0.936529 -38.478 -0.2 - vertex -1.19299 -38.4265 -0.2 + vertex 0.901133 -32.5034 0 + vertex 1.11766 -33.6813 -3 + vertex 1.11766 -33.6813 0 endloop endfacet - facet normal 0.279186 0.960237 -0 + facet normal -0.846397 -0.532553 0 outer loop - vertex -1.19299 -38.4265 -0.2 - vertex -1.4216 -38.36 0 - vertex -1.19299 -38.4265 0 + vertex 1.65861 -34.5411 -3 + vertex 1.11766 -33.6813 0 + vertex 1.11766 -33.6813 -3 endloop endfacet - facet normal 0.279186 0.960237 0 + facet normal -0.846397 -0.532553 0 outer loop - vertex -1.4216 -38.36 0 - vertex -1.19299 -38.4265 -0.2 - vertex -1.4216 -38.36 -0.2 + vertex 1.11766 -33.6813 0 + vertex 1.65861 -34.5411 -3 + vertex 1.65861 -34.5411 0 endloop endfacet - facet normal 0.385209 0.92283 -0 + facet normal -0.511641 -0.859199 0 outer loop - vertex -1.4216 -38.36 -0.2 - vertex -1.69347 -38.2465 0 - vertex -1.4216 -38.36 0 + vertex 1.65861 -34.5411 -3 + vertex 2.32628 -34.9386 0 + vertex 1.65861 -34.5411 0 endloop endfacet - facet normal 0.385209 0.92283 0 + facet normal -0.511641 -0.859199 -0 outer loop - vertex -1.69347 -38.2465 0 - vertex -1.4216 -38.36 -0.2 - vertex -1.69347 -38.2465 -0.2 + vertex 2.32628 -34.9386 0 + vertex 1.65861 -34.5411 -3 + vertex 2.32628 -34.9386 -3 endloop endfacet - facet normal 0.490243 0.871586 -0 + facet normal -0.182531 -0.9832 0 outer loop - vertex -1.69347 -38.2465 -0.2 - vertex -1.95525 -38.0993 0 - vertex -1.69347 -38.2465 0 + vertex 2.32628 -34.9386 -3 + vertex 3.17687 -35.0966 0 + vertex 2.32628 -34.9386 0 endloop endfacet - facet normal 0.490243 0.871586 0 + facet normal -0.182531 -0.9832 -0 outer loop - vertex -1.95525 -38.0993 0 - vertex -1.69347 -38.2465 -0.2 - vertex -1.95525 -38.0993 -0.2 + vertex 3.17687 -35.0966 0 + vertex 2.32628 -34.9386 -3 + vertex 3.17687 -35.0966 -3 endloop endfacet - facet normal 0.581299 0.81369 -0 + facet normal 0.0908592 -0.995864 0 outer loop - vertex -1.95525 -38.0993 -0.2 - vertex -2.20592 -37.9202 0 - vertex -1.95525 -38.0993 0 + vertex 3.17687 -35.0966 -3 + vertex 4.11511 -35.011 0 + vertex 3.17687 -35.0966 0 endloop endfacet - facet normal 0.581299 0.81369 0 + facet normal 0.0908592 -0.995864 0 outer loop - vertex -2.20592 -37.9202 0 - vertex -1.95525 -38.0993 -0.2 - vertex -2.20592 -37.9202 -0.2 + vertex 4.11511 -35.011 0 + vertex 3.17687 -35.0966 -3 + vertex 4.11511 -35.011 -3 endloop endfacet - facet normal 0.65901 0.752134 -0 + facet normal 0.336892 -0.941543 0 outer loop - vertex -2.20592 -37.9202 -0.2 - vertex -2.44446 -37.7112 0 - vertex -2.20592 -37.9202 0 + vertex 4.11511 -35.011 -3 + vertex 5.04571 -34.678 0 + vertex 4.11511 -35.011 0 endloop endfacet - facet normal 0.65901 0.752134 0 + facet normal 0.336892 -0.941543 0 outer loop - vertex -2.44446 -37.7112 0 - vertex -2.20592 -37.9202 -0.2 - vertex -2.44446 -37.7112 -0.2 + vertex 5.04571 -34.678 0 + vertex 4.11511 -35.011 -3 + vertex 5.04571 -34.678 -3 endloop endfacet - facet normal 0.724655 0.689112 0 + facet normal 0.557528 -0.830158 0 outer loop - vertex -2.44446 -37.7112 0 - vertex -2.66982 -37.4742 -0.2 - vertex -2.66982 -37.4742 0 + vertex 5.04571 -34.678 -3 + vertex 5.71313 -34.2297 0 + vertex 5.04571 -34.678 0 endloop endfacet - facet normal 0.724655 0.689112 0 + facet normal 0.557528 -0.830158 0 outer loop - vertex -2.66982 -37.4742 -0.2 - vertex -2.44446 -37.7112 0 - vertex -2.44446 -37.7112 -0.2 + vertex 5.71313 -34.2297 0 + vertex 5.04571 -34.678 -3 + vertex 5.71313 -34.2297 -3 endloop endfacet - facet normal 0.779827 0.625996 0 + facet normal 0.786383 -0.61774 0 outer loop - vertex -2.66982 -37.4742 0 - vertex -2.88099 -37.2112 -0.2 - vertex -2.88099 -37.2112 0 + vertex 5.71313 -34.2297 0 + vertex 6.30534 -33.4759 -3 + vertex 6.30534 -33.4759 0 endloop endfacet - facet normal 0.779827 0.625996 0 + facet normal 0.786383 -0.61774 0 outer loop - vertex -2.88099 -37.2112 -0.2 - vertex -2.66982 -37.4742 0 - vertex -2.66982 -37.4742 -0.2 + vertex 6.30534 -33.4759 -3 + vertex 5.71313 -34.2297 0 + vertex 5.71313 -34.2297 -3 endloop endfacet - facet normal 0.826071 0.563566 0 + facet normal 0.906895 -0.421357 0 outer loop - vertex -2.88099 -37.2112 0 - vertex -3.07693 -36.924 -0.2 - vertex -3.07693 -36.924 0 + vertex 6.30534 -33.4759 0 + vertex 7.96204 -29.9101 -3 + vertex 7.96204 -29.9101 0 endloop endfacet - facet normal 0.826071 0.563566 0 + facet normal 0.906895 -0.421357 0 outer loop - vertex -3.07693 -36.924 -0.2 - vertex -2.88099 -37.2112 0 - vertex -2.88099 -37.2112 -0.2 + vertex 7.96204 -29.9101 -3 + vertex 6.30534 -33.4759 0 + vertex 6.30534 -33.4759 -3 endloop endfacet - facet normal 0.864772 0.502165 0 + facet normal 0.929235 -0.36949 0 outer loop - vertex -3.07693 -36.924 0 - vertex -3.25661 -36.6145 -0.2 - vertex -3.25661 -36.6145 0 + vertex 7.96204 -29.9101 0 + vertex 9.7411 -25.4359 -3 + vertex 9.7411 -25.4359 0 endloop endfacet - facet normal 0.864772 0.502165 0 + facet normal 0.929235 -0.36949 0 outer loop - vertex -3.25661 -36.6145 -0.2 - vertex -3.07693 -36.924 0 - vertex -3.07693 -36.924 -0.2 + vertex 9.7411 -25.4359 -3 + vertex 7.96204 -29.9101 0 + vertex 7.96204 -29.9101 -3 endloop endfacet - facet normal 0.897098 0.441832 0 + facet normal 0.962546 -0.271117 0 outer loop - vertex -3.25661 -36.6145 0 - vertex -3.41901 -36.2848 -0.2 - vertex -3.41901 -36.2848 0 + vertex 9.7411 -25.4359 0 + vertex 10.0775 -24.2416 -3 + vertex 10.0775 -24.2416 0 endloop endfacet - facet normal 0.897098 0.441832 0 + facet normal 0.962546 -0.271117 0 outer loop - vertex -3.41901 -36.2848 -0.2 - vertex -3.25661 -36.6145 0 - vertex -3.25661 -36.6145 -0.2 + vertex 10.0775 -24.2416 -3 + vertex 9.7411 -25.4359 0 + vertex 9.7411 -25.4359 -3 endloop endfacet - facet normal 0.923982 0.382435 0 + facet normal 0.994463 -0.105087 0 outer loop - vertex -3.41901 -36.2848 0 - vertex -3.56309 -35.9367 -0.2 - vertex -3.56309 -35.9367 0 + vertex 10.0775 -24.2416 0 + vertex 10.169 -23.3758 -3 + vertex 10.169 -23.3758 0 endloop endfacet - facet normal 0.923982 0.382435 0 + facet normal 0.994463 -0.105087 0 outer loop - vertex -3.56309 -35.9367 -0.2 - vertex -3.41901 -36.2848 0 - vertex -3.41901 -36.2848 -0.2 + vertex 10.169 -23.3758 -3 + vertex 10.0775 -24.2416 0 + vertex 10.0775 -24.2416 -3 endloop endfacet - facet normal 0.946149 0.323732 0 + facet normal 0.988121 0.153677 0 outer loop - vertex -3.56309 -35.9367 0 - vertex -3.68783 -35.5721 -0.2 - vertex -3.68783 -35.5721 0 + vertex 10.169 -23.3758 0 + vertex 10.0454 -22.5812 -3 + vertex 10.0454 -22.5812 0 endloop endfacet - facet normal 0.946149 0.323732 0 + facet normal 0.988121 0.153677 0 outer loop - vertex -3.68783 -35.5721 -0.2 - vertex -3.56309 -35.9367 0 - vertex -3.56309 -35.9367 -0.2 + vertex 10.0454 -22.5812 -3 + vertex 10.169 -23.3758 0 + vertex 10.169 -23.3758 -3 endloop endfacet - facet normal 0.964131 0.265426 0 + facet normal 0.857617 0.514289 0 outer loop - vertex -3.68783 -35.5721 0 - vertex -3.79219 -35.193 -0.2 - vertex -3.79219 -35.193 0 + vertex 10.0454 -22.5812 0 + vertex 9.69979 -22.0048 -3 + vertex 9.69979 -22.0048 0 endloop endfacet - facet normal 0.964131 0.265426 0 + facet normal 0.857617 0.514289 0 outer loop - vertex -3.79219 -35.193 -0.2 - vertex -3.68783 -35.5721 0 - vertex -3.68783 -35.5721 -0.2 + vertex 9.69979 -22.0048 -3 + vertex 10.0454 -22.5812 0 + vertex 10.0454 -22.5812 -3 endloop endfacet - facet normal 0.978298 0.207204 0 + facet normal 0.558467 0.829527 -0 outer loop - vertex -3.79219 -35.193 0 - vertex -3.87516 -34.8013 -0.2 - vertex -3.87516 -34.8013 0 + vertex 9.69979 -22.0048 -3 + vertex 9.16984 -21.6481 0 + vertex 9.69979 -22.0048 0 endloop endfacet - facet normal 0.978298 0.207204 0 + facet normal 0.558467 0.829527 0 outer loop - vertex -3.87516 -34.8013 -0.2 - vertex -3.79219 -35.193 0 - vertex -3.79219 -35.193 -0.2 + vertex 9.16984 -21.6481 0 + vertex 9.69979 -22.0048 -3 + vertex 9.16984 -21.6481 -3 endloop endfacet - facet normal 0.988873 0.148763 0 + facet normal 0.196985 0.980407 -0 outer loop - vertex -3.87516 -34.8013 0 - vertex -3.93569 -34.3989 -0.2 - vertex -3.93569 -34.3989 0 + vertex 9.16984 -21.6481 -3 + vertex 8.49325 -21.5121 0 + vertex 9.16984 -21.6481 0 endloop endfacet - facet normal 0.988873 0.148763 0 + facet normal 0.196985 0.980407 0 outer loop - vertex -3.93569 -34.3989 -0.2 - vertex -3.87516 -34.8013 0 - vertex -3.87516 -34.8013 -0.2 + vertex 8.49325 -21.5121 0 + vertex 9.16984 -21.6481 -3 + vertex 8.49325 -21.5121 -3 endloop endfacet - facet normal 0.995959 0.0898073 0 + facet normal -0.109065 0.994035 0 outer loop - vertex -3.93569 -34.3989 0 - vertex -3.97277 -33.9877 -0.2 - vertex -3.97277 -33.9877 0 + vertex 8.49325 -21.5121 -3 + vertex 7.70773 -21.5983 0 + vertex 8.49325 -21.5121 0 endloop endfacet - facet normal 0.995959 0.0898073 0 + facet normal -0.109065 0.994035 0 outer loop - vertex -3.97277 -33.9877 -0.2 - vertex -3.93569 -34.3989 0 - vertex -3.93569 -34.3989 -0.2 + vertex 7.70773 -21.5983 0 + vertex 8.49325 -21.5121 -3 + vertex 7.70773 -21.5983 -3 endloop endfacet - facet normal 0.999547 0.0300979 0 + facet normal -0.270451 -0.962734 0 outer loop - vertex -3.97277 -33.9877 0 - vertex -3.98536 -33.5697 -0.2 - vertex -3.98536 -33.5697 0 + vertex 28.989 -19.2301 -3 + vertex 29.9429 -19.4981 0 + vertex 28.989 -19.2301 0 endloop endfacet - facet normal 0.999547 0.0300979 0 + facet normal -0.270451 -0.962734 -0 outer loop - vertex -3.98536 -33.5697 -0.2 - vertex -3.97277 -33.9877 0 - vertex -3.97277 -33.9877 -0.2 + vertex 29.9429 -19.4981 0 + vertex 28.989 -19.2301 -3 + vertex 29.9429 -19.4981 -3 endloop endfacet - facet normal 0.998925 -0.0463463 0 + facet normal -0.511153 -0.85949 0 outer loop - vertex -3.98536 -33.5697 0 - vertex -3.97004 -33.2395 -0.2 - vertex -3.97004 -33.2395 0 + vertex 29.9429 -19.4981 -3 + vertex 30.7248 -19.9631 0 + vertex 29.9429 -19.4981 0 endloop endfacet - facet normal 0.998925 -0.0463463 0 + facet normal -0.511153 -0.85949 -0 outer loop - vertex -3.97004 -33.2395 -0.2 - vertex -3.98536 -33.5697 0 - vertex -3.98536 -33.5697 -0.2 + vertex 30.7248 -19.9631 0 + vertex 29.9429 -19.4981 -3 + vertex 30.7248 -19.9631 -3 endloop endfacet - facet normal 0.99274 -0.120283 0 + facet normal -0.723919 -0.689885 0 outer loop - vertex -3.97004 -33.2395 0 - vertex -3.92523 -32.8697 -0.2 - vertex -3.92523 -32.8697 0 + vertex 31.3699 -20.64 -3 + vertex 30.7248 -19.9631 0 + vertex 30.7248 -19.9631 -3 endloop endfacet - facet normal 0.99274 -0.120283 0 + facet normal -0.723919 -0.689885 0 outer loop - vertex -3.92523 -32.8697 -0.2 - vertex -3.97004 -33.2395 0 - vertex -3.97004 -33.2395 -0.2 + vertex 30.7248 -19.9631 0 + vertex 31.3699 -20.64 -3 + vertex 31.3699 -20.64 0 endloop endfacet - facet normal 0.984312 -0.176435 0 + facet normal -0.867187 -0.497983 0 outer loop - vertex -3.92523 -32.8697 0 - vertex -3.8527 -32.4651 -0.2 - vertex -3.8527 -32.4651 0 + vertex 31.8086 -21.404 -3 + vertex 31.3699 -20.64 0 + vertex 31.3699 -20.64 -3 endloop endfacet - facet normal 0.984312 -0.176435 0 + facet normal -0.867187 -0.497983 0 outer loop - vertex -3.8527 -32.4651 -0.2 - vertex -3.92523 -32.8697 0 - vertex -3.92523 -32.8697 -0.2 + vertex 31.3699 -20.64 0 + vertex 31.8086 -21.404 -3 + vertex 31.8086 -21.404 0 endloop endfacet - facet normal 0.975291 -0.220925 0 + facet normal -0.971458 -0.237212 0 outer loop - vertex -3.8527 -32.4651 0 - vertex -3.75417 -32.0301 -0.2 - vertex -3.75417 -32.0301 0 + vertex 32.0232 -22.2828 -3 + vertex 31.8086 -21.404 0 + vertex 31.8086 -21.404 -3 endloop endfacet - facet normal 0.975291 -0.220925 0 + facet normal -0.971458 -0.237212 0 outer loop - vertex -3.75417 -32.0301 -0.2 - vertex -3.8527 -32.4651 0 - vertex -3.8527 -32.4651 -0.2 + vertex 31.8086 -21.404 0 + vertex 32.0232 -22.2828 -3 + vertex 32.0232 -22.2828 0 endloop endfacet - facet normal 0.96184 -0.273613 0 + facet normal -0.999998 -0.00210454 0 outer loop - vertex -3.75417 -32.0301 0 - vertex -3.4861 -31.0878 -0.2 - vertex -3.4861 -31.0878 0 + vertex 32.0255 -23.3848 -3 + vertex 32.0232 -22.2828 0 + vertex 32.0232 -22.2828 -3 endloop endfacet - facet normal 0.96184 -0.273613 0 + facet normal -0.999998 -0.00210454 0 outer loop - vertex -3.4861 -31.0878 -0.2 - vertex -3.75417 -32.0301 0 - vertex -3.75417 -32.0301 -0.2 + vertex 32.0232 -22.2828 0 + vertex 32.0255 -23.3848 -3 + vertex 32.0255 -23.3848 0 endloop endfacet - facet normal 0.944354 -0.328931 0 + facet normal -0.990595 0.136824 0 outer loop - vertex -3.4861 -31.0878 0 - vertex -3.135 -30.0798 -0.2 - vertex -3.135 -30.0798 0 + vertex 31.8275 -24.8188 -3 + vertex 32.0255 -23.3848 0 + vertex 32.0255 -23.3848 -3 endloop endfacet - facet normal 0.944354 -0.328931 0 + facet normal -0.990595 0.136824 0 outer loop - vertex -3.135 -30.0798 -0.2 - vertex -3.4861 -31.0878 0 - vertex -3.4861 -31.0878 -0.2 + vertex 32.0255 -23.3848 0 + vertex 31.8275 -24.8188 -3 + vertex 31.8275 -24.8188 0 endloop endfacet - facet normal 0.926769 -0.375632 0 + facet normal -0.978641 0.205575 0 outer loop - vertex -3.135 -30.0798 0 - vertex -2.71481 -29.043 -0.2 - vertex -2.71481 -29.043 0 + vertex 31.4974 -26.3899 -3 + vertex 31.8275 -24.8188 0 + vertex 31.8275 -24.8188 -3 endloop endfacet - facet normal 0.926769 -0.375632 0 + facet normal -0.978641 0.205575 0 outer loop - vertex -2.71481 -29.043 -0.2 - vertex -3.135 -30.0798 0 - vertex -3.135 -30.0798 -0.2 + vertex 31.8275 -24.8188 0 + vertex 31.4974 -26.3899 -3 + vertex 31.4974 -26.3899 0 endloop endfacet - facet normal 0.907733 -0.419549 0 + facet normal -0.869264 0.494348 0 outer loop - vertex -2.71481 -29.043 0 - vertex -2.23947 -28.0146 -0.2 - vertex -2.23947 -28.0146 0 + vertex 31.2318 -26.857 -3 + vertex 31.4974 -26.3899 0 + vertex 31.4974 -26.3899 -3 endloop endfacet - facet normal 0.907733 -0.419549 0 + facet normal -0.869264 0.494348 0 outer loop - vertex -2.23947 -28.0146 -0.2 - vertex -2.71481 -29.043 0 - vertex -2.71481 -29.043 -0.2 + vertex 31.4974 -26.3899 0 + vertex 31.2318 -26.857 -3 + vertex 31.2318 -26.857 0 endloop endfacet - facet normal 0.885263 -0.46509 0 + facet normal -0.557816 0.829965 0 outer loop - vertex -2.23947 -28.0146 0 - vertex -1.72295 -27.0315 -0.2 - vertex -1.72295 -27.0315 0 + vertex 31.2318 -26.857 -3 + vertex 30.7817 -27.1595 0 + vertex 31.2318 -26.857 0 endloop endfacet - facet normal 0.885263 -0.46509 0 + facet normal -0.557816 0.829965 0 outer loop - vertex -1.72295 -27.0315 -0.2 - vertex -2.23947 -28.0146 0 - vertex -2.23947 -28.0146 -0.2 + vertex 30.7817 -27.1595 0 + vertex 31.2318 -26.857 -3 + vertex 30.7817 -27.1595 -3 endloop endfacet - facet normal 0.8644 -0.502806 0 + facet normal -0.13929 0.990252 0 outer loop - vertex -1.72295 -27.0315 0 - vertex -1.45361 -26.5684 -0.2 - vertex -1.45361 -26.5684 0 + vertex 30.7817 -27.1595 -3 + vertex 28.9763 -27.4135 0 + vertex 30.7817 -27.1595 0 endloop endfacet - facet normal 0.8644 -0.502806 0 + facet normal -0.13929 0.990252 0 outer loop - vertex -1.45361 -26.5684 -0.2 - vertex -1.72295 -27.0315 0 - vertex -1.72295 -27.0315 -0.2 + vertex 28.9763 -27.4135 0 + vertex 30.7817 -27.1595 -3 + vertex 28.9763 -27.4135 -3 endloop endfacet - facet normal 0.847345 -0.531043 0 + facet normal -0.00668289 0.999978 0 outer loop - vertex -1.45361 -26.5684 0 - vertex -1.17919 -26.1306 -0.2 - vertex -1.17919 -26.1306 0 + vertex 28.9763 -27.4135 -3 + vertex 25.3774 -27.4375 0 + vertex 28.9763 -27.4135 0 endloop endfacet - facet normal 0.847345 -0.531043 0 + facet normal -0.00668289 0.999978 0 outer loop - vertex -1.17919 -26.1306 -0.2 - vertex -1.45361 -26.5684 0 - vertex -1.45361 -26.5684 -0.2 - endloop - endfacet - facet normal 0.82644 -0.563025 0 - outer loop - vertex -1.17919 -26.1306 0 - vertex -0.875463 -25.6847 -0.2 - vertex -0.875463 -25.6847 0 - endloop - endfacet - facet normal 0.82644 -0.563025 0 - outer loop - vertex -0.875463 -25.6847 -0.2 - vertex -1.17919 -26.1306 0 - vertex -1.17919 -26.1306 -0.2 - endloop - endfacet - facet normal 0.8045 -0.593952 0 - outer loop - vertex -0.875463 -25.6847 0 - vertex -0.546472 -25.2391 -0.2 - vertex -0.546472 -25.2391 0 - endloop - endfacet - facet normal 0.8045 -0.593952 0 - outer loop - vertex -0.546472 -25.2391 -0.2 - vertex -0.875463 -25.6847 0 - vertex -0.875463 -25.6847 -0.2 - endloop - endfacet - facet normal 0.783077 -0.621924 0 - outer loop - vertex -0.546472 -25.2391 0 - vertex -0.194025 -24.7953 -0.2 - vertex -0.194025 -24.7953 0 - endloop - endfacet - facet normal 0.783077 -0.621924 0 - outer loop - vertex -0.194025 -24.7953 -0.2 - vertex -0.546472 -25.2391 0 - vertex -0.546472 -25.2391 -0.2 - endloop - endfacet - facet normal 0.762077 -0.647486 0 - outer loop - vertex -0.194025 -24.7953 0 - vertex 0.18007 -24.355 -0.2 - vertex 0.18007 -24.355 0 - endloop - endfacet - facet normal 0.762077 -0.647486 0 - outer loop - vertex 0.18007 -24.355 -0.2 - vertex -0.194025 -24.7953 0 - vertex -0.194025 -24.7953 -0.2 - endloop - endfacet - facet normal 0.74138 -0.671085 0 - outer loop - vertex 0.18007 -24.355 0 - vertex 0.574011 -23.9198 -0.2 - vertex 0.574011 -23.9198 0 - endloop - endfacet - facet normal 0.74138 -0.671085 0 - outer loop - vertex 0.574011 -23.9198 -0.2 - vertex 0.18007 -24.355 0 - vertex 0.18007 -24.355 -0.2 - endloop - endfacet - facet normal 0.720855 -0.693086 0 - outer loop - vertex 0.574011 -23.9198 0 - vertex 0.985991 -23.4913 -0.2 - vertex 0.985991 -23.4913 0 - endloop - endfacet - facet normal 0.720855 -0.693086 0 - outer loop - vertex 0.985991 -23.4913 -0.2 - vertex 0.574011 -23.9198 0 - vertex 0.574011 -23.9198 -0.2 - endloop - endfacet - facet normal 0.700344 -0.713805 0 - outer loop - vertex 0.985991 -23.4913 -0.2 - vertex 1.4142 -23.0712 0 - vertex 0.985991 -23.4913 0 - endloop - endfacet - facet normal 0.700344 -0.713805 0 - outer loop - vertex 1.4142 -23.0712 0 - vertex 0.985991 -23.4913 -0.2 - vertex 1.4142 -23.0712 -0.2 - endloop - endfacet - facet normal 0.679685 -0.733504 0 - outer loop - vertex 1.4142 -23.0712 -0.2 - vertex 1.85684 -22.661 0 - vertex 1.4142 -23.0712 0 - endloop - endfacet - facet normal 0.679685 -0.733504 0 - outer loop - vertex 1.85684 -22.661 0 - vertex 1.4142 -23.0712 -0.2 - vertex 1.85684 -22.661 -0.2 - endloop - endfacet - facet normal 0.658698 -0.752407 0 - outer loop - vertex 1.85684 -22.661 -0.2 - vertex 2.31211 -22.2625 0 - vertex 1.85684 -22.661 0 - endloop - endfacet - facet normal 0.658698 -0.752407 0 - outer loop - vertex 2.31211 -22.2625 0 - vertex 1.85684 -22.661 -0.2 - vertex 2.31211 -22.2625 -0.2 - endloop - endfacet - facet normal 0.637189 -0.770708 0 - outer loop - vertex 2.31211 -22.2625 -0.2 - vertex 2.77819 -21.8771 0 - vertex 2.31211 -22.2625 0 - endloop - endfacet - facet normal 0.637189 -0.770708 0 - outer loop - vertex 2.77819 -21.8771 0 - vertex 2.31211 -22.2625 -0.2 - vertex 2.77819 -21.8771 -0.2 - endloop - endfacet - facet normal 0.614941 -0.788573 0 - outer loop - vertex 2.77819 -21.8771 -0.2 - vertex 3.25328 -21.5067 0 - vertex 2.77819 -21.8771 0 - endloop - endfacet - facet normal 0.614941 -0.788573 0 - outer loop - vertex 3.25328 -21.5067 0 - vertex 2.77819 -21.8771 -0.2 - vertex 3.25328 -21.5067 -0.2 - endloop - endfacet - facet normal 0.591711 -0.80615 0 - outer loop - vertex 3.25328 -21.5067 -0.2 - vertex 3.73558 -21.1527 0 - vertex 3.25328 -21.5067 0 - endloop - endfacet - facet normal 0.591711 -0.80615 0 - outer loop - vertex 3.73558 -21.1527 0 - vertex 3.25328 -21.5067 -0.2 - vertex 3.73558 -21.1527 -0.2 - endloop - endfacet - facet normal 0.567228 -0.823561 0 - outer loop - vertex 3.73558 -21.1527 -0.2 - vertex 4.22328 -20.8168 0 - vertex 3.73558 -21.1527 0 - endloop - endfacet - facet normal 0.567228 -0.823561 0 - outer loop - vertex 4.22328 -20.8168 0 - vertex 3.73558 -21.1527 -0.2 - vertex 4.22328 -20.8168 -0.2 - endloop - endfacet - facet normal 0.541167 -0.840915 0 - outer loop - vertex 4.22328 -20.8168 -0.2 - vertex 4.71458 -20.5006 0 - vertex 4.22328 -20.8168 0 - endloop - endfacet - facet normal 0.541167 -0.840915 0 - outer loop - vertex 4.71458 -20.5006 0 - vertex 4.22328 -20.8168 -0.2 - vertex 4.71458 -20.5006 -0.2 - endloop - endfacet - facet normal 0.513171 -0.858287 0 - outer loop - vertex 4.71458 -20.5006 -0.2 - vertex 5.20766 -20.2058 0 - vertex 4.71458 -20.5006 0 - endloop - endfacet - facet normal 0.513171 -0.858287 0 - outer loop - vertex 5.20766 -20.2058 0 - vertex 4.71458 -20.5006 -0.2 - vertex 5.20766 -20.2058 -0.2 - endloop - endfacet - facet normal 0.482795 -0.875733 0 - outer loop - vertex 5.20766 -20.2058 -0.2 - vertex 5.70074 -19.9339 0 - vertex 5.20766 -20.2058 0 - endloop - endfacet - facet normal 0.482795 -0.875733 0 - outer loop - vertex 5.70074 -19.9339 0 - vertex 5.20766 -20.2058 -0.2 - vertex 5.70074 -19.9339 -0.2 - endloop - endfacet - facet normal 0.452672 -0.891677 0 - outer loop - vertex 5.70074 -19.9339 -0.2 - vertex 6.07737 -19.7427 0 - vertex 5.70074 -19.9339 0 - endloop - endfacet - facet normal 0.452672 -0.891677 0 - outer loop - vertex 6.07737 -19.7427 0 - vertex 5.70074 -19.9339 -0.2 - vertex 6.07737 -19.7427 -0.2 - endloop - endfacet - facet normal 0.411982 -0.911192 0 - outer loop - vertex 6.07737 -19.7427 -0.2 - vertex 6.41984 -19.5879 0 - vertex 6.07737 -19.7427 0 - endloop - endfacet - facet normal 0.411982 -0.911192 0 - outer loop - vertex 6.41984 -19.5879 0 - vertex 6.07737 -19.7427 -0.2 - vertex 6.41984 -19.5879 -0.2 - endloop - endfacet - facet normal 0.352601 -0.935774 0 - outer loop - vertex 6.41984 -19.5879 -0.2 - vertex 6.74616 -19.4649 0 - vertex 6.41984 -19.5879 0 - endloop - endfacet - facet normal 0.352601 -0.935774 0 - outer loop - vertex 6.74616 -19.4649 0 - vertex 6.41984 -19.5879 -0.2 - vertex 6.74616 -19.4649 -0.2 - endloop - endfacet - facet normal 0.279545 -0.960133 0 - outer loop - vertex 6.74616 -19.4649 -0.2 - vertex 7.07441 -19.3694 0 - vertex 6.74616 -19.4649 0 - endloop - endfacet - facet normal 0.279545 -0.960133 0 - outer loop - vertex 7.07441 -19.3694 0 - vertex 6.74616 -19.4649 -0.2 - vertex 7.07441 -19.3694 -0.2 - endloop - endfacet - facet normal 0.204293 -0.97891 0 - outer loop - vertex 7.07441 -19.3694 -0.2 - vertex 7.42262 -19.2967 0 - vertex 7.07441 -19.3694 0 - endloop - endfacet - facet normal 0.204293 -0.97891 0 - outer loop - vertex 7.42262 -19.2967 0 - vertex 7.07441 -19.3694 -0.2 - vertex 7.42262 -19.2967 -0.2 - endloop - endfacet - facet normal 0.139108 -0.990277 0 - outer loop - vertex 7.42262 -19.2967 -0.2 - vertex 7.80885 -19.2424 0 - vertex 7.42262 -19.2967 0 - endloop - endfacet - facet normal 0.139108 -0.990277 0 - outer loop - vertex 7.80885 -19.2424 0 - vertex 7.42262 -19.2967 -0.2 - vertex 7.80885 -19.2424 -0.2 - endloop - endfacet - facet normal 0.0740931 -0.997251 0 - outer loop - vertex 7.80885 -19.2424 -0.2 - vertex 8.76754 -19.1712 0 - vertex 7.80885 -19.2424 0 - endloop - endfacet - facet normal 0.0740931 -0.997251 0 - outer loop - vertex 8.76754 -19.1712 0 - vertex 7.80885 -19.2424 -0.2 - vertex 8.76754 -19.1712 -0.2 - endloop - endfacet - facet normal 0.0317962 -0.999494 0 - outer loop - vertex 8.76754 -19.1712 -0.2 - vertex 9.72114 -19.1409 0 - vertex 8.76754 -19.1712 0 - endloop - endfacet - facet normal 0.0317962 -0.999494 0 - outer loop - vertex 9.72114 -19.1409 0 - vertex 8.76754 -19.1712 -0.2 - vertex 9.72114 -19.1409 -0.2 - endloop - endfacet - facet normal -0.0248159 -0.999692 0 - outer loop - vertex 9.72114 -19.1409 -0.2 - vertex 10.0711 -19.1496 0 - vertex 9.72114 -19.1409 0 - endloop - endfacet - facet normal -0.0248159 -0.999692 -0 - outer loop - vertex 10.0711 -19.1496 0 - vertex 9.72114 -19.1409 -0.2 - vertex 10.0711 -19.1496 -0.2 - endloop - endfacet - facet normal -0.0963554 -0.995347 0 - outer loop - vertex 10.0711 -19.1496 -0.2 - vertex 10.3591 -19.1774 0 - vertex 10.0711 -19.1496 0 - endloop - endfacet - facet normal -0.0963554 -0.995347 -0 - outer loop - vertex 10.3591 -19.1774 0 - vertex 10.0711 -19.1496 -0.2 - vertex 10.3591 -19.1774 -0.2 - endloop - endfacet - facet normal -0.199823 -0.979832 0 - outer loop - vertex 10.3591 -19.1774 -0.2 - vertex 10.602 -19.227 0 - vertex 10.3591 -19.1774 0 - endloop - endfacet - facet normal -0.199823 -0.979832 -0 - outer loop - vertex 10.602 -19.227 0 - vertex 10.3591 -19.1774 -0.2 - vertex 10.602 -19.227 -0.2 - endloop - endfacet - facet normal -0.324456 -0.945901 0 - outer loop - vertex 10.602 -19.227 -0.2 - vertex 10.8168 -19.3006 0 - vertex 10.602 -19.227 0 - endloop - endfacet - facet normal -0.324456 -0.945901 -0 - outer loop - vertex 10.8168 -19.3006 0 - vertex 10.602 -19.227 -0.2 - vertex 10.8168 -19.3006 -0.2 - endloop - endfacet - facet normal -0.441937 -0.897046 0 - outer loop - vertex 10.8168 -19.3006 -0.2 - vertex 11.0203 -19.4009 0 - vertex 10.8168 -19.3006 0 - endloop - endfacet - facet normal -0.441937 -0.897046 -0 - outer loop - vertex 11.0203 -19.4009 0 - vertex 10.8168 -19.3006 -0.2 - vertex 11.0203 -19.4009 -0.2 - endloop - endfacet - facet normal -0.525875 -0.850562 0 - outer loop - vertex 11.0203 -19.4009 -0.2 - vertex 11.2294 -19.5302 0 - vertex 11.0203 -19.4009 0 - endloop - endfacet - facet normal -0.525875 -0.850562 -0 - outer loop - vertex 11.2294 -19.5302 0 - vertex 11.0203 -19.4009 -0.2 - vertex 11.2294 -19.5302 -0.2 - endloop - endfacet - facet normal -0.518008 -0.855376 0 - outer loop - vertex 11.2294 -19.5302 -0.2 - vertex 11.5538 -19.7266 0 - vertex 11.2294 -19.5302 0 - endloop - endfacet - facet normal -0.518008 -0.855376 -0 - outer loop - vertex 11.5538 -19.7266 0 - vertex 11.2294 -19.5302 -0.2 - vertex 11.5538 -19.7266 -0.2 - endloop - endfacet - facet normal -0.370976 -0.928642 0 - outer loop - vertex 11.5538 -19.7266 -0.2 - vertex 11.7902 -19.8211 0 - vertex 11.5538 -19.7266 0 - endloop - endfacet - facet normal -0.370976 -0.928642 -0 - outer loop - vertex 11.7902 -19.8211 0 - vertex 11.5538 -19.7266 -0.2 - vertex 11.7902 -19.8211 -0.2 - endloop - endfacet - facet normal -0.111982 -0.99371 0 - outer loop - vertex 11.7902 -19.8211 -0.2 - vertex 11.881 -19.8313 0 - vertex 11.7902 -19.8211 0 - endloop - endfacet - facet normal -0.111982 -0.99371 -0 - outer loop - vertex 11.881 -19.8313 0 - vertex 11.7902 -19.8211 -0.2 - vertex 11.881 -19.8313 -0.2 - endloop - endfacet - facet normal 0.179863 -0.983692 0 - outer loop - vertex 11.881 -19.8313 -0.2 - vertex 11.9563 -19.8175 0 - vertex 11.881 -19.8313 0 - endloop - endfacet - facet normal 0.179863 -0.983692 0 - outer loop - vertex 11.9563 -19.8175 0 - vertex 11.881 -19.8313 -0.2 - vertex 11.9563 -19.8175 -0.2 - endloop - endfacet - facet normal 0.514293 -0.857615 0 - outer loop - vertex 11.9563 -19.8175 -0.2 - vertex 12.0185 -19.7802 0 - vertex 11.9563 -19.8175 0 - endloop - endfacet - facet normal 0.514293 -0.857615 0 - outer loop - vertex 12.0185 -19.7802 0 - vertex 11.9563 -19.8175 -0.2 - vertex 12.0185 -19.7802 -0.2 - endloop - endfacet - facet normal 0.762299 -0.647226 0 - outer loop - vertex 12.0185 -19.7802 0 - vertex 12.0697 -19.7199 -0.2 - vertex 12.0697 -19.7199 0 - endloop - endfacet - facet normal 0.762299 -0.647226 0 - outer loop - vertex 12.0697 -19.7199 -0.2 - vertex 12.0185 -19.7802 0 - vertex 12.0185 -19.7802 -0.2 - endloop - endfacet - facet normal 0.887752 -0.460323 0 - outer loop - vertex 12.0697 -19.7199 0 - vertex 12.2803 -19.3138 -0.2 - vertex 12.2803 -19.3138 0 - endloop - endfacet - facet normal 0.887752 -0.460323 0 - outer loop - vertex 12.2803 -19.3138 -0.2 - vertex 12.0697 -19.7199 0 - vertex 12.0697 -19.7199 -0.2 - endloop - endfacet - facet normal 0.914794 -0.403921 0 - outer loop - vertex 12.2803 -19.3138 0 - vertex 12.5806 -18.6336 -0.2 - vertex 12.5806 -18.6336 0 - endloop - endfacet - facet normal 0.914794 -0.403921 0 - outer loop - vertex 12.5806 -18.6336 -0.2 - vertex 12.2803 -19.3138 0 - vertex 12.2803 -19.3138 -0.2 - endloop - endfacet - facet normal 0.927919 -0.372782 0 - outer loop - vertex 12.5806 -18.6336 0 - vertex 13.2984 -16.8469 -0.2 - vertex 13.2984 -16.8469 0 - endloop - endfacet - facet normal 0.927919 -0.372782 0 - outer loop - vertex 13.2984 -16.8469 -0.2 - vertex 12.5806 -18.6336 0 - vertex 12.5806 -18.6336 -0.2 - endloop - endfacet - facet normal 0.936103 -0.351727 0 - outer loop - vertex 13.2984 -16.8469 0 - vertex 13.6397 -15.9386 -0.2 - vertex 13.6397 -15.9386 0 - endloop - endfacet - facet normal 0.936103 -0.351727 0 - outer loop - vertex 13.6397 -15.9386 -0.2 - vertex 13.2984 -16.8469 0 - vertex 13.2984 -16.8469 -0.2 - endloop - endfacet - facet normal 0.9425 -0.334207 0 - outer loop - vertex 13.6397 -15.9386 0 - vertex 13.9185 -15.1524 -0.2 - vertex 13.9185 -15.1524 0 - endloop - endfacet - facet normal 0.9425 -0.334207 0 - outer loop - vertex 13.9185 -15.1524 -0.2 - vertex 13.6397 -15.9386 0 - vertex 13.6397 -15.9386 -0.2 - endloop - endfacet - facet normal 0.953687 -0.300802 0 - outer loop - vertex 13.9185 -15.1524 0 - vertex 14.0967 -14.5873 -0.2 - vertex 14.0967 -14.5873 0 - endloop - endfacet - facet normal 0.953687 -0.300802 0 - outer loop - vertex 14.0967 -14.5873 -0.2 - vertex 13.9185 -15.1524 0 - vertex 13.9185 -15.1524 -0.2 - endloop - endfacet - facet normal 0.97364 -0.22809 0 - outer loop - vertex 14.0967 -14.5873 0 - vertex 14.1362 -14.4186 -0.2 - vertex 14.1362 -14.4186 0 - endloop - endfacet - facet normal 0.97364 -0.22809 0 - outer loop - vertex 14.1362 -14.4186 -0.2 - vertex 14.0967 -14.5873 0 - vertex 14.0967 -14.5873 -0.2 - endloop - endfacet - facet normal 0.999999 -0.00127602 0 - outer loop - vertex 14.1362 -14.4186 0 - vertex 14.1363 -14.3424 -0.2 - vertex 14.1363 -14.3424 0 - endloop - endfacet - facet normal 0.999999 -0.00127602 0 - outer loop - vertex 14.1363 -14.3424 -0.2 - vertex 14.1362 -14.4186 0 - vertex 14.1362 -14.4186 -0.2 - endloop - endfacet - facet normal 0.566913 0.823778 -0 - outer loop - vertex 14.1363 -14.3424 -0.2 - vertex 14.0881 -14.3092 0 - vertex 14.1363 -14.3424 0 - endloop - endfacet - facet normal 0.566913 0.823778 0 - outer loop - vertex 14.0881 -14.3092 0 - vertex 14.1363 -14.3424 -0.2 - vertex 14.0881 -14.3092 -0.2 - endloop - endfacet - facet normal 0.351025 0.936366 -0 - outer loop - vertex 14.0881 -14.3092 -0.2 - vertex 14.0003 -14.2763 0 - vertex 14.0881 -14.3092 0 - endloop - endfacet - facet normal 0.351025 0.936366 0 - outer loop - vertex 14.0003 -14.2763 0 - vertex 14.0881 -14.3092 -0.2 - vertex 14.0003 -14.2763 -0.2 - endloop - endfacet - facet normal 0.218251 0.975893 -0 - outer loop - vertex 14.0003 -14.2763 -0.2 - vertex 13.7222 -14.2141 0 - vertex 14.0003 -14.2763 0 - endloop - endfacet - facet normal 0.218251 0.975893 0 - outer loop - vertex 13.7222 -14.2141 0 - vertex 14.0003 -14.2763 -0.2 - vertex 13.7222 -14.2141 -0.2 - endloop - endfacet - facet normal 0.134641 0.990894 -0 - outer loop - vertex 13.7222 -14.2141 -0.2 - vertex 13.3346 -14.1615 0 - vertex 13.7222 -14.2141 0 - endloop - endfacet - facet normal 0.134641 0.990894 0 - outer loop - vertex 13.3346 -14.1615 0 - vertex 13.7222 -14.2141 -0.2 - vertex 13.3346 -14.1615 -0.2 - endloop - endfacet - facet normal 0.0805571 0.99675 -0 - outer loop - vertex 13.3346 -14.1615 -0.2 - vertex 12.8698 -14.1239 0 - vertex 13.3346 -14.1615 0 - endloop - endfacet - facet normal 0.0805571 0.99675 0 - outer loop - vertex 12.8698 -14.1239 0 - vertex 13.3346 -14.1615 -0.2 - vertex 12.8698 -14.1239 -0.2 - endloop - endfacet - facet normal 0.256285 0.966601 -0 - outer loop - vertex 12.8698 -14.1239 -0.2 - vertex 12.7363 -14.0885 0 - vertex 12.8698 -14.1239 0 - endloop - endfacet - facet normal 0.256285 0.966601 0 - outer loop - vertex 12.7363 -14.0885 0 - vertex 12.8698 -14.1239 -0.2 - vertex 12.7363 -14.0885 -0.2 - endloop - endfacet - facet normal 0.544571 0.838715 -0 - outer loop - vertex 12.7363 -14.0885 -0.2 - vertex 12.6087 -14.0056 0 - vertex 12.7363 -14.0885 0 - endloop - endfacet - facet normal 0.544571 0.838715 0 - outer loop - vertex 12.6087 -14.0056 0 - vertex 12.7363 -14.0885 -0.2 - vertex 12.6087 -14.0056 -0.2 - endloop - endfacet - facet normal 0.739657 0.672985 0 - outer loop - vertex 12.6087 -14.0056 0 - vertex 12.5013 -13.8876 -0.2 - vertex 12.5013 -13.8876 0 - endloop - endfacet - facet normal 0.739657 0.672985 0 - outer loop - vertex 12.5013 -13.8876 -0.2 - vertex 12.6087 -14.0056 0 - vertex 12.6087 -14.0056 -0.2 - endloop - endfacet - facet normal 0.888712 0.458466 0 - outer loop - vertex 12.5013 -13.8876 0 - vertex 12.4287 -13.7469 -0.2 - vertex 12.4287 -13.7469 0 - endloop - endfacet - facet normal 0.888712 0.458466 0 - outer loop - vertex 12.4287 -13.7469 -0.2 - vertex 12.5013 -13.8876 0 - vertex 12.5013 -13.8876 -0.2 - endloop - endfacet - facet normal 0.969282 0.245953 0 - outer loop - vertex 12.4287 -13.7469 0 - vertex 12.3997 -13.6324 -0.2 - vertex 12.3997 -13.6324 0 - endloop - endfacet - facet normal 0.969282 0.245953 0 - outer loop - vertex 12.3997 -13.6324 -0.2 - vertex 12.4287 -13.7469 0 - vertex 12.4287 -13.7469 -0.2 - endloop - endfacet - facet normal 0.995788 0.0916817 0 - outer loop - vertex 12.3997 -13.6324 0 - vertex 12.3889 -13.5153 -0.2 - vertex 12.3889 -13.5153 0 - endloop - endfacet - facet normal 0.995788 0.0916817 0 - outer loop - vertex 12.3889 -13.5153 -0.2 - vertex 12.3997 -13.6324 0 - vertex 12.3997 -13.6324 -0.2 - endloop - endfacet - facet normal 0.99207 -0.12569 0 - outer loop - vertex 12.3889 -13.5153 0 - vertex 12.419 -13.2773 -0.2 - vertex 12.419 -13.2773 0 - endloop - endfacet - facet normal 0.99207 -0.12569 0 - outer loop - vertex 12.419 -13.2773 -0.2 - vertex 12.3889 -13.5153 0 - vertex 12.3889 -13.5153 -0.2 - endloop - endfacet - facet normal 0.929521 -0.368768 0 - outer loop - vertex 12.419 -13.2773 0 - vertex 12.513 -13.0405 -0.2 - vertex 12.513 -13.0405 0 - endloop - endfacet - facet normal 0.929521 -0.368768 0 - outer loop - vertex 12.513 -13.0405 -0.2 - vertex 12.419 -13.2773 0 - vertex 12.419 -13.2773 -0.2 - endloop - endfacet - facet normal 0.832694 -0.553733 0 - outer loop - vertex 12.513 -13.0405 0 - vertex 12.6645 -12.8127 -0.2 - vertex 12.6645 -12.8127 0 - endloop - endfacet - facet normal 0.832694 -0.553733 0 - outer loop - vertex 12.6645 -12.8127 -0.2 - vertex 12.513 -13.0405 0 - vertex 12.513 -13.0405 -0.2 - endloop - endfacet - facet normal 0.721168 -0.69276 0 - outer loop - vertex 12.6645 -12.8127 0 - vertex 12.8673 -12.6015 -0.2 - vertex 12.8673 -12.6015 0 - endloop - endfacet - facet normal 0.721168 -0.69276 0 - outer loop - vertex 12.8673 -12.6015 -0.2 - vertex 12.6645 -12.8127 0 - vertex 12.6645 -12.8127 -0.2 - endloop - endfacet - facet normal 0.601691 -0.798729 0 - outer loop - vertex 12.8673 -12.6015 -0.2 - vertex 13.1153 -12.4148 0 - vertex 12.8673 -12.6015 0 - endloop - endfacet - facet normal 0.601691 -0.798729 0 - outer loop - vertex 13.1153 -12.4148 0 - vertex 12.8673 -12.6015 -0.2 - vertex 13.1153 -12.4148 -0.2 - endloop - endfacet - facet normal 0.474719 -0.880138 0 - outer loop - vertex 13.1153 -12.4148 -0.2 - vertex 13.4022 -12.26 0 - vertex 13.1153 -12.4148 0 - endloop - endfacet - facet normal 0.474719 -0.880138 0 - outer loop - vertex 13.4022 -12.26 0 - vertex 13.1153 -12.4148 -0.2 - vertex 13.4022 -12.26 -0.2 - endloop - endfacet - facet normal 0.33852 -0.940959 0 - outer loop - vertex 13.4022 -12.26 -0.2 - vertex 13.7217 -12.1451 0 - vertex 13.4022 -12.26 0 - endloop - endfacet - facet normal 0.33852 -0.940959 0 - outer loop - vertex 13.7217 -12.1451 0 - vertex 13.4022 -12.26 -0.2 - vertex 13.7217 -12.1451 -0.2 - endloop - endfacet - facet normal 0.283558 -0.958955 0 - outer loop - vertex 13.7217 -12.1451 -0.2 - vertex 16.811 -11.2316 0 - vertex 13.7217 -12.1451 0 - endloop - endfacet - facet normal 0.283558 -0.958955 0 - outer loop - vertex 16.811 -11.2316 0 - vertex 13.7217 -12.1451 -0.2 - vertex 16.811 -11.2316 -0.2 - endloop - endfacet - facet normal 0.280008 -0.959998 0 - outer loop - vertex 16.811 -11.2316 -0.2 - vertex 17.5824 -11.0066 0 - vertex 16.811 -11.2316 0 - endloop - endfacet - facet normal 0.280008 -0.959998 0 - outer loop - vertex 17.5824 -11.0066 0 - vertex 16.811 -11.2316 -0.2 - vertex 17.5824 -11.0066 -0.2 - endloop - endfacet - facet normal 0.251173 -0.967942 0 - outer loop - vertex 17.5824 -11.0066 -0.2 - vertex 18.2126 -10.843 0 - vertex 17.5824 -11.0066 0 - endloop - endfacet - facet normal 0.251173 -0.967942 0 - outer loop - vertex 18.2126 -10.843 0 - vertex 17.5824 -11.0066 -0.2 - vertex 18.2126 -10.843 -0.2 - endloop - endfacet - facet normal 0.200442 -0.979706 0 - outer loop - vertex 18.2126 -10.843 -0.2 - vertex 18.7132 -10.7406 0 - vertex 18.2126 -10.843 0 - endloop - endfacet - facet normal 0.200442 -0.979706 0 - outer loop - vertex 18.7132 -10.7406 0 - vertex 18.2126 -10.843 -0.2 - vertex 18.7132 -10.7406 -0.2 - endloop - endfacet - facet normal 0.10841 -0.994106 0 - outer loop - vertex 18.7132 -10.7406 -0.2 - vertex 19.0963 -10.6988 0 - vertex 18.7132 -10.7406 0 - endloop - endfacet - facet normal 0.10841 -0.994106 0 - outer loop - vertex 19.0963 -10.6988 0 - vertex 18.7132 -10.7406 -0.2 - vertex 19.0963 -10.6988 -0.2 - endloop - endfacet - facet normal -0.0664596 -0.997789 0 - outer loop - vertex 19.0963 -10.6988 -0.2 - vertex 19.3736 -10.7173 0 - vertex 19.0963 -10.6988 0 - endloop - endfacet - facet normal -0.0664596 -0.997789 -0 - outer loop - vertex 19.3736 -10.7173 0 - vertex 19.0963 -10.6988 -0.2 - vertex 19.3736 -10.7173 -0.2 - endloop - endfacet - facet normal -0.172939 0.984933 0 - outer loop - vertex 8.12348 -21.5274 -0.2 - vertex 7.71946 -21.5983 0 - vertex 8.12348 -21.5274 0 - endloop - endfacet - facet normal -0.172939 0.984933 0 - outer loop - vertex 7.71946 -21.5983 0 - vertex 8.12348 -21.5274 -0.2 - vertex 7.71946 -21.5983 -0.2 - endloop - endfacet - facet normal -0.287852 0.957675 0 - outer loop - vertex 7.71946 -21.5983 -0.2 - vertex 7.29763 -21.7251 0 - vertex 7.71946 -21.5983 0 - endloop - endfacet - facet normal -0.287852 0.957675 0 - outer loop - vertex 7.29763 -21.7251 0 - vertex 7.71946 -21.5983 -0.2 - vertex 7.29763 -21.7251 -0.2 - endloop - endfacet - facet normal -0.387479 0.921879 0 - outer loop - vertex 7.29763 -21.7251 -0.2 - vertex 6.8627 -21.9079 0 - vertex 7.29763 -21.7251 0 - endloop - endfacet - facet normal -0.387479 0.921879 0 - outer loop - vertex 6.8627 -21.9079 0 - vertex 7.29763 -21.7251 -0.2 - vertex 6.8627 -21.9079 -0.2 - endloop - endfacet - facet normal -0.474518 0.880246 0 - outer loop - vertex 6.8627 -21.9079 -0.2 - vertex 6.41939 -22.1469 0 - vertex 6.8627 -21.9079 0 - endloop - endfacet - facet normal -0.474518 0.880246 0 - outer loop - vertex 6.41939 -22.1469 0 - vertex 6.8627 -21.9079 -0.2 - vertex 6.41939 -22.1469 -0.2 - endloop - endfacet - facet normal -0.551235 0.83435 0 - outer loop - vertex 6.41939 -22.1469 -0.2 - vertex 5.97241 -22.4422 0 - vertex 6.41939 -22.1469 0 - endloop - endfacet - facet normal -0.551235 0.83435 0 - outer loop - vertex 5.97241 -22.4422 0 - vertex 6.41939 -22.1469 -0.2 - vertex 5.97241 -22.4422 -0.2 - endloop - endfacet - facet normal -0.619368 0.785101 0 - outer loop - vertex 5.97241 -22.4422 -0.2 - vertex 5.52647 -22.794 0 - vertex 5.97241 -22.4422 0 - endloop - endfacet - facet normal -0.619368 0.785101 0 - outer loop - vertex 5.52647 -22.794 0 - vertex 5.97241 -22.4422 -0.2 - vertex 5.52647 -22.794 -0.2 - endloop - endfacet - facet normal -0.680193 0.733033 0 - outer loop - vertex 5.52647 -22.794 -0.2 - vertex 5.08628 -23.2024 0 - vertex 5.52647 -22.794 0 - endloop - endfacet - facet normal -0.680193 0.733033 0 - outer loop - vertex 5.08628 -23.2024 0 - vertex 5.52647 -22.794 -0.2 - vertex 5.08628 -23.2024 -0.2 - endloop - endfacet - facet normal -0.733294 0.679911 0 - outer loop - vertex 4.45147 -23.8871 -0.2 - vertex 5.08628 -23.2024 0 - vertex 5.08628 -23.2024 -0.2 - endloop - endfacet - facet normal -0.733294 0.679911 0 - outer loop - vertex 5.08628 -23.2024 0 - vertex 4.45147 -23.8871 -0.2 - vertex 4.45147 -23.8871 0 - endloop - endfacet - facet normal -0.778151 0.628077 0 - outer loop - vertex 3.85887 -24.6213 -0.2 - vertex 4.45147 -23.8871 0 - vertex 4.45147 -23.8871 -0.2 - endloop - endfacet - facet normal -0.778151 0.628077 0 - outer loop - vertex 4.45147 -23.8871 0 - vertex 3.85887 -24.6213 -0.2 - vertex 3.85887 -24.6213 0 - endloop - endfacet - facet normal -0.816383 0.577511 0 - outer loop - vertex 3.31148 -25.3951 -0.2 - vertex 3.85887 -24.6213 0 - vertex 3.85887 -24.6213 -0.2 - endloop - endfacet - facet normal -0.816383 0.577511 0 - outer loop - vertex 3.85887 -24.6213 0 - vertex 3.31148 -25.3951 -0.2 - vertex 3.31148 -25.3951 0 - endloop - endfacet - facet normal -0.849413 0.527728 0 - outer loop - vertex 2.81229 -26.1986 -0.2 - vertex 3.31148 -25.3951 0 - vertex 3.31148 -25.3951 -0.2 - endloop - endfacet - facet normal -0.849413 0.527728 0 - outer loop - vertex 3.31148 -25.3951 0 - vertex 2.81229 -26.1986 -0.2 - vertex 2.81229 -26.1986 0 - endloop - endfacet - facet normal -0.878359 0.478001 0 - outer loop - vertex 2.36428 -27.0218 -0.2 - vertex 2.81229 -26.1986 0 - vertex 2.81229 -26.1986 -0.2 - endloop - endfacet - facet normal -0.878359 0.478001 0 - outer loop - vertex 2.81229 -26.1986 0 - vertex 2.36428 -27.0218 -0.2 - vertex 2.36428 -27.0218 0 - endloop - endfacet - facet normal -0.904067 0.427391 0 - outer loop - vertex 1.97046 -27.8549 -0.2 - vertex 2.36428 -27.0218 0 - vertex 2.36428 -27.0218 -0.2 - endloop - endfacet - facet normal -0.904067 0.427391 0 - outer loop - vertex 2.36428 -27.0218 0 - vertex 1.97046 -27.8549 -0.2 - vertex 1.97046 -27.8549 0 - endloop - endfacet - facet normal -0.927139 0.374717 0 - outer loop - vertex 1.63381 -28.6878 -0.2 - vertex 1.97046 -27.8549 0 - vertex 1.97046 -27.8549 -0.2 - endloop - endfacet - facet normal -0.927139 0.374717 0 - outer loop - vertex 1.97046 -27.8549 0 - vertex 1.63381 -28.6878 -0.2 - vertex 1.63381 -28.6878 0 - endloop - endfacet - facet normal -0.947927 0.318489 0 - outer loop - vertex 1.35733 -29.5107 -0.2 - vertex 1.63381 -28.6878 0 - vertex 1.63381 -28.6878 -0.2 - endloop - endfacet - facet normal -0.947927 0.318489 0 - outer loop - vertex 1.63381 -28.6878 0 - vertex 1.35733 -29.5107 -0.2 - vertex 1.35733 -29.5107 0 - endloop - endfacet - facet normal -0.966471 0.256775 0 - outer loop - vertex 1.144 -30.3137 -0.2 - vertex 1.35733 -29.5107 0 - vertex 1.35733 -29.5107 -0.2 - endloop - endfacet - facet normal -0.966471 0.256775 0 - outer loop - vertex 1.35733 -29.5107 0 - vertex 1.144 -30.3137 -0.2 - vertex 1.144 -30.3137 0 - endloop - endfacet - facet normal -0.982354 0.187033 0 - outer loop - vertex 0.99682 -31.0867 -0.2 - vertex 1.144 -30.3137 0 - vertex 1.144 -30.3137 -0.2 - endloop - endfacet - facet normal -0.982354 0.187033 0 - outer loop - vertex 1.144 -30.3137 0 - vertex 0.99682 -31.0867 -0.2 - vertex 0.99682 -31.0867 0 - endloop - endfacet - facet normal -0.994383 0.105841 0 - outer loop - vertex 0.918778 -31.8199 -0.2 - vertex 0.99682 -31.0867 0 - vertex 0.99682 -31.0867 -0.2 - endloop - endfacet - facet normal -0.994383 0.105841 0 - outer loop - vertex 0.99682 -31.0867 0 - vertex 0.918778 -31.8199 -0.2 - vertex 0.918778 -31.8199 0 - endloop - endfacet - facet normal -0.999392 0.0348629 0 - outer loop - vertex 0.906618 -32.1685 -0.2 - vertex 0.918778 -31.8199 0 - vertex 0.918778 -31.8199 -0.2 - endloop - endfacet - facet normal -0.999392 0.0348629 0 - outer loop - vertex 0.918778 -31.8199 0 - vertex 0.906618 -32.1685 -0.2 - vertex 0.906618 -32.1685 0 - endloop - endfacet - facet normal -0.999826 -0.0186499 0 - outer loop - vertex 0.912865 -32.5034 -0.2 - vertex 0.906618 -32.1685 0 - vertex 0.906618 -32.1685 -0.2 - endloop - endfacet - facet normal -0.999826 -0.0186499 0 - outer loop - vertex 0.906618 -32.1685 0 - vertex 0.912865 -32.5034 -0.2 - vertex 0.912865 -32.5034 0 - endloop - endfacet - facet normal -0.996955 -0.077982 0 - outer loop - vertex 0.937893 -32.8234 -0.2 - vertex 0.912865 -32.5034 0 - vertex 0.912865 -32.5034 -0.2 - endloop - endfacet - facet normal -0.996955 -0.077982 0 - outer loop - vertex 0.912865 -32.5034 0 - vertex 0.937893 -32.8234 -0.2 - vertex 0.937893 -32.8234 0 - endloop - endfacet - facet normal -0.98959 -0.143913 0 - outer loop - vertex 0.982074 -33.1272 -0.2 - vertex 0.937893 -32.8234 0 - vertex 0.937893 -32.8234 -0.2 - endloop - endfacet - facet normal -0.98959 -0.143913 0 - outer loop - vertex 0.937893 -32.8234 0 - vertex 0.982074 -33.1272 -0.2 - vertex 0.982074 -33.1272 0 - endloop - endfacet - facet normal -0.97614 -0.217144 0 - outer loop - vertex 1.04578 -33.4136 -0.2 - vertex 0.982074 -33.1272 0 - vertex 0.982074 -33.1272 -0.2 - endloop - endfacet - facet normal -0.97614 -0.217144 0 - outer loop - vertex 0.982074 -33.1272 0 - vertex 1.04578 -33.4136 -0.2 - vertex 1.04578 -33.4136 0 - endloop - endfacet - facet normal -0.954541 -0.298078 0 - outer loop - vertex 1.1294 -33.6813 -0.2 - vertex 1.04578 -33.4136 0 - vertex 1.04578 -33.4136 -0.2 - endloop - endfacet - facet normal -0.954541 -0.298078 0 - outer loop - vertex 1.04578 -33.4136 0 - vertex 1.1294 -33.6813 -0.2 - vertex 1.1294 -33.6813 0 - endloop - endfacet - facet normal -0.922268 -0.38655 0 - outer loop - vertex 1.23329 -33.9292 -0.2 - vertex 1.1294 -33.6813 0 - vertex 1.1294 -33.6813 -0.2 - endloop - endfacet - facet normal -0.922268 -0.38655 0 - outer loop - vertex 1.1294 -33.6813 0 - vertex 1.23329 -33.9292 -0.2 - vertex 1.23329 -33.9292 0 - endloop - endfacet - facet normal -0.876493 -0.481415 0 - outer loop - vertex 1.35782 -34.1559 -0.2 - vertex 1.23329 -33.9292 0 - vertex 1.23329 -33.9292 -0.2 - endloop - endfacet - facet normal -0.876493 -0.481415 0 - outer loop - vertex 1.23329 -33.9292 0 - vertex 1.35782 -34.1559 -0.2 - vertex 1.35782 -34.1559 0 - endloop - endfacet - facet normal -0.814521 -0.580134 0 - outer loop - vertex 1.50339 -34.3603 -0.2 - vertex 1.35782 -34.1559 0 - vertex 1.35782 -34.1559 -0.2 - endloop - endfacet - facet normal -0.814521 -0.580134 0 - outer loop - vertex 1.35782 -34.1559 0 - vertex 1.50339 -34.3603 -0.2 - vertex 1.50339 -34.3603 0 - endloop - endfacet - facet normal -0.734597 -0.678504 0 - outer loop - vertex 1.67035 -34.5411 -0.2 - vertex 1.50339 -34.3603 0 - vertex 1.50339 -34.3603 -0.2 - endloop - endfacet - facet normal -0.734597 -0.678504 0 - outer loop - vertex 1.50339 -34.3603 0 - vertex 1.67035 -34.5411 -0.2 - vertex 1.67035 -34.5411 0 - endloop - endfacet - facet normal -0.643892 -0.765116 0 - outer loop - vertex 1.67035 -34.5411 -0.2 - vertex 1.8149 -34.6627 0 - vertex 1.67035 -34.5411 0 - endloop - endfacet - facet normal -0.643892 -0.765116 -0 - outer loop - vertex 1.8149 -34.6627 0 - vertex 1.67035 -34.5411 -0.2 - vertex 1.8149 -34.6627 -0.2 - endloop - endfacet - facet normal -0.554297 -0.832319 0 - outer loop - vertex 1.8149 -34.6627 -0.2 - vertex 1.97535 -34.7696 0 - vertex 1.8149 -34.6627 0 - endloop - endfacet - facet normal -0.554297 -0.832319 -0 - outer loop - vertex 1.97535 -34.7696 0 - vertex 1.8149 -34.6627 -0.2 - vertex 1.97535 -34.7696 -0.2 - endloop - endfacet - facet normal -0.465589 -0.885001 0 - outer loop - vertex 1.97535 -34.7696 -0.2 - vertex 2.15022 -34.8616 0 - vertex 1.97535 -34.7696 0 - endloop - endfacet - facet normal -0.465589 -0.885001 -0 - outer loop - vertex 2.15022 -34.8616 0 - vertex 1.97535 -34.7696 -0.2 - vertex 2.15022 -34.8616 -0.2 - endloop - endfacet - facet normal -0.379703 -0.925108 0 - outer loop - vertex 2.15022 -34.8616 -0.2 - vertex 2.33801 -34.9386 0 - vertex 2.15022 -34.8616 0 - endloop - endfacet - facet normal -0.379703 -0.925108 -0 - outer loop - vertex 2.33801 -34.9386 0 - vertex 2.15022 -34.8616 -0.2 - vertex 2.33801 -34.9386 -0.2 - endloop - endfacet - facet normal -0.297589 -0.954694 0 - outer loop - vertex 2.33801 -34.9386 -0.2 - vertex 2.53723 -35.0007 0 - vertex 2.33801 -34.9386 0 - endloop - endfacet - facet normal -0.297589 -0.954694 -0 - outer loop - vertex 2.53723 -35.0007 0 - vertex 2.33801 -34.9386 -0.2 - vertex 2.53723 -35.0007 -0.2 - endloop - endfacet - facet normal -0.219494 -0.975614 0 - outer loop - vertex 2.53723 -35.0007 -0.2 - vertex 2.7464 -35.0478 0 - vertex 2.53723 -35.0007 0 - endloop - endfacet - facet normal -0.219494 -0.975614 -0 - outer loop - vertex 2.7464 -35.0478 0 - vertex 2.53723 -35.0007 -0.2 - vertex 2.7464 -35.0478 -0.2 - endloop - endfacet - facet normal -0.109599 -0.993976 0 - outer loop - vertex 2.7464 -35.0478 -0.2 - vertex 3.18861 -35.0966 0 - vertex 2.7464 -35.0478 0 - endloop - endfacet - facet normal -0.109599 -0.993976 -0 - outer loop - vertex 3.18861 -35.0966 0 - vertex 2.7464 -35.0478 -0.2 - vertex 3.18861 -35.0966 -0.2 - endloop - endfacet - facet normal 0.0261117 -0.999659 0 - outer loop - vertex 3.18861 -35.0966 -0.2 - vertex 3.65273 -35.0844 0 - vertex 3.18861 -35.0966 0 - endloop - endfacet - facet normal 0.0261117 -0.999659 0 - outer loop - vertex 3.65273 -35.0844 0 - vertex 3.18861 -35.0966 -0.2 - vertex 3.65273 -35.0844 -0.2 - endloop - endfacet - facet normal 0.153159 -0.988202 0 - outer loop - vertex 3.65273 -35.0844 -0.2 - vertex 4.12685 -35.011 0 - vertex 3.65273 -35.0844 0 - endloop - endfacet - facet normal 0.153159 -0.988202 0 - outer loop - vertex 4.12685 -35.011 0 - vertex 3.65273 -35.0844 -0.2 - vertex 4.12685 -35.011 -0.2 - endloop - endfacet - facet normal 0.275485 -0.961305 0 - outer loop - vertex 4.12685 -35.011 -0.2 - vertex 4.59905 -34.8756 0 - vertex 4.12685 -35.011 0 - endloop - endfacet - facet normal 0.275485 -0.961305 0 - outer loop - vertex 4.59905 -34.8756 0 - vertex 4.12685 -35.011 -0.2 - vertex 4.59905 -34.8756 -0.2 - endloop - endfacet - facet normal 0.39595 -0.918272 0 - outer loop - vertex 4.59905 -34.8756 -0.2 - vertex 5.05744 -34.678 0 - vertex 4.59905 -34.8756 0 - endloop - endfacet - facet normal 0.39595 -0.918272 0 - outer loop - vertex 5.05744 -34.678 0 - vertex 4.59905 -34.8756 -0.2 - vertex 5.05744 -34.678 -0.2 - endloop - endfacet - facet normal 0.498797 -0.866719 0 - outer loop - vertex 5.05744 -34.678 -0.2 - vertex 5.41146 -34.4742 0 - vertex 5.05744 -34.678 0 - endloop - endfacet - facet normal 0.498797 -0.866719 0 - outer loop - vertex 5.41146 -34.4742 0 - vertex 5.05744 -34.678 -0.2 - vertex 5.41146 -34.4742 -0.2 - endloop - endfacet - facet normal 0.615093 -0.788455 0 - outer loop - vertex 5.41146 -34.4742 -0.2 - vertex 5.72486 -34.2297 0 - vertex 5.41146 -34.4742 0 - endloop - endfacet - facet normal 0.615093 -0.788455 0 - outer loop - vertex 5.72486 -34.2297 0 - vertex 5.41146 -34.4742 -0.2 - vertex 5.72486 -34.2297 -0.2 - endloop - endfacet - facet normal 0.708025 -0.706188 0 - outer loop - vertex 5.72486 -34.2297 0 - vertex 5.87315 -34.0811 -0.2 - vertex 5.87315 -34.0811 0 - endloop - endfacet - facet normal 0.708025 -0.706188 0 - outer loop - vertex 5.87315 -34.0811 -0.2 - vertex 5.72486 -34.2297 0 - vertex 5.72486 -34.2297 -0.2 - endloop - endfacet - facet normal 0.762128 -0.647427 0 - outer loop - vertex 5.87315 -34.0811 0 - vertex 6.01946 -33.9088 -0.2 - vertex 6.01946 -33.9088 0 - endloop - endfacet - facet normal 0.762128 -0.647427 0 - outer loop - vertex 6.01946 -33.9088 -0.2 - vertex 5.87315 -34.0811 0 - vertex 5.87315 -34.0811 -0.2 - endloop - endfacet - facet normal 0.824099 -0.566446 0 - outer loop - vertex 6.01946 -33.9088 0 - vertex 6.31707 -33.4759 -0.2 - vertex 6.31707 -33.4759 0 - endloop - endfacet - facet normal 0.824099 -0.566446 0 - outer loop - vertex 6.31707 -33.4759 -0.2 - vertex 6.01946 -33.9088 0 - vertex 6.01946 -33.9088 -0.2 - endloop - endfacet - facet normal 0.874277 -0.485427 0 - outer loop - vertex 6.31707 -33.4759 0 - vertex 6.63949 -32.8952 -0.2 - vertex 6.63949 -32.8952 0 - endloop - endfacet - facet normal 0.874277 -0.485427 0 - outer loop - vertex 6.63949 -32.8952 -0.2 - vertex 6.31707 -33.4759 0 - vertex 6.31707 -33.4759 -0.2 - endloop - endfacet - facet normal 0.900468 -0.434923 0 - outer loop - vertex 6.63949 -32.8952 0 - vertex 7.00854 -32.1311 -0.2 - vertex 7.00854 -32.1311 0 - endloop - endfacet - facet normal 0.900468 -0.434923 0 - outer loop - vertex 7.00854 -32.1311 -0.2 - vertex 6.63949 -32.8952 0 - vertex 6.63949 -32.8952 -0.2 - endloop - endfacet - facet normal 0.913625 -0.406558 0 - outer loop - vertex 7.00854 -32.1311 0 - vertex 7.44603 -31.1479 -0.2 - vertex 7.44603 -31.1479 0 - endloop - endfacet - facet normal 0.913625 -0.406558 0 - outer loop - vertex 7.44603 -31.1479 -0.2 - vertex 7.00854 -32.1311 0 - vertex 7.00854 -32.1311 -0.2 - endloop - endfacet - facet normal 0.919886 -0.392186 0 - outer loop - vertex 7.44603 -31.1479 0 - vertex 7.97377 -29.9101 -0.2 - vertex 7.97377 -29.9101 0 - endloop - endfacet - facet normal 0.919886 -0.392186 0 - outer loop - vertex 7.97377 -29.9101 -0.2 - vertex 7.44603 -31.1479 0 - vertex 7.44603 -31.1479 -0.2 - endloop - endfacet - facet normal 0.924332 -0.381588 0 - outer loop - vertex 7.97377 -29.9101 0 - vertex 9.07864 -27.2338 -0.2 - vertex 9.07864 -27.2338 0 - endloop - endfacet - facet normal 0.924332 -0.381588 0 - outer loop - vertex 9.07864 -27.2338 -0.2 - vertex 7.97377 -29.9101 0 - vertex 7.97377 -29.9101 -0.2 - endloop - endfacet - facet normal 0.932155 -0.362059 0 - outer loop - vertex 9.07864 -27.2338 0 - vertex 9.46376 -26.2422 -0.2 - vertex 9.46376 -26.2422 0 - endloop - endfacet - facet normal 0.932155 -0.362059 0 - outer loop - vertex 9.46376 -26.2422 -0.2 - vertex 9.07864 -27.2338 0 - vertex 9.07864 -27.2338 -0.2 - endloop - endfacet - facet normal 0.941332 -0.337483 0 - outer loop - vertex 9.46376 -26.2422 0 - vertex 9.75283 -25.4359 -0.2 - vertex 9.75283 -25.4359 0 - endloop - endfacet - facet normal 0.941332 -0.337483 0 - outer loop - vertex 9.75283 -25.4359 -0.2 - vertex 9.46376 -26.2422 0 - vertex 9.46376 -26.2422 -0.2 - endloop - endfacet - facet normal 0.954562 -0.298012 0 - outer loop - vertex 9.75283 -25.4359 0 - vertex 9.95745 -24.7805 -0.2 - vertex 9.95745 -24.7805 0 - endloop - endfacet - facet normal 0.954562 -0.298012 0 - outer loop - vertex 9.95745 -24.7805 -0.2 - vertex 9.75283 -25.4359 0 - vertex 9.75283 -25.4359 -0.2 - endloop - endfacet - facet normal 0.971378 -0.237537 0 - outer loop - vertex 9.95745 -24.7805 0 - vertex 10.0892 -24.2416 -0.2 - vertex 10.0892 -24.2416 0 - endloop - endfacet - facet normal 0.971378 -0.237537 0 - outer loop - vertex 10.0892 -24.2416 -0.2 - vertex 9.95745 -24.7805 0 - vertex 9.95745 -24.7805 -0.2 - endloop - endfacet - facet normal 0.98828 -0.15265 0 - outer loop - vertex 10.0892 -24.2416 0 - vertex 10.1598 -23.7848 -0.2 - vertex 10.1598 -23.7848 0 - endloop - endfacet - facet normal 0.98828 -0.15265 0 - outer loop - vertex 10.1598 -23.7848 -0.2 - vertex 10.0892 -24.2416 0 - vertex 10.0892 -24.2416 -0.2 - endloop - endfacet - facet normal 0.998693 -0.0511194 0 - outer loop - vertex 10.1598 -23.7848 0 - vertex 10.1807 -23.3758 -0.2 - vertex 10.1807 -23.3758 0 - endloop - endfacet - facet normal 0.998693 -0.0511194 0 - outer loop - vertex 10.1807 -23.3758 -0.2 - vertex 10.1598 -23.7848 0 - vertex 10.1598 -23.7848 -0.2 - endloop - endfacet - facet normal 0.997227 0.0744219 0 - outer loop - vertex 10.1807 -23.3758 0 - vertex 10.149 -22.9513 -0.2 - vertex 10.149 -22.9513 0 - endloop - endfacet - facet normal 0.997227 0.0744219 0 - outer loop - vertex 10.149 -22.9513 -0.2 - vertex 10.1807 -23.3758 0 - vertex 10.1807 -23.3758 -0.2 - endloop - endfacet - facet normal 0.980241 0.197806 0 - outer loop - vertex 10.149 -22.9513 0 - vertex 10.1103 -22.7594 -0.2 - vertex 10.1103 -22.7594 0 - endloop - endfacet - facet normal 0.980241 0.197806 0 - outer loop - vertex 10.1103 -22.7594 -0.2 - vertex 10.149 -22.9513 0 - vertex 10.149 -22.9513 -0.2 - endloop - endfacet - facet normal 0.958253 0.285922 0 - outer loop - vertex 10.1103 -22.7594 0 - vertex 10.0571 -22.5812 -0.2 - vertex 10.0571 -22.5812 0 - endloop - endfacet - facet normal 0.958253 0.285922 0 - outer loop - vertex 10.0571 -22.5812 -0.2 - vertex 10.1103 -22.7594 0 - vertex 10.1103 -22.7594 -0.2 - endloop - endfacet - facet normal 0.926088 0.377307 0 - outer loop - vertex 10.0571 -22.5812 0 - vertex 9.99008 -22.4166 -0.2 - vertex 9.99008 -22.4166 0 - endloop - endfacet - facet normal 0.926088 0.377307 0 - outer loop - vertex 9.99008 -22.4166 -0.2 - vertex 10.0571 -22.5812 0 - vertex 10.0571 -22.5812 -0.2 - endloop - endfacet - facet normal 0.882715 0.469908 0 - outer loop - vertex 9.99008 -22.4166 0 - vertex 9.90973 -22.2656 -0.2 - vertex 9.90973 -22.2656 0 - endloop - endfacet - facet normal 0.882715 0.469908 0 - outer loop - vertex 9.90973 -22.2656 -0.2 - vertex 9.99008 -22.4166 0 - vertex 9.99008 -22.4166 -0.2 - endloop - endfacet - facet normal 0.827725 0.561134 0 - outer loop - vertex 9.90973 -22.2656 0 - vertex 9.81668 -22.1284 -0.2 - vertex 9.81668 -22.1284 0 - endloop - endfacet - facet normal 0.827725 0.561134 0 - outer loop - vertex 9.81668 -22.1284 -0.2 - vertex 9.90973 -22.2656 0 - vertex 9.90973 -22.2656 -0.2 - endloop - endfacet - facet normal 0.761518 0.648143 0 - outer loop - vertex 9.81668 -22.1284 0 - vertex 9.71152 -22.0048 -0.2 - vertex 9.71152 -22.0048 0 - endloop - endfacet - facet normal 0.761518 0.648143 0 - outer loop - vertex 9.71152 -22.0048 -0.2 - vertex 9.81668 -22.1284 0 - vertex 9.81668 -22.1284 -0.2 - endloop - endfacet - facet normal 0.685415 0.728153 -0 - outer loop - vertex 9.71152 -22.0048 -0.2 - vertex 9.59484 -21.895 0 - vertex 9.71152 -22.0048 0 - endloop - endfacet - facet normal 0.685415 0.728153 0 - outer loop - vertex 9.59484 -21.895 0 - vertex 9.71152 -22.0048 -0.2 - vertex 9.59484 -21.895 -0.2 - endloop - endfacet - facet normal 0.601514 0.798862 -0 - outer loop - vertex 9.59484 -21.895 -0.2 - vertex 9.46723 -21.7989 0 - vertex 9.59484 -21.895 0 - endloop - endfacet - facet normal 0.601514 0.798862 0 - outer loop - vertex 9.46723 -21.7989 0 - vertex 9.59484 -21.895 -0.2 - vertex 9.46723 -21.7989 -0.2 - endloop - endfacet - facet normal 0.467006 0.884254 -0 - outer loop - vertex 9.46723 -21.7989 -0.2 - vertex 9.18157 -21.6481 0 - vertex 9.46723 -21.7989 0 - endloop - endfacet - facet normal 0.467006 0.884254 0 - outer loop - vertex 9.18157 -21.6481 0 - vertex 9.46723 -21.7989 -0.2 - vertex 9.18157 -21.6481 -0.2 - endloop - endfacet - facet normal 0.284506 0.958674 -0 - outer loop - vertex 9.18157 -21.6481 -0.2 - vertex 8.85925 -21.5524 0 - vertex 9.18157 -21.6481 0 - endloop - endfacet - facet normal 0.284506 0.958674 0 - outer loop - vertex 8.85925 -21.5524 0 - vertex 9.18157 -21.6481 -0.2 - vertex 8.85925 -21.5524 -0.2 - endloop - endfacet - facet normal 0.112981 0.993597 -0 - outer loop - vertex 8.85925 -21.5524 -0.2 - vertex 8.50498 -21.5121 0 - vertex 8.85925 -21.5524 0 - endloop - endfacet - facet normal 0.112981 0.993597 0 - outer loop - vertex 8.50498 -21.5121 0 - vertex 8.85925 -21.5524 -0.2 - vertex 8.50498 -21.5121 -0.2 - endloop - endfacet - facet normal -0.039935 0.999202 0 - outer loop - vertex 8.50498 -21.5121 -0.2 - vertex 8.12348 -21.5274 0 - vertex 8.50498 -21.5121 0 - endloop - endfacet - facet normal -0.039935 0.999202 0 - outer loop - vertex 8.12348 -21.5274 0 - vertex 8.50498 -21.5121 -0.2 - vertex 8.12348 -21.5274 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.1179 -30.7807 -0.2 - vertex 30.2299 -31.0524 -0.2 - vertex 30.2187 -30.9454 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.1179 -30.7807 -0.2 - vertex 30.2187 -30.9454 -0.2 - vertex 30.1812 -30.855 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.2299 -31.0524 -0.2 - vertex 30.1179 -30.7807 -0.2 - vertex 30.2146 -31.1764 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.2146 -31.1764 -0.2 - vertex 30.1179 -30.7807 -0.2 - vertex 30.1726 -31.3179 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.9008 -30.6099 -0.2 - vertex 30.1726 -31.3179 -0.2 - vertex 30.1179 -30.7807 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.1726 -31.3179 -0.2 - vertex 29.9008 -30.6099 -0.2 - vertex 30.1034 -31.4773 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.7002 -30.4984 -0.2 - vertex 30.1034 -31.4773 -0.2 - vertex 29.9008 -30.6099 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.1034 -31.4773 -0.2 - vertex 29.7002 -30.4984 -0.2 - vertex 29.0845 -30.5466 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 28.8369 -30.6989 -0.2 - vertex 30.1034 -31.4773 -0.2 - vertex 29.0845 -30.5466 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 29.3033 -30.4642 -0.2 - vertex 29.7002 -30.4984 -0.2 - vertex 29.5048 -30.449 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.7002 -30.4984 -0.2 - vertex 29.3033 -30.4642 -0.2 - vertex 29.0845 -30.5466 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.1034 -31.4773 -0.2 - vertex 28.8369 -30.6989 -0.2 - vertex 29.8827 -31.8517 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 28.5495 -30.9236 -0.2 - vertex 29.8827 -31.8517 -0.2 - vertex 28.8369 -30.6989 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.8827 -31.8517 -0.2 - vertex 28.5495 -30.9236 -0.2 - vertex 29.5499 -32.3032 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 28.2108 -31.2235 -0.2 - vertex 29.5499 -32.3032 -0.2 - vertex 28.5495 -30.9236 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.5499 -32.3032 -0.2 - vertex 28.2108 -31.2235 -0.2 - vertex 29.1028 -32.8352 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 27.276 -32.055 -0.2 - vertex 29.1028 -32.8352 -0.2 - vertex 28.2108 -31.2235 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.1028 -32.8352 -0.2 - vertex 27.276 -32.055 -0.2 - vertex 28.539 -33.4515 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.539 -33.4515 -0.2 - vertex 27.276 -32.055 -0.2 - vertex 27.856 -34.1555 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.4309 -32.7448 -0.2 - vertex 27.856 -34.1555 -0.2 - vertex 27.276 -32.055 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.856 -34.1555 -0.2 - vertex 26.4309 -32.7448 -0.2 - vertex 27.3514 -34.6537 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.6577 -33.3022 -0.2 - vertex 27.3514 -34.6537 -0.2 - vertex 26.4309 -32.7448 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3514 -34.6537 -0.2 - vertex 25.6577 -33.3022 -0.2 - vertex 26.8832 -35.0925 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.2926 -33.5342 -0.2 - vertex 26.8832 -35.0925 -0.2 - vertex 25.6577 -33.3022 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.8832 -35.0925 -0.2 - vertex 25.2926 -33.5342 -0.2 - vertex 26.4377 -35.4824 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 24.9388 -33.7368 -0.2 - vertex 26.4377 -35.4824 -0.2 - vertex 25.2926 -33.5342 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.4377 -35.4824 -0.2 - vertex 24.9388 -33.7368 -0.2 - vertex 26.0012 -35.834 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 24.5942 -33.911 -0.2 - vertex 26.0012 -35.834 -0.2 - vertex 24.9388 -33.7368 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0012 -35.834 -0.2 - vertex 24.5942 -33.911 -0.2 - vertex 25.5601 -36.1579 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 24.2566 -34.0582 -0.2 - vertex 25.5601 -36.1579 -0.2 - vertex 24.5942 -33.911 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.5601 -36.1579 -0.2 - vertex 24.2566 -34.0582 -0.2 - vertex 25.1006 -36.4644 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.9237 -34.1793 -0.2 - vertex 25.1006 -36.4644 -0.2 - vertex 24.2566 -34.0582 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.1006 -36.4644 -0.2 - vertex 23.9237 -34.1793 -0.2 - vertex 24.6091 -36.7642 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.5933 -34.2758 -0.2 - vertex 24.6091 -36.7642 -0.2 - vertex 23.9237 -34.1793 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.2634 -34.3487 -0.2 - vertex 24.6091 -36.7642 -0.2 - vertex 23.5933 -34.2758 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.6091 -36.7642 -0.2 - vertex 23.2634 -34.3487 -0.2 - vertex 24.0719 -37.0678 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 22.9315 -34.3992 -0.2 - vertex 24.0719 -37.0678 -0.2 - vertex 23.2634 -34.3487 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.0719 -37.0678 -0.2 - vertex 22.9315 -34.3992 -0.2 - vertex 23.2902 -37.4839 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 22.5956 -34.4285 -0.2 - vertex 23.2902 -37.4839 -0.2 - vertex 22.9315 -34.3992 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 22.2534 -34.4379 -0.2 - vertex 23.2902 -37.4839 -0.2 - vertex 22.5956 -34.4285 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.2902 -37.4839 -0.2 - vertex 22.2534 -34.4379 -0.2 - vertex 22.6041 -37.8201 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.8355 -34.4151 -0.2 - vertex 22.6041 -37.8201 -0.2 - vertex 22.2534 -34.4379 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.6041 -37.8201 -0.2 - vertex 21.8355 -34.4151 -0.2 - vertex 21.9889 -38.084 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.43 -34.349 -0.2 - vertex 21.9889 -38.084 -0.2 - vertex 21.8355 -34.4151 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.43 -34.349 -0.2 - vertex 21.4197 -38.2833 -0.2 - vertex 21.9889 -38.084 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0421 -34.2419 -0.2 - vertex 21.4197 -38.2833 -0.2 - vertex 21.43 -34.349 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0421 -34.2419 -0.2 - vertex 20.8717 -38.4255 -0.2 - vertex 21.4197 -38.2833 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.3202 -38.5182 -0.2 - vertex 21.0421 -34.2419 -0.2 - vertex 20.6768 -34.0963 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7403 -38.5689 -0.2 - vertex 20.6768 -34.0963 -0.2 - vertex 20.3392 -33.9144 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0421 -34.2419 -0.2 - vertex 20.3202 -38.5182 -0.2 - vertex 20.8717 -38.4255 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4669 -38.5591 -0.2 - vertex 20.3392 -33.9144 -0.2 - vertex 20.0345 -33.6987 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.8529 -38.0675 -0.2 - vertex 20.0345 -33.6987 -0.2 - vertex 19.7677 -33.4516 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.6768 -34.0963 -0.2 - vertex 19.7403 -38.5689 -0.2 - vertex 20.3202 -38.5182 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.927 -35.9398 -0.2 - vertex 19.7677 -33.4516 -0.2 - vertex 19.5439 -33.1754 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.6774 -34.4466 -0.2 - vertex 19.5439 -33.1754 -0.2 - vertex 19.466 -33.0295 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.6656 -33.913 -0.2 - vertex 19.466 -33.0295 -0.2 - vertex 19.403 -32.8415 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 14.73 -32.8205 -0.2 - vertex 19.403 -32.8415 -0.2 - vertex 19.3545 -32.6156 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.8056 -32.2631 -0.2 - vertex 19.3545 -32.6156 -0.2 - vertex 19.3203 -32.3556 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.3392 -33.9144 -0.2 - vertex 19.1073 -38.5852 -0.2 - vertex 19.7403 -38.5689 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9098 -31.6993 -0.2 - vertex 19.3203 -32.3556 -0.2 - vertex 19.2935 -31.7496 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.4186 -23.1088 -0.2 - vertex 32.0619 -22.7991 -0.2 - vertex 32.0349 -22.2828 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 32.0619 -22.7991 -0.2 - vertex 27.4186 -23.1088 -0.2 - vertex 32.0372 -23.3848 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3785 -22.8574 -0.2 - vertex 32.0349 -22.2828 -0.2 - vertex 31.9549 -21.8223 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 27.4312 -23.3865 -0.2 - vertex 32.0372 -23.3848 -0.2 - vertex 27.4186 -23.1088 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3785 -22.8574 -0.2 - vertex 31.9549 -21.8223 -0.2 - vertex 31.8204 -21.404 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 27.4161 -23.6904 -0.2 - vertex 31.9625 -24.0535 -0.2 - vertex 27.4312 -23.3865 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3785 -22.8574 -0.2 - vertex 31.8204 -21.404 -0.2 - vertex 31.6298 -21.0145 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.9625 -24.0535 -0.2 - vertex 27.4161 -23.6904 -0.2 - vertex 31.8392 -24.8188 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 27.373 -24.0204 -0.2 - vertex 31.8392 -24.8188 -0.2 - vertex 27.4161 -23.6904 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.8392 -24.8188 -0.2 - vertex 27.2401 -24.8188 -0.2 - vertex 31.6784 -25.7224 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3785 -22.8574 -0.2 - vertex 31.6298 -21.0145 -0.2 - vertex 31.3816 -20.64 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.2401 -24.8188 -0.2 - vertex 31.8392 -24.8188 -0.2 - vertex 27.373 -24.0204 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3111 -22.6325 -0.2 - vertex 31.3816 -20.64 -0.2 - vertex 31.074 -20.2742 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 29.58 -27.3827 -0.2 - vertex 31.6784 -25.7224 -0.2 - vertex 27.2401 -24.8188 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 30.0709 -27.3331 -0.2 - vertex 31.6784 -25.7224 -0.2 - vertex 29.58 -27.3827 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3111 -22.6325 -0.2 - vertex 31.074 -20.2742 -0.2 - vertex 30.7365 -19.9631 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 30.4717 -27.2602 -0.2 - vertex 31.6003 -26.0834 -0.2 - vertex 30.0709 -27.3331 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3111 -22.6325 -0.2 - vertex 30.7365 -19.9631 -0.2 - vertex 30.3649 -19.705 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 30.7934 -27.1595 -0.2 - vertex 31.5092 -26.3899 -0.2 - vertex 30.4717 -27.2602 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.2166 -22.4344 -0.2 - vertex 30.3649 -19.705 -0.2 - vertex 29.9546 -19.4981 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 31.047 -27.0266 -0.2 - vertex 31.3939 -26.6463 -0.2 - vertex 30.7934 -27.1595 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.2166 -22.4344 -0.2 - vertex 29.9546 -19.4981 -0.2 - vertex 29.5013 -19.3404 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.2166 -22.4344 -0.2 - vertex 29.5013 -19.3404 -0.2 - vertex 29.0007 -19.2301 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.3939 -26.6463 -0.2 - vertex 31.047 -27.0266 -0.2 - vertex 31.2435 -26.857 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.0952 -22.2631 -0.2 - vertex 29.0007 -19.2301 -0.2 - vertex 28.4483 -19.1654 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9471 -22.1189 -0.2 - vertex 28.4483 -19.1654 -0.2 - vertex 27.8398 -19.1444 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 32.0372 -23.3848 -0.2 - vertex 27.4312 -23.3865 -0.2 - vertex 31.9625 -24.0535 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.6003 -26.0834 -0.2 - vertex 30.4717 -27.2602 -0.2 - vertex 31.5092 -26.3899 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.5092 -26.3899 -0.2 - vertex 30.7934 -27.1595 -0.2 - vertex 31.3939 -26.6463 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 32.0349 -22.2828 -0.2 - vertex 27.3785 -22.8574 -0.2 - vertex 27.4186 -23.1088 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.3816 -20.64 -0.2 - vertex 27.3111 -22.6325 -0.2 - vertex 27.3785 -22.8574 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.3649 -19.705 -0.2 - vertex 27.2166 -22.4344 -0.2 - vertex 27.3111 -22.6325 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.7726 -22.0019 -0.2 - vertex 27.8398 -19.1444 -0.2 - vertex 27.1629 -19.1581 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.0007 -19.2301 -0.2 - vertex 27.0952 -22.2631 -0.2 - vertex 27.2166 -22.4344 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.4483 -19.1654 -0.2 - vertex 26.9471 -22.1189 -0.2 - vertex 27.0952 -22.2631 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.8398 -19.1444 -0.2 - vertex 26.7726 -22.0019 -0.2 - vertex 26.9471 -22.1189 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.1629 -19.1581 -0.2 - vertex 26.5717 -21.9122 -0.2 - vertex 26.7726 -22.0019 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.5531 -19.2026 -0.2 - vertex 26.5717 -21.9122 -0.2 - vertex 27.1629 -19.1581 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.5531 -19.2026 -0.2 - vertex 26.3449 -21.8501 -0.2 - vertex 26.5717 -21.9122 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.9886 -19.284 -0.2 - vertex 26.3449 -21.8501 -0.2 - vertex 26.5531 -19.2026 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.3449 -21.8501 -0.2 - vertex 25.9886 -19.284 -0.2 - vertex 26.0922 -21.8157 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.4477 -19.4082 -0.2 - vertex 26.0922 -21.8157 -0.2 - vertex 25.9886 -19.284 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0922 -21.8157 -0.2 - vertex 25.4477 -19.4082 -0.2 - vertex 25.8138 -21.8092 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.8138 -21.8092 -0.2 - vertex 25.4477 -19.4082 -0.2 - vertex 25.51 -21.8307 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 24.9086 -19.5812 -0.2 - vertex 25.51 -21.8307 -0.2 - vertex 25.4477 -19.4082 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.51 -21.8307 -0.2 - vertex 24.9086 -19.5812 -0.2 - vertex 25.181 -21.8805 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 24.3497 -19.8089 -0.2 - vertex 25.181 -21.8805 -0.2 - vertex 24.9086 -19.5812 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.181 -21.8805 -0.2 - vertex 24.3497 -19.8089 -0.2 - vertex 24.827 -21.9586 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.7493 -20.0973 -0.2 - vertex 24.827 -21.9586 -0.2 - vertex 24.3497 -19.8089 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.827 -21.9586 -0.2 - vertex 23.7493 -20.0973 -0.2 - vertex 24.5319 -22.0421 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.5319 -22.0421 -0.2 - vertex 23.7493 -20.0973 -0.2 - vertex 24.2621 -22.1397 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.0854 -20.4525 -0.2 - vertex 24.2621 -22.1397 -0.2 - vertex 23.7493 -20.0973 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.2621 -22.1397 -0.2 - vertex 23.0854 -20.4525 -0.2 - vertex 24.0091 -22.2567 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.0091 -22.2567 -0.2 - vertex 23.0854 -20.4525 -0.2 - vertex 23.7644 -22.3987 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 22.3543 -20.8886 -0.2 - vertex 23.7644 -22.3987 -0.2 - vertex 23.0854 -20.4525 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.7644 -22.3987 -0.2 - vertex 22.3543 -20.8886 -0.2 - vertex 23.5194 -22.5712 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.5194 -22.5712 -0.2 - vertex 22.3543 -20.8886 -0.2 - vertex 23.2657 -22.7795 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 21.6485 -21.3703 -0.2 - vertex 23.2657 -22.7795 -0.2 - vertex 22.3543 -20.8886 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.2657 -22.7795 -0.2 - vertex 21.6485 -21.3703 -0.2 - vertex 22.6979 -23.3258 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 20.9665 -21.899 -0.2 - vertex 22.6979 -23.3258 -0.2 - vertex 21.6485 -21.3703 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.6979 -23.3258 -0.2 - vertex 20.9665 -21.899 -0.2 - vertex 22.2832 -23.7683 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 20.3071 -22.4759 -0.2 - vertex 22.2832 -23.7683 -0.2 - vertex 20.9665 -21.899 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.2832 -23.7683 -0.2 - vertex 20.3071 -22.4759 -0.2 - vertex 21.9437 -24.1601 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.9437 -24.1601 -0.2 - vertex 20.3071 -22.4759 -0.2 - vertex 21.7143 -24.4589 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.6689 -23.1024 -0.2 - vertex 21.7143 -24.4589 -0.2 - vertex 20.3071 -22.4759 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.6784 -25.7224 -0.2 - vertex 30.0709 -27.3331 -0.2 - vertex 31.6003 -26.0834 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.58 -27.3827 -0.2 - vertex 27.2401 -24.8188 -0.2 - vertex 28.988 -27.4135 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.988 -27.4135 -0.2 - vertex 27.2401 -24.8188 -0.2 - vertex 27.4568 -27.4364 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.2401 -24.8188 -0.2 - vertex 25.3891 -27.4375 -0.2 - vertex 27.4568 -27.4364 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 24.435 -24.8188 -0.2 - vertex 25.3891 -27.4375 -0.2 - vertex 27.2401 -24.8188 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.3459 -24.8032 -0.2 - vertex 25.3891 -27.4375 -0.2 - vertex 24.435 -24.8188 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.454 -24.761 -0.2 - vertex 25.3891 -27.4375 -0.2 - vertex 23.3459 -24.8032 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.1247 -27.4424 -0.2 - vertex 22.454 -24.761 -0.2 - vertex 21.8514 -24.6984 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.1247 -27.4424 -0.2 - vertex 21.8514 -24.6984 -0.2 - vertex 21.6873 -24.6616 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.1247 -27.4424 -0.2 - vertex 21.6873 -24.6616 -0.2 - vertex 21.63 -24.6221 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.7143 -24.4589 -0.2 - vertex 19.6689 -23.1024 -0.2 - vertex 21.6518 -24.5601 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.454 -24.761 -0.2 - vertex 20.1247 -27.4424 -0.2 - vertex 25.3891 -27.4375 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.6518 -24.5601 -0.2 - vertex 19.6689 -23.1024 -0.2 - vertex 21.63 -24.6221 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.0503 -23.7798 -0.2 - vertex 21.63 -24.6221 -0.2 - vertex 19.6689 -23.1024 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 18.4501 -24.5093 -0.2 - vertex 21.63 -24.6221 -0.2 - vertex 19.0503 -23.7798 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.63 -24.6221 -0.2 - vertex 18.4501 -24.5093 -0.2 - vertex 20.1247 -27.4424 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 17.8667 -25.2923 -0.2 - vertex 20.1247 -27.4424 -0.2 - vertex 18.4501 -24.5093 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 17.4656 -25.8764 -0.2 - vertex 20.1247 -27.4424 -0.2 - vertex 17.8667 -25.2923 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 17.0901 -26.4624 -0.2 - vertex 20.1247 -27.4424 -0.2 - vertex 17.4656 -25.8764 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.1247 -27.4424 -0.2 - vertex 17.0901 -26.4624 -0.2 - vertex 19.9171 -28.0436 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 16.7406 -27.0496 -0.2 - vertex 19.9171 -28.0436 -0.2 - vertex 17.0901 -26.4624 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.9171 -28.0436 -0.2 - vertex 16.7406 -27.0496 -0.2 - vertex 19.6992 -28.7679 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 16.4172 -27.6373 -0.2 - vertex 19.6992 -28.7679 -0.2 - vertex 16.7406 -27.0496 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.6992 -28.7679 -0.2 - vertex 16.4172 -27.6373 -0.2 - vertex 19.5256 -29.5327 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 16.1203 -28.2246 -0.2 - vertex 19.5256 -29.5327 -0.2 - vertex 16.4172 -27.6373 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.8502 -28.8109 -0.2 - vertex 19.5256 -29.5327 -0.2 - vertex 16.1203 -28.2246 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5256 -29.5327 -0.2 - vertex 15.8502 -28.8109 -0.2 - vertex 19.3985 -30.306 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.6071 -29.3953 -0.2 - vertex 19.3985 -30.306 -0.2 - vertex 15.8502 -28.8109 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.3912 -29.9771 -0.2 - vertex 19.3985 -30.306 -0.2 - vertex 15.6071 -29.3953 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.3985 -30.306 -0.2 - vertex 15.3912 -29.9771 -0.2 - vertex 19.3204 -31.0557 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.2028 -30.5555 -0.2 - vertex 19.3204 -31.0557 -0.2 - vertex 15.3912 -29.9771 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.3204 -31.0557 -0.2 - vertex 15.2028 -30.5555 -0.2 - vertex 19.2935 -31.7496 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.0423 -31.1299 -0.2 - vertex 19.2935 -31.7496 -0.2 - vertex 15.2028 -30.5555 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 14.9098 -31.6993 -0.2 - vertex 19.2935 -31.7496 -0.2 - vertex 15.0423 -31.1299 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.3203 -32.3556 -0.2 - vertex 14.9098 -31.6993 -0.2 - vertex 14.8056 -32.2631 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.3545 -32.6156 -0.2 - vertex 14.8056 -32.2631 -0.2 - vertex 14.73 -32.8205 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.403 -32.8415 -0.2 - vertex 14.73 -32.8205 -0.2 - vertex 14.6832 -33.3707 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.403 -32.8415 -0.2 - vertex 14.6832 -33.3707 -0.2 - vertex 14.6656 -33.913 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.466 -33.0295 -0.2 - vertex 14.6656 -33.913 -0.2 - vertex 14.6774 -34.4466 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5439 -33.1754 -0.2 - vertex 14.6774 -34.4466 -0.2 - vertex 14.7369 -35.0944 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.3392 -33.9144 -0.2 - vertex 18.4669 -38.5591 -0.2 - vertex 19.1073 -38.5852 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0345 -33.6987 -0.2 - vertex 18.1792 -38.5233 -0.2 - vertex 18.4669 -38.5591 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0345 -33.6987 -0.2 - vertex 17.9062 -38.4707 -0.2 - vertex 18.1792 -38.5233 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0345 -33.6987 -0.2 - vertex 17.6424 -38.4 -0.2 - vertex 17.9062 -38.4707 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0345 -33.6987 -0.2 - vertex 17.3825 -38.3101 -0.2 - vertex 17.6424 -38.4 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0345 -33.6987 -0.2 - vertex 17.1211 -38.1997 -0.2 - vertex 17.3825 -38.3101 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0345 -33.6987 -0.2 - vertex 16.8529 -38.0675 -0.2 - vertex 17.1211 -38.1997 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5439 -33.1754 -0.2 - vertex 14.7369 -35.0944 -0.2 - vertex 14.8496 -35.6738 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7677 -33.4516 -0.2 - vertex 16.342 -37.7658 -0.2 - vertex 16.8529 -38.0675 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5439 -33.1754 -0.2 - vertex 14.8496 -35.6738 -0.2 - vertex 14.927 -35.9398 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7677 -33.4516 -0.2 - vertex 16.1153 -37.6039 -0.2 - vertex 16.342 -37.7658 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7677 -33.4516 -0.2 - vertex 15.907 -37.4336 -0.2 - vertex 16.1153 -37.6039 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7677 -33.4516 -0.2 - vertex 15.7167 -37.2541 -0.2 - vertex 15.907 -37.4336 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7677 -33.4516 -0.2 - vertex 15.544 -37.0647 -0.2 - vertex 15.7167 -37.2541 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7677 -33.4516 -0.2 - vertex 15.3884 -36.8644 -0.2 - vertex 15.544 -37.0647 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7677 -33.4516 -0.2 - vertex 15.2493 -36.6526 -0.2 - vertex 15.3884 -36.8644 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7677 -33.4516 -0.2 - vertex 15.1264 -36.4284 -0.2 - vertex 15.2493 -36.6526 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7677 -33.4516 -0.2 - vertex 14.927 -35.9398 -0.2 - vertex 15.0191 -36.1911 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7677 -33.4516 -0.2 - vertex 15.0191 -36.1911 -0.2 - vertex 15.1264 -36.4284 -0.2 - endloop - endfacet - facet normal -0.116346 -0.993209 0 - outer loop - vertex 28.4483 -19.1654 -0.2 - vertex 29.0007 -19.2301 0 - vertex 28.4483 -19.1654 0 - endloop - endfacet - facet normal -0.116346 -0.993209 -0 - outer loop - vertex 29.0007 -19.2301 0 - vertex 28.4483 -19.1654 -0.2 - vertex 29.0007 -19.2301 -0.2 - endloop - endfacet - facet normal -0.215114 -0.976589 0 - outer loop - vertex 29.0007 -19.2301 -0.2 - vertex 29.5013 -19.3404 0 - vertex 29.0007 -19.2301 0 - endloop - endfacet - facet normal -0.215114 -0.976589 -0 - outer loop - vertex 29.5013 -19.3404 0 - vertex 29.0007 -19.2301 -0.2 - vertex 29.5013 -19.3404 -0.2 - endloop - endfacet - facet normal -0.328588 -0.944473 0 - outer loop - vertex 29.5013 -19.3404 -0.2 - vertex 29.9546 -19.4981 0 - vertex 29.5013 -19.3404 0 - endloop - endfacet - facet normal -0.328588 -0.944473 -0 - outer loop - vertex 29.9546 -19.4981 0 - vertex 29.5013 -19.3404 -0.2 - vertex 29.9546 -19.4981 -0.2 - endloop - endfacet - facet normal -0.450382 -0.892836 0 - outer loop - vertex 29.9546 -19.4981 -0.2 - vertex 30.3649 -19.705 0 - vertex 29.9546 -19.4981 0 - endloop - endfacet - facet normal -0.450382 -0.892836 -0 - outer loop - vertex 30.3649 -19.705 0 - vertex 29.9546 -19.4981 -0.2 - vertex 30.3649 -19.705 -0.2 - endloop - endfacet - facet normal -0.570354 -0.821399 0 - outer loop - vertex 30.3649 -19.705 -0.2 - vertex 30.7365 -19.9631 0 - vertex 30.3649 -19.705 0 - endloop - endfacet - facet normal -0.570354 -0.821399 -0 - outer loop - vertex 30.7365 -19.9631 0 - vertex 30.3649 -19.705 -0.2 - vertex 30.7365 -19.9631 -0.2 - endloop - endfacet - facet normal -0.677745 -0.735297 0 - outer loop - vertex 30.7365 -19.9631 -0.2 - vertex 31.074 -20.2742 0 - vertex 30.7365 -19.9631 0 - endloop - endfacet - facet normal -0.677745 -0.735297 -0 - outer loop - vertex 31.074 -20.2742 0 - vertex 30.7365 -19.9631 -0.2 - vertex 31.074 -20.2742 -0.2 - endloop - endfacet - facet normal -0.765393 -0.643563 0 - outer loop - vertex 31.3816 -20.64 -0.2 - vertex 31.074 -20.2742 0 - vertex 31.074 -20.2742 -0.2 - endloop - endfacet - facet normal -0.765393 -0.643563 0 - outer loop - vertex 31.074 -20.2742 0 - vertex 31.3816 -20.64 -0.2 - vertex 31.3816 -20.64 0 - endloop - endfacet - facet normal -0.833589 -0.552384 0 - outer loop - vertex 31.6298 -21.0145 -0.2 - vertex 31.3816 -20.64 0 - vertex 31.3816 -20.64 -0.2 - endloop - endfacet - facet normal -0.833589 -0.552384 0 - outer loop - vertex 31.3816 -20.64 0 - vertex 31.6298 -21.0145 -0.2 - vertex 31.6298 -21.0145 0 - endloop - endfacet - facet normal -0.898247 -0.439492 0 - outer loop - vertex 31.8204 -21.404 -0.2 - vertex 31.6298 -21.0145 0 - vertex 31.6298 -21.0145 -0.2 - endloop - endfacet - facet normal -0.898247 -0.439492 0 - outer loop - vertex 31.6298 -21.0145 0 - vertex 31.8204 -21.404 -0.2 - vertex 31.8204 -21.404 0 - endloop - endfacet - facet normal -0.951943 -0.306275 0 - outer loop - vertex 31.9549 -21.8223 -0.2 - vertex 31.8204 -21.404 0 - vertex 31.8204 -21.404 -0.2 - endloop - endfacet - facet normal -0.951943 -0.306275 0 - outer loop - vertex 31.8204 -21.404 0 - vertex 31.9549 -21.8223 -0.2 - vertex 31.9549 -21.8223 0 - endloop - endfacet - facet normal -0.985239 -0.171183 0 - outer loop - vertex 32.0349 -22.2828 -0.2 - vertex 31.9549 -21.8223 0 - vertex 31.9549 -21.8223 -0.2 - endloop - endfacet - facet normal -0.985239 -0.171183 0 - outer loop - vertex 31.9549 -21.8223 0 - vertex 32.0349 -22.2828 -0.2 - vertex 32.0349 -22.2828 0 - endloop - endfacet - facet normal -0.998641 -0.0521185 0 - outer loop - vertex 32.0619 -22.7991 -0.2 - vertex 32.0349 -22.2828 0 - vertex 32.0349 -22.2828 -0.2 - endloop - endfacet - facet normal -0.998641 -0.0521185 0 - outer loop - vertex 32.0349 -22.2828 0 - vertex 32.0619 -22.7991 -0.2 - vertex 32.0619 -22.7991 0 - endloop - endfacet - facet normal -0.999117 0.0420155 0 - outer loop - vertex 32.0372 -23.3848 -0.2 - vertex 32.0619 -22.7991 0 - vertex 32.0619 -22.7991 -0.2 - endloop - endfacet - facet normal -0.999117 0.0420155 0 - outer loop - vertex 32.0619 -22.7991 0 - vertex 32.0372 -23.3848 -0.2 - vertex 32.0372 -23.3848 0 - endloop - endfacet - facet normal -0.993814 0.111054 0 - outer loop - vertex 31.9625 -24.0535 -0.2 - vertex 32.0372 -23.3848 0 - vertex 32.0372 -23.3848 -0.2 - endloop - endfacet - facet normal -0.993814 0.111054 0 - outer loop - vertex 32.0372 -23.3848 0 - vertex 31.9625 -24.0535 -0.2 - vertex 31.9625 -24.0535 0 - endloop - endfacet - facet normal -0.98726 0.159117 0 - outer loop - vertex 31.8392 -24.8188 -0.2 - vertex 31.9625 -24.0535 0 - vertex 31.9625 -24.0535 -0.2 - endloop - endfacet - facet normal -0.98726 0.159117 0 - outer loop - vertex 31.9625 -24.0535 0 - vertex 31.8392 -24.8188 -0.2 - vertex 31.8392 -24.8188 0 - endloop - endfacet - facet normal -0.984533 0.175198 0 - outer loop - vertex 31.6784 -25.7224 -0.2 - vertex 31.8392 -24.8188 0 - vertex 31.8392 -24.8188 -0.2 - endloop - endfacet - facet normal -0.984533 0.175198 0 - outer loop - vertex 31.8392 -24.8188 0 - vertex 31.6784 -25.7224 -0.2 - vertex 31.6784 -25.7224 0 - endloop - endfacet - facet normal -0.977413 0.211338 0 - outer loop - vertex 31.6003 -26.0834 -0.2 - vertex 31.6784 -25.7224 0 - vertex 31.6784 -25.7224 -0.2 - endloop - endfacet - facet normal -0.977413 0.211338 0 - outer loop - vertex 31.6784 -25.7224 0 - vertex 31.6003 -26.0834 -0.2 - vertex 31.6003 -26.0834 0 - endloop - endfacet - facet normal -0.958488 0.285133 0 - outer loop - vertex 31.5092 -26.3899 -0.2 - vertex 31.6003 -26.0834 0 - vertex 31.6003 -26.0834 -0.2 - endloop - endfacet - facet normal -0.958488 0.285133 0 - outer loop - vertex 31.6003 -26.0834 0 - vertex 31.5092 -26.3899 -0.2 - vertex 31.5092 -26.3899 0 - endloop - endfacet - facet normal -0.912047 0.410085 0 - outer loop - vertex 31.3939 -26.6463 -0.2 - vertex 31.5092 -26.3899 0 - vertex 31.5092 -26.3899 -0.2 - endloop - endfacet - facet normal -0.912047 0.410085 0 - outer loop - vertex 31.5092 -26.3899 0 - vertex 31.3939 -26.6463 -0.2 - vertex 31.3939 -26.6463 0 - endloop - endfacet - facet normal -0.814021 0.580836 0 - outer loop - vertex 31.2435 -26.857 -0.2 - vertex 31.3939 -26.6463 0 - vertex 31.3939 -26.6463 -0.2 - endloop - endfacet - facet normal -0.814021 0.580836 0 - outer loop - vertex 31.3939 -26.6463 0 - vertex 31.2435 -26.857 -0.2 - vertex 31.2435 -26.857 0 - endloop - endfacet - facet normal -0.653404 0.75701 0 - outer loop - vertex 31.2435 -26.857 -0.2 - vertex 31.047 -27.0266 0 - vertex 31.2435 -26.857 0 - endloop - endfacet - facet normal -0.653404 0.75701 0 - outer loop - vertex 31.047 -27.0266 0 - vertex 31.2435 -26.857 -0.2 - vertex 31.047 -27.0266 -0.2 - endloop - endfacet - facet normal -0.464184 0.885739 0 - outer loop - vertex 31.047 -27.0266 -0.2 - vertex 30.7934 -27.1595 0 - vertex 31.047 -27.0266 0 - endloop - endfacet - facet normal -0.464184 0.885739 0 - outer loop - vertex 30.7934 -27.1595 0 - vertex 31.047 -27.0266 -0.2 - vertex 30.7934 -27.1595 -0.2 - endloop - endfacet - facet normal -0.298657 0.954361 0 - outer loop - vertex 30.7934 -27.1595 -0.2 - vertex 30.4717 -27.2602 0 - vertex 30.7934 -27.1595 0 - endloop - endfacet - facet normal -0.298657 0.954361 0 - outer loop - vertex 30.4717 -27.2602 0 - vertex 30.7934 -27.1595 -0.2 - vertex 30.4717 -27.2602 -0.2 - endloop - endfacet - facet normal -0.17896 0.983856 0 - outer loop - vertex 30.4717 -27.2602 -0.2 - vertex 30.0709 -27.3331 0 - vertex 30.4717 -27.2602 0 - endloop - endfacet - facet normal -0.17896 0.983856 0 - outer loop - vertex 30.0709 -27.3331 0 - vertex 30.4717 -27.2602 -0.2 - vertex 30.0709 -27.3331 -0.2 - endloop - endfacet - facet normal -0.100534 0.994934 0 - outer loop - vertex 30.0709 -27.3331 -0.2 - vertex 29.58 -27.3827 0 - vertex 30.0709 -27.3331 0 - endloop - endfacet - facet normal -0.100534 0.994934 0 - outer loop - vertex 29.58 -27.3827 0 - vertex 30.0709 -27.3331 -0.2 - vertex 29.58 -27.3827 -0.2 - endloop - endfacet - facet normal -0.0519093 0.998652 0 - outer loop - vertex 29.58 -27.3827 -0.2 - vertex 28.988 -27.4135 0 - vertex 29.58 -27.3827 0 - endloop - endfacet - facet normal -0.0519093 0.998652 0 - outer loop - vertex 28.988 -27.4135 0 - vertex 29.58 -27.3827 -0.2 - vertex 28.988 -27.4135 -0.2 - endloop - endfacet - facet normal -0.014953 0.999888 0 - outer loop - vertex 28.988 -27.4135 -0.2 - vertex 27.4568 -27.4364 0 - vertex 28.988 -27.4135 0 - endloop - endfacet - facet normal -0.014953 0.999888 0 - outer loop - vertex 27.4568 -27.4364 0 - vertex 28.988 -27.4135 -0.2 - vertex 27.4568 -27.4364 -0.2 - endloop - endfacet - facet normal -0.000556252 1 0 - outer loop - vertex 27.4568 -27.4364 -0.2 - vertex 25.3891 -27.4375 0 - vertex 27.4568 -27.4364 0 - endloop - endfacet - facet normal -0.000556252 1 0 - outer loop - vertex 25.3891 -27.4375 0 - vertex 27.4568 -27.4364 -0.2 - vertex 25.3891 -27.4375 -0.2 + vertex 25.3774 -27.4375 0 + vertex 28.9763 -27.4135 -3 + vertex 25.3774 -27.4375 -3 endloop endfacet facet normal -0.00092424 1 0 outer loop - vertex 25.3891 -27.4375 -0.2 - vertex 20.1247 -27.4424 0 - vertex 25.3891 -27.4375 0 + vertex 25.3774 -27.4375 -3 + vertex 20.1129 -27.4424 0 + vertex 25.3774 -27.4375 0 endloop endfacet facet normal -0.00092424 1 0 outer loop - vertex 20.1247 -27.4424 0 - vertex 25.3891 -27.4375 -0.2 - vertex 20.1247 -27.4424 -0.2 + vertex 20.1129 -27.4424 0 + vertex 25.3774 -27.4375 -3 + vertex 20.1129 -27.4424 -3 endloop endfacet - facet normal -0.945282 0.326254 0 + facet normal -0.945282 0.326255 0 outer loop - vertex 19.9171 -28.0436 -0.2 - vertex 20.1247 -27.4424 0 - vertex 20.1247 -27.4424 -0.2 + vertex 19.9054 -28.0436 -3 + vertex 20.1129 -27.4424 0 + vertex 20.1129 -27.4424 -3 endloop endfacet - facet normal -0.945282 0.326254 0 + facet normal -0.945282 0.326255 0 outer loop - vertex 20.1247 -27.4424 0 - vertex 19.9171 -28.0436 -0.2 - vertex 19.9171 -28.0436 0 + vertex 20.1129 -27.4424 0 + vertex 19.9054 -28.0436 -3 + vertex 19.9054 -28.0436 0 endloop endfacet - facet normal -0.957593 0.288124 0 + facet normal -0.967122 0.254313 0 outer loop - vertex 19.6992 -28.7679 -0.2 - vertex 19.9171 -28.0436 0 - vertex 19.9171 -28.0436 -0.2 + vertex 19.5138 -29.5327 -3 + vertex 19.9054 -28.0436 0 + vertex 19.9054 -28.0436 -3 endloop endfacet - facet normal -0.957593 0.288124 0 + facet normal -0.967122 0.254313 0 outer loop - vertex 19.9171 -28.0436 0 - vertex 19.6992 -28.7679 -0.2 - vertex 19.6992 -28.7679 0 + vertex 19.9054 -28.0436 0 + vertex 19.5138 -29.5327 -3 + vertex 19.5138 -29.5327 0 endloop endfacet - facet normal -0.97518 0.221412 0 + facet normal -0.991046 0.133521 0 outer loop - vertex 19.5256 -29.5327 -0.2 - vertex 19.6992 -28.7679 0 - vertex 19.6992 -28.7679 -0.2 + vertex 19.3087 -31.0557 -3 + vertex 19.5138 -29.5327 0 + vertex 19.5138 -29.5327 -3 endloop endfacet - facet normal -0.97518 0.221412 0 + facet normal -0.991046 0.133521 0 outer loop - vertex 19.6992 -28.7679 0 - vertex 19.5256 -29.5327 -0.2 - vertex 19.5256 -29.5327 0 + vertex 19.5138 -29.5327 0 + vertex 19.3087 -31.0557 -3 + vertex 19.3087 -31.0557 0 endloop endfacet - facet normal -0.986769 0.16213 0 + facet normal -1 8.95066e-05 0 outer loop - vertex 19.3985 -30.306 -0.2 - vertex 19.5256 -29.5327 0 - vertex 19.5256 -29.5327 -0.2 + vertex 19.3085 -32.3556 -3 + vertex 19.3087 -31.0557 0 + vertex 19.3087 -31.0557 -3 endloop endfacet - facet normal -0.986769 0.16213 0 + facet normal -1 8.95066e-05 0 outer loop - vertex 19.5256 -29.5327 0 - vertex 19.3985 -30.306 -0.2 - vertex 19.3985 -30.306 0 + vertex 19.3087 -31.0557 0 + vertex 19.3085 -32.3556 -3 + vertex 19.3085 -32.3556 0 endloop endfacet - facet normal -0.994613 0.103657 0 + facet normal -0.964746 -0.263183 0 outer loop - vertex 19.3204 -31.0557 -0.2 - vertex 19.3985 -30.306 0 - vertex 19.3985 -30.306 -0.2 + vertex 19.5322 -33.1754 -3 + vertex 19.3085 -32.3556 0 + vertex 19.3085 -32.3556 -3 endloop endfacet - facet normal -0.994613 0.103657 0 + facet normal -0.964746 -0.263183 0 outer loop - vertex 19.3985 -30.306 0 - vertex 19.3204 -31.0557 -0.2 - vertex 19.3204 -31.0557 0 + vertex 19.3085 -32.3556 0 + vertex 19.5322 -33.1754 -3 + vertex 19.5322 -33.1754 0 endloop endfacet - facet normal -0.999252 0.0386793 0 + facet normal -0.729596 -0.683879 0 outer loop - vertex 19.2935 -31.7496 -0.2 - vertex 19.3204 -31.0557 0 - vertex 19.3204 -31.0557 -0.2 + vertex 20.0228 -33.6987 -3 + vertex 19.5322 -33.1754 0 + vertex 19.5322 -33.1754 -3 endloop endfacet - facet normal -0.999252 0.0386793 0 + facet normal -0.729596 -0.683879 0 outer loop - vertex 19.3204 -31.0557 0 - vertex 19.2935 -31.7496 -0.2 - vertex 19.2935 -31.7496 0 + vertex 19.5322 -33.1754 0 + vertex 20.0228 -33.6987 -3 + vertex 20.0228 -33.6987 0 endloop endfacet - facet normal -0.999028 -0.0440878 0 + facet normal -0.526282 -0.85031 0 outer loop - vertex 19.3203 -32.3556 -0.2 - vertex 19.2935 -31.7496 0 - vertex 19.2935 -31.7496 -0.2 + vertex 20.0228 -33.6987 -3 + vertex 20.6651 -34.0963 0 + vertex 20.0228 -33.6987 0 endloop endfacet - facet normal -0.999028 -0.0440878 0 + facet normal -0.526282 -0.85031 -0 outer loop - vertex 19.2935 -31.7496 0 - vertex 19.3203 -32.3556 -0.2 - vertex 19.3203 -32.3556 0 + vertex 20.6651 -34.0963 0 + vertex 20.0228 -33.6987 -3 + vertex 20.6651 -34.0963 -3 endloop endfacet - facet normal -0.991457 -0.130433 0 + facet normal -0.318074 -0.948066 0 outer loop - vertex 19.3545 -32.6156 -0.2 - vertex 19.3203 -32.3556 0 - vertex 19.3203 -32.3556 -0.2 + vertex 20.6651 -34.0963 -3 + vertex 21.4183 -34.349 0 + vertex 20.6651 -34.0963 0 endloop endfacet - facet normal -0.991457 -0.130433 0 + facet normal -0.318074 -0.948066 -0 outer loop - vertex 19.3203 -32.3556 0 - vertex 19.3545 -32.6156 -0.2 - vertex 19.3545 -32.6156 0 + vertex 21.4183 -34.349 0 + vertex 20.6651 -34.0963 -3 + vertex 21.4183 -34.349 -3 endloop endfacet - facet normal -0.977754 -0.209757 0 + facet normal -0.107309 -0.994226 0 outer loop - vertex 19.403 -32.8415 -0.2 - vertex 19.3545 -32.6156 0 - vertex 19.3545 -32.6156 -0.2 + vertex 21.4183 -34.349 -3 + vertex 22.2417 -34.4379 0 + vertex 21.4183 -34.349 0 endloop endfacet - facet normal -0.977754 -0.209757 0 + facet normal -0.107309 -0.994226 -0 outer loop - vertex 19.3545 -32.6156 0 - vertex 19.403 -32.8415 -0.2 - vertex 19.403 -32.8415 0 + vertex 22.2417 -34.4379 0 + vertex 21.4183 -34.349 -3 + vertex 22.2417 -34.4379 -3 endloop endfacet - facet normal -0.948071 -0.31806 0 + facet normal 0.120086 -0.992763 0 outer loop - vertex 19.466 -33.0295 -0.2 - vertex 19.403 -32.8415 0 - vertex 19.403 -32.8415 -0.2 + vertex 22.2417 -34.4379 -3 + vertex 23.5816 -34.2758 0 + vertex 22.2417 -34.4379 0 endloop endfacet - facet normal -0.948071 -0.31806 0 + facet normal 0.120086 -0.992763 0 outer loop - vertex 19.403 -32.8415 0 - vertex 19.466 -33.0295 -0.2 - vertex 19.466 -33.0295 0 + vertex 23.5816 -34.2758 0 + vertex 22.2417 -34.4379 -3 + vertex 23.5816 -34.2758 -3 endloop endfacet - facet normal -0.882102 -0.471058 0 + facet normal 0.371865 -0.928287 0 outer loop - vertex 19.5439 -33.1754 -0.2 - vertex 19.466 -33.0295 0 - vertex 19.466 -33.0295 -0.2 + vertex 23.5816 -34.2758 -3 + vertex 24.9271 -33.7368 0 + vertex 23.5816 -34.2758 0 endloop endfacet - facet normal -0.882102 -0.471058 0 + facet normal 0.371865 -0.928287 0 outer loop - vertex 19.466 -33.0295 0 - vertex 19.5439 -33.1754 -0.2 - vertex 19.5439 -33.1754 0 + vertex 24.9271 -33.7368 0 + vertex 23.5816 -34.2758 -3 + vertex 24.9271 -33.7368 -3 endloop endfacet - facet normal -0.777019 -0.629477 0 + facet normal 0.553658 -0.832744 0 outer loop - vertex 19.7677 -33.4516 -0.2 - vertex 19.5439 -33.1754 0 - vertex 19.5439 -33.1754 -0.2 + vertex 24.9271 -33.7368 -3 + vertex 26.4192 -32.7448 0 + vertex 24.9271 -33.7368 0 endloop endfacet - facet normal -0.777019 -0.629477 0 + facet normal 0.553658 -0.832744 0 outer loop - vertex 19.5439 -33.1754 0 - vertex 19.7677 -33.4516 -0.2 - vertex 19.7677 -33.4516 0 + vertex 26.4192 -32.7448 0 + vertex 24.9271 -33.7368 -3 + vertex 26.4192 -32.7448 -3 endloop endfacet - facet normal -0.679559 -0.73362 0 + facet normal 0.649717 -0.760176 0 outer loop - vertex 19.7677 -33.4516 -0.2 - vertex 20.0345 -33.6987 0 - vertex 19.7677 -33.4516 0 + vertex 26.4192 -32.7448 -3 + vertex 28.199 -31.2235 0 + vertex 26.4192 -32.7448 0 endloop endfacet - facet normal -0.679559 -0.73362 -0 + facet normal 0.649717 -0.760176 0 outer loop - vertex 20.0345 -33.6987 0 - vertex 19.7677 -33.4516 -0.2 - vertex 20.0345 -33.6987 -0.2 + vertex 28.199 -31.2235 0 + vertex 26.4192 -32.7448 -3 + vertex 28.199 -31.2235 -3 endloop endfacet - facet normal -0.577724 -0.816232 0 + facet normal 0.570708 -0.821153 0 outer loop - vertex 20.0345 -33.6987 -0.2 - vertex 20.3392 -33.9144 0 - vertex 20.0345 -33.6987 0 + vertex 28.199 -31.2235 -3 + vertex 29.2916 -30.4642 0 + vertex 28.199 -31.2235 0 endloop endfacet - facet normal -0.577724 -0.816232 -0 + facet normal 0.570708 -0.821153 0 outer loop - vertex 20.3392 -33.9144 0 - vertex 20.0345 -33.6987 -0.2 - vertex 20.3392 -33.9144 -0.2 + vertex 29.2916 -30.4642 0 + vertex 28.199 -31.2235 -3 + vertex 29.2916 -30.4642 -3 endloop endfacet - facet normal -0.474279 -0.880374 0 + facet normal -0.0859885 -0.996296 0 outer loop - vertex 20.3392 -33.9144 -0.2 - vertex 20.6768 -34.0963 0 - vertex 20.3392 -33.9144 0 + vertex 29.2916 -30.4642 -3 + vertex 29.6885 -30.4984 0 + vertex 29.2916 -30.4642 0 endloop endfacet - facet normal -0.474279 -0.880374 -0 + facet normal -0.0859885 -0.996296 -0 outer loop - vertex 20.6768 -34.0963 0 - vertex 20.3392 -33.9144 -0.2 - vertex 20.6768 -34.0963 -0.2 + vertex 29.6885 -30.4984 0 + vertex 29.2916 -30.4642 -3 + vertex 29.6885 -30.4984 -3 endloop endfacet - facet normal -0.370342 -0.928896 0 + facet normal -0.559844 -0.828598 0 outer loop - vertex 20.6768 -34.0963 -0.2 - vertex 21.0421 -34.2419 0 - vertex 20.6768 -34.0963 0 + vertex 29.6885 -30.4984 -3 + vertex 30.1062 -30.7807 0 + vertex 29.6885 -30.4984 0 endloop endfacet - facet normal -0.370342 -0.928896 -0 + facet normal -0.559844 -0.828598 -0 outer loop - vertex 21.0421 -34.2419 0 - vertex 20.6768 -34.0963 -0.2 - vertex 21.0421 -34.2419 -0.2 + vertex 30.1062 -30.7807 0 + vertex 29.6885 -30.4984 -3 + vertex 30.1062 -30.7807 -3 endloop endfacet - facet normal -0.266037 -0.963963 0 + facet normal -0.971403 -0.237438 0 outer loop - vertex 21.0421 -34.2419 -0.2 - vertex 21.43 -34.349 0 - vertex 21.0421 -34.2419 0 + vertex 30.2029 -31.1764 -3 + vertex 30.1062 -30.7807 0 + vertex 30.1062 -30.7807 -3 endloop endfacet - facet normal -0.266037 -0.963963 -0 + facet normal -0.971403 -0.237438 0 outer loop - vertex 21.43 -34.349 0 - vertex 21.0421 -34.2419 -0.2 - vertex 21.43 -34.349 -0.2 + vertex 30.1062 -30.7807 0 + vertex 30.2029 -31.1764 -3 + vertex 30.2029 -31.1764 0 endloop endfacet - facet normal -0.160906 -0.98697 0 + facet normal -0.897428 0.441162 0 outer loop - vertex 21.43 -34.349 -0.2 - vertex 21.8355 -34.4151 0 - vertex 21.43 -34.349 0 + vertex 29.8709 -31.8517 -3 + vertex 30.2029 -31.1764 0 + vertex 30.2029 -31.1764 -3 endloop endfacet - facet normal -0.160906 -0.98697 -0 + facet normal -0.897428 0.441162 0 outer loop - vertex 21.8355 -34.4151 0 - vertex 21.43 -34.349 -0.2 - vertex 21.8355 -34.4151 -0.2 + vertex 30.2029 -31.1764 0 + vertex 29.8709 -31.8517 -3 + vertex 29.8709 -31.8517 0 endloop endfacet - facet normal -0.0544036 -0.998519 0 + facet normal -0.750818 0.660509 0 outer loop - vertex 21.8355 -34.4151 -0.2 - vertex 22.2534 -34.4379 0 - vertex 21.8355 -34.4151 0 + vertex 27.8442 -34.1555 -3 + vertex 29.8709 -31.8517 0 + vertex 29.8709 -31.8517 -3 endloop endfacet - facet normal -0.0544036 -0.998519 -0 + facet normal -0.750818 0.660509 0 outer loop - vertex 22.2534 -34.4379 0 - vertex 21.8355 -34.4151 -0.2 - vertex 22.2534 -34.4379 -0.2 + vertex 29.8709 -31.8517 0 + vertex 27.8442 -34.1555 -3 + vertex 27.8442 -34.1555 0 endloop endfacet - facet normal 0.0273252 -0.999627 0 + facet normal -0.671006 0.741452 0 outer loop - vertex 22.2534 -34.4379 -0.2 - vertex 22.5956 -34.4285 0 - vertex 22.2534 -34.4379 0 + vertex 27.8442 -34.1555 -3 + vertex 25.9895 -35.834 0 + vertex 27.8442 -34.1555 0 endloop endfacet - facet normal 0.0273252 -0.999627 0 + facet normal -0.671006 0.741452 0 outer loop - vertex 22.5956 -34.4285 0 - vertex 22.2534 -34.4379 -0.2 - vertex 22.5956 -34.4285 -0.2 + vertex 25.9895 -35.834 0 + vertex 27.8442 -34.1555 -3 + vertex 25.9895 -35.834 -3 endloop endfacet - facet normal 0.0869987 -0.996208 0 + facet normal -0.538751 0.842465 0 outer loop - vertex 22.5956 -34.4285 -0.2 - vertex 22.9315 -34.3992 0 - vertex 22.5956 -34.4285 0 + vertex 25.9895 -35.834 -3 + vertex 24.0601 -37.0678 0 + vertex 25.9895 -35.834 0 endloop endfacet - facet normal 0.0869987 -0.996208 0 + facet normal -0.538751 0.842465 0 outer loop - vertex 22.9315 -34.3992 0 - vertex 22.5956 -34.4285 -0.2 - vertex 22.9315 -34.3992 -0.2 + vertex 24.0601 -37.0678 0 + vertex 25.9895 -35.834 -3 + vertex 24.0601 -37.0678 -3 endloop endfacet - facet normal 0.150489 -0.988612 0 + facet normal -0.416623 0.909079 0 outer loop - vertex 22.9315 -34.3992 -0.2 - vertex 23.2634 -34.3487 0 - vertex 22.9315 -34.3992 0 + vertex 24.0601 -37.0678 -3 + vertex 21.4079 -38.2833 0 + vertex 24.0601 -37.0678 0 endloop endfacet - facet normal 0.150489 -0.988612 0 + facet normal -0.416623 0.909079 0 outer loop - vertex 23.2634 -34.3487 0 - vertex 22.9315 -34.3992 -0.2 - vertex 23.2634 -34.3487 -0.2 + vertex 21.4079 -38.2833 0 + vertex 24.0601 -37.0678 -3 + vertex 21.4079 -38.2833 -3 endloop endfacet - facet normal 0.215659 -0.976469 0 + facet normal -0.208885 0.97794 0 outer loop - vertex 23.2634 -34.3487 -0.2 - vertex 23.5933 -34.2758 0 - vertex 23.2634 -34.3487 0 + vertex 21.4079 -38.2833 -3 + vertex 20.3084 -38.5182 0 + vertex 21.4079 -38.2833 0 endloop endfacet - facet normal 0.215659 -0.976469 0 + facet normal -0.208885 0.97794 0 outer loop - vertex 23.5933 -34.2758 0 - vertex 23.2634 -34.3487 -0.2 - vertex 23.5933 -34.2758 -0.2 + vertex 20.3084 -38.5182 0 + vertex 21.4079 -38.2833 -3 + vertex 20.3084 -38.5182 -3 endloop endfacet - facet normal 0.280239 -0.95993 0 + facet normal -0.0552232 0.998474 0 outer loop - vertex 23.5933 -34.2758 -0.2 - vertex 23.9237 -34.1793 0 - vertex 23.5933 -34.2758 0 + vertex 20.3084 -38.5182 -3 + vertex 19.0956 -38.5852 0 + vertex 20.3084 -38.5182 0 endloop endfacet - facet normal 0.280239 -0.95993 0 + facet normal -0.0552232 0.998474 0 outer loop - vertex 23.9237 -34.1793 0 - vertex 23.5933 -34.2758 -0.2 - vertex 23.9237 -34.1793 -0.2 + vertex 19.0956 -38.5852 0 + vertex 20.3084 -38.5182 -3 + vertex 19.0956 -38.5852 -3 endloop endfacet - facet normal 0.342076 -0.939672 0 + facet normal 0.0949344 0.995484 -0 outer loop - vertex 23.9237 -34.1793 -0.2 - vertex 24.2566 -34.0582 0 - vertex 23.9237 -34.1793 0 + vertex 19.0956 -38.5852 -3 + vertex 17.8945 -38.4707 0 + vertex 19.0956 -38.5852 0 endloop endfacet - facet normal 0.342076 -0.939672 0 + facet normal 0.0949344 0.995484 0 outer loop - vertex 24.2566 -34.0582 0 - vertex 23.9237 -34.1793 -0.2 - vertex 24.2566 -34.0582 -0.2 + vertex 17.8945 -38.4707 0 + vertex 19.0956 -38.5852 -3 + vertex 17.8945 -38.4707 -3 endloop endfacet - facet normal 0.399452 -0.916754 0 + facet normal 0.357488 0.933918 -0 outer loop - vertex 24.2566 -34.0582 -0.2 - vertex 24.5942 -33.911 0 - vertex 24.2566 -34.0582 0 + vertex 17.8945 -38.4707 -3 + vertex 16.8412 -38.0675 0 + vertex 17.8945 -38.4707 0 endloop endfacet - facet normal 0.399452 -0.916754 0 + facet normal 0.357488 0.933918 0 outer loop - vertex 24.5942 -33.911 0 - vertex 24.2566 -34.0582 -0.2 - vertex 24.5942 -33.911 -0.2 + vertex 16.8412 -38.0675 0 + vertex 17.8945 -38.4707 -3 + vertex 16.8412 -38.0675 -3 endloop endfacet - facet normal 0.451238 -0.892404 0 + facet normal 0.556683 0.830725 -0 outer loop - vertex 24.5942 -33.911 -0.2 - vertex 24.9388 -33.7368 0 - vertex 24.5942 -33.911 0 + vertex 16.8412 -38.0675 -3 + vertex 15.8953 -37.4336 0 + vertex 16.8412 -38.0675 0 endloop endfacet - facet normal 0.451238 -0.892404 0 + facet normal 0.556683 0.830725 0 outer loop - vertex 24.9388 -33.7368 0 - vertex 24.5942 -33.911 -0.2 - vertex 24.9388 -33.7368 -0.2 + vertex 15.8953 -37.4336 0 + vertex 16.8412 -38.0675 -3 + vertex 15.8953 -37.4336 -3 endloop endfacet - facet normal 0.496895 -0.867811 0 + facet normal 0.764952 0.644087 0 outer loop - vertex 24.9388 -33.7368 -0.2 - vertex 25.2926 -33.5342 0 - vertex 24.9388 -33.7368 0 + vertex 15.8953 -37.4336 0 + vertex 15.2376 -36.6526 -3 + vertex 15.2376 -36.6526 0 endloop endfacet - facet normal 0.496895 -0.867811 0 + facet normal 0.764952 0.644087 0 outer loop - vertex 25.2926 -33.5342 0 - vertex 24.9388 -33.7368 -0.2 - vertex 25.2926 -33.5342 -0.2 + vertex 15.2376 -36.6526 -3 + vertex 15.8953 -37.4336 0 + vertex 15.8953 -37.4336 -3 endloop endfacet - facet normal 0.536389 -0.843971 0 + facet normal 0.925772 0.378082 0 outer loop - vertex 25.2926 -33.5342 -0.2 - vertex 25.6577 -33.3022 0 - vertex 25.2926 -33.5342 0 + vertex 15.2376 -36.6526 0 + vertex 14.8379 -35.6738 -3 + vertex 14.8379 -35.6738 0 endloop endfacet - facet normal 0.536389 -0.843971 0 + facet normal 0.925772 0.378082 0 outer loop - vertex 25.6577 -33.3022 0 - vertex 25.2926 -33.5342 -0.2 - vertex 25.6577 -33.3022 -0.2 + vertex 14.8379 -35.6738 -3 + vertex 15.2376 -36.6526 0 + vertex 15.2376 -36.6526 -3 endloop endfacet - facet normal 0.584792 -0.811183 0 + facet normal 0.990293 0.138993 0 outer loop - vertex 25.6577 -33.3022 -0.2 - vertex 26.4309 -32.7448 0 - vertex 25.6577 -33.3022 0 + vertex 14.8379 -35.6738 0 + vertex 14.6656 -34.4466 -3 + vertex 14.6656 -34.4466 0 endloop endfacet - facet normal 0.584792 -0.811183 0 + facet normal 0.990293 0.138993 0 outer loop - vertex 26.4309 -32.7448 0 - vertex 25.6577 -33.3022 -0.2 - vertex 26.4309 -32.7448 -0.2 + vertex 14.6656 -34.4466 -3 + vertex 14.8379 -35.6738 0 + vertex 14.8379 -35.6738 -3 endloop endfacet - facet normal 0.632266 -0.774751 0 + facet normal 0.99828 -0.0586187 0 outer loop - vertex 26.4309 -32.7448 -0.2 - vertex 27.276 -32.055 0 - vertex 26.4309 -32.7448 0 + vertex 14.6656 -34.4466 0 + vertex 14.7938 -32.2631 -3 + vertex 14.7938 -32.2631 0 endloop endfacet - facet normal 0.632266 -0.774751 0 + facet normal 0.99828 -0.0586187 0 outer loop - vertex 27.276 -32.055 0 - vertex 26.4309 -32.7448 -0.2 - vertex 27.276 -32.055 -0.2 + vertex 14.7938 -32.2631 -3 + vertex 14.6656 -34.4466 0 + vertex 14.6656 -34.4466 -3 endloop endfacet - facet normal 0.66466 -0.747146 0 + facet normal 0.96872 -0.248157 0 outer loop - vertex 27.276 -32.055 -0.2 - vertex 28.2108 -31.2235 0 - vertex 27.276 -32.055 0 + vertex 14.7938 -32.2631 0 + vertex 15.3794 -29.9771 -3 + vertex 15.3794 -29.9771 0 endloop endfacet - facet normal 0.66466 -0.747146 0 + facet normal 0.96872 -0.248157 0 outer loop - vertex 28.2108 -31.2235 0 - vertex 27.276 -32.055 -0.2 - vertex 28.2108 -31.2235 -0.2 + vertex 15.3794 -29.9771 -3 + vertex 14.7938 -32.2631 0 + vertex 14.7938 -32.2631 -3 endloop endfacet - facet normal 0.662871 -0.748733 0 + facet normal 0.915816 -0.401597 0 outer loop - vertex 28.2108 -31.2235 -0.2 - vertex 28.5495 -30.9236 0 - vertex 28.2108 -31.2235 0 + vertex 15.3794 -29.9771 0 + vertex 16.4055 -27.6373 -3 + vertex 16.4055 -27.6373 0 endloop endfacet - facet normal 0.662871 -0.748733 0 + facet normal 0.915816 -0.401597 0 outer loop - vertex 28.5495 -30.9236 0 - vertex 28.2108 -31.2235 -0.2 - vertex 28.5495 -30.9236 -0.2 + vertex 16.4055 -27.6373 -3 + vertex 15.3794 -29.9771 0 + vertex 15.3794 -29.9771 -3 endloop endfacet - facet normal 0.615947 -0.787787 0 + facet normal 0.850611 -0.525795 0 outer loop - vertex 28.5495 -30.9236 -0.2 - vertex 28.8369 -30.6989 0 - vertex 28.5495 -30.9236 0 + vertex 16.4055 -27.6373 0 + vertex 17.855 -25.2923 -3 + vertex 17.855 -25.2923 0 endloop endfacet - facet normal 0.615947 -0.787787 0 + facet normal 0.850611 -0.525795 0 outer loop - vertex 28.8369 -30.6989 0 - vertex 28.5495 -30.9236 -0.2 - vertex 28.8369 -30.6989 -0.2 + vertex 17.855 -25.2923 -3 + vertex 16.4055 -27.6373 0 + vertex 16.4055 -27.6373 -3 endloop endfacet - facet normal 0.524001 -0.851718 0 + facet normal 0.787541 -0.616262 0 outer loop - vertex 28.8369 -30.6989 -0.2 - vertex 29.0845 -30.5466 0 - vertex 28.8369 -30.6989 0 + vertex 17.855 -25.2923 0 + vertex 19.0386 -23.7798 -3 + vertex 19.0386 -23.7798 0 endloop endfacet - facet normal 0.524001 -0.851718 0 + facet normal 0.787541 -0.616262 0 outer loop - vertex 29.0845 -30.5466 0 - vertex 28.8369 -30.6989 -0.2 - vertex 29.0845 -30.5466 -0.2 + vertex 19.0386 -23.7798 -3 + vertex 17.855 -25.2923 0 + vertex 17.855 -25.2923 -3 endloop endfacet - facet normal 0.352437 -0.935836 0 + facet normal 0.719973 -0.694002 0 outer loop - vertex 29.0845 -30.5466 -0.2 - vertex 29.3033 -30.4642 0 - vertex 29.0845 -30.5466 0 + vertex 19.0386 -23.7798 0 + vertex 20.2954 -22.4759 -3 + vertex 20.2954 -22.4759 0 endloop endfacet - facet normal 0.352437 -0.935836 0 + facet normal 0.719973 -0.694002 0 outer loop - vertex 29.3033 -30.4642 0 - vertex 29.0845 -30.5466 -0.2 - vertex 29.3033 -30.4642 -0.2 + vertex 20.2954 -22.4759 -3 + vertex 19.0386 -23.7798 0 + vertex 19.0386 -23.7798 -3 endloop endfacet - facet normal 0.0751321 -0.997174 0 + facet normal 0.636055 -0.771644 0 outer loop - vertex 29.3033 -30.4642 -0.2 - vertex 29.5048 -30.449 0 - vertex 29.3033 -30.4642 0 + vertex 20.2954 -22.4759 -3 + vertex 21.6367 -21.3703 0 + vertex 20.2954 -22.4759 0 endloop endfacet - facet normal 0.0751321 -0.997174 0 + facet normal 0.636055 -0.771644 0 outer loop - vertex 29.5048 -30.449 0 - vertex 29.3033 -30.4642 -0.2 - vertex 29.5048 -30.449 -0.2 + vertex 21.6367 -21.3703 0 + vertex 20.2954 -22.4759 -3 + vertex 21.6367 -21.3703 -3 endloop endfacet - facet normal -0.245256 -0.969458 0 + facet normal 0.538257 -0.842781 0 outer loop - vertex 29.5048 -30.449 -0.2 - vertex 29.7002 -30.4984 0 - vertex 29.5048 -30.449 0 + vertex 21.6367 -21.3703 -3 + vertex 23.0737 -20.4525 0 + vertex 21.6367 -21.3703 0 endloop endfacet - facet normal -0.245256 -0.969458 -0 + facet normal 0.538257 -0.842781 0 outer loop - vertex 29.7002 -30.4984 0 - vertex 29.5048 -30.449 -0.2 - vertex 29.7002 -30.4984 -0.2 + vertex 23.0737 -20.4525 0 + vertex 21.6367 -21.3703 -3 + vertex 23.0737 -20.4525 -3 endloop endfacet - facet normal -0.485575 -0.874195 0 + facet normal 0.404347 -0.914606 0 outer loop - vertex 29.7002 -30.4984 -0.2 - vertex 29.9008 -30.6099 0 - vertex 29.7002 -30.4984 0 + vertex 23.0737 -20.4525 -3 + vertex 25.4359 -19.4082 0 + vertex 23.0737 -20.4525 0 endloop endfacet - facet normal -0.485575 -0.874195 -0 + facet normal 0.404347 -0.914606 0 outer loop - vertex 29.9008 -30.6099 0 - vertex 29.7002 -30.4984 -0.2 - vertex 29.9008 -30.6099 -0.2 + vertex 25.4359 -19.4082 0 + vertex 23.0737 -20.4525 -3 + vertex 25.4359 -19.4082 -3 endloop endfacet - facet normal -0.618314 -0.785931 0 + facet normal 0.182814 -0.983148 0 outer loop - vertex 29.9008 -30.6099 -0.2 - vertex 30.1179 -30.7807 0 - vertex 29.9008 -30.6099 0 + vertex 25.4359 -19.4082 -3 + vertex 26.5413 -19.2026 0 + vertex 25.4359 -19.4082 0 endloop endfacet - facet normal -0.618314 -0.785931 -0 + facet normal 0.182814 -0.983148 0 outer loop - vertex 30.1179 -30.7807 0 - vertex 29.9008 -30.6099 -0.2 - vertex 30.1179 -30.7807 -0.2 + vertex 26.5413 -19.2026 0 + vertex 25.4359 -19.4082 -3 + vertex 26.5413 -19.2026 -3 endloop endfacet - facet normal -0.761006 -0.648745 0 + facet normal 0.0452162 -0.998977 0 outer loop - vertex 30.1812 -30.855 -0.2 - vertex 30.1179 -30.7807 0 - vertex 30.1179 -30.7807 -0.2 + vertex 26.5413 -19.2026 -3 + vertex 27.8281 -19.1444 0 + vertex 26.5413 -19.2026 0 endloop endfacet - facet normal -0.761006 -0.648745 0 + facet normal 0.0452162 -0.998977 0 outer loop - vertex 30.1179 -30.7807 0 - vertex 30.1812 -30.855 -0.2 - vertex 30.1812 -30.855 0 + vertex 27.8281 -19.1444 0 + vertex 26.5413 -19.2026 -3 + vertex 27.8281 -19.1444 -3 endloop endfacet - facet normal -0.923965 -0.382477 0 + facet normal -0.0736221 -0.997286 0 outer loop - vertex 30.2187 -30.9454 -0.2 - vertex 30.1812 -30.855 0 - vertex 30.1812 -30.855 -0.2 + vertex 27.8281 -19.1444 -3 + vertex 28.989 -19.2301 0 + vertex 27.8281 -19.1444 0 endloop endfacet - facet normal -0.923965 -0.382477 0 + facet normal -0.0736221 -0.997286 -0 outer loop - vertex 30.1812 -30.855 0 - vertex 30.2187 -30.9454 -0.2 - vertex 30.2187 -30.9454 0 + vertex 28.989 -19.2301 0 + vertex 27.8281 -19.1444 -3 + vertex 28.989 -19.2301 -3 endloop endfacet - facet normal -0.994533 -0.104423 0 + facet normal -0.382628 0.923903 0 outer loop - vertex 30.2299 -31.0524 -0.2 - vertex 30.2187 -30.9454 0 - vertex 30.2187 -30.9454 -0.2 + vertex 24.8153 -21.9586 -3 + vertex 23.7526 -22.3987 0 + vertex 24.8153 -21.9586 0 endloop endfacet - facet normal -0.994533 -0.104423 0 + facet normal -0.382628 0.923903 0 outer loop - vertex 30.2187 -30.9454 0 - vertex 30.2299 -31.0524 -0.2 - vertex 30.2299 -31.0524 0 + vertex 23.7526 -22.3987 0 + vertex 24.8153 -21.9586 -3 + vertex 23.7526 -22.3987 -3 endloop endfacet - facet normal -0.992515 0.122124 0 + facet normal -0.656055 0.754713 0 outer loop - vertex 30.2146 -31.1764 -0.2 - vertex 30.2299 -31.0524 0 - vertex 30.2299 -31.0524 -0.2 + vertex 23.7526 -22.3987 -3 + vertex 22.6861 -23.3258 0 + vertex 23.7526 -22.3987 0 endloop endfacet - facet normal -0.992515 0.122124 0 + facet normal -0.656055 0.754713 0 outer loop - vertex 30.2299 -31.0524 0 - vertex 30.2146 -31.1764 -0.2 - vertex 30.2146 -31.1764 0 + vertex 22.6861 -23.3258 0 + vertex 23.7526 -22.3987 -3 + vertex 22.6861 -23.3258 -3 endloop endfacet - facet normal -0.95856 0.284892 0 + facet normal -0.77183 0.635829 0 outer loop - vertex 30.1726 -31.3179 -0.2 - vertex 30.2146 -31.1764 0 - vertex 30.2146 -31.1764 -0.2 + vertex 21.6183 -24.6221 -3 + vertex 22.6861 -23.3258 0 + vertex 22.6861 -23.3258 -3 endloop endfacet - facet normal -0.95856 0.284892 0 + facet normal -0.77183 0.635829 0 outer loop - vertex 30.2146 -31.1764 0 - vertex 30.1726 -31.3179 -0.2 - vertex 30.1726 -31.3179 0 + vertex 22.6861 -23.3258 0 + vertex 21.6183 -24.6221 -3 + vertex 21.6183 -24.6221 0 endloop endfacet - facet normal -0.917421 0.397919 0 + facet normal -0.0699516 -0.99755 0 outer loop - vertex 30.1034 -31.4773 -0.2 - vertex 30.1726 -31.3179 0 - vertex 30.1726 -31.3179 -0.2 + vertex 21.6183 -24.6221 -3 + vertex 24.4233 -24.8188 0 + vertex 21.6183 -24.6221 0 endloop endfacet - facet normal -0.917421 0.397919 0 + facet normal -0.0699516 -0.99755 -0 outer loop - vertex 30.1726 -31.3179 0 - vertex 30.1034 -31.4773 -0.2 - vertex 30.1034 -31.4773 0 - endloop - endfacet - facet normal -0.861393 0.50794 0 - outer loop - vertex 29.8827 -31.8517 -0.2 - vertex 30.1034 -31.4773 0 - vertex 30.1034 -31.4773 -0.2 - endloop - endfacet - facet normal -0.861393 0.50794 0 - outer loop - vertex 30.1034 -31.4773 0 - vertex 29.8827 -31.8517 -0.2 - vertex 29.8827 -31.8517 0 - endloop - endfacet - facet normal -0.804973 0.593311 0 - outer loop - vertex 29.5499 -32.3032 -0.2 - vertex 29.8827 -31.8517 0 - vertex 29.8827 -31.8517 -0.2 - endloop - endfacet - facet normal -0.804973 0.593311 0 - outer loop - vertex 29.8827 -31.8517 0 - vertex 29.5499 -32.3032 -0.2 - vertex 29.5499 -32.3032 0 - endloop - endfacet - facet normal -0.76559 0.643329 0 - outer loop - vertex 29.1028 -32.8352 -0.2 - vertex 29.5499 -32.3032 0 - vertex 29.5499 -32.3032 -0.2 - endloop - endfacet - facet normal -0.76559 0.643329 0 - outer loop - vertex 29.5499 -32.3032 0 - vertex 29.1028 -32.8352 -0.2 - vertex 29.1028 -32.8352 0 - endloop - endfacet - facet normal -0.73778 0.675042 0 - outer loop - vertex 28.539 -33.4515 -0.2 - vertex 29.1028 -32.8352 0 - vertex 29.1028 -32.8352 -0.2 - endloop - endfacet - facet normal -0.73778 0.675042 0 - outer loop - vertex 29.1028 -32.8352 0 - vertex 28.539 -33.4515 -0.2 - vertex 28.539 -33.4515 0 - endloop - endfacet - facet normal -0.717743 0.696309 0 - outer loop - vertex 27.856 -34.1555 -0.2 - vertex 28.539 -33.4515 0 - vertex 28.539 -33.4515 -0.2 - endloop - endfacet - facet normal -0.717743 0.696309 0 - outer loop - vertex 28.539 -33.4515 0 - vertex 27.856 -34.1555 -0.2 - vertex 27.856 -34.1555 0 - endloop - endfacet - facet normal -0.702585 0.7116 0 - outer loop - vertex 27.856 -34.1555 -0.2 - vertex 27.3514 -34.6537 0 - vertex 27.856 -34.1555 0 - endloop - endfacet - facet normal -0.702585 0.7116 0 - outer loop - vertex 27.3514 -34.6537 0 - vertex 27.856 -34.1555 -0.2 - vertex 27.3514 -34.6537 -0.2 - endloop - endfacet - facet normal -0.683825 0.729646 0 - outer loop - vertex 27.3514 -34.6537 -0.2 - vertex 26.8832 -35.0925 0 - vertex 27.3514 -34.6537 0 - endloop - endfacet - facet normal -0.683825 0.729646 0 - outer loop - vertex 26.8832 -35.0925 0 - vertex 27.3514 -34.6537 -0.2 - vertex 26.8832 -35.0925 -0.2 - endloop - endfacet - facet normal -0.65863 0.752467 0 - outer loop - vertex 26.8832 -35.0925 -0.2 - vertex 26.4377 -35.4824 0 - vertex 26.8832 -35.0925 0 - endloop - endfacet - facet normal -0.65863 0.752467 0 - outer loop - vertex 26.4377 -35.4824 0 - vertex 26.8832 -35.0925 -0.2 - vertex 26.4377 -35.4824 -0.2 - endloop - endfacet - facet normal -0.627338 0.778747 0 - outer loop - vertex 26.4377 -35.4824 -0.2 - vertex 26.0012 -35.834 0 - vertex 26.4377 -35.4824 0 - endloop - endfacet - facet normal -0.627338 0.778747 0 - outer loop - vertex 26.0012 -35.834 0 - vertex 26.4377 -35.4824 -0.2 - vertex 26.0012 -35.834 -0.2 - endloop - endfacet - facet normal -0.591741 0.806128 0 - outer loop - vertex 26.0012 -35.834 -0.2 - vertex 25.5601 -36.1579 0 - vertex 26.0012 -35.834 0 - endloop - endfacet - facet normal -0.591741 0.806128 0 - outer loop - vertex 25.5601 -36.1579 0 - vertex 26.0012 -35.834 -0.2 - vertex 25.5601 -36.1579 -0.2 - endloop - endfacet - facet normal -0.554992 0.831856 0 - outer loop - vertex 25.5601 -36.1579 -0.2 - vertex 25.1006 -36.4644 0 - vertex 25.5601 -36.1579 0 - endloop - endfacet - facet normal -0.554992 0.831856 0 - outer loop - vertex 25.1006 -36.4644 0 - vertex 25.5601 -36.1579 -0.2 - vertex 25.1006 -36.4644 -0.2 - endloop - endfacet - facet normal -0.520754 0.853707 0 - outer loop - vertex 25.1006 -36.4644 -0.2 - vertex 24.6091 -36.7642 0 - vertex 25.1006 -36.4644 0 - endloop - endfacet - facet normal -0.520754 0.853707 0 - outer loop - vertex 24.6091 -36.7642 0 - vertex 25.1006 -36.4644 -0.2 - vertex 24.6091 -36.7642 -0.2 - endloop - endfacet - facet normal -0.492012 0.870588 0 - outer loop - vertex 24.6091 -36.7642 -0.2 - vertex 24.0719 -37.0678 0 - vertex 24.6091 -36.7642 0 - endloop - endfacet - facet normal -0.492012 0.870588 0 - outer loop - vertex 24.0719 -37.0678 0 - vertex 24.6091 -36.7642 -0.2 - vertex 24.0719 -37.0678 -0.2 - endloop - endfacet - facet normal -0.469837 0.882753 0 - outer loop - vertex 24.0719 -37.0678 -0.2 - vertex 23.2902 -37.4839 0 - vertex 24.0719 -37.0678 0 - endloop - endfacet - facet normal -0.469837 0.882753 0 - outer loop - vertex 23.2902 -37.4839 0 - vertex 24.0719 -37.0678 -0.2 - vertex 23.2902 -37.4839 -0.2 - endloop - endfacet - facet normal -0.440052 0.897972 0 - outer loop - vertex 23.2902 -37.4839 -0.2 - vertex 22.6041 -37.8201 0 - vertex 23.2902 -37.4839 0 - endloop - endfacet - facet normal -0.440052 0.897972 0 - outer loop - vertex 22.6041 -37.8201 0 - vertex 23.2902 -37.4839 -0.2 - vertex 22.6041 -37.8201 -0.2 - endloop - endfacet - facet normal -0.394271 0.918994 0 - outer loop - vertex 22.6041 -37.8201 -0.2 - vertex 21.9889 -38.084 0 - vertex 22.6041 -37.8201 0 - endloop - endfacet - facet normal -0.394271 0.918994 0 - outer loop - vertex 21.9889 -38.084 0 - vertex 22.6041 -37.8201 -0.2 - vertex 21.9889 -38.084 -0.2 - endloop - endfacet - facet normal -0.330435 0.943829 0 - outer loop - vertex 21.9889 -38.084 -0.2 - vertex 21.4197 -38.2833 0 - vertex 21.9889 -38.084 0 - endloop - endfacet - facet normal -0.330435 0.943829 0 - outer loop - vertex 21.4197 -38.2833 0 - vertex 21.9889 -38.084 -0.2 - vertex 21.4197 -38.2833 -0.2 - endloop - endfacet - facet normal -0.251155 0.967947 0 - outer loop - vertex 21.4197 -38.2833 -0.2 - vertex 20.8717 -38.4255 0 - vertex 21.4197 -38.2833 0 - endloop - endfacet - facet normal -0.251155 0.967947 0 - outer loop - vertex 20.8717 -38.4255 0 - vertex 21.4197 -38.2833 -0.2 - vertex 20.8717 -38.4255 -0.2 - endloop - endfacet - facet normal -0.165695 0.986177 0 - outer loop - vertex 20.8717 -38.4255 -0.2 - vertex 20.3202 -38.5182 0 - vertex 20.8717 -38.4255 0 - endloop - endfacet - facet normal -0.165695 0.986177 0 - outer loop - vertex 20.3202 -38.5182 0 - vertex 20.8717 -38.4255 -0.2 - vertex 20.3202 -38.5182 -0.2 - endloop - endfacet - facet normal -0.0871415 0.996196 0 - outer loop - vertex 20.3202 -38.5182 -0.2 - vertex 19.7403 -38.5689 0 - vertex 20.3202 -38.5182 0 - endloop - endfacet - facet normal -0.0871415 0.996196 0 - outer loop - vertex 19.7403 -38.5689 0 - vertex 20.3202 -38.5182 -0.2 - vertex 19.7403 -38.5689 -0.2 - endloop - endfacet - facet normal -0.0258263 0.999666 0 - outer loop - vertex 19.7403 -38.5689 -0.2 - vertex 19.1073 -38.5852 0 - vertex 19.7403 -38.5689 0 - endloop - endfacet - facet normal -0.0258263 0.999666 0 - outer loop - vertex 19.1073 -38.5852 0 - vertex 19.7403 -38.5689 -0.2 - vertex 19.1073 -38.5852 -0.2 - endloop - endfacet - facet normal 0.0407265 0.99917 -0 - outer loop - vertex 19.1073 -38.5852 -0.2 - vertex 18.4669 -38.5591 0 - vertex 19.1073 -38.5852 0 - endloop - endfacet - facet normal 0.0407265 0.99917 0 - outer loop - vertex 18.4669 -38.5591 0 - vertex 19.1073 -38.5852 -0.2 - vertex 18.4669 -38.5591 -0.2 - endloop - endfacet - facet normal 0.12356 0.992337 -0 - outer loop - vertex 18.4669 -38.5591 -0.2 - vertex 18.1792 -38.5233 0 - vertex 18.4669 -38.5591 0 - endloop - endfacet - facet normal 0.12356 0.992337 0 - outer loop - vertex 18.1792 -38.5233 0 - vertex 18.4669 -38.5591 -0.2 - vertex 18.1792 -38.5233 -0.2 - endloop - endfacet - facet normal 0.189246 0.98193 -0 - outer loop - vertex 18.1792 -38.5233 -0.2 - vertex 17.9062 -38.4707 0 - vertex 18.1792 -38.5233 0 - endloop - endfacet - facet normal 0.189246 0.98193 0 - outer loop - vertex 17.9062 -38.4707 0 - vertex 18.1792 -38.5233 -0.2 - vertex 17.9062 -38.4707 -0.2 - endloop - endfacet - facet normal 0.258743 0.965946 -0 - outer loop - vertex 17.9062 -38.4707 -0.2 - vertex 17.6424 -38.4 0 - vertex 17.9062 -38.4707 0 - endloop - endfacet - facet normal 0.258743 0.965946 0 - outer loop - vertex 17.6424 -38.4 0 - vertex 17.9062 -38.4707 -0.2 - vertex 17.6424 -38.4 -0.2 - endloop - endfacet - facet normal 0.326993 0.945027 -0 - outer loop - vertex 17.6424 -38.4 -0.2 - vertex 17.3825 -38.3101 0 - vertex 17.6424 -38.4 0 - endloop - endfacet - facet normal 0.326993 0.945027 0 - outer loop - vertex 17.3825 -38.3101 0 - vertex 17.6424 -38.4 -0.2 - vertex 17.3825 -38.3101 -0.2 - endloop - endfacet - facet normal 0.389172 0.921165 -0 - outer loop - vertex 17.3825 -38.3101 -0.2 - vertex 17.1211 -38.1997 0 - vertex 17.3825 -38.3101 0 - endloop - endfacet - facet normal 0.389172 0.921165 0 - outer loop - vertex 17.1211 -38.1997 0 - vertex 17.3825 -38.3101 -0.2 - vertex 17.1211 -38.1997 -0.2 - endloop - endfacet - facet normal 0.442006 0.897012 -0 - outer loop - vertex 17.1211 -38.1997 -0.2 - vertex 16.8529 -38.0675 0 - vertex 17.1211 -38.1997 0 - endloop - endfacet - facet normal 0.442006 0.897012 0 - outer loop - vertex 16.8529 -38.0675 0 - vertex 17.1211 -38.1997 -0.2 - vertex 16.8529 -38.0675 -0.2 - endloop - endfacet - facet normal 0.508496 0.861064 -0 - outer loop - vertex 16.8529 -38.0675 -0.2 - vertex 16.342 -37.7658 0 - vertex 16.8529 -38.0675 0 - endloop - endfacet - facet normal 0.508496 0.861064 0 - outer loop - vertex 16.342 -37.7658 0 - vertex 16.8529 -38.0675 -0.2 - vertex 16.342 -37.7658 -0.2 - endloop - endfacet - facet normal 0.581032 0.813881 -0 - outer loop - vertex 16.342 -37.7658 -0.2 - vertex 16.1153 -37.6039 0 - vertex 16.342 -37.7658 0 - endloop - endfacet - facet normal 0.581032 0.813881 0 - outer loop - vertex 16.1153 -37.6039 0 - vertex 16.342 -37.7658 -0.2 - vertex 16.1153 -37.6039 -0.2 - endloop - endfacet - facet normal 0.632987 0.774162 -0 - outer loop - vertex 16.1153 -37.6039 -0.2 - vertex 15.907 -37.4336 0 - vertex 16.1153 -37.6039 0 - endloop - endfacet - facet normal 0.632987 0.774162 0 - outer loop - vertex 15.907 -37.4336 0 - vertex 16.1153 -37.6039 -0.2 - vertex 15.907 -37.4336 -0.2 - endloop - endfacet - facet normal 0.68624 0.727375 -0 - outer loop - vertex 15.907 -37.4336 -0.2 - vertex 15.7167 -37.2541 0 - vertex 15.907 -37.4336 0 - endloop - endfacet - facet normal 0.68624 0.727375 0 - outer loop - vertex 15.7167 -37.2541 0 - vertex 15.907 -37.4336 -0.2 - vertex 15.7167 -37.2541 -0.2 - endloop - endfacet - facet normal 0.739053 0.673647 0 - outer loop - vertex 15.7167 -37.2541 0 - vertex 15.544 -37.0647 -0.2 - vertex 15.544 -37.0647 0 - endloop - endfacet - facet normal 0.739053 0.673647 0 - outer loop - vertex 15.544 -37.0647 -0.2 - vertex 15.7167 -37.2541 0 - vertex 15.7167 -37.2541 -0.2 - endloop - endfacet - facet normal 0.789576 0.613652 0 - outer loop - vertex 15.544 -37.0647 0 - vertex 15.3884 -36.8644 -0.2 - vertex 15.3884 -36.8644 0 - endloop - endfacet - facet normal 0.789576 0.613652 0 - outer loop - vertex 15.3884 -36.8644 -0.2 - vertex 15.544 -37.0647 0 - vertex 15.544 -37.0647 -0.2 - endloop - endfacet - facet normal 0.835985 0.548752 0 - outer loop - vertex 15.3884 -36.8644 0 - vertex 15.2493 -36.6526 -0.2 - vertex 15.2493 -36.6526 0 - endloop - endfacet - facet normal 0.835985 0.548752 0 - outer loop - vertex 15.2493 -36.6526 -0.2 - vertex 15.3884 -36.8644 0 - vertex 15.3884 -36.8644 -0.2 - endloop - endfacet - facet normal 0.876837 0.480788 0 - outer loop - vertex 15.2493 -36.6526 0 - vertex 15.1264 -36.4284 -0.2 - vertex 15.1264 -36.4284 0 - endloop - endfacet - facet normal 0.876837 0.480788 0 - outer loop - vertex 15.1264 -36.4284 -0.2 - vertex 15.2493 -36.6526 0 - vertex 15.2493 -36.6526 -0.2 - endloop - endfacet - facet normal 0.911228 0.411902 0 - outer loop - vertex 15.1264 -36.4284 0 - vertex 15.0191 -36.1911 -0.2 - vertex 15.0191 -36.1911 0 - endloop - endfacet - facet normal 0.911228 0.411902 0 - outer loop - vertex 15.0191 -36.1911 -0.2 - vertex 15.1264 -36.4284 0 - vertex 15.1264 -36.4284 -0.2 - endloop - endfacet - facet normal 0.938903 0.344183 0 - outer loop - vertex 15.0191 -36.1911 0 - vertex 14.927 -35.9398 -0.2 - vertex 14.927 -35.9398 0 - endloop - endfacet - facet normal 0.938903 0.344183 0 - outer loop - vertex 14.927 -35.9398 -0.2 - vertex 15.0191 -36.1911 0 - vertex 15.0191 -36.1911 -0.2 - endloop - endfacet - facet normal 0.960161 0.279447 0 - outer loop - vertex 14.927 -35.9398 0 - vertex 14.8496 -35.6738 -0.2 - vertex 14.8496 -35.6738 0 - endloop - endfacet - facet normal 0.960161 0.279447 0 - outer loop - vertex 14.8496 -35.6738 -0.2 - vertex 14.927 -35.9398 0 - vertex 14.927 -35.9398 -0.2 - endloop - endfacet - facet normal 0.981615 0.190873 0 - outer loop - vertex 14.8496 -35.6738 0 - vertex 14.7369 -35.0944 -0.2 - vertex 14.7369 -35.0944 0 - endloop - endfacet - facet normal 0.981615 0.190873 0 - outer loop - vertex 14.7369 -35.0944 -0.2 - vertex 14.8496 -35.6738 0 - vertex 14.8496 -35.6738 -0.2 - endloop - endfacet - facet normal 0.995797 0.0915901 0 - outer loop - vertex 14.7369 -35.0944 0 - vertex 14.6774 -34.4466 -0.2 - vertex 14.6774 -34.4466 0 - endloop - endfacet - facet normal 0.995797 0.0915901 0 - outer loop - vertex 14.6774 -34.4466 -0.2 - vertex 14.7369 -35.0944 0 - vertex 14.7369 -35.0944 -0.2 - endloop - endfacet - facet normal 0.999758 0.0220201 0 - outer loop - vertex 14.6774 -34.4466 0 - vertex 14.6656 -33.913 -0.2 - vertex 14.6656 -33.913 0 - endloop - endfacet - facet normal 0.999758 0.0220201 0 - outer loop - vertex 14.6656 -33.913 -0.2 - vertex 14.6774 -34.4466 0 - vertex 14.6774 -34.4466 -0.2 - endloop - endfacet - facet normal 0.999472 -0.03249 0 - outer loop - vertex 14.6656 -33.913 0 - vertex 14.6832 -33.3707 -0.2 - vertex 14.6832 -33.3707 0 - endloop - endfacet - facet normal 0.999472 -0.03249 0 - outer loop - vertex 14.6832 -33.3707 -0.2 - vertex 14.6656 -33.913 0 - vertex 14.6656 -33.913 -0.2 - endloop - endfacet - facet normal 0.996411 -0.0846524 0 - outer loop - vertex 14.6832 -33.3707 0 - vertex 14.73 -32.8205 -0.2 - vertex 14.73 -32.8205 0 - endloop - endfacet - facet normal 0.996411 -0.0846524 0 - outer loop - vertex 14.73 -32.8205 -0.2 - vertex 14.6832 -33.3707 0 - vertex 14.6832 -33.3707 -0.2 - endloop - endfacet - facet normal 0.990928 -0.134393 0 - outer loop - vertex 14.73 -32.8205 0 - vertex 14.8056 -32.2631 -0.2 - vertex 14.8056 -32.2631 0 - endloop - endfacet - facet normal 0.990928 -0.134393 0 - outer loop - vertex 14.8056 -32.2631 -0.2 - vertex 14.73 -32.8205 0 - vertex 14.73 -32.8205 -0.2 - endloop - endfacet - facet normal 0.983352 -0.181712 0 - outer loop - vertex 14.8056 -32.2631 0 - vertex 14.9098 -31.6993 -0.2 - vertex 14.9098 -31.6993 0 - endloop - endfacet - facet normal 0.983352 -0.181712 0 - outer loop - vertex 14.9098 -31.6993 -0.2 - vertex 14.8056 -32.2631 0 - vertex 14.8056 -32.2631 -0.2 - endloop - endfacet - facet normal 0.973979 -0.226639 0 - outer loop - vertex 14.9098 -31.6993 0 - vertex 15.0423 -31.1299 -0.2 - vertex 15.0423 -31.1299 0 - endloop - endfacet - facet normal 0.973979 -0.226639 0 - outer loop - vertex 15.0423 -31.1299 -0.2 - vertex 14.9098 -31.6993 0 - vertex 14.9098 -31.6993 -0.2 - endloop - endfacet - facet normal 0.963072 -0.269246 0 - outer loop - vertex 15.0423 -31.1299 0 - vertex 15.2028 -30.5555 -0.2 - vertex 15.2028 -30.5555 0 - endloop - endfacet - facet normal 0.963072 -0.269246 0 - outer loop - vertex 15.2028 -30.5555 -0.2 - vertex 15.0423 -31.1299 0 - vertex 15.0423 -31.1299 -0.2 - endloop - endfacet - facet normal 0.950861 -0.309619 0 - outer loop - vertex 15.2028 -30.5555 0 - vertex 15.3912 -29.9771 -0.2 - vertex 15.3912 -29.9771 0 - endloop - endfacet - facet normal 0.950861 -0.309619 0 - outer loop - vertex 15.3912 -29.9771 -0.2 - vertex 15.2028 -30.5555 0 - vertex 15.2028 -30.5555 -0.2 - endloop - endfacet - facet normal 0.93754 -0.347877 0 - outer loop - vertex 15.3912 -29.9771 0 - vertex 15.6071 -29.3953 -0.2 - vertex 15.6071 -29.3953 0 - endloop - endfacet - facet normal 0.93754 -0.347877 0 - outer loop - vertex 15.6071 -29.3953 -0.2 - vertex 15.3912 -29.9771 0 - vertex 15.3912 -29.9771 -0.2 - endloop - endfacet - facet normal 0.92328 -0.384128 0 - outer loop - vertex 15.6071 -29.3953 0 - vertex 15.8502 -28.8109 -0.2 - vertex 15.8502 -28.8109 0 - endloop - endfacet - facet normal 0.92328 -0.384128 0 - outer loop - vertex 15.8502 -28.8109 -0.2 - vertex 15.6071 -29.3953 0 - vertex 15.6071 -29.3953 -0.2 - endloop - endfacet - facet normal 0.908217 -0.418499 0 - outer loop - vertex 15.8502 -28.8109 0 - vertex 16.1203 -28.2246 -0.2 - vertex 16.1203 -28.2246 0 - endloop - endfacet - facet normal 0.908217 -0.418499 0 - outer loop - vertex 16.1203 -28.2246 -0.2 - vertex 15.8502 -28.8109 0 - vertex 15.8502 -28.8109 -0.2 - endloop - endfacet - facet normal 0.892471 -0.451106 0 - outer loop - vertex 16.1203 -28.2246 0 - vertex 16.4172 -27.6373 -0.2 - vertex 16.4172 -27.6373 0 - endloop - endfacet - facet normal 0.892471 -0.451106 0 - outer loop - vertex 16.4172 -27.6373 -0.2 - vertex 16.1203 -28.2246 0 - vertex 16.1203 -28.2246 -0.2 - endloop - endfacet - facet normal 0.876136 -0.482063 0 - outer loop - vertex 16.4172 -27.6373 0 - vertex 16.7406 -27.0496 -0.2 - vertex 16.7406 -27.0496 0 - endloop - endfacet - facet normal 0.876136 -0.482063 0 - outer loop - vertex 16.7406 -27.0496 -0.2 - vertex 16.4172 -27.6373 0 - vertex 16.4172 -27.6373 -0.2 - endloop - endfacet - facet normal 0.85929 -0.511489 0 - outer loop - vertex 16.7406 -27.0496 0 - vertex 17.0901 -26.4624 -0.2 - vertex 17.0901 -26.4624 0 - endloop - endfacet - facet normal 0.85929 -0.511489 0 - outer loop - vertex 17.0901 -26.4624 -0.2 - vertex 16.7406 -27.0496 0 - vertex 16.7406 -27.0496 -0.2 - endloop - endfacet - facet normal 0.841993 -0.539488 0 - outer loop - vertex 17.0901 -26.4624 0 - vertex 17.4656 -25.8764 -0.2 - vertex 17.4656 -25.8764 0 - endloop - endfacet - facet normal 0.841993 -0.539488 0 - outer loop - vertex 17.4656 -25.8764 -0.2 - vertex 17.0901 -26.4624 0 - vertex 17.0901 -26.4624 -0.2 - endloop - endfacet - facet normal 0.8243 -0.566153 0 - outer loop - vertex 17.4656 -25.8764 0 - vertex 17.8667 -25.2923 -0.2 - vertex 17.8667 -25.2923 0 - endloop - endfacet - facet normal 0.8243 -0.566153 0 - outer loop - vertex 17.8667 -25.2923 -0.2 - vertex 17.4656 -25.8764 0 - vertex 17.4656 -25.8764 -0.2 - endloop - endfacet - facet normal 0.801921 -0.59743 0 - outer loop - vertex 17.8667 -25.2923 0 - vertex 18.4501 -24.5093 -0.2 - vertex 18.4501 -24.5093 0 - endloop - endfacet - facet normal 0.801921 -0.59743 0 - outer loop - vertex 18.4501 -24.5093 -0.2 - vertex 17.8667 -25.2923 0 - vertex 17.8667 -25.2923 -0.2 - endloop - endfacet - facet normal 0.772213 -0.635364 0 - outer loop - vertex 18.4501 -24.5093 0 - vertex 19.0503 -23.7798 -0.2 - vertex 19.0503 -23.7798 0 - endloop - endfacet - facet normal 0.772213 -0.635364 0 - outer loop - vertex 19.0503 -23.7798 -0.2 - vertex 18.4501 -24.5093 0 - vertex 18.4501 -24.5093 -0.2 - endloop - endfacet - facet normal 0.738434 -0.674325 0 - outer loop - vertex 19.0503 -23.7798 0 - vertex 19.6689 -23.1024 -0.2 - vertex 19.6689 -23.1024 0 - endloop - endfacet - facet normal 0.738434 -0.674325 0 - outer loop - vertex 19.6689 -23.1024 -0.2 - vertex 19.0503 -23.7798 0 - vertex 19.0503 -23.7798 -0.2 - endloop - endfacet - facet normal 0.700496 -0.713656 0 - outer loop - vertex 19.6689 -23.1024 -0.2 - vertex 20.3071 -22.4759 0 - vertex 19.6689 -23.1024 0 - endloop - endfacet - facet normal 0.700496 -0.713656 0 - outer loop - vertex 20.3071 -22.4759 0 - vertex 19.6689 -23.1024 -0.2 - vertex 20.3071 -22.4759 -0.2 - endloop - endfacet - facet normal 0.658485 -0.752594 0 - outer loop - vertex 20.3071 -22.4759 -0.2 - vertex 20.9665 -21.899 0 - vertex 20.3071 -22.4759 0 - endloop - endfacet - facet normal 0.658485 -0.752594 0 - outer loop - vertex 20.9665 -21.899 0 - vertex 20.3071 -22.4759 -0.2 - vertex 20.9665 -21.899 -0.2 - endloop - endfacet - facet normal 0.612713 -0.790306 0 - outer loop - vertex 20.9665 -21.899 -0.2 - vertex 21.6485 -21.3703 0 - vertex 20.9665 -21.899 0 - endloop - endfacet - facet normal 0.612713 -0.790306 0 - outer loop - vertex 21.6485 -21.3703 0 - vertex 20.9665 -21.899 -0.2 - vertex 21.6485 -21.3703 -0.2 - endloop - endfacet - facet normal 0.563707 -0.825975 0 - outer loop - vertex 21.6485 -21.3703 -0.2 - vertex 22.3543 -20.8886 0 - vertex 21.6485 -21.3703 0 - endloop - endfacet - facet normal 0.563707 -0.825975 0 - outer loop - vertex 22.3543 -20.8886 0 - vertex 21.6485 -21.3703 -0.2 - vertex 22.3543 -20.8886 -0.2 - endloop - endfacet - facet normal 0.512208 -0.858861 0 - outer loop - vertex 22.3543 -20.8886 -0.2 - vertex 23.0854 -20.4525 0 - vertex 22.3543 -20.8886 0 - endloop - endfacet - facet normal 0.512208 -0.858861 0 - outer loop - vertex 23.0854 -20.4525 0 - vertex 22.3543 -20.8886 -0.2 - vertex 23.0854 -20.4525 -0.2 - endloop - endfacet - facet normal 0.471781 -0.881716 0 - outer loop - vertex 23.0854 -20.4525 -0.2 - vertex 23.7493 -20.0973 0 - vertex 23.0854 -20.4525 0 - endloop - endfacet - facet normal 0.471781 -0.881716 0 - outer loop - vertex 23.7493 -20.0973 0 - vertex 23.0854 -20.4525 -0.2 - vertex 23.7493 -20.0973 -0.2 - endloop - endfacet - facet normal 0.433016 -0.901386 0 - outer loop - vertex 23.7493 -20.0973 -0.2 - vertex 24.3497 -19.8089 0 - vertex 23.7493 -20.0973 0 - endloop - endfacet - facet normal 0.433016 -0.901386 0 - outer loop - vertex 24.3497 -19.8089 0 - vertex 23.7493 -20.0973 -0.2 - vertex 24.3497 -19.8089 -0.2 - endloop - endfacet - facet normal 0.377334 -0.926077 0 - outer loop - vertex 24.3497 -19.8089 -0.2 - vertex 24.9086 -19.5812 0 - vertex 24.3497 -19.8089 0 - endloop - endfacet - facet normal 0.377334 -0.926077 0 - outer loop - vertex 24.9086 -19.5812 0 - vertex 24.3497 -19.8089 -0.2 - vertex 24.9086 -19.5812 -0.2 - endloop - endfacet - facet normal 0.305529 -0.952183 0 - outer loop - vertex 24.9086 -19.5812 -0.2 - vertex 25.4477 -19.4082 0 - vertex 24.9086 -19.5812 0 - endloop - endfacet - facet normal 0.305529 -0.952183 0 - outer loop - vertex 25.4477 -19.4082 0 - vertex 24.9086 -19.5812 -0.2 - vertex 25.4477 -19.4082 -0.2 - endloop - endfacet - facet normal 0.223751 -0.974646 0 - outer loop - vertex 25.4477 -19.4082 -0.2 - vertex 25.9886 -19.284 0 - vertex 25.4477 -19.4082 0 - endloop - endfacet - facet normal 0.223751 -0.974646 0 - outer loop - vertex 25.9886 -19.284 0 - vertex 25.4477 -19.4082 -0.2 - vertex 25.9886 -19.284 -0.2 - endloop - endfacet - facet normal 0.142672 -0.98977 0 - outer loop - vertex 25.9886 -19.284 -0.2 - vertex 26.5531 -19.2026 0 - vertex 25.9886 -19.284 0 - endloop - endfacet - facet normal 0.142672 -0.98977 0 - outer loop - vertex 26.5531 -19.2026 0 - vertex 25.9886 -19.284 -0.2 - vertex 26.5531 -19.2026 -0.2 - endloop - endfacet - facet normal 0.072849 -0.997343 0 - outer loop - vertex 26.5531 -19.2026 -0.2 - vertex 27.1629 -19.1581 0 - vertex 26.5531 -19.2026 0 - endloop - endfacet - facet normal 0.072849 -0.997343 0 - outer loop - vertex 27.1629 -19.1581 0 - vertex 26.5531 -19.2026 -0.2 - vertex 27.1629 -19.1581 -0.2 - endloop - endfacet - facet normal 0.0202302 -0.999795 0 - outer loop - vertex 27.1629 -19.1581 -0.2 - vertex 27.8398 -19.1444 0 - vertex 27.1629 -19.1581 0 - endloop - endfacet - facet normal 0.0202302 -0.999795 0 - outer loop - vertex 27.8398 -19.1444 0 - vertex 27.1629 -19.1581 -0.2 - vertex 27.8398 -19.1444 -0.2 - endloop - endfacet - facet normal -0.0344796 -0.999405 0 - outer loop - vertex 27.8398 -19.1444 -0.2 - vertex 28.4483 -19.1654 0 - vertex 27.8398 -19.1444 0 - endloop - endfacet - facet normal -0.0344796 -0.999405 -0 - outer loop - vertex 28.4483 -19.1654 0 - vertex 27.8398 -19.1444 -0.2 - vertex 28.4483 -19.1654 -0.2 - endloop - endfacet - facet normal -0.149538 0.988756 0 - outer loop - vertex 25.51 -21.8307 -0.2 - vertex 25.181 -21.8805 0 - vertex 25.51 -21.8307 0 - endloop - endfacet - facet normal -0.149538 0.988756 0 - outer loop - vertex 25.181 -21.8805 0 - vertex 25.51 -21.8307 -0.2 - vertex 25.181 -21.8805 -0.2 - endloop - endfacet - facet normal -0.215553 0.976492 0 - outer loop - vertex 25.181 -21.8805 -0.2 - vertex 24.827 -21.9586 0 - vertex 25.181 -21.8805 0 - endloop - endfacet - facet normal -0.215553 0.976492 0 - outer loop - vertex 24.827 -21.9586 0 - vertex 25.181 -21.8805 -0.2 - vertex 24.827 -21.9586 -0.2 - endloop - endfacet - facet normal -0.27228 0.962218 0 - outer loop - vertex 24.827 -21.9586 -0.2 - vertex 24.5319 -22.0421 0 - vertex 24.827 -21.9586 0 - endloop - endfacet - facet normal -0.27228 0.962218 0 - outer loop - vertex 24.5319 -22.0421 0 - vertex 24.827 -21.9586 -0.2 - vertex 24.5319 -22.0421 -0.2 - endloop - endfacet - facet normal -0.339982 0.940432 0 - outer loop - vertex 24.5319 -22.0421 -0.2 - vertex 24.2621 -22.1397 0 - vertex 24.5319 -22.0421 0 - endloop - endfacet - facet normal -0.339982 0.940432 0 - outer loop - vertex 24.2621 -22.1397 0 - vertex 24.5319 -22.0421 -0.2 - vertex 24.2621 -22.1397 -0.2 - endloop - endfacet - facet normal -0.419841 0.907598 0 - outer loop - vertex 24.2621 -22.1397 -0.2 - vertex 24.0091 -22.2567 0 - vertex 24.2621 -22.1397 0 - endloop - endfacet - facet normal -0.419841 0.907598 0 - outer loop - vertex 24.0091 -22.2567 0 - vertex 24.2621 -22.1397 -0.2 - vertex 24.0091 -22.2567 -0.2 - endloop - endfacet - facet normal -0.501876 0.864939 0 - outer loop - vertex 24.0091 -22.2567 -0.2 - vertex 23.7644 -22.3987 0 - vertex 24.0091 -22.2567 0 - endloop - endfacet - facet normal -0.501876 0.864939 0 - outer loop - vertex 23.7644 -22.3987 0 - vertex 24.0091 -22.2567 -0.2 - vertex 23.7644 -22.3987 -0.2 - endloop - endfacet - facet normal -0.575619 0.817718 0 - outer loop - vertex 23.7644 -22.3987 -0.2 - vertex 23.5194 -22.5712 0 - vertex 23.7644 -22.3987 0 - endloop - endfacet - facet normal -0.575619 0.817718 0 - outer loop - vertex 23.5194 -22.5712 0 - vertex 23.7644 -22.3987 -0.2 - vertex 23.5194 -22.5712 -0.2 - endloop - endfacet - facet normal -0.634613 0.77283 0 - outer loop - vertex 23.5194 -22.5712 -0.2 - vertex 23.2657 -22.7795 0 - vertex 23.5194 -22.5712 0 - endloop - endfacet - facet normal -0.634613 0.77283 0 - outer loop - vertex 23.2657 -22.7795 0 - vertex 23.5194 -22.5712 -0.2 - vertex 23.2657 -22.7795 -0.2 - endloop - endfacet - facet normal -0.693326 0.720624 0 - outer loop - vertex 23.2657 -22.7795 -0.2 - vertex 22.6979 -23.3258 0 - vertex 23.2657 -22.7795 0 - endloop - endfacet - facet normal -0.693326 0.720624 0 - outer loop - vertex 22.6979 -23.3258 0 - vertex 23.2657 -22.7795 -0.2 - vertex 22.6979 -23.3258 -0.2 - endloop - endfacet - facet normal -0.729687 0.683781 0 - outer loop - vertex 22.2832 -23.7683 -0.2 - vertex 22.6979 -23.3258 0 - vertex 22.6979 -23.3258 -0.2 - endloop - endfacet - facet normal -0.729687 0.683781 0 - outer loop - vertex 22.6979 -23.3258 0 - vertex 22.2832 -23.7683 -0.2 - vertex 22.2832 -23.7683 0 - endloop - endfacet - facet normal -0.755777 0.65483 0 - outer loop - vertex 21.9437 -24.1601 -0.2 - vertex 22.2832 -23.7683 0 - vertex 22.2832 -23.7683 -0.2 - endloop - endfacet - facet normal -0.755777 0.65483 0 - outer loop - vertex 22.2832 -23.7683 0 - vertex 21.9437 -24.1601 -0.2 - vertex 21.9437 -24.1601 0 - endloop - endfacet - facet normal -0.793147 0.60903 0 - outer loop - vertex 21.7143 -24.4589 -0.2 - vertex 21.9437 -24.1601 0 - vertex 21.9437 -24.1601 -0.2 - endloop - endfacet - facet normal -0.793147 0.60903 0 - outer loop - vertex 21.9437 -24.1601 0 - vertex 21.7143 -24.4589 -0.2 - vertex 21.7143 -24.4589 0 - endloop - endfacet - facet normal -0.850912 0.525308 0 - outer loop - vertex 21.6518 -24.5601 -0.2 - vertex 21.7143 -24.4589 0 - vertex 21.7143 -24.4589 -0.2 - endloop - endfacet - facet normal -0.850912 0.525308 0 - outer loop - vertex 21.7143 -24.4589 0 - vertex 21.6518 -24.5601 -0.2 - vertex 21.6518 -24.5601 0 - endloop - endfacet - facet normal -0.943329 0.331858 0 - outer loop - vertex 21.63 -24.6221 -0.2 - vertex 21.6518 -24.5601 0 - vertex 21.6518 -24.5601 -0.2 - endloop - endfacet - facet normal -0.943329 0.331858 0 - outer loop - vertex 21.6518 -24.5601 0 - vertex 21.63 -24.6221 -0.2 - vertex 21.63 -24.6221 0 - endloop - endfacet - facet normal -0.568017 -0.823017 0 - outer loop - vertex 21.63 -24.6221 -0.2 - vertex 21.6873 -24.6616 0 - vertex 21.63 -24.6221 0 - endloop - endfacet - facet normal -0.568017 -0.823017 -0 - outer loop - vertex 21.6873 -24.6616 0 - vertex 21.63 -24.6221 -0.2 - vertex 21.6873 -24.6616 -0.2 - endloop - endfacet - facet normal -0.21919 -0.975682 0 - outer loop - vertex 21.6873 -24.6616 -0.2 - vertex 21.8514 -24.6984 0 - vertex 21.6873 -24.6616 0 - endloop - endfacet - facet normal -0.21919 -0.975682 -0 - outer loop - vertex 21.8514 -24.6984 0 - vertex 21.6873 -24.6616 -0.2 - vertex 21.8514 -24.6984 -0.2 - endloop - endfacet - facet normal -0.103226 -0.994658 0 - outer loop - vertex 21.8514 -24.6984 -0.2 - vertex 22.454 -24.761 0 - vertex 21.8514 -24.6984 0 - endloop - endfacet - facet normal -0.103226 -0.994658 -0 - outer loop - vertex 22.454 -24.761 0 - vertex 21.8514 -24.6984 -0.2 - vertex 22.454 -24.761 -0.2 - endloop - endfacet - facet normal -0.0473276 -0.998879 0 - outer loop - vertex 22.454 -24.761 -0.2 - vertex 23.3459 -24.8032 0 - vertex 22.454 -24.761 0 - endloop - endfacet - facet normal -0.0473276 -0.998879 -0 - outer loop - vertex 23.3459 -24.8032 0 - vertex 22.454 -24.761 -0.2 - vertex 23.3459 -24.8032 -0.2 - endloop - endfacet - facet normal -0.0142485 -0.999898 0 - outer loop - vertex 23.3459 -24.8032 -0.2 - vertex 24.435 -24.8188 0 - vertex 23.3459 -24.8032 0 - endloop - endfacet - facet normal -0.0142485 -0.999898 -0 - outer loop - vertex 24.435 -24.8188 0 - vertex 23.3459 -24.8032 -0.2 - vertex 24.435 -24.8188 -0.2 + vertex 24.4233 -24.8188 0 + vertex 21.6183 -24.6221 -3 + vertex 24.4233 -24.8188 -3 endloop endfacet facet normal 0 -1 0 outer loop - vertex 24.435 -24.8188 -0.2 - vertex 27.2401 -24.8188 0 - vertex 24.435 -24.8188 0 + vertex 24.4233 -24.8188 -3 + vertex 27.2283 -24.8188 0 + vertex 24.4233 -24.8188 0 endloop endfacet facet normal 0 -1 -0 outer loop - vertex 27.2401 -24.8188 0 - vertex 24.435 -24.8188 -0.2 - vertex 27.2401 -24.8188 -0.2 + vertex 27.2283 -24.8188 0 + vertex 24.4233 -24.8188 -3 + vertex 27.2283 -24.8188 -3 endloop endfacet facet normal 0.986418 -0.164252 0 outer loop - vertex 27.2401 -24.8188 0 - vertex 27.373 -24.0204 -0.2 - vertex 27.373 -24.0204 0 + vertex 27.2283 -24.8188 0 + vertex 27.3613 -24.0204 -3 + vertex 27.3613 -24.0204 0 endloop endfacet facet normal 0.986418 -0.164252 0 outer loop - vertex 27.373 -24.0204 -0.2 - vertex 27.2401 -24.8188 0 - vertex 27.2401 -24.8188 -0.2 + vertex 27.3613 -24.0204 -3 + vertex 27.2283 -24.8188 0 + vertex 27.2283 -24.8188 -3 endloop endfacet - facet normal 0.99159 -0.129416 0 + facet normal 0.999989 -0.00473466 0 outer loop - vertex 27.373 -24.0204 0 - vertex 27.4161 -23.6904 -0.2 - vertex 27.4161 -23.6904 0 + vertex 27.3613 -24.0204 0 + vertex 27.3668 -22.8574 -3 + vertex 27.3668 -22.8574 0 endloop endfacet - facet normal 0.99159 -0.129416 0 + facet normal 0.999989 -0.00473466 0 outer loop - vertex 27.4161 -23.6904 -0.2 - vertex 27.373 -24.0204 0 - vertex 27.373 -24.0204 -0.2 + vertex 27.3668 -22.8574 -3 + vertex 27.3613 -24.0204 0 + vertex 27.3613 -24.0204 -3 endloop endfacet - facet normal 0.998763 -0.0497285 0 + facet normal 0.863473 0.504395 0 outer loop - vertex 27.4161 -23.6904 0 - vertex 27.4312 -23.3865 -0.2 - vertex 27.4312 -23.3865 0 + vertex 27.3668 -22.8574 0 + vertex 26.9354 -22.1189 -3 + vertex 26.9354 -22.1189 0 endloop endfacet - facet normal 0.998763 -0.0497285 0 + facet normal 0.863473 0.504395 0 outer loop - vertex 27.4312 -23.3865 -0.2 - vertex 27.4161 -23.6904 0 - vertex 27.4161 -23.6904 -0.2 + vertex 26.9354 -22.1189 -3 + vertex 27.3668 -22.8574 0 + vertex 27.3668 -22.8574 -3 endloop endfacet - facet normal 0.998974 0.0452785 0 + facet normal 0.334224 0.942494 -0 outer loop - vertex 27.4312 -23.3865 0 - vertex 27.4186 -23.1088 -0.2 - vertex 27.4186 -23.1088 0 + vertex 26.9354 -22.1189 -3 + vertex 26.0804 -21.8157 0 + vertex 26.9354 -22.1189 0 endloop endfacet - facet normal 0.998974 0.0452785 0 + facet normal 0.334224 0.942494 0 outer loop - vertex 27.4186 -23.1088 -0.2 - vertex 27.4312 -23.3865 0 - vertex 27.4312 -23.3865 -0.2 + vertex 26.0804 -21.8157 0 + vertex 26.9354 -22.1189 -3 + vertex 26.0804 -21.8157 -3 endloop endfacet - facet normal 0.987512 0.157546 0 + facet normal -0.112261 0.993679 0 outer loop - vertex 27.4186 -23.1088 0 - vertex 27.3785 -22.8574 -0.2 - vertex 27.3785 -22.8574 0 + vertex 26.0804 -21.8157 -3 + vertex 24.8153 -21.9586 0 + vertex 26.0804 -21.8157 0 endloop endfacet - facet normal 0.987512 0.157546 0 + facet normal -0.112261 0.993679 0 outer loop - vertex 27.3785 -22.8574 -0.2 - vertex 27.4186 -23.1088 0 - vertex 27.4186 -23.1088 -0.2 - endloop - endfacet - facet normal 0.957877 0.287177 0 - outer loop - vertex 27.3785 -22.8574 0 - vertex 27.3111 -22.6325 -0.2 - vertex 27.3111 -22.6325 0 - endloop - endfacet - facet normal 0.957877 0.287177 0 - outer loop - vertex 27.3111 -22.6325 -0.2 - vertex 27.3785 -22.8574 0 - vertex 27.3785 -22.8574 -0.2 - endloop - endfacet - facet normal 0.902589 0.430503 0 - outer loop - vertex 27.3111 -22.6325 0 - vertex 27.2166 -22.4344 -0.2 - vertex 27.2166 -22.4344 0 - endloop - endfacet - facet normal 0.902589 0.430503 0 - outer loop - vertex 27.2166 -22.4344 -0.2 - vertex 27.3111 -22.6325 0 - vertex 27.3111 -22.6325 -0.2 - endloop - endfacet - facet normal 0.815851 0.578262 0 - outer loop - vertex 27.2166 -22.4344 0 - vertex 27.0952 -22.2631 -0.2 - vertex 27.0952 -22.2631 0 - endloop - endfacet - facet normal 0.815851 0.578262 0 - outer loop - vertex 27.0952 -22.2631 -0.2 - vertex 27.2166 -22.4344 0 - vertex 27.2166 -22.4344 -0.2 - endloop - endfacet - facet normal 0.697754 0.716337 -0 - outer loop - vertex 27.0952 -22.2631 -0.2 - vertex 26.9471 -22.1189 0 - vertex 27.0952 -22.2631 0 - endloop - endfacet - facet normal 0.697754 0.716337 0 - outer loop - vertex 26.9471 -22.1189 0 - vertex 27.0952 -22.2631 -0.2 - vertex 26.9471 -22.1189 -0.2 - endloop - endfacet - facet normal 0.556877 0.830595 -0 - outer loop - vertex 26.9471 -22.1189 -0.2 - vertex 26.7726 -22.0019 0 - vertex 26.9471 -22.1189 0 - endloop - endfacet - facet normal 0.556877 0.830595 0 - outer loop - vertex 26.7726 -22.0019 0 - vertex 26.9471 -22.1189 -0.2 - vertex 26.7726 -22.0019 -0.2 - endloop - endfacet - facet normal 0.40766 0.913134 -0 - outer loop - vertex 26.7726 -22.0019 -0.2 - vertex 26.5717 -21.9122 0 - vertex 26.7726 -22.0019 0 - endloop - endfacet - facet normal 0.40766 0.913134 0 - outer loop - vertex 26.5717 -21.9122 0 - vertex 26.7726 -22.0019 -0.2 - vertex 26.5717 -21.9122 -0.2 - endloop - endfacet - facet normal 0.264042 0.964511 -0 - outer loop - vertex 26.5717 -21.9122 -0.2 - vertex 26.3449 -21.8501 0 - vertex 26.5717 -21.9122 0 - endloop - endfacet - facet normal 0.264042 0.964511 0 - outer loop - vertex 26.3449 -21.8501 0 - vertex 26.5717 -21.9122 -0.2 - vertex 26.3449 -21.8501 -0.2 - endloop - endfacet - facet normal 0.134852 0.990866 -0 - outer loop - vertex 26.3449 -21.8501 -0.2 - vertex 26.0922 -21.8157 0 - vertex 26.3449 -21.8501 0 - endloop - endfacet - facet normal 0.134852 0.990866 0 - outer loop - vertex 26.0922 -21.8157 0 - vertex 26.3449 -21.8501 -0.2 - vertex 26.0922 -21.8157 -0.2 - endloop - endfacet - facet normal 0.0233803 0.999727 -0 - outer loop - vertex 26.0922 -21.8157 -0.2 - vertex 25.8138 -21.8092 0 - vertex 26.0922 -21.8157 0 - endloop - endfacet - facet normal 0.0233803 0.999727 0 - outer loop - vertex 25.8138 -21.8092 0 - vertex 26.0922 -21.8157 -0.2 - vertex 25.8138 -21.8092 -0.2 - endloop - endfacet - facet normal -0.0707205 0.997496 0 - outer loop - vertex 25.8138 -21.8092 -0.2 - vertex 25.51 -21.8307 0 - vertex 25.8138 -21.8092 0 - endloop - endfacet - facet normal -0.0707205 0.997496 0 - outer loop - vertex 25.51 -21.8307 0 - vertex 25.8138 -21.8092 -0.2 - vertex 25.51 -21.8307 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.0431 -18.7102 -0.2 - vertex -32.1476 -18.5412 -0.2 - vertex -36.5163 -17.3821 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.1476 -18.5412 -0.2 - vertex -37.0431 -18.7102 -0.2 - vertex -33.2902 -21.4299 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.2902 -21.4299 -0.2 - vertex -37.0431 -18.7102 -0.2 - vertex -33.4325 -21.7956 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.3469 -21.8682 -0.2 - vertex -33.4325 -21.7956 -0.2 - vertex -37.0431 -18.7102 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.4325 -21.7956 -0.2 - vertex -38.3469 -21.8682 -0.2 - vertex -33.503 -22.0719 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.503 -22.0719 -0.2 - vertex -38.3469 -21.8682 -0.2 - vertex -34.9509 -25.4747 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.8955 -25.4747 -0.2 - vertex -34.9509 -25.4747 -0.2 - vertex -38.3469 -21.8682 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.9509 -25.4747 -0.2 - vertex -39.8955 -25.4747 -0.2 - vertex -35.4707 -26.6225 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.4707 -26.6225 -0.2 - vertex -39.8955 -25.4747 -0.2 - vertex -36.4516 -28.8697 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -41.2695 -28.6585 -0.2 - vertex -36.4516 -28.8697 -0.2 - vertex -39.8955 -25.4747 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.4516 -28.8697 -0.2 - vertex -41.2695 -28.6585 -0.2 - vertex -37.5165 -31.4193 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -42.2252 -30.9405 -0.2 - vertex -37.5165 -31.4193 -0.2 - vertex -41.2695 -28.6585 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.5165 -31.4193 -0.2 - vertex -42.2252 -30.9405 -0.2 - vertex -38.3711 -33.5534 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4764 -11.5321 -0.2 - vertex -17.4002 -11.6639 -0.2 - vertex -17.4268 -11.5861 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4002 -11.6639 -0.2 - vertex -17.5514 -11.4978 -0.2 - vertex -17.3941 -11.77 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4002 -11.6639 -0.2 - vertex -17.4764 -11.5321 -0.2 - vertex -17.5514 -11.4978 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.7876 -11.4712 -0.2 - vertex -17.3941 -11.77 -0.2 - vertex -17.5514 -11.4978 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.3941 -11.77 -0.2 - vertex -17.7876 -11.4712 -0.2 - vertex -17.4339 -12.0833 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4339 -12.0833 -0.2 - vertex -17.7876 -11.4712 -0.2 - vertex -17.5116 -12.3759 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.5116 -12.3759 -0.2 - vertex -17.7876 -11.4712 -0.2 - vertex -17.6664 -12.8441 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.9412 -14.6683 -0.2 - vertex -17.6664 -12.8441 -0.2 - vertex -17.7876 -11.4712 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.6664 -12.8441 -0.2 - vertex -21.9412 -14.6683 -0.2 - vertex -18.1466 -14.1495 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -21.6284 -15.0493 -0.2 - vertex -18.1466 -14.1495 -0.2 - vertex -21.6966 -14.8935 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -21.5879 -15.2616 -0.2 - vertex -18.7537 -15.6836 -0.2 - vertex -21.6284 -15.0493 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -21.5693 -15.5508 -0.2 - vertex -18.7537 -15.6836 -0.2 - vertex -21.5879 -15.2616 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -21.5729 -16.4428 -0.2 - vertex -19.3667 -17.1305 -0.2 - vertex -21.5693 -15.5508 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -19.3667 -17.1305 -0.2 - vertex -21.5729 -16.4428 -0.2 - vertex -19.4996 -17.3696 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -19.4996 -17.3696 -0.2 - vertex -21.5729 -16.4428 -0.2 - vertex -19.6713 -17.584 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -21.5774 -17.3273 -0.2 - vertex -19.8743 -17.7693 -0.2 - vertex -21.5729 -16.4428 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -19.8743 -17.7693 -0.2 - vertex -21.5774 -17.3273 -0.2 - vertex -20.1009 -17.9213 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.1009 -17.9213 -0.2 - vertex -21.5774 -17.3273 -0.2 - vertex -20.3435 -18.0357 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.5945 -18.108 -0.2 - vertex -21.5774 -17.3273 -0.2 - vertex -20.8463 -18.1339 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -21.5614 -17.6077 -0.2 - vertex -20.8463 -18.1339 -0.2 - vertex -21.5774 -17.3273 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.8463 -18.1339 -0.2 - vertex -21.5614 -17.6077 -0.2 - vertex -21.0912 -18.1093 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.0912 -18.1093 -0.2 - vertex -21.5614 -17.6077 -0.2 - vertex -21.2545 -18.0693 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.2545 -18.0693 -0.2 - vertex -21.5263 -17.8042 -0.2 - vertex -21.378 -18.0171 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.3435 -18.0357 -0.2 - vertex -21.5774 -17.3273 -0.2 - vertex -20.5945 -18.108 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -19.6713 -17.584 -0.2 - vertex -21.5729 -16.4428 -0.2 - vertex -19.8743 -17.7693 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.7537 -15.6836 -0.2 - vertex -21.5693 -15.5508 -0.2 - vertex -19.3667 -17.1305 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.1466 -14.1495 -0.2 - vertex -21.6284 -15.0493 -0.2 - vertex -18.7537 -15.6836 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.1466 -14.1495 -0.2 - vertex -21.7989 -14.7733 -0.2 - vertex -21.6966 -14.8935 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.1466 -14.1495 -0.2 - vertex -21.9412 -14.6683 -0.2 - vertex -21.7989 -14.7733 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.7876 -11.4712 -0.2 - vertex -22.1296 -14.5577 -0.2 - vertex -21.9412 -14.6683 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.7876 -11.4712 -0.2 - vertex -22.3213 -14.4724 -0.2 - vertex -22.1296 -14.5577 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.7876 -11.4712 -0.2 - vertex -22.5778 -14.3998 -0.2 - vertex -22.3213 -14.4724 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.7876 -11.4712 -0.2 - vertex -22.9103 -14.3386 -0.2 - vertex -22.5778 -14.3998 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.7876 -11.4712 -0.2 - vertex -23.3301 -14.2877 -0.2 - vertex -22.9103 -14.3386 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.175 -11.3523 -0.2 - vertex -23.3301 -14.2877 -0.2 - vertex -17.7876 -11.4712 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.3301 -14.2877 -0.2 - vertex -27.175 -11.3523 -0.2 - vertex -24.4767 -14.2125 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.4767 -14.2125 -0.2 - vertex -27.175 -11.3523 -0.2 - vertex -26.1077 -14.1654 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.175 -11.3523 -0.2 - vertex -28.2448 -14.1442 -0.2 - vertex -26.1077 -14.1654 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.175 -11.3523 -0.2 - vertex -28.9898 -14.1579 -0.2 - vertex -28.2448 -14.1442 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.175 -11.3523 -0.2 - vertex -29.549 -14.1906 -0.2 - vertex -28.9898 -14.1579 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.0944 -11.3029 -0.2 - vertex -29.549 -14.1906 -0.2 - vertex -27.175 -11.3523 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.549 -14.1906 -0.2 - vertex -32.0944 -11.3029 -0.2 - vertex -29.9449 -14.2443 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9449 -14.2443 -0.2 - vertex -32.0944 -11.3029 -0.2 - vertex -30.1999 -14.321 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3673 -14.4836 -0.2 - vertex -30.4158 -14.7057 -0.2 - vertex -30.377 -14.5514 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3673 -14.4836 -0.2 - vertex -30.5215 -14.964 -0.2 - vertex -30.4158 -14.7057 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.4754 -14.1281 -0.2 - vertex -30.5215 -14.964 -0.2 - vertex -30.3673 -14.4836 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.5215 -14.964 -0.2 - vertex -35.4754 -14.1281 -0.2 - vertex -30.678 -15.2903 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.678 -15.2903 -0.2 - vertex -35.4754 -14.1281 -0.2 - vertex -30.8691 -15.6487 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -35.5123 -14.4274 -0.2 - vertex -30.8691 -15.6487 -0.2 - vertex -35.4754 -14.1281 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.1999 -14.321 -0.2 - vertex -32.0944 -11.3029 -0.2 - vertex -30.2816 -14.3686 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.0944 -11.3029 -0.2 - vertex -30.3364 -14.4227 -0.2 - vertex -30.2816 -14.3686 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.0944 -11.3029 -0.2 - vertex -30.3673 -14.4836 -0.2 - vertex -30.3364 -14.4227 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -35.4904 -13.894 -0.2 - vertex -30.3673 -14.4836 -0.2 - vertex -32.0944 -11.3029 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.8691 -15.6487 -0.2 - vertex -35.5123 -14.4274 -0.2 - vertex -31.1223 -16.1487 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -35.5964 -14.799 -0.2 - vertex -31.1223 -16.1487 -0.2 - vertex -35.5123 -14.4274 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.1223 -16.1487 -0.2 - vertex -35.5964 -14.799 -0.2 - vertex -31.4477 -16.8607 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -35.7796 -15.3934 -0.2 - vertex -31.4477 -16.8607 -0.2 - vertex -35.5964 -14.799 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.4477 -16.8607 -0.2 - vertex -35.7796 -15.3934 -0.2 - vertex -31.8034 -17.6899 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.4904 -13.894 -0.2 - vertex -32.0944 -11.3029 -0.2 - vertex -33.7011 -11.3017 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -21.5263 -17.8042 -0.2 - vertex -21.2545 -18.0693 -0.2 - vertex -21.5614 -17.6077 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.378 -18.0171 -0.2 - vertex -21.5263 -17.8042 -0.2 - vertex -21.4669 -17.9347 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.4624 -26.9141 -0.2 - vertex -27.8988 -26.2055 -0.2 - vertex -27.8924 -26.5154 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.2929 -22.2506 -0.2 - vertex -27.9236 -26.0946 -0.2 - vertex -27.8988 -26.2055 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.2929 -22.2506 -0.2 - vertex -27.9636 -26.0069 -0.2 - vertex -27.9236 -26.0946 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.2929 -22.2506 -0.2 - vertex -28.0195 -25.9379 -0.2 - vertex -27.9636 -26.0069 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.2929 -22.2506 -0.2 - vertex -28.0919 -25.8829 -0.2 - vertex -28.0195 -25.9379 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2888 -25.7968 -0.2 - vertex -27.6923 -22.3658 -0.2 - vertex -28.1242 -22.4577 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.6923 -22.3658 -0.2 - vertex -28.2888 -25.7968 -0.2 - vertex -28.0919 -25.8829 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1242 -22.4577 -0.2 - vertex -28.5596 -25.7117 -0.2 - vertex -28.2888 -25.7968 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -28.5914 -22.5277 -0.2 - vertex -28.5596 -25.7117 -0.2 - vertex -28.1242 -22.4577 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.5914 -22.5277 -0.2 - vertex -28.7678 -25.6646 -0.2 - vertex -28.5596 -25.7117 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.5914 -22.5277 -0.2 - vertex -29.0734 -25.6205 -0.2 - vertex -28.7678 -25.6646 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -29.0966 -22.5767 -0.2 - vertex -29.0734 -25.6205 -0.2 - vertex -28.5914 -22.5277 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -29.6427 -22.606 -0.2 - vertex -29.0734 -25.6205 -0.2 - vertex -29.0966 -22.5767 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.6427 -22.606 -0.2 - vertex -29.9179 -25.5457 -0.2 - vertex -29.0734 -25.6205 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -30.2322 -22.6168 -0.2 - vertex -29.9179 -25.5457 -0.2 - vertex -29.6427 -22.606 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.9759 -25.4949 -0.2 - vertex -30.2322 -22.6168 -0.2 - vertex -30.868 -22.6102 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.2322 -22.6168 -0.2 - vertex -30.9759 -25.4949 -0.2 - vertex -29.9179 -25.5457 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.8095 -22.5865 -0.2 - vertex -30.9759 -25.4949 -0.2 - vertex -30.868 -22.6102 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.8095 -22.5865 -0.2 - vertex -32.1303 -25.4759 -0.2 - vertex -30.9759 -25.4949 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.5132 -22.5543 -0.2 - vertex -32.1303 -25.4759 -0.2 - vertex -31.8095 -22.5865 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.0067 -22.5002 -0.2 - vertex -32.1303 -25.4759 -0.2 - vertex -32.5132 -22.5543 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.1833 -22.4608 -0.2 - vertex -32.1303 -25.4759 -0.2 - vertex -33.0067 -22.5002 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.9509 -25.4747 -0.2 - vertex -33.1833 -22.4608 -0.2 - vertex -33.3177 -22.4108 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.9509 -25.4747 -0.2 - vertex -33.3177 -22.4108 -0.2 - vertex -33.4135 -22.3486 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.9509 -25.4747 -0.2 - vertex -33.4135 -22.3486 -0.2 - vertex -33.4739 -22.2725 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -36.0907 -16.2655 -0.2 - vertex -31.8034 -17.6899 -0.2 - vertex -35.7796 -15.3934 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.5622 -13.718 -0.2 - vertex -33.7011 -11.3017 -0.2 - vertex -34.8583 -11.3197 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.1833 -22.4608 -0.2 - vertex -34.9509 -25.4747 -0.2 - vertex -32.1303 -25.4759 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.5026 -22.1809 -0.2 - vertex -34.9509 -25.4747 -0.2 - vertex -33.4739 -22.2725 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.8034 -17.6899 -0.2 - vertex -36.0907 -16.2655 -0.2 - vertex -32.1476 -18.5412 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.503 -22.0719 -0.2 - vertex -34.9509 -25.4747 -0.2 - vertex -33.5026 -22.1809 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -36.5163 -17.3821 -0.2 - vertex -32.1476 -18.5412 -0.2 - vertex -36.0907 -16.2655 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3673 -14.4836 -0.2 - vertex -35.4904 -13.894 -0.2 - vertex -35.4754 -14.1281 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.7011 -11.3017 -0.2 - vertex -35.5189 -13.7992 -0.2 - vertex -35.4904 -13.894 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.7011 -11.3017 -0.2 - vertex -35.5622 -13.718 -0.2 - vertex -35.5189 -13.7992 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.8583 -11.3197 -0.2 - vertex -35.6209 -13.6496 -0.2 - vertex -35.5622 -13.718 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.6956 -13.593 -0.2 - vertex -34.8583 -11.3197 -0.2 - vertex -35.6555 -11.3595 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.8583 -11.3197 -0.2 - vertex -35.6956 -13.593 -0.2 - vertex -35.6209 -13.6496 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.6555 -11.3595 -0.2 - vertex -35.8956 -13.512 -0.2 - vertex -35.6956 -13.593 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -36.1819 -11.4238 -0.2 - vertex -35.8956 -13.512 -0.2 - vertex -35.6555 -11.3595 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.8956 -13.512 -0.2 - vertex -36.1819 -11.4238 -0.2 - vertex -36.1669 -13.4677 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -36.527 -11.5152 -0.2 - vertex -36.1669 -13.4677 -0.2 - vertex -36.1819 -11.4238 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -36.7802 -11.6364 -0.2 - vertex -36.1669 -13.4677 -0.2 - vertex -36.527 -11.5152 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.1669 -13.4677 -0.2 - vertex -36.7802 -11.6364 -0.2 - vertex -36.5145 -13.4531 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -36.9755 -11.7636 -0.2 - vertex -36.5145 -13.4531 -0.2 - vertex -36.7802 -11.6364 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -37.1409 -11.9004 -0.2 - vertex -36.5145 -13.4531 -0.2 - vertex -36.9755 -11.7636 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.5145 -13.4531 -0.2 - vertex -37.1409 -11.9004 -0.2 - vertex -36.7305 -13.4387 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -37.2767 -12.0443 -0.2 - vertex -36.7305 -13.4387 -0.2 - vertex -37.1409 -11.9004 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.7305 -13.4387 -0.2 - vertex -37.2767 -12.0443 -0.2 - vertex -36.9216 -13.3997 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -37.3834 -12.1929 -0.2 - vertex -36.9216 -13.3997 -0.2 - vertex -37.2767 -12.0443 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -37.4611 -12.3438 -0.2 - vertex -36.9216 -13.3997 -0.2 - vertex -37.3834 -12.1929 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.9216 -13.3997 -0.2 - vertex -37.4611 -12.3438 -0.2 - vertex -37.0874 -13.3385 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -37.5104 -12.4945 -0.2 - vertex -37.0874 -13.3385 -0.2 - vertex -37.4611 -12.3438 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.0874 -13.3385 -0.2 - vertex -37.5104 -12.4945 -0.2 - vertex -37.2276 -13.2576 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -37.5315 -12.6425 -0.2 - vertex -37.2276 -13.2576 -0.2 - vertex -37.5104 -12.4945 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.2276 -13.2576 -0.2 - vertex -37.5315 -12.6425 -0.2 - vertex -37.3418 -13.1594 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.3418 -13.1594 -0.2 - vertex -37.5315 -12.6425 -0.2 - vertex -37.4296 -13.0463 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.4296 -13.0463 -0.2 - vertex -37.5315 -12.6425 -0.2 - vertex -37.4908 -12.9209 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.4908 -12.9209 -0.2 - vertex -37.5315 -12.6425 -0.2 - vertex -37.5249 -12.7854 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.9739 -18.9651 -0.2 - vertex -22.585 -19.4947 -0.2 - vertex -22.594 -19.3555 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.8524 -19.008 -0.2 - vertex -22.594 -19.3555 -0.2 - vertex -22.625 -19.2389 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.7539 -19.0668 -0.2 - vertex -22.625 -19.2389 -0.2 - vertex -22.6782 -19.1432 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.594 -19.3555 -0.2 - vertex -22.8524 -19.008 -0.2 - vertex -22.9739 -18.9651 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.625 -19.2389 -0.2 - vertex -22.7539 -19.0668 -0.2 - vertex -22.8524 -19.008 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.1186 -18.9365 -0.2 - vertex -22.585 -19.4947 -0.2 - vertex -22.9739 -18.9651 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.585 -19.4947 -0.2 - vertex -23.1186 -18.9365 -0.2 - vertex -22.5978 -19.6581 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.4791 -18.9156 -0.2 - vertex -22.5978 -19.6581 -0.2 - vertex -23.1186 -18.9365 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.5978 -19.6581 -0.2 - vertex -23.4791 -18.9156 -0.2 - vertex -22.6874 -20.0641 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -23.6632 -18.9241 -0.2 - vertex -22.6874 -20.0641 -0.2 - vertex -23.4791 -18.9156 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.3738 -19.4278 -0.2 - vertex -22.6874 -20.0641 -0.2 - vertex -24.2328 -19.2424 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.6874 -20.0641 -0.2 - vertex -23.6632 -18.9241 -0.2 - vertex -24.2328 -19.2424 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.0993 -19.1062 -0.2 - vertex -23.6632 -18.9241 -0.2 - vertex -23.8226 -18.954 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.0993 -19.1062 -0.2 - vertex -23.8226 -18.954 -0.2 - vertex -23.9653 -19.0124 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.6632 -18.9241 -0.2 - vertex -24.0993 -19.1062 -0.2 - vertex -24.2328 -19.2424 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.6874 -20.0641 -0.2 - vertex -24.3738 -19.4278 -0.2 - vertex -22.8608 -20.5868 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.7108 -19.9745 -0.2 - vertex -22.8608 -20.5868 -0.2 - vertex -24.3738 -19.4278 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.8608 -20.5868 -0.2 - vertex -24.7108 -19.9745 -0.2 - vertex -23.116 -21.2395 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.9407 -20.3516 -0.2 - vertex -23.116 -21.2395 -0.2 - vertex -24.7108 -19.9745 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -25.1784 -20.695 -0.2 - vertex -23.116 -21.2395 -0.2 - vertex -24.9407 -20.3516 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -25.4267 -21.0057 -0.2 - vertex -23.116 -21.2395 -0.2 - vertex -25.1784 -20.695 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.6884 -21.2849 -0.2 - vertex -23.116 -21.2395 -0.2 - vertex -25.4267 -21.0057 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.116 -21.2395 -0.2 - vertex -25.6884 -21.2849 -0.2 - vertex -24.3958 -24.3815 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -25.9661 -21.5339 -0.2 - vertex -24.3958 -24.3815 -0.2 - vertex -25.6884 -21.2849 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -26.2627 -21.7538 -0.2 - vertex -24.3958 -24.3815 -0.2 - vertex -25.9661 -21.5339 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -26.5809 -21.9457 -0.2 - vertex -24.3958 -24.3815 -0.2 - vertex -26.2627 -21.7538 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -26.9234 -22.1109 -0.2 - vertex -24.3958 -24.3815 -0.2 - vertex -26.5809 -21.9457 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.2929 -22.2506 -0.2 - vertex -24.3958 -24.3815 -0.2 - vertex -26.9234 -22.1109 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.3958 -24.3815 -0.2 - vertex -27.2929 -22.2506 -0.2 - vertex -24.9793 -25.8003 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.4624 -26.9141 -0.2 - vertex -27.8924 -26.5154 -0.2 - vertex -25.8688 -27.7587 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.8688 -27.7587 -0.2 - vertex -27.9393 -26.9734 -0.2 - vertex -26.0506 -28.0911 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.0506 -28.0911 -0.2 - vertex -27.9393 -26.9734 -0.2 - vertex -26.2221 -28.3696 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.9393 -26.9734 -0.2 - vertex -25.8688 -27.7587 -0.2 - vertex -27.8924 -26.5154 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.2221 -28.3696 -0.2 - vertex -27.9393 -26.9734 -0.2 - vertex -26.3861 -28.5987 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -28.1721 -28.4809 -0.2 - vertex -26.3861 -28.5987 -0.2 - vertex -27.9393 -26.9734 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.8988 -26.2055 -0.2 - vertex -24.9793 -25.8003 -0.2 - vertex -27.2929 -22.2506 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.3861 -28.5987 -0.2 - vertex -28.1721 -28.4809 -0.2 - vertex -26.5458 -28.7827 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.5458 -28.7827 -0.2 - vertex -28.1721 -28.4809 -0.2 - vertex -26.7039 -28.9262 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.8988 -26.2055 -0.2 - vertex -25.4624 -26.9141 -0.2 - vertex -24.9793 -25.8003 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.7039 -28.9262 -0.2 - vertex -28.1721 -28.4809 -0.2 - vertex -26.8635 -29.0336 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.8635 -29.0336 -0.2 - vertex -28.1721 -28.4809 -0.2 - vertex -27.0275 -29.1093 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.0919 -25.8829 -0.2 - vertex -27.2929 -22.2506 -0.2 - vertex -27.6923 -22.3658 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.0275 -29.1093 -0.2 - vertex -28.1721 -28.4809 -0.2 - vertex -27.1989 -29.1579 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.1989 -29.1579 -0.2 - vertex -28.1721 -28.4809 -0.2 - vertex -27.3805 -29.1838 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.3805 -29.1838 -0.2 - vertex -28.1721 -28.4809 -0.2 - vertex -27.5755 -29.1914 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -28.2235 -28.8853 -0.2 - vertex -27.5755 -29.1914 -0.2 - vertex -28.1721 -28.4809 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.5755 -29.1914 -0.2 - vertex -28.2235 -28.8853 -0.2 - vertex -27.9775 -29.1782 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.9775 -29.1782 -0.2 - vertex -28.2235 -28.8853 -0.2 - vertex -28.0989 -29.15 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -28.2154 -29.0113 -0.2 - vertex -28.0989 -29.15 -0.2 - vertex -28.2235 -28.8853 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.0989 -29.15 -0.2 - vertex -28.2154 -29.0113 -0.2 - vertex -28.176 -29.097 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.4571 -30.6716 -0.2 - vertex -23.4513 -30.847 -0.2 - vertex -23.4345 -30.738 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.5012 -30.6026 -0.2 - vertex -23.4513 -30.847 -0.2 - vertex -23.4571 -30.6716 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.6433 -30.465 -0.2 - vertex -23.4513 -30.847 -0.2 - vertex -23.5012 -30.6026 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.4513 -30.847 -0.2 - vertex -23.6433 -30.465 -0.2 - vertex -23.5218 -31.031 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.8399 -30.3412 -0.2 - vertex -23.5218 -31.031 -0.2 - vertex -23.6433 -30.465 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.0701 -30.2475 -0.2 - vertex -23.5218 -31.031 -0.2 - vertex -23.8399 -30.3412 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.5218 -31.031 -0.2 - vertex -24.0701 -30.2475 -0.2 - vertex -23.8031 -31.5911 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.8452 -30.2998 -0.2 - vertex -23.8031 -31.5911 -0.2 - vertex -24.0701 -30.2475 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.8452 -30.2998 -0.2 - vertex -24.0701 -30.2475 -0.2 - vertex -24.2803 -30.1833 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.6311 -30.1847 -0.2 - vertex -24.2803 -30.1833 -0.2 - vertex -24.455 -30.1541 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.6311 -30.1847 -0.2 - vertex -24.455 -30.1541 -0.2 - vertex -24.5406 -30.1604 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.2803 -30.1833 -0.2 - vertex -24.6311 -30.1847 -0.2 - vertex -24.8452 -30.2998 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.8031 -31.5911 -0.2 - vertex -24.8452 -30.2998 -0.2 - vertex -25.1341 -30.5242 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -25.5344 -30.8827 -0.2 - vertex -23.8031 -31.5911 -0.2 - vertex -25.1341 -30.5242 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.8031 -31.5911 -0.2 - vertex -25.5344 -30.8827 -0.2 - vertex -24.2375 -32.3527 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.2375 -32.3527 -0.2 - vertex -25.5344 -30.8827 -0.2 - vertex -24.7839 -33.2498 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -26.8166 -32.1012 -0.2 - vertex -24.7839 -33.2498 -0.2 - vertex -25.5344 -30.8827 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.7839 -33.2498 -0.2 - vertex -26.8166 -32.1012 -0.2 - vertex -25.4011 -34.2168 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.3602 -32.5933 -0.2 - vertex -25.4011 -34.2168 -0.2 - vertex -26.8166 -32.1012 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.924 -33.0516 -0.2 - vertex -25.4011 -34.2168 -0.2 - vertex -27.3602 -32.5933 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.4011 -34.2168 -0.2 - vertex -27.924 -33.0516 -0.2 - vertex -26.0482 -35.1877 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -28.5012 -33.4718 -0.2 - vertex -26.0482 -35.1877 -0.2 - vertex -27.924 -33.0516 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.0482 -35.1877 -0.2 - vertex -28.5012 -33.4718 -0.2 - vertex -26.6839 -36.0968 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -29.0852 -33.8499 -0.2 - vertex -26.6839 -36.0968 -0.2 - vertex -28.5012 -33.4718 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.6839 -36.0968 -0.2 - vertex -29.0852 -33.8499 -0.2 - vertex -27.2673 -36.8782 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -29.669 -34.1817 -0.2 - vertex -27.2673 -36.8782 -0.2 - vertex -29.0852 -33.8499 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -30.2461 -34.4632 -0.2 - vertex -27.2673 -36.8782 -0.2 - vertex -29.669 -34.1817 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.2673 -36.8782 -0.2 - vertex -30.2461 -34.4632 -0.2 - vertex -28.2718 -38.1638 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -30.8095 -34.6902 -0.2 - vertex -28.2718 -38.1638 -0.2 - vertex -30.2461 -34.4632 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -31.3526 -34.8586 -0.2 - vertex -28.2718 -38.1638 -0.2 - vertex -30.8095 -34.6902 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -31.5797 -34.902 -0.2 - vertex -28.2718 -38.1638 -0.2 - vertex -31.3526 -34.8586 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -31.9023 -34.9414 -0.2 - vertex -28.2718 -38.1638 -0.2 - vertex -31.5797 -34.902 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -32.7769 -35.0076 -0.2 - vertex -28.2718 -38.1638 -0.2 - vertex -31.9023 -34.9414 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.6203 -38.1325 -0.2 - vertex -32.7769 -35.0076 -0.2 - vertex -33.8615 -35.0556 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.6203 -38.1325 -0.2 - vertex -33.8615 -35.0556 -0.2 - vertex -35.0412 -35.0835 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.6203 -38.1325 -0.2 - vertex -35.0412 -35.0835 -0.2 - vertex -36.2012 -35.0898 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.6203 -38.1325 -0.2 - vertex -36.2012 -35.0898 -0.2 - vertex -37.2267 -35.0727 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.7769 -35.0076 -0.2 - vertex -37.6203 -38.1325 -0.2 - vertex -28.2718 -38.1638 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.0027 -35.0306 -0.2 - vertex -37.6203 -38.1325 -0.2 - vertex -37.2267 -35.0727 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.2613 -34.9997 -0.2 - vertex -37.6203 -38.1325 -0.2 - vertex -38.0027 -35.0306 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.4144 -34.9619 -0.2 - vertex -37.6203 -38.1325 -0.2 - vertex -38.2613 -34.9997 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -41.2883 -38.1087 -0.2 - vertex -38.4144 -34.9619 -0.2 - vertex -38.5336 -34.8886 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -41.2883 -38.1087 -0.2 - vertex -38.5336 -34.8886 -0.2 - vertex -38.6312 -34.7874 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -41.2883 -38.1087 -0.2 - vertex -38.6312 -34.7874 -0.2 - vertex -38.6971 -34.6715 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -42.7651 -32.2453 -0.2 - vertex -38.3711 -33.5534 -0.2 - vertex -42.2252 -30.9405 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.3711 -33.5534 -0.2 - vertex -42.7651 -32.2453 -0.2 - vertex -38.6277 -34.2404 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.6277 -34.2404 -0.2 - vertex -42.7651 -32.2453 -0.2 - vertex -38.7214 -34.5543 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -43.2426 -33.2915 -0.2 - vertex -38.7214 -34.5543 -0.2 - vertex -42.7651 -32.2453 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -43.4655 -33.7273 -0.2 - vertex -38.7214 -34.5543 -0.2 - vertex -43.2426 -33.2915 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.7214 -34.5543 -0.2 - vertex -43.4655 -33.7273 -0.2 - vertex -38.6971 -34.6715 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.4144 -34.9619 -0.2 - vertex -41.2883 -38.1087 -0.2 - vertex -37.6203 -38.1325 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -43.682 -34.1098 -0.2 - vertex -38.6971 -34.6715 -0.2 - vertex -43.4655 -33.7273 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.6971 -34.6715 -0.2 - vertex -43.682 -34.1098 -0.2 - vertex -41.2883 -38.1087 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -43.8952 -34.443 -0.2 - vertex -41.2883 -38.1087 -0.2 - vertex -43.682 -34.1098 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -44.108 -34.7306 -0.2 - vertex -41.2883 -38.1087 -0.2 - vertex -43.8952 -34.443 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -44.3237 -34.9765 -0.2 - vertex -41.2883 -38.1087 -0.2 - vertex -44.108 -34.7306 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -44.3237 -34.9765 -0.2 - vertex -44.3648 -38.0673 -0.2 - vertex -41.2883 -38.1087 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -44.5451 -35.1844 -0.2 - vertex -44.3648 -38.0673 -0.2 - vertex -44.3237 -34.9765 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -44.7755 -35.3583 -0.2 - vertex -44.3648 -38.0673 -0.2 - vertex -44.5451 -35.1844 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -45.0179 -35.5019 -0.2 - vertex -44.3648 -38.0673 -0.2 - vertex -44.7755 -35.3583 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -45.2753 -35.6191 -0.2 - vertex -44.3648 -38.0673 -0.2 - vertex -45.0179 -35.5019 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -45.5508 -35.7136 -0.2 - vertex -44.3648 -38.0673 -0.2 - vertex -45.2753 -35.6191 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -45.8475 -35.7893 -0.2 - vertex -44.3648 -38.0673 -0.2 - vertex -45.5508 -35.7136 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -46.5272 -38.014 -0.2 - vertex -45.8475 -35.7893 -0.2 - vertex -46.1684 -35.8499 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -46.5272 -38.014 -0.2 - vertex -46.1684 -35.8499 -0.2 - vertex -46.4544 -35.9117 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -45.8475 -35.7893 -0.2 - vertex -46.5272 -38.014 -0.2 - vertex -44.3648 -38.0673 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -46.7228 -35.999 -0.2 - vertex -46.5272 -38.014 -0.2 - vertex -46.4544 -35.9117 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -46.9715 -36.1082 -0.2 - vertex -46.5272 -38.014 -0.2 - vertex -46.7228 -35.999 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -47.1985 -36.2359 -0.2 - vertex -46.5272 -38.014 -0.2 - vertex -46.9715 -36.1082 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -47.4015 -36.3788 -0.2 - vertex -46.5272 -38.014 -0.2 - vertex -47.1985 -36.2359 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -46.5272 -38.014 -0.2 - vertex -47.4015 -36.3788 -0.2 - vertex -47.1648 -37.9848 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -47.5785 -36.5332 -0.2 - vertex -47.1648 -37.9848 -0.2 - vertex -47.4015 -36.3788 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -47.7274 -36.6957 -0.2 - vertex -47.1648 -37.9848 -0.2 - vertex -47.5785 -36.5332 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -47.846 -36.863 -0.2 - vertex -47.1648 -37.9848 -0.2 - vertex -47.7274 -36.6957 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.1648 -37.9848 -0.2 - vertex -47.846 -36.863 -0.2 - vertex -47.4529 -37.9547 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -47.9322 -37.0315 -0.2 - vertex -47.4529 -37.9547 -0.2 - vertex -47.846 -36.863 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.4529 -37.9547 -0.2 - vertex -47.9322 -37.0315 -0.2 - vertex -47.6522 -37.8745 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -47.984 -37.1977 -0.2 - vertex -47.6522 -37.8745 -0.2 - vertex -47.9322 -37.0315 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.6522 -37.8745 -0.2 - vertex -47.984 -37.1977 -0.2 - vertex -47.8044 -37.7712 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -47.9993 -37.3583 -0.2 - vertex -47.8044 -37.7712 -0.2 - vertex -47.984 -37.1977 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.8044 -37.7712 -0.2 - vertex -47.9993 -37.3583 -0.2 - vertex -47.9115 -37.6485 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.9115 -37.6485 -0.2 - vertex -47.9993 -37.3583 -0.2 - vertex -47.9758 -37.5097 -0.2 - endloop - endfacet - facet normal -0.0100487 -0.99995 0 - outer loop - vertex -32.0944 -11.3029 -0.2 - vertex -27.175 -11.3523 0 - vertex -32.0944 -11.3029 0 - endloop - endfacet - facet normal -0.0100487 -0.99995 -0 - outer loop - vertex -27.175 -11.3523 0 - vertex -32.0944 -11.3029 -0.2 - vertex -27.175 -11.3523 -0.2 + vertex 24.8153 -21.9586 0 + vertex 26.0804 -21.8157 -3 + vertex 24.8153 -21.9586 -3 endloop endfacet facet normal -0.0126654 -0.99992 0 outer loop - vertex -27.175 -11.3523 -0.2 - vertex -17.7876 -11.4712 0 - vertex -27.175 -11.3523 0 + vertex -27.1868 -11.3523 -3 + vertex -17.7993 -11.4712 0 + vertex -27.1868 -11.3523 0 endloop endfacet facet normal -0.0126654 -0.99992 -0 outer loop - vertex -17.7876 -11.4712 0 - vertex -27.175 -11.3523 -0.2 - vertex -17.7876 -11.4712 -0.2 + vertex -17.7993 -11.4712 0 + vertex -27.1868 -11.3523 -3 + vertex -17.7993 -11.4712 -3 endloop endfacet - facet normal -0.111827 -0.993728 0 + facet normal -0.303355 -0.952878 0 outer loop - vertex -17.7876 -11.4712 -0.2 - vertex -17.5514 -11.4978 0 - vertex -17.7876 -11.4712 0 + vertex -17.7993 -11.4712 -3 + vertex -17.4385 -11.5861 0 + vertex -17.7993 -11.4712 0 endloop endfacet - facet normal -0.111827 -0.993728 -0 + facet normal -0.303355 -0.952878 -0 outer loop - vertex -17.5514 -11.4978 0 - vertex -17.7876 -11.4712 -0.2 - vertex -17.5514 -11.4978 -0.2 + vertex -17.4385 -11.5861 0 + vertex -17.7993 -11.4712 -3 + vertex -17.4385 -11.5861 -3 endloop endfacet - facet normal -0.415864 -0.909427 0 + facet normal -0.999899 0.0142188 0 outer loop - vertex -17.5514 -11.4978 -0.2 - vertex -17.4764 -11.5321 0 - vertex -17.5514 -11.4978 0 + vertex -17.4456 -12.0833 -3 + vertex -17.4385 -11.5861 0 + vertex -17.4385 -11.5861 -3 endloop endfacet - facet normal -0.415864 -0.909427 -0 + facet normal -0.999899 0.0142188 0 outer loop - vertex -17.4764 -11.5321 0 - vertex -17.5514 -11.4978 -0.2 - vertex -17.4764 -11.5321 -0.2 + vertex -17.4385 -11.5861 0 + vertex -17.4456 -12.0833 -3 + vertex -17.4456 -12.0833 0 endloop endfacet - facet normal -0.736355 -0.676596 0 + facet normal -0.933863 0.35763 0 outer loop - vertex -17.4268 -11.5861 -0.2 - vertex -17.4764 -11.5321 0 - vertex -17.4764 -11.5321 -0.2 + vertex -19.3785 -17.1305 -3 + vertex -17.4456 -12.0833 0 + vertex -17.4456 -12.0833 -3 endloop endfacet - facet normal -0.736355 -0.676596 0 + facet normal -0.933863 0.35763 0 outer loop - vertex -17.4764 -11.5321 0 - vertex -17.4268 -11.5861 -0.2 - vertex -17.4268 -11.5861 0 + vertex -17.4456 -12.0833 0 + vertex -19.3785 -17.1305 -3 + vertex -19.3785 -17.1305 0 endloop endfacet - facet normal -0.946306 -0.323273 0 + facet normal -0.830148 0.557543 0 outer loop - vertex -17.4002 -11.6639 -0.2 - vertex -17.4268 -11.5861 0 - vertex -17.4268 -11.5861 -0.2 + vertex -19.683 -17.584 -3 + vertex -19.3785 -17.1305 0 + vertex -19.3785 -17.1305 -3 endloop endfacet - facet normal -0.946306 -0.323273 0 + facet normal -0.830148 0.557543 0 outer loop - vertex -17.4268 -11.5861 0 - vertex -17.4002 -11.6639 -0.2 - vertex -17.4002 -11.6639 0 + vertex -19.3785 -17.1305 0 + vertex -19.683 -17.584 -3 + vertex -19.683 -17.584 0 endloop endfacet - facet normal -0.998372 -0.057036 0 + facet normal -0.617609 0.786485 0 outer loop - vertex -17.3941 -11.77 -0.2 - vertex -17.4002 -11.6639 0 - vertex -17.4002 -11.6639 -0.2 + vertex -19.683 -17.584 -3 + vertex -20.1126 -17.9213 0 + vertex -19.683 -17.584 0 endloop endfacet - facet normal -0.998372 -0.057036 0 + facet normal -0.617609 0.786485 0 outer loop - vertex -17.4002 -11.6639 0 - vertex -17.3941 -11.77 -0.2 - vertex -17.3941 -11.77 0 + vertex -20.1126 -17.9213 0 + vertex -19.683 -17.584 -3 + vertex -20.1126 -17.9213 -3 endloop endfacet - facet normal -0.992058 0.125781 0 + facet normal -0.353642 0.935381 0 outer loop - vertex -17.4339 -12.0833 -0.2 - vertex -17.3941 -11.77 0 - vertex -17.3941 -11.77 -0.2 + vertex -20.1126 -17.9213 -3 + vertex -20.6062 -18.108 0 + vertex -20.1126 -17.9213 0 endloop endfacet - facet normal -0.992058 0.125781 0 + facet normal -0.353642 0.935381 0 outer loop - vertex -17.3941 -11.77 0 - vertex -17.4339 -12.0833 -0.2 - vertex -17.4339 -12.0833 0 + vertex -20.6062 -18.108 0 + vertex -20.1126 -17.9213 -3 + vertex -20.6062 -18.108 -3 endloop endfacet - facet normal -0.966487 0.256715 0 + facet normal -0.00259595 0.999997 0 outer loop - vertex -17.5116 -12.3759 -0.2 - vertex -17.4339 -12.0833 0 - vertex -17.4339 -12.0833 -0.2 + vertex -20.6062 -18.108 -3 + vertex -21.1029 -18.1093 0 + vertex -20.6062 -18.108 0 endloop endfacet - facet normal -0.966487 0.256715 0 + facet normal -0.00259595 0.999997 0 outer loop - vertex -17.4339 -12.0833 0 - vertex -17.5116 -12.3759 -0.2 - vertex -17.5116 -12.3759 0 + vertex -21.1029 -18.1093 0 + vertex -20.6062 -18.108 -3 + vertex -21.1029 -18.1093 -3 endloop endfacet - facet normal -0.949465 0.313873 0 + facet normal 0.306009 0.952029 -0 outer loop - vertex -17.6664 -12.8441 -0.2 - vertex -17.5116 -12.3759 0 - vertex -17.5116 -12.3759 -0.2 + vertex -21.1029 -18.1093 -3 + vertex -21.3898 -18.0171 0 + vertex -21.1029 -18.1093 0 endloop endfacet - facet normal -0.949465 0.313873 0 + facet normal 0.306009 0.952029 0 outer loop - vertex -17.5116 -12.3759 0 - vertex -17.6664 -12.8441 -0.2 - vertex -17.6664 -12.8441 0 + vertex -21.3898 -18.0171 0 + vertex -21.1029 -18.1093 -3 + vertex -21.3898 -18.0171 -3 endloop endfacet - facet normal -0.938494 0.345297 0 + facet normal 0.820593 0.571513 0 outer loop - vertex -18.1466 -14.1495 -0.2 - vertex -17.6664 -12.8441 0 - vertex -17.6664 -12.8441 -0.2 + vertex -21.3898 -18.0171 0 + vertex -21.538 -17.8042 -3 + vertex -21.538 -17.8042 0 endloop endfacet - facet normal -0.938494 0.345297 0 + facet normal 0.820593 0.571513 0 outer loop - vertex -17.6664 -12.8441 0 - vertex -18.1466 -14.1495 -0.2 - vertex -18.1466 -14.1495 0 + vertex -21.538 -17.8042 -3 + vertex -21.3898 -18.0171 0 + vertex -21.3898 -18.0171 -3 endloop endfacet - facet normal -0.929834 0.367979 0 + facet normal 0.999415 0.0341969 0 outer loop - vertex -18.7537 -15.6836 -0.2 - vertex -18.1466 -14.1495 0 - vertex -18.1466 -14.1495 -0.2 + vertex -21.538 -17.8042 0 + vertex -21.5846 -16.4428 -3 + vertex -21.5846 -16.4428 0 endloop endfacet - facet normal -0.929834 0.367979 0 + facet normal 0.999415 0.0341969 0 outer loop - vertex -18.1466 -14.1495 0 - vertex -18.7537 -15.6836 -0.2 - vertex -18.7537 -15.6836 0 + vertex -21.5846 -16.4428 -3 + vertex -21.538 -17.8042 0 + vertex -21.538 -17.8042 -3 endloop endfacet - facet normal -0.920782 0.390077 0 + facet normal 0.999208 0.039804 0 outer loop - vertex -19.3667 -17.1305 -0.2 - vertex -18.7537 -15.6836 0 - vertex -18.7537 -15.6836 -0.2 + vertex -21.5846 -16.4428 0 + vertex -21.6401 -15.0493 -3 + vertex -21.6401 -15.0493 0 endloop endfacet - facet normal -0.920782 0.390077 0 + facet normal 0.999208 0.039804 0 outer loop - vertex -18.7537 -15.6836 0 - vertex -19.3667 -17.1305 -0.2 - vertex -19.3667 -17.1305 0 + vertex -21.6401 -15.0493 -3 + vertex -21.5846 -16.4428 0 + vertex -21.5846 -16.4428 -3 endloop endfacet - facet normal -0.87414 0.485675 0 + facet normal 0.85074 0.525587 0 outer loop - vertex -19.4996 -17.3696 -0.2 - vertex -19.3667 -17.1305 0 - vertex -19.3667 -17.1305 -0.2 + vertex -21.6401 -15.0493 0 + vertex -21.8106 -14.7733 -3 + vertex -21.8106 -14.7733 0 endloop endfacet - facet normal -0.87414 0.485675 0 + facet normal 0.85074 0.525587 0 outer loop - vertex -19.3667 -17.1305 0 - vertex -19.4996 -17.3696 -0.2 - vertex -19.4996 -17.3696 0 + vertex -21.8106 -14.7733 -3 + vertex -21.6401 -15.0493 0 + vertex -21.6401 -15.0493 -3 endloop endfacet - facet normal -0.780486 0.625173 0 + facet normal 0.546243 0.837626 -0 outer loop - vertex -19.6713 -17.584 -0.2 - vertex -19.4996 -17.3696 0 - vertex -19.4996 -17.3696 -0.2 + vertex -21.8106 -14.7733 -3 + vertex -22.1413 -14.5577 0 + vertex -21.8106 -14.7733 0 endloop endfacet - facet normal -0.780486 0.625173 0 + facet normal 0.546243 0.837626 0 outer loop - vertex -19.4996 -17.3696 0 - vertex -19.6713 -17.584 -0.2 - vertex -19.6713 -17.584 0 + vertex -22.1413 -14.5577 0 + vertex -21.8106 -14.7733 -3 + vertex -22.1413 -14.5577 -3 endloop endfacet - facet normal -0.674318 0.738441 0 + facet normal 0.21941 0.975633 -0 outer loop - vertex -19.6713 -17.584 -0.2 - vertex -19.8743 -17.7693 0 - vertex -19.6713 -17.584 0 + vertex -22.1413 -14.5577 -3 + vertex -23.3419 -14.2877 0 + vertex -22.1413 -14.5577 0 endloop endfacet - facet normal -0.674318 0.738441 0 + facet normal 0.21941 0.975633 0 outer loop - vertex -19.8743 -17.7693 0 - vertex -19.6713 -17.584 -0.2 - vertex -19.8743 -17.7693 -0.2 + vertex -23.3419 -14.2877 0 + vertex -22.1413 -14.5577 -3 + vertex -23.3419 -14.2877 -3 endloop endfacet - facet normal -0.55704 0.830486 0 + facet normal 0.0439983 0.999032 -0 outer loop - vertex -19.8743 -17.7693 -0.2 - vertex -20.1009 -17.9213 0 - vertex -19.8743 -17.7693 0 + vertex -23.3419 -14.2877 -3 + vertex -26.1195 -14.1654 0 + vertex -23.3419 -14.2877 0 endloop endfacet - facet normal -0.55704 0.830486 0 + facet normal 0.0439983 0.999032 0 outer loop - vertex -20.1009 -17.9213 0 - vertex -19.8743 -17.7693 -0.2 - vertex -20.1009 -17.9213 -0.2 + vertex -26.1195 -14.1654 0 + vertex -23.3419 -14.2877 -3 + vertex -26.1195 -14.1654 -3 endloop endfacet - facet normal -0.42623 0.904615 0 + facet normal -0.00734919 0.999973 0 outer loop - vertex -20.1009 -17.9213 -0.2 - vertex -20.3435 -18.0357 0 - vertex -20.1009 -17.9213 0 + vertex -26.1195 -14.1654 -3 + vertex -29.5608 -14.1906 0 + vertex -26.1195 -14.1654 0 endloop endfacet - facet normal -0.42623 0.904615 0 + facet normal -0.00734919 0.999973 0 outer loop - vertex -20.3435 -18.0357 0 - vertex -20.1009 -17.9213 -0.2 - vertex -20.3435 -18.0357 -0.2 + vertex -29.5608 -14.1906 0 + vertex -26.1195 -14.1654 -3 + vertex -29.5608 -14.1906 -3 endloop endfacet - facet normal -0.276826 0.96092 0 + facet normal -0.196359 0.980532 0 outer loop - vertex -20.3435 -18.0357 -0.2 - vertex -20.5945 -18.108 0 - vertex -20.3435 -18.0357 0 + vertex -29.5608 -14.1906 -3 + vertex -30.2116 -14.321 0 + vertex -29.5608 -14.1906 0 endloop endfacet - facet normal -0.276826 0.96092 0 + facet normal -0.196359 0.980532 0 outer loop - vertex -20.5945 -18.108 0 - vertex -20.3435 -18.0357 -0.2 - vertex -20.5945 -18.108 -0.2 + vertex -30.2116 -14.321 0 + vertex -29.5608 -14.1906 -3 + vertex -30.2116 -14.321 -3 endloop endfacet - facet normal -0.102621 0.994721 0 + facet normal -0.792981 0.609246 0 outer loop - vertex -20.5945 -18.108 -0.2 - vertex -20.8463 -18.1339 0 - vertex -20.5945 -18.108 0 + vertex -30.3887 -14.5514 -3 + vertex -30.2116 -14.321 0 + vertex -30.2116 -14.321 -3 endloop endfacet - facet normal -0.102621 0.994721 0 + facet normal -0.792981 0.609246 0 outer loop - vertex -20.8463 -18.1339 0 - vertex -20.5945 -18.108 -0.2 - vertex -20.8463 -18.1339 -0.2 + vertex -30.2116 -14.321 0 + vertex -30.3887 -14.5514 -3 + vertex -30.3887 -14.5514 0 endloop endfacet - facet normal 0.100283 0.994959 -0 + facet normal -0.912409 0.409279 0 outer loop - vertex -20.8463 -18.1339 -0.2 - vertex -21.0912 -18.1093 0 - vertex -20.8463 -18.1339 0 + vertex -30.8809 -15.6487 -3 + vertex -30.3887 -14.5514 0 + vertex -30.3887 -14.5514 -3 endloop endfacet - facet normal 0.100283 0.994959 0 + facet normal -0.912409 0.409279 0 outer loop - vertex -21.0912 -18.1093 0 - vertex -20.8463 -18.1339 -0.2 - vertex -21.0912 -18.1093 -0.2 + vertex -30.3887 -14.5514 0 + vertex -30.8809 -15.6487 -3 + vertex -30.8809 -15.6487 0 endloop endfacet - facet normal 0.237758 0.971324 -0 + facet normal -0.91465 0.404247 0 outer loop - vertex -21.0912 -18.1093 -0.2 - vertex -21.2545 -18.0693 0 - vertex -21.0912 -18.1093 0 + vertex -32.1593 -18.5412 -3 + vertex -30.8809 -15.6487 0 + vertex -30.8809 -15.6487 -3 endloop endfacet - facet normal 0.237758 0.971324 0 + facet normal -0.91465 0.404247 0 outer loop - vertex -21.2545 -18.0693 0 - vertex -21.0912 -18.1093 -0.2 - vertex -21.2545 -18.0693 -0.2 - endloop - endfacet - facet normal 0.389432 0.921055 -0 - outer loop - vertex -21.2545 -18.0693 -0.2 - vertex -21.378 -18.0171 0 - vertex -21.2545 -18.0693 0 - endloop - endfacet - facet normal 0.389432 0.921055 0 - outer loop - vertex -21.378 -18.0171 0 - vertex -21.2545 -18.0693 -0.2 - vertex -21.378 -18.0171 -0.2 - endloop - endfacet - facet normal 0.679889 0.733315 -0 - outer loop - vertex -21.378 -18.0171 -0.2 - vertex -21.4669 -17.9347 0 - vertex -21.378 -18.0171 0 - endloop - endfacet - facet normal 0.679889 0.733315 0 - outer loop - vertex -21.4669 -17.9347 0 - vertex -21.378 -18.0171 -0.2 - vertex -21.4669 -17.9347 -0.2 - endloop - endfacet - facet normal 0.910139 0.414303 0 - outer loop - vertex -21.4669 -17.9347 0 - vertex -21.5263 -17.8042 -0.2 - vertex -21.5263 -17.8042 0 - endloop - endfacet - facet normal 0.910139 0.414303 0 - outer loop - vertex -21.5263 -17.8042 -0.2 - vertex -21.4669 -17.9347 0 - vertex -21.4669 -17.9347 -0.2 - endloop - endfacet - facet normal 0.984407 0.175905 0 - outer loop - vertex -21.5263 -17.8042 0 - vertex -21.5614 -17.6077 -0.2 - vertex -21.5614 -17.6077 0 - endloop - endfacet - facet normal 0.984407 0.175905 0 - outer loop - vertex -21.5614 -17.6077 -0.2 - vertex -21.5263 -17.8042 0 - vertex -21.5263 -17.8042 -0.2 - endloop - endfacet - facet normal 0.998374 0.057002 0 - outer loop - vertex -21.5614 -17.6077 0 - vertex -21.5774 -17.3273 -0.2 - vertex -21.5774 -17.3273 0 - endloop - endfacet - facet normal 0.998374 0.057002 0 - outer loop - vertex -21.5774 -17.3273 -0.2 - vertex -21.5614 -17.6077 0 - vertex -21.5614 -17.6077 -0.2 - endloop - endfacet - facet normal 0.999987 -0.00513458 0 - outer loop - vertex -21.5774 -17.3273 0 - vertex -21.5729 -16.4428 -0.2 - vertex -21.5729 -16.4428 0 - endloop - endfacet - facet normal 0.999987 -0.00513458 0 - outer loop - vertex -21.5729 -16.4428 -0.2 - vertex -21.5774 -17.3273 0 - vertex -21.5774 -17.3273 -0.2 - endloop - endfacet - facet normal 0.999992 -0.00401347 0 - outer loop - vertex -21.5729 -16.4428 0 - vertex -21.5693 -15.5508 -0.2 - vertex -21.5693 -15.5508 0 - endloop - endfacet - facet normal 0.999992 -0.00401347 0 - outer loop - vertex -21.5693 -15.5508 -0.2 - vertex -21.5729 -16.4428 0 - vertex -21.5729 -16.4428 -0.2 - endloop - endfacet - facet normal 0.997925 0.0643945 0 - outer loop - vertex -21.5693 -15.5508 0 - vertex -21.5879 -15.2616 -0.2 - vertex -21.5879 -15.2616 0 - endloop - endfacet - facet normal 0.997925 0.0643945 0 - outer loop - vertex -21.5879 -15.2616 -0.2 - vertex -21.5693 -15.5508 0 - vertex -21.5693 -15.5508 -0.2 - endloop - endfacet - facet normal 0.982338 0.187114 0 - outer loop - vertex -21.5879 -15.2616 0 - vertex -21.6284 -15.0493 -0.2 - vertex -21.6284 -15.0493 0 - endloop - endfacet - facet normal 0.982338 0.187114 0 - outer loop - vertex -21.6284 -15.0493 -0.2 - vertex -21.5879 -15.2616 0 - vertex -21.5879 -15.2616 -0.2 - endloop - endfacet - facet normal 0.915958 0.401274 0 - outer loop - vertex -21.6284 -15.0493 0 - vertex -21.6966 -14.8935 -0.2 - vertex -21.6966 -14.8935 0 - endloop - endfacet - facet normal 0.915958 0.401274 0 - outer loop - vertex -21.6966 -14.8935 -0.2 - vertex -21.6284 -15.0493 0 - vertex -21.6284 -15.0493 -0.2 - endloop - endfacet - facet normal 0.761577 0.648074 0 - outer loop - vertex -21.6966 -14.8935 0 - vertex -21.7989 -14.7733 -0.2 - vertex -21.7989 -14.7733 0 - endloop - endfacet - facet normal 0.761577 0.648074 0 - outer loop - vertex -21.7989 -14.7733 -0.2 - vertex -21.6966 -14.8935 0 - vertex -21.6966 -14.8935 -0.2 - endloop - endfacet - facet normal 0.593991 0.804472 -0 - outer loop - vertex -21.7989 -14.7733 -0.2 - vertex -21.9412 -14.6683 0 - vertex -21.7989 -14.7733 0 - endloop - endfacet - facet normal 0.593991 0.804472 0 - outer loop - vertex -21.9412 -14.6683 0 - vertex -21.7989 -14.7733 -0.2 - vertex -21.9412 -14.6683 -0.2 - endloop - endfacet - facet normal 0.506241 0.862392 -0 - outer loop - vertex -21.9412 -14.6683 -0.2 - vertex -22.1296 -14.5577 0 - vertex -21.9412 -14.6683 0 - endloop - endfacet - facet normal 0.506241 0.862392 0 - outer loop - vertex -22.1296 -14.5577 0 - vertex -21.9412 -14.6683 -0.2 - vertex -22.1296 -14.5577 -0.2 - endloop - endfacet - facet normal 0.406178 0.913794 -0 - outer loop - vertex -22.1296 -14.5577 -0.2 - vertex -22.3213 -14.4724 0 - vertex -22.1296 -14.5577 0 - endloop - endfacet - facet normal 0.406178 0.913794 0 - outer loop - vertex -22.3213 -14.4724 0 - vertex -22.1296 -14.5577 -0.2 - vertex -22.3213 -14.4724 -0.2 - endloop - endfacet - facet normal 0.272589 0.962131 -0 - outer loop - vertex -22.3213 -14.4724 -0.2 - vertex -22.5778 -14.3998 0 - vertex -22.3213 -14.4724 0 - endloop - endfacet - facet normal 0.272589 0.962131 0 - outer loop - vertex -22.5778 -14.3998 0 - vertex -22.3213 -14.4724 -0.2 - vertex -22.5778 -14.3998 -0.2 - endloop - endfacet - facet normal 0.181059 0.983472 -0 - outer loop - vertex -22.5778 -14.3998 -0.2 - vertex -22.9103 -14.3386 0 - vertex -22.5778 -14.3998 0 - endloop - endfacet - facet normal 0.181059 0.983472 0 - outer loop - vertex -22.9103 -14.3386 0 - vertex -22.5778 -14.3998 -0.2 - vertex -22.9103 -14.3386 -0.2 - endloop - endfacet - facet normal 0.120311 0.992736 -0 - outer loop - vertex -22.9103 -14.3386 -0.2 - vertex -23.3301 -14.2877 0 - vertex -22.9103 -14.3386 0 - endloop - endfacet - facet normal 0.120311 0.992736 0 - outer loop - vertex -23.3301 -14.2877 0 - vertex -22.9103 -14.3386 -0.2 - vertex -23.3301 -14.2877 -0.2 - endloop - endfacet - facet normal 0.0654234 0.997858 -0 - outer loop - vertex -23.3301 -14.2877 -0.2 - vertex -24.4767 -14.2125 0 - vertex -23.3301 -14.2877 0 - endloop - endfacet - facet normal 0.0654234 0.997858 0 - outer loop - vertex -24.4767 -14.2125 0 - vertex -23.3301 -14.2877 -0.2 - vertex -24.4767 -14.2125 -0.2 - endloop - endfacet - facet normal 0.0288976 0.999582 -0 - outer loop - vertex -24.4767 -14.2125 -0.2 - vertex -26.1077 -14.1654 0 - vertex -24.4767 -14.2125 0 - endloop - endfacet - facet normal 0.0288976 0.999582 0 - outer loop - vertex -26.1077 -14.1654 0 - vertex -24.4767 -14.2125 -0.2 - vertex -26.1077 -14.1654 -0.2 - endloop - endfacet - facet normal 0.0099076 0.999951 -0 - outer loop - vertex -26.1077 -14.1654 -0.2 - vertex -28.2448 -14.1442 0 - vertex -26.1077 -14.1654 0 - endloop - endfacet - facet normal 0.0099076 0.999951 0 - outer loop - vertex -28.2448 -14.1442 0 - vertex -26.1077 -14.1654 -0.2 - vertex -28.2448 -14.1442 -0.2 - endloop - endfacet - facet normal -0.0184714 0.999829 0 - outer loop - vertex -28.2448 -14.1442 -0.2 - vertex -28.9898 -14.1579 0 - vertex -28.2448 -14.1442 0 - endloop - endfacet - facet normal -0.0184714 0.999829 0 - outer loop - vertex -28.9898 -14.1579 0 - vertex -28.2448 -14.1442 -0.2 - vertex -28.9898 -14.1579 -0.2 - endloop - endfacet - facet normal -0.0583775 0.998295 0 - outer loop - vertex -28.9898 -14.1579 -0.2 - vertex -29.549 -14.1906 0 - vertex -28.9898 -14.1579 0 - endloop - endfacet - facet normal -0.0583775 0.998295 0 - outer loop - vertex -29.549 -14.1906 0 - vertex -28.9898 -14.1579 -0.2 - vertex -29.549 -14.1906 -0.2 - endloop - endfacet - facet normal -0.134346 0.990934 0 - outer loop - vertex -29.549 -14.1906 -0.2 - vertex -29.9449 -14.2443 0 - vertex -29.549 -14.1906 0 - endloop - endfacet - facet normal -0.134346 0.990934 0 - outer loop - vertex -29.9449 -14.2443 0 - vertex -29.549 -14.1906 -0.2 - vertex -29.9449 -14.2443 -0.2 - endloop - endfacet - facet normal -0.287948 0.957646 0 - outer loop - vertex -29.9449 -14.2443 -0.2 - vertex -30.1999 -14.321 0 - vertex -29.9449 -14.2443 0 - endloop - endfacet - facet normal -0.287948 0.957646 0 - outer loop - vertex -30.1999 -14.321 0 - vertex -29.9449 -14.2443 -0.2 - vertex -30.1999 -14.321 -0.2 - endloop - endfacet - facet normal -0.503498 0.863996 0 - outer loop - vertex -30.1999 -14.321 -0.2 - vertex -30.2816 -14.3686 0 - vertex -30.1999 -14.321 0 - endloop - endfacet - facet normal -0.503498 0.863996 0 - outer loop - vertex -30.2816 -14.3686 0 - vertex -30.1999 -14.321 -0.2 - vertex -30.2816 -14.3686 -0.2 - endloop - endfacet - facet normal -0.702151 0.712028 0 - outer loop - vertex -30.2816 -14.3686 -0.2 - vertex -30.3364 -14.4227 0 - vertex -30.2816 -14.3686 0 - endloop - endfacet - facet normal -0.702151 0.712028 0 - outer loop - vertex -30.3364 -14.4227 0 - vertex -30.2816 -14.3686 -0.2 - vertex -30.3364 -14.4227 -0.2 - endloop - endfacet - facet normal -0.891918 0.452198 0 - outer loop - vertex -30.3673 -14.4836 -0.2 - vertex -30.3364 -14.4227 0 - vertex -30.3364 -14.4227 -0.2 - endloop - endfacet - facet normal -0.891918 0.452198 0 - outer loop - vertex -30.3364 -14.4227 0 - vertex -30.3673 -14.4836 -0.2 - vertex -30.3673 -14.4836 0 - endloop - endfacet - facet normal -0.990022 0.140913 0 - outer loop - vertex -30.377 -14.5514 -0.2 - vertex -30.3673 -14.4836 0 - vertex -30.3673 -14.4836 -0.2 - endloop - endfacet - facet normal -0.990022 0.140913 0 - outer loop - vertex -30.3673 -14.4836 0 - vertex -30.377 -14.5514 -0.2 - vertex -30.377 -14.5514 0 - endloop - endfacet - facet normal -0.969743 0.244126 0 - outer loop - vertex -30.4158 -14.7057 -0.2 - vertex -30.377 -14.5514 0 - vertex -30.377 -14.5514 -0.2 - endloop - endfacet - facet normal -0.969743 0.244126 0 - outer loop - vertex -30.377 -14.5514 0 - vertex -30.4158 -14.7057 -0.2 - vertex -30.4158 -14.7057 0 - endloop - endfacet - facet normal -0.925454 0.378859 0 - outer loop - vertex -30.5215 -14.964 -0.2 - vertex -30.4158 -14.7057 0 - vertex -30.4158 -14.7057 -0.2 - endloop - endfacet - facet normal -0.925454 0.378859 0 - outer loop - vertex -30.4158 -14.7057 0 - vertex -30.5215 -14.964 -0.2 - vertex -30.5215 -14.964 0 - endloop - endfacet - facet normal -0.901668 0.432429 0 - outer loop - vertex -30.678 -15.2903 -0.2 - vertex -30.5215 -14.964 0 - vertex -30.5215 -14.964 -0.2 - endloop - endfacet - facet normal -0.901668 0.432429 0 - outer loop - vertex -30.5215 -14.964 0 - vertex -30.678 -15.2903 -0.2 - vertex -30.678 -15.2903 0 - endloop - endfacet - facet normal -0.882363 0.47057 0 - outer loop - vertex -30.8691 -15.6487 -0.2 - vertex -30.678 -15.2903 0 - vertex -30.678 -15.2903 -0.2 - endloop - endfacet - facet normal -0.882363 0.47057 0 - outer loop - vertex -30.678 -15.2903 0 - vertex -30.8691 -15.6487 -0.2 - vertex -30.8691 -15.6487 0 - endloop - endfacet - facet normal -0.892172 0.451696 0 - outer loop - vertex -31.1223 -16.1487 -0.2 - vertex -30.8691 -15.6487 0 - vertex -30.8691 -15.6487 -0.2 - endloop - endfacet - facet normal -0.892172 0.451696 0 - outer loop - vertex -30.8691 -15.6487 0 - vertex -31.1223 -16.1487 -0.2 - vertex -31.1223 -16.1487 0 - endloop - endfacet - facet normal -0.909515 0.415671 0 - outer loop - vertex -31.4477 -16.8607 -0.2 - vertex -31.1223 -16.1487 0 - vertex -31.1223 -16.1487 -0.2 - endloop - endfacet - facet normal -0.909515 0.415671 0 - outer loop - vertex -31.1223 -16.1487 0 - vertex -31.4477 -16.8607 -0.2 - vertex -31.4477 -16.8607 0 - endloop - endfacet - facet normal -0.918988 0.394285 0 - outer loop - vertex -31.8034 -17.6899 -0.2 - vertex -31.4477 -16.8607 0 - vertex -31.4477 -16.8607 -0.2 - endloop - endfacet - facet normal -0.918988 0.394285 0 - outer loop - vertex -31.4477 -16.8607 0 - vertex -31.8034 -17.6899 -0.2 - vertex -31.8034 -17.6899 0 - endloop - endfacet - facet normal -0.927129 0.374741 0 - outer loop - vertex -32.1476 -18.5412 -0.2 - vertex -31.8034 -17.6899 0 - vertex -31.8034 -17.6899 -0.2 - endloop - endfacet - facet normal -0.927129 0.374741 0 - outer loop - vertex -31.8034 -17.6899 0 - vertex -32.1476 -18.5412 -0.2 - vertex -32.1476 -18.5412 0 + vertex -30.8809 -15.6487 0 + vertex -32.1593 -18.5412 -3 + vertex -32.1593 -18.5412 0 endloop endfacet facet normal -0.929897 0.36782 0 outer loop - vertex -33.2902 -21.4299 -0.2 - vertex -32.1476 -18.5412 0 - vertex -32.1476 -18.5412 -0.2 + vertex -33.3019 -21.4299 -3 + vertex -32.1593 -18.5412 0 + vertex -32.1593 -18.5412 -3 endloop endfacet facet normal -0.929897 0.36782 0 outer loop - vertex -32.1476 -18.5412 0 - vertex -33.2902 -21.4299 -0.2 - vertex -33.2902 -21.4299 0 + vertex -32.1593 -18.5412 0 + vertex -33.3019 -21.4299 -3 + vertex -33.3019 -21.4299 0 endloop endfacet - facet normal -0.931897 0.362724 0 + facet normal -0.949218 0.314618 0 outer loop - vertex -33.4325 -21.7956 -0.2 - vertex -33.2902 -21.4299 0 - vertex -33.2902 -21.4299 -0.2 + vertex -33.5147 -22.0719 -3 + vertex -33.3019 -21.4299 0 + vertex -33.3019 -21.4299 -3 endloop endfacet - facet normal -0.931897 0.362724 0 + facet normal -0.949218 0.314618 0 outer loop - vertex -33.2902 -21.4299 0 - vertex -33.4325 -21.7956 -0.2 - vertex -33.4325 -21.7956 0 + vertex -33.3019 -21.4299 0 + vertex -33.5147 -22.0719 -3 + vertex -33.5147 -22.0719 0 endloop endfacet - facet normal -0.968991 0.247098 0 + facet normal -0.877443 -0.47968 0 outer loop - vertex -33.503 -22.0719 -0.2 - vertex -33.4325 -21.7956 0 - vertex -33.4325 -21.7956 -0.2 + vertex -33.3295 -22.4108 -3 + vertex -33.5147 -22.0719 0 + vertex -33.5147 -22.0719 -3 endloop endfacet - facet normal -0.968991 0.247098 0 + facet normal -0.877443 -0.47968 0 outer loop - vertex -33.4325 -21.7956 0 - vertex -33.503 -22.0719 -0.2 - vertex -33.503 -22.0719 0 + vertex -33.5147 -22.0719 0 + vertex -33.3295 -22.4108 -3 + vertex -33.3295 -22.4108 0 endloop endfacet - facet normal -0.999995 -0.00318704 0 + facet normal -0.175573 -0.984466 0 outer loop - vertex -33.5026 -22.1809 -0.2 - vertex -33.503 -22.0719 0 - vertex -33.503 -22.0719 -0.2 + vertex -33.3295 -22.4108 -3 + vertex -32.5249 -22.5543 0 + vertex -33.3295 -22.4108 0 endloop endfacet - facet normal -0.999995 -0.00318704 0 + facet normal -0.175573 -0.984466 -0 outer loop - vertex -33.503 -22.0719 0 - vertex -33.5026 -22.1809 -0.2 - vertex -33.5026 -22.1809 0 + vertex -32.5249 -22.5543 0 + vertex -33.3295 -22.4108 -3 + vertex -32.5249 -22.5543 -3 endloop endfacet - facet normal -0.954349 -0.298693 0 + facet normal -0.0340039 -0.999422 0 outer loop - vertex -33.4739 -22.2725 -0.2 - vertex -33.5026 -22.1809 0 - vertex -33.5026 -22.1809 -0.2 + vertex -32.5249 -22.5543 -3 + vertex -30.8797 -22.6102 0 + vertex -32.5249 -22.5543 0 endloop endfacet - facet normal -0.954349 -0.298693 0 + facet normal -0.0340039 -0.999422 -0 outer loop - vertex -33.5026 -22.1809 0 - vertex -33.4739 -22.2725 -0.2 - vertex -33.4739 -22.2725 0 + vertex -30.8797 -22.6102 0 + vertex -32.5249 -22.5543 -3 + vertex -30.8797 -22.6102 -3 endloop endfacet - facet normal -0.782807 -0.622265 0 + facet normal 0.0362533 -0.999343 0 outer loop - vertex -33.4135 -22.3486 -0.2 - vertex -33.4739 -22.2725 0 - vertex -33.4739 -22.2725 -0.2 + vertex -30.8797 -22.6102 -3 + vertex -28.6031 -22.5277 0 + vertex -30.8797 -22.6102 0 endloop endfacet - facet normal -0.782807 -0.622265 0 + facet normal 0.0362533 -0.999343 0 outer loop - vertex -33.4739 -22.2725 0 - vertex -33.4135 -22.3486 -0.2 - vertex -33.4135 -22.3486 0 + vertex -28.6031 -22.5277 0 + vertex -30.8797 -22.6102 -3 + vertex -28.6031 -22.5277 -3 endloop endfacet - facet normal -0.544751 -0.838598 0 + facet normal 0.242378 -0.970182 0 outer loop - vertex -33.4135 -22.3486 -0.2 - vertex -33.3177 -22.4108 0 - vertex -33.4135 -22.3486 0 + vertex -28.6031 -22.5277 -3 + vertex -26.9351 -22.1109 0 + vertex -28.6031 -22.5277 0 endloop endfacet - facet normal -0.544751 -0.838598 -0 + facet normal 0.242378 -0.970182 0 outer loop - vertex -33.3177 -22.4108 0 - vertex -33.4135 -22.3486 -0.2 - vertex -33.3177 -22.4108 -0.2 + vertex -26.9351 -22.1109 0 + vertex -28.6031 -22.5277 -3 + vertex -26.9351 -22.1109 -3 endloop endfacet - facet normal -0.348432 -0.937334 0 + facet normal 0.555939 -0.831223 0 outer loop - vertex -33.3177 -22.4108 -0.2 - vertex -33.1833 -22.4608 0 - vertex -33.3177 -22.4108 0 + vertex -26.9351 -22.1109 -3 + vertex -25.7001 -21.2849 0 + vertex -26.9351 -22.1109 0 endloop endfacet - facet normal -0.348432 -0.937334 -0 + facet normal 0.555939 -0.831223 0 outer loop - vertex -33.1833 -22.4608 0 - vertex -33.3177 -22.4108 -0.2 - vertex -33.1833 -22.4608 -0.2 + vertex -25.7001 -21.2849 0 + vertex -26.9351 -22.1109 -3 + vertex -25.7001 -21.2849 -3 endloop endfacet - facet normal -0.218014 -0.975946 0 + facet normal 0.801538 -0.597944 0 outer loop - vertex -33.1833 -22.4608 -0.2 - vertex -33.0067 -22.5002 0 - vertex -33.1833 -22.4608 0 + vertex -25.7001 -21.2849 0 + vertex -24.7225 -19.9745 -3 + vertex -24.7225 -19.9745 0 endloop endfacet - facet normal -0.218014 -0.975946 -0 + facet normal 0.801538 -0.597944 0 outer loop - vertex -33.0067 -22.5002 0 - vertex -33.1833 -22.4608 -0.2 - vertex -33.0067 -22.5002 -0.2 + vertex -24.7225 -19.9745 -3 + vertex -25.7001 -21.2849 0 + vertex -25.7001 -21.2849 -3 endloop endfacet - facet normal -0.108894 -0.994053 0 + facet normal 0.817601 -0.575785 0 outer loop - vertex -33.0067 -22.5002 -0.2 - vertex -32.5132 -22.5543 0 - vertex -33.0067 -22.5002 0 + vertex -24.7225 -19.9745 0 + vertex -24.1111 -19.1062 -3 + vertex -24.1111 -19.1062 0 endloop endfacet - facet normal -0.108894 -0.994053 -0 + facet normal 0.817601 -0.575785 0 outer loop - vertex -32.5132 -22.5543 0 - vertex -33.0067 -22.5002 -0.2 - vertex -32.5132 -22.5543 -0.2 + vertex -24.1111 -19.1062 -3 + vertex -24.7225 -19.9745 0 + vertex -24.7225 -19.9745 -3 endloop endfacet - facet normal -0.0456949 -0.998955 0 + facet normal 0.293726 -0.95589 0 outer loop - vertex -32.5132 -22.5543 -0.2 - vertex -31.8095 -22.5865 0 - vertex -32.5132 -22.5543 0 + vertex -24.1111 -19.1062 -3 + vertex -23.4908 -18.9156 0 + vertex -24.1111 -19.1062 0 endloop endfacet - facet normal -0.0456949 -0.998955 -0 + facet normal 0.293726 -0.95589 0 outer loop - vertex -31.8095 -22.5865 0 - vertex -32.5132 -22.5543 -0.2 - vertex -31.8095 -22.5865 -0.2 + vertex -23.4908 -18.9156 0 + vertex -24.1111 -19.1062 -3 + vertex -23.4908 -18.9156 -3 endloop endfacet - facet normal -0.0252584 -0.999681 0 + facet normal -0.145773 -0.989318 0 outer loop - vertex -31.8095 -22.5865 -0.2 - vertex -30.868 -22.6102 0 - vertex -31.8095 -22.5865 0 + vertex -23.4908 -18.9156 -3 + vertex -22.8641 -19.008 0 + vertex -23.4908 -18.9156 0 endloop endfacet - facet normal -0.0252584 -0.999681 -0 + facet normal -0.145773 -0.989318 -0 outer loop - vertex -30.868 -22.6102 0 - vertex -31.8095 -22.5865 -0.2 - vertex -30.868 -22.6102 -0.2 + vertex -22.8641 -19.008 0 + vertex -23.4908 -18.9156 -3 + vertex -22.8641 -19.008 -3 endloop endfacet - facet normal -0.0103281 -0.999947 0 + facet normal -0.802531 -0.59661 0 outer loop - vertex -30.868 -22.6102 -0.2 - vertex -30.2322 -22.6168 0 - vertex -30.868 -22.6102 0 + vertex -22.6057 -19.3555 -3 + vertex -22.8641 -19.008 0 + vertex -22.8641 -19.008 -3 endloop endfacet - facet normal -0.0103281 -0.999947 -0 + facet normal -0.802531 -0.59661 0 outer loop - vertex -30.2322 -22.6168 0 - vertex -30.868 -22.6102 -0.2 - vertex -30.2322 -22.6168 -0.2 + vertex -22.8641 -19.008 0 + vertex -22.6057 -19.3555 -3 + vertex -22.6057 -19.3555 0 endloop endfacet - facet normal 0.0183057 -0.999832 0 + facet normal -0.991425 0.130676 0 outer loop - vertex -30.2322 -22.6168 -0.2 - vertex -29.6427 -22.606 0 - vertex -30.2322 -22.6168 0 + vertex -22.6991 -20.0641 -3 + vertex -22.6057 -19.3555 0 + vertex -22.6057 -19.3555 -3 endloop endfacet - facet normal 0.0183057 -0.999832 0 + facet normal -0.991425 0.130676 0 outer loop - vertex -29.6427 -22.606 0 - vertex -30.2322 -22.6168 -0.2 - vertex -29.6427 -22.606 -0.2 + vertex -22.6057 -19.3555 0 + vertex -22.6991 -20.0641 -3 + vertex -22.6991 -20.0641 0 endloop endfacet - facet normal 0.0536309 -0.998561 0 + facet normal -0.939482 0.342598 0 outer loop - vertex -29.6427 -22.606 -0.2 - vertex -29.0966 -22.5767 0 - vertex -29.6427 -22.606 0 + vertex -23.1278 -21.2395 -3 + vertex -22.6991 -20.0641 0 + vertex -22.6991 -20.0641 -3 endloop endfacet - facet normal 0.0536309 -0.998561 0 + facet normal -0.939482 0.342598 0 outer loop - vertex -29.0966 -22.5767 0 - vertex -29.6427 -22.606 -0.2 - vertex -29.0966 -22.5767 -0.2 + vertex -22.6991 -20.0641 0 + vertex -23.1278 -21.2395 -3 + vertex -23.1278 -21.2395 0 endloop endfacet - facet normal 0.0966018 -0.995323 0 + facet normal -0.926121 0.377226 0 outer loop - vertex -29.0966 -22.5767 -0.2 - vertex -28.5914 -22.5277 0 - vertex -29.0966 -22.5767 0 + vertex -24.4076 -24.3815 -3 + vertex -23.1278 -21.2395 0 + vertex -23.1278 -21.2395 -3 endloop endfacet - facet normal 0.0966018 -0.995323 0 + facet normal -0.926121 0.377226 0 outer loop - vertex -28.5914 -22.5277 0 - vertex -29.0966 -22.5767 -0.2 - vertex -28.5914 -22.5277 -0.2 + vertex -23.1278 -21.2395 0 + vertex -24.4076 -24.3815 -3 + vertex -24.4076 -24.3815 0 endloop endfacet - facet normal 0.148005 -0.988987 0 + facet normal -0.921607 0.388125 0 outer loop - vertex -28.5914 -22.5277 -0.2 - vertex -28.1242 -22.4577 0 - vertex -28.5914 -22.5277 0 + vertex -25.4741 -26.9141 -3 + vertex -24.4076 -24.3815 0 + vertex -24.4076 -24.3815 -3 endloop endfacet - facet normal 0.148005 -0.988987 0 + facet normal -0.921607 0.388125 0 outer loop - vertex -28.1242 -22.4577 0 - vertex -28.5914 -22.5277 -0.2 - vertex -28.1242 -22.4577 -0.2 + vertex -24.4076 -24.3815 0 + vertex -25.4741 -26.9141 -3 + vertex -25.4741 -26.9141 0 endloop endfacet - facet normal 0.208284 -0.978068 0 + facet normal -0.886525 0.462682 0 outer loop - vertex -28.1242 -22.4577 -0.2 - vertex -27.6923 -22.3658 0 - vertex -28.1242 -22.4577 0 + vertex -26.2338 -28.3696 -3 + vertex -25.4741 -26.9141 0 + vertex -25.4741 -26.9141 -3 endloop endfacet - facet normal 0.208284 -0.978068 0 + facet normal -0.886525 0.462682 0 outer loop - vertex -27.6923 -22.3658 0 - vertex -28.1242 -22.4577 -0.2 - vertex -27.6923 -22.3658 -0.2 + vertex -25.4741 -26.9141 0 + vertex -26.2338 -28.3696 -3 + vertex -26.2338 -28.3696 0 endloop endfacet - facet normal 0.277178 -0.960818 0 + facet normal -0.719187 0.694816 0 outer loop - vertex -27.6923 -22.3658 -0.2 - vertex -27.2929 -22.2506 0 - vertex -27.6923 -22.3658 0 + vertex -26.8752 -29.0336 -3 + vertex -26.2338 -28.3696 0 + vertex -26.2338 -28.3696 -3 endloop endfacet - facet normal 0.277178 -0.960818 0 + facet normal -0.719187 0.694816 0 outer loop - vertex -27.2929 -22.2506 0 - vertex -27.6923 -22.3658 -0.2 - vertex -27.2929 -22.2506 -0.2 + vertex -26.2338 -28.3696 0 + vertex -26.8752 -29.0336 -3 + vertex -26.8752 -29.0336 0 endloop endfacet - facet normal 0.353412 -0.935468 0 + facet normal -0.216473 0.976289 0 outer loop - vertex -27.2929 -22.2506 -0.2 - vertex -26.9234 -22.1109 0 - vertex -27.2929 -22.2506 0 + vertex -26.8752 -29.0336 -3 + vertex -27.5872 -29.1914 0 + vertex -26.8752 -29.0336 0 endloop endfacet - facet normal 0.353412 -0.935468 0 + facet normal -0.216473 0.976289 0 outer loop - vertex -26.9234 -22.1109 0 - vertex -27.2929 -22.2506 -0.2 - vertex -26.9234 -22.1109 -0.2 + vertex -27.5872 -29.1914 0 + vertex -26.8752 -29.0336 -3 + vertex -27.5872 -29.1914 -3 endloop endfacet - facet normal 0.434442 -0.9007 0 + facet normal 0.155401 0.987851 -0 outer loop - vertex -26.9234 -22.1109 -0.2 - vertex -26.5809 -21.9457 0 - vertex -26.9234 -22.1109 0 + vertex -27.5872 -29.1914 -3 + vertex -28.1878 -29.097 0 + vertex -27.5872 -29.1914 0 endloop endfacet - facet normal 0.434442 -0.9007 0 + facet normal 0.155401 0.987851 0 outer loop - vertex -26.5809 -21.9457 0 - vertex -26.9234 -22.1109 -0.2 - vertex -26.5809 -21.9457 -0.2 + vertex -28.1878 -29.097 0 + vertex -27.5872 -29.1914 -3 + vertex -28.1878 -29.097 -3 endloop endfacet - facet normal 0.516567 -0.856247 0 + facet normal 0.99998 -0.00638056 0 outer loop - vertex -26.5809 -21.9457 -0.2 - vertex -26.2627 -21.7538 0 - vertex -26.5809 -21.9457 0 + vertex -28.1878 -29.097 0 + vertex -28.1838 -28.4809 -3 + vertex -28.1838 -28.4809 0 endloop endfacet - facet normal 0.516567 -0.856247 0 + facet normal 0.99998 -0.00638056 0 outer loop - vertex -26.2627 -21.7538 0 - vertex -26.5809 -21.9457 -0.2 - vertex -26.2627 -21.7538 -0.2 + vertex -28.1838 -28.4809 -3 + vertex -28.1878 -29.097 0 + vertex -28.1878 -29.097 -3 endloop endfacet - facet normal 0.595538 -0.803327 0 + facet normal 0.992864 -0.119255 0 outer loop - vertex -26.2627 -21.7538 -0.2 - vertex -25.9661 -21.5339 0 - vertex -26.2627 -21.7538 0 + vertex -28.1838 -28.4809 0 + vertex -27.9105 -26.2055 -3 + vertex -27.9105 -26.2055 0 endloop endfacet - facet normal 0.595538 -0.803327 0 + facet normal 0.992864 -0.119255 0 outer loop - vertex -25.9661 -21.5339 0 - vertex -26.2627 -21.7538 -0.2 - vertex -25.9661 -21.5339 -0.2 + vertex -27.9105 -26.2055 -3 + vertex -28.1838 -28.4809 0 + vertex -28.1838 -28.4809 -3 endloop endfacet - facet normal 0.667477 -0.744631 0 + facet normal 0.858031 0.513598 0 outer loop - vertex -25.9661 -21.5339 -0.2 - vertex -25.6884 -21.2849 0 - vertex -25.9661 -21.5339 0 + vertex -27.9105 -26.2055 0 + vertex -28.1036 -25.8829 -3 + vertex -28.1036 -25.8829 0 endloop endfacet - facet normal 0.667477 -0.744631 0 + facet normal 0.858031 0.513598 0 outer loop - vertex -25.6884 -21.2849 0 - vertex -25.9661 -21.5339 -0.2 - vertex -25.6884 -21.2849 -0.2 + vertex -28.1036 -25.8829 -3 + vertex -27.9105 -26.2055 0 + vertex -27.9105 -26.2055 -3 endloop endfacet - facet normal 0.729709 -0.683757 0 + facet normal 0.343726 0.93907 -0 outer loop - vertex -25.6884 -21.2849 0 - vertex -25.4267 -21.0057 -0.2 - vertex -25.4267 -21.0057 0 + vertex -28.1036 -25.8829 -3 + vertex -28.5713 -25.7117 0 + vertex -28.1036 -25.8829 0 endloop endfacet - facet normal 0.729709 -0.683757 0 + facet normal 0.343726 0.93907 0 outer loop - vertex -25.4267 -21.0057 -0.2 - vertex -25.6884 -21.2849 0 - vertex -25.6884 -21.2849 -0.2 + vertex -28.5713 -25.7117 0 + vertex -28.1036 -25.8829 -3 + vertex -28.5713 -25.7117 -3 endloop endfacet - facet normal 0.781167 -0.624322 0 + facet normal 0.0659122 0.997825 -0 outer loop - vertex -25.4267 -21.0057 0 - vertex -25.1784 -20.695 -0.2 - vertex -25.1784 -20.695 0 + vertex -28.5713 -25.7117 -3 + vertex -32.142 -25.4759 0 + vertex -28.5713 -25.7117 0 endloop endfacet - facet normal 0.781167 -0.624322 0 + facet normal 0.0659122 0.997825 0 outer loop - vertex -25.1784 -20.695 -0.2 - vertex -25.4267 -21.0057 0 - vertex -25.4267 -21.0057 -0.2 + vertex -32.142 -25.4759 0 + vertex -28.5713 -25.7117 -3 + vertex -32.142 -25.4759 -3 endloop endfacet - facet normal 0.82216 -0.569257 0 + facet normal 0.000432103 1 -0 outer loop - vertex -25.1784 -20.695 0 - vertex -24.9407 -20.3516 -0.2 - vertex -24.9407 -20.3516 0 + vertex -32.142 -25.4759 -3 + vertex -34.9626 -25.4747 0 + vertex -32.142 -25.4759 0 endloop endfacet - facet normal 0.82216 -0.569257 0 + facet normal 0.000432103 1 0 outer loop - vertex -24.9407 -20.3516 -0.2 - vertex -25.1784 -20.695 0 - vertex -25.1784 -20.695 -0.2 - endloop - endfacet - facet normal 0.853894 -0.520447 0 - outer loop - vertex -24.9407 -20.3516 0 - vertex -24.7108 -19.9745 -0.2 - vertex -24.7108 -19.9745 0 - endloop - endfacet - facet normal 0.853894 -0.520447 0 - outer loop - vertex -24.7108 -19.9745 -0.2 - vertex -24.9407 -20.3516 0 - vertex -24.9407 -20.3516 -0.2 - endloop - endfacet - facet normal 0.85126 -0.524745 0 - outer loop - vertex -24.7108 -19.9745 0 - vertex -24.3738 -19.4278 -0.2 - vertex -24.3738 -19.4278 0 - endloop - endfacet - facet normal 0.85126 -0.524745 0 - outer loop - vertex -24.3738 -19.4278 -0.2 - vertex -24.7108 -19.9745 0 - vertex -24.7108 -19.9745 -0.2 - endloop - endfacet - facet normal 0.796036 -0.60525 0 - outer loop - vertex -24.3738 -19.4278 0 - vertex -24.2328 -19.2424 -0.2 - vertex -24.2328 -19.2424 0 - endloop - endfacet - facet normal 0.796036 -0.60525 0 - outer loop - vertex -24.2328 -19.2424 -0.2 - vertex -24.3738 -19.4278 0 - vertex -24.3738 -19.4278 -0.2 - endloop - endfacet - facet normal 0.714094 -0.70005 0 - outer loop - vertex -24.2328 -19.2424 0 - vertex -24.0993 -19.1062 -0.2 - vertex -24.0993 -19.1062 0 - endloop - endfacet - facet normal 0.714094 -0.70005 0 - outer loop - vertex -24.0993 -19.1062 -0.2 - vertex -24.2328 -19.2424 0 - vertex -24.2328 -19.2424 -0.2 - endloop - endfacet - facet normal 0.573399 -0.819276 0 - outer loop - vertex -24.0993 -19.1062 -0.2 - vertex -23.9653 -19.0124 0 - vertex -24.0993 -19.1062 0 - endloop - endfacet - facet normal 0.573399 -0.819276 0 - outer loop - vertex -23.9653 -19.0124 0 - vertex -24.0993 -19.1062 -0.2 - vertex -23.9653 -19.0124 -0.2 - endloop - endfacet - facet normal 0.378849 -0.925458 0 - outer loop - vertex -23.9653 -19.0124 -0.2 - vertex -23.8226 -18.954 0 - vertex -23.9653 -19.0124 0 - endloop - endfacet - facet normal 0.378849 -0.925458 0 - outer loop - vertex -23.8226 -18.954 0 - vertex -23.9653 -19.0124 -0.2 - vertex -23.8226 -18.954 -0.2 - endloop - endfacet - facet normal 0.184661 -0.982802 0 - outer loop - vertex -23.8226 -18.954 -0.2 - vertex -23.6632 -18.9241 0 - vertex -23.8226 -18.954 0 - endloop - endfacet - facet normal 0.184661 -0.982802 0 - outer loop - vertex -23.6632 -18.9241 0 - vertex -23.8226 -18.954 -0.2 - vertex -23.6632 -18.9241 -0.2 - endloop - endfacet - facet normal 0.0457652 -0.998952 0 - outer loop - vertex -23.6632 -18.9241 -0.2 - vertex -23.4791 -18.9156 0 - vertex -23.6632 -18.9241 0 - endloop - endfacet - facet normal 0.0457652 -0.998952 0 - outer loop - vertex -23.4791 -18.9156 0 - vertex -23.6632 -18.9241 -0.2 - vertex -23.4791 -18.9156 -0.2 - endloop - endfacet - facet normal -0.0578368 -0.998326 0 - outer loop - vertex -23.4791 -18.9156 -0.2 - vertex -23.1186 -18.9365 0 - vertex -23.4791 -18.9156 0 - endloop - endfacet - facet normal -0.0578368 -0.998326 -0 - outer loop - vertex -23.1186 -18.9365 0 - vertex -23.4791 -18.9156 -0.2 - vertex -23.1186 -18.9365 -0.2 - endloop - endfacet - facet normal -0.193675 -0.981066 0 - outer loop - vertex -23.1186 -18.9365 -0.2 - vertex -22.9739 -18.9651 0 - vertex -23.1186 -18.9365 0 - endloop - endfacet - facet normal -0.193675 -0.981066 -0 - outer loop - vertex -22.9739 -18.9651 0 - vertex -23.1186 -18.9365 -0.2 - vertex -22.9739 -18.9651 -0.2 - endloop - endfacet - facet normal -0.332798 -0.942998 0 - outer loop - vertex -22.9739 -18.9651 -0.2 - vertex -22.8524 -19.008 0 - vertex -22.9739 -18.9651 0 - endloop - endfacet - facet normal -0.332798 -0.942998 -0 - outer loop - vertex -22.8524 -19.008 0 - vertex -22.9739 -18.9651 -0.2 - vertex -22.8524 -19.008 -0.2 - endloop - endfacet - facet normal -0.512852 -0.858477 0 - outer loop - vertex -22.8524 -19.008 -0.2 - vertex -22.7539 -19.0668 0 - vertex -22.8524 -19.008 0 - endloop - endfacet - facet normal -0.512852 -0.858477 -0 - outer loop - vertex -22.7539 -19.0668 0 - vertex -22.8524 -19.008 -0.2 - vertex -22.7539 -19.0668 -0.2 - endloop - endfacet - facet normal -0.710432 -0.703766 0 - outer loop - vertex -22.6782 -19.1432 -0.2 - vertex -22.7539 -19.0668 0 - vertex -22.7539 -19.0668 -0.2 - endloop - endfacet - facet normal -0.710432 -0.703766 0 - outer loop - vertex -22.7539 -19.0668 0 - vertex -22.6782 -19.1432 -0.2 - vertex -22.6782 -19.1432 0 - endloop - endfacet - facet normal -0.873955 -0.486007 0 - outer loop - vertex -22.625 -19.2389 -0.2 - vertex -22.6782 -19.1432 0 - vertex -22.6782 -19.1432 -0.2 - endloop - endfacet - facet normal -0.873955 -0.486007 0 - outer loop - vertex -22.6782 -19.1432 0 - vertex -22.625 -19.2389 -0.2 - vertex -22.625 -19.2389 0 - endloop - endfacet - facet normal -0.966491 -0.256701 0 - outer loop - vertex -22.594 -19.3555 -0.2 - vertex -22.625 -19.2389 0 - vertex -22.625 -19.2389 -0.2 - endloop - endfacet - facet normal -0.966491 -0.256701 0 - outer loop - vertex -22.625 -19.2389 0 - vertex -22.594 -19.3555 -0.2 - vertex -22.594 -19.3555 0 - endloop - endfacet - facet normal -0.997923 -0.0644192 0 - outer loop - vertex -22.585 -19.4947 -0.2 - vertex -22.594 -19.3555 0 - vertex -22.594 -19.3555 -0.2 - endloop - endfacet - facet normal -0.997923 -0.0644192 0 - outer loop - vertex -22.594 -19.3555 0 - vertex -22.585 -19.4947 -0.2 - vertex -22.585 -19.4947 0 - endloop - endfacet - facet normal -0.996972 0.0777592 0 - outer loop - vertex -22.5978 -19.6581 -0.2 - vertex -22.585 -19.4947 0 - vertex -22.585 -19.4947 -0.2 - endloop - endfacet - facet normal -0.996972 0.0777592 0 - outer loop - vertex -22.585 -19.4947 0 - vertex -22.5978 -19.6581 -0.2 - vertex -22.5978 -19.6581 0 - endloop - endfacet - facet normal -0.976488 0.215571 0 - outer loop - vertex -22.6874 -20.0641 -0.2 - vertex -22.5978 -19.6581 0 - vertex -22.5978 -19.6581 -0.2 - endloop - endfacet - facet normal -0.976488 0.215571 0 - outer loop - vertex -22.5978 -19.6581 0 - vertex -22.6874 -20.0641 -0.2 - vertex -22.6874 -20.0641 0 - endloop - endfacet - facet normal -0.949119 0.314918 0 - outer loop - vertex -22.8608 -20.5868 -0.2 - vertex -22.6874 -20.0641 0 - vertex -22.6874 -20.0641 -0.2 - endloop - endfacet - facet normal -0.949119 0.314918 0 - outer loop - vertex -22.6874 -20.0641 0 - vertex -22.8608 -20.5868 -0.2 - vertex -22.8608 -20.5868 0 - endloop - endfacet - facet normal -0.931342 0.364145 0 - outer loop - vertex -23.116 -21.2395 -0.2 - vertex -22.8608 -20.5868 0 - vertex -22.8608 -20.5868 -0.2 - endloop - endfacet - facet normal -0.931342 0.364145 0 - outer loop - vertex -22.8608 -20.5868 0 - vertex -23.116 -21.2395 -0.2 - vertex -23.116 -21.2395 0 - endloop - endfacet - facet normal -0.926122 0.377225 0 - outer loop - vertex -24.3958 -24.3815 -0.2 - vertex -23.116 -21.2395 0 - vertex -23.116 -21.2395 -0.2 - endloop - endfacet - facet normal -0.926122 0.377225 0 - outer loop - vertex -23.116 -21.2395 0 - vertex -24.3958 -24.3815 -0.2 - vertex -24.3958 -24.3815 0 - endloop - endfacet - facet normal -0.92485 0.380332 0 - outer loop - vertex -24.9793 -25.8003 -0.2 - vertex -24.3958 -24.3815 0 - vertex -24.3958 -24.3815 -0.2 - endloop - endfacet - facet normal -0.92485 0.380332 0 - outer loop - vertex -24.3958 -24.3815 0 - vertex -24.9793 -25.8003 -0.2 - vertex -24.9793 -25.8003 0 - endloop - endfacet - facet normal -0.917414 0.397935 0 - outer loop - vertex -25.4624 -26.9141 -0.2 - vertex -24.9793 -25.8003 0 - vertex -24.9793 -25.8003 -0.2 - endloop - endfacet - facet normal -0.917414 0.397935 0 - outer loop - vertex -24.9793 -25.8003 0 - vertex -25.4624 -26.9141 -0.2 - vertex -25.4624 -26.9141 0 - endloop - endfacet - facet normal -0.901103 0.433605 0 - outer loop - vertex -25.8688 -27.7587 -0.2 - vertex -25.4624 -26.9141 0 - vertex -25.4624 -26.9141 -0.2 - endloop - endfacet - facet normal -0.901103 0.433605 0 - outer loop - vertex -25.4624 -26.9141 0 - vertex -25.8688 -27.7587 -0.2 - vertex -25.8688 -27.7587 0 - endloop - endfacet - facet normal -0.87739 0.479778 0 - outer loop - vertex -26.0506 -28.0911 -0.2 - vertex -25.8688 -27.7587 0 - vertex -25.8688 -27.7587 -0.2 - endloop - endfacet - facet normal -0.87739 0.479778 0 - outer loop - vertex -25.8688 -27.7587 0 - vertex -26.0506 -28.0911 -0.2 - vertex -26.0506 -28.0911 0 - endloop - endfacet - facet normal -0.851572 0.524237 0 - outer loop - vertex -26.2221 -28.3696 -0.2 - vertex -26.0506 -28.0911 0 - vertex -26.0506 -28.0911 -0.2 - endloop - endfacet - facet normal -0.851572 0.524237 0 - outer loop - vertex -26.0506 -28.0911 0 - vertex -26.2221 -28.3696 -0.2 - vertex -26.2221 -28.3696 0 - endloop - endfacet - facet normal -0.812951 0.582331 0 - outer loop - vertex -26.3861 -28.5987 -0.2 - vertex -26.2221 -28.3696 0 - vertex -26.2221 -28.3696 -0.2 - endloop - endfacet - facet normal -0.812951 0.582331 0 - outer loop - vertex -26.2221 -28.3696 0 - vertex -26.3861 -28.5987 -0.2 - vertex -26.3861 -28.5987 0 - endloop - endfacet - facet normal -0.755407 0.655255 0 - outer loop - vertex -26.5458 -28.7827 -0.2 - vertex -26.3861 -28.5987 0 - vertex -26.3861 -28.5987 -0.2 - endloop - endfacet - facet normal -0.755407 0.655255 0 - outer loop - vertex -26.3861 -28.5987 0 - vertex -26.5458 -28.7827 -0.2 - vertex -26.5458 -28.7827 0 - endloop - endfacet - facet normal -0.671936 0.740609 0 - outer loop - vertex -26.5458 -28.7827 -0.2 - vertex -26.7039 -28.9262 0 - vertex -26.5458 -28.7827 0 - endloop - endfacet - facet normal -0.671936 0.740609 0 - outer loop - vertex -26.7039 -28.9262 0 - vertex -26.5458 -28.7827 -0.2 - vertex -26.7039 -28.9262 -0.2 - endloop - endfacet - facet normal -0.558253 0.829671 0 - outer loop - vertex -26.7039 -28.9262 -0.2 - vertex -26.8635 -29.0336 0 - vertex -26.7039 -28.9262 0 - endloop - endfacet - facet normal -0.558253 0.829671 0 - outer loop - vertex -26.8635 -29.0336 0 - vertex -26.7039 -28.9262 -0.2 - vertex -26.8635 -29.0336 -0.2 - endloop - endfacet - facet normal -0.419339 0.90783 0 - outer loop - vertex -26.8635 -29.0336 -0.2 - vertex -27.0275 -29.1093 0 - vertex -26.8635 -29.0336 0 - endloop - endfacet - facet normal -0.419339 0.90783 0 - outer loop - vertex -27.0275 -29.1093 0 - vertex -26.8635 -29.0336 -0.2 - vertex -27.0275 -29.1093 -0.2 - endloop - endfacet - facet normal -0.272797 0.962072 0 - outer loop - vertex -27.0275 -29.1093 -0.2 - vertex -27.1989 -29.1579 0 - vertex -27.0275 -29.1093 0 - endloop - endfacet - facet normal -0.272797 0.962072 0 - outer loop - vertex -27.1989 -29.1579 0 - vertex -27.0275 -29.1093 -0.2 - vertex -27.1989 -29.1579 -0.2 - endloop - endfacet - facet normal -0.141044 0.990003 0 - outer loop - vertex -27.1989 -29.1579 -0.2 - vertex -27.3805 -29.1838 0 - vertex -27.1989 -29.1579 0 - endloop - endfacet - facet normal -0.141044 0.990003 0 - outer loop - vertex -27.3805 -29.1838 0 - vertex -27.1989 -29.1579 -0.2 - vertex -27.3805 -29.1838 -0.2 - endloop - endfacet - facet normal -0.0391387 0.999234 0 - outer loop - vertex -27.3805 -29.1838 -0.2 - vertex -27.5755 -29.1914 0 - vertex -27.3805 -29.1838 0 - endloop - endfacet - facet normal -0.0391387 0.999234 0 - outer loop - vertex -27.5755 -29.1914 0 - vertex -27.3805 -29.1838 -0.2 - vertex -27.5755 -29.1914 -0.2 - endloop - endfacet - facet normal 0.0328742 0.999459 -0 - outer loop - vertex -27.5755 -29.1914 -0.2 - vertex -27.9775 -29.1782 0 - vertex -27.5755 -29.1914 0 - endloop - endfacet - facet normal 0.0328742 0.999459 0 - outer loop - vertex -27.9775 -29.1782 0 - vertex -27.5755 -29.1914 -0.2 - vertex -27.9775 -29.1782 -0.2 - endloop - endfacet - facet normal 0.226397 0.974035 -0 - outer loop - vertex -27.9775 -29.1782 -0.2 - vertex -28.0989 -29.15 0 - vertex -27.9775 -29.1782 0 - endloop - endfacet - facet normal 0.226397 0.974035 0 - outer loop - vertex -28.0989 -29.15 0 - vertex -27.9775 -29.1782 -0.2 - vertex -28.0989 -29.15 -0.2 - endloop - endfacet - facet normal 0.566674 0.823942 -0 - outer loop - vertex -28.0989 -29.15 -0.2 - vertex -28.176 -29.097 0 - vertex -28.0989 -29.15 0 - endloop - endfacet - facet normal 0.566674 0.823942 0 - outer loop - vertex -28.176 -29.097 0 - vertex -28.0989 -29.15 -0.2 - vertex -28.176 -29.097 -0.2 - endloop - endfacet - facet normal 0.908757 0.417326 0 - outer loop - vertex -28.176 -29.097 0 - vertex -28.2154 -29.0113 -0.2 - vertex -28.2154 -29.0113 0 - endloop - endfacet - facet normal 0.908757 0.417326 0 - outer loop - vertex -28.2154 -29.0113 -0.2 - vertex -28.176 -29.097 0 - vertex -28.176 -29.097 -0.2 - endloop - endfacet - facet normal 0.997947 0.0640397 0 - outer loop - vertex -28.2154 -29.0113 0 - vertex -28.2235 -28.8853 -0.2 - vertex -28.2235 -28.8853 0 - endloop - endfacet - facet normal 0.997947 0.0640397 0 - outer loop - vertex -28.2235 -28.8853 -0.2 - vertex -28.2154 -29.0113 0 - vertex -28.2154 -29.0113 -0.2 - endloop - endfacet - facet normal 0.992038 -0.125943 0 - outer loop - vertex -28.2235 -28.8853 0 - vertex -28.1721 -28.4809 -0.2 - vertex -28.1721 -28.4809 0 - endloop - endfacet - facet normal 0.992038 -0.125943 0 - outer loop - vertex -28.1721 -28.4809 -0.2 - vertex -28.2235 -28.8853 0 - vertex -28.2235 -28.8853 -0.2 - endloop - endfacet - facet normal 0.988281 -0.152644 0 - outer loop - vertex -28.1721 -28.4809 0 - vertex -27.9393 -26.9734 -0.2 - vertex -27.9393 -26.9734 0 - endloop - endfacet - facet normal 0.988281 -0.152644 0 - outer loop - vertex -27.9393 -26.9734 -0.2 - vertex -28.1721 -28.4809 0 - vertex -28.1721 -28.4809 -0.2 - endloop - endfacet - facet normal 0.994809 -0.101759 0 - outer loop - vertex -27.9393 -26.9734 0 - vertex -27.8924 -26.5154 -0.2 - vertex -27.8924 -26.5154 0 - endloop - endfacet - facet normal 0.994809 -0.101759 0 - outer loop - vertex -27.8924 -26.5154 -0.2 - vertex -27.9393 -26.9734 0 - vertex -27.9393 -26.9734 -0.2 - endloop - endfacet - facet normal 0.999788 0.0205947 0 - outer loop - vertex -27.8924 -26.5154 0 - vertex -27.8988 -26.2055 -0.2 - vertex -27.8988 -26.2055 0 - endloop - endfacet - facet normal 0.999788 0.0205947 0 - outer loop - vertex -27.8988 -26.2055 -0.2 - vertex -27.8924 -26.5154 0 - vertex -27.8924 -26.5154 -0.2 - endloop - endfacet - facet normal 0.975965 0.217927 0 - outer loop - vertex -27.8988 -26.2055 0 - vertex -27.9236 -26.0946 -0.2 - vertex -27.9236 -26.0946 0 - endloop - endfacet - facet normal 0.975965 0.217927 0 - outer loop - vertex -27.9236 -26.0946 -0.2 - vertex -27.8988 -26.2055 0 - vertex -27.8988 -26.2055 -0.2 - endloop - endfacet - facet normal 0.909758 0.415139 0 - outer loop - vertex -27.9236 -26.0946 0 - vertex -27.9636 -26.0069 -0.2 - vertex -27.9636 -26.0069 0 - endloop - endfacet - facet normal 0.909758 0.415139 0 - outer loop - vertex -27.9636 -26.0069 -0.2 - vertex -27.9236 -26.0946 0 - vertex -27.9236 -26.0946 -0.2 - endloop - endfacet - facet normal 0.777135 0.629334 0 - outer loop - vertex -27.9636 -26.0069 0 - vertex -28.0195 -25.9379 -0.2 - vertex -28.0195 -25.9379 0 - endloop - endfacet - facet normal 0.777135 0.629334 0 - outer loop - vertex -28.0195 -25.9379 -0.2 - vertex -27.9636 -26.0069 0 - vertex -27.9636 -26.0069 -0.2 - endloop - endfacet - facet normal 0.604573 0.79655 -0 - outer loop - vertex -28.0195 -25.9379 -0.2 - vertex -28.0919 -25.8829 0 - vertex -28.0195 -25.9379 0 - endloop - endfacet - facet normal 0.604573 0.79655 0 - outer loop - vertex -28.0919 -25.8829 0 - vertex -28.0195 -25.9379 -0.2 - vertex -28.0919 -25.8829 -0.2 - endloop - endfacet - facet normal 0.400676 0.91622 -0 - outer loop - vertex -28.0919 -25.8829 -0.2 - vertex -28.2888 -25.7968 0 - vertex -28.0919 -25.8829 0 - endloop - endfacet - facet normal 0.400676 0.91622 0 - outer loop - vertex -28.2888 -25.7968 0 - vertex -28.0919 -25.8829 -0.2 - vertex -28.2888 -25.7968 -0.2 - endloop - endfacet - facet normal 0.299723 0.954026 -0 - outer loop - vertex -28.2888 -25.7968 -0.2 - vertex -28.5596 -25.7117 0 - vertex -28.2888 -25.7968 0 - endloop - endfacet - facet normal 0.299723 0.954026 0 - outer loop - vertex -28.5596 -25.7117 0 - vertex -28.2888 -25.7968 -0.2 - vertex -28.5596 -25.7117 -0.2 - endloop - endfacet - facet normal 0.220879 0.975301 -0 - outer loop - vertex -28.5596 -25.7117 -0.2 - vertex -28.7678 -25.6646 0 - vertex -28.5596 -25.7117 0 - endloop - endfacet - facet normal 0.220879 0.975301 0 - outer loop - vertex -28.7678 -25.6646 0 - vertex -28.5596 -25.7117 -0.2 - vertex -28.7678 -25.6646 -0.2 - endloop - endfacet - facet normal 0.142669 0.98977 -0 - outer loop - vertex -28.7678 -25.6646 -0.2 - vertex -29.0734 -25.6205 0 - vertex -28.7678 -25.6646 0 - endloop - endfacet - facet normal 0.142669 0.98977 0 - outer loop - vertex -29.0734 -25.6205 0 - vertex -28.7678 -25.6646 -0.2 - vertex -29.0734 -25.6205 -0.2 - endloop - endfacet - facet normal 0.0883121 0.996093 -0 - outer loop - vertex -29.0734 -25.6205 -0.2 - vertex -29.9179 -25.5457 0 - vertex -29.0734 -25.6205 0 - endloop - endfacet - facet normal 0.0883121 0.996093 0 - outer loop - vertex -29.9179 -25.5457 0 - vertex -29.0734 -25.6205 -0.2 - vertex -29.9179 -25.5457 -0.2 - endloop - endfacet - facet normal 0.0479595 0.998849 -0 - outer loop - vertex -29.9179 -25.5457 -0.2 - vertex -30.9759 -25.4949 0 - vertex -29.9179 -25.5457 0 - endloop - endfacet - facet normal 0.0479595 0.998849 0 - outer loop - vertex -30.9759 -25.4949 0 - vertex -29.9179 -25.5457 -0.2 - vertex -30.9759 -25.4949 -0.2 - endloop - endfacet - facet normal 0.0164478 0.999865 -0 - outer loop - vertex -30.9759 -25.4949 -0.2 - vertex -32.1303 -25.4759 0 - vertex -30.9759 -25.4949 0 - endloop - endfacet - facet normal 0.0164478 0.999865 0 - outer loop - vertex -32.1303 -25.4759 0 - vertex -30.9759 -25.4949 -0.2 - vertex -32.1303 -25.4759 -0.2 - endloop - endfacet - facet normal 0.000432102 1 -0 - outer loop - vertex -32.1303 -25.4759 -0.2 - vertex -34.9509 -25.4747 0 - vertex -32.1303 -25.4759 0 - endloop - endfacet - facet normal 0.000432102 1 0 - outer loop - vertex -34.9509 -25.4747 0 - vertex -32.1303 -25.4759 -0.2 - vertex -34.9509 -25.4747 -0.2 + vertex -34.9626 -25.4747 0 + vertex -32.142 -25.4759 -3 + vertex -34.9626 -25.4747 -3 endloop endfacet facet normal -0.910935 0.41255 0 outer loop - vertex -35.4707 -26.6225 -0.2 - vertex -34.9509 -25.4747 0 - vertex -34.9509 -25.4747 -0.2 + vertex -35.4824 -26.6225 -3 + vertex -34.9626 -25.4747 0 + vertex -34.9626 -25.4747 -3 endloop endfacet facet normal -0.910935 0.41255 0 outer loop - vertex -34.9509 -25.4747 0 - vertex -35.4707 -26.6225 -0.2 - vertex -35.4707 -26.6225 0 + vertex -34.9626 -25.4747 0 + vertex -35.4824 -26.6225 -3 + vertex -35.4824 -26.6225 0 endloop endfacet - facet normal -0.916492 0.400054 0 + facet normal -0.92531 0.379212 0 outer loop - vertex -36.4516 -28.8697 -0.2 - vertex -35.4707 -26.6225 0 - vertex -35.4707 -26.6225 -0.2 + vertex -38.7331 -34.5543 -3 + vertex -35.4824 -26.6225 0 + vertex -35.4824 -26.6225 -3 endloop endfacet - facet normal -0.916492 0.400054 0 + facet normal -0.92531 0.379212 0 outer loop - vertex -35.4707 -26.6225 0 - vertex -36.4516 -28.8697 -0.2 - vertex -36.4516 -28.8697 0 + vertex -35.4824 -26.6225 0 + vertex -38.7331 -34.5543 -3 + vertex -38.7331 -34.5543 0 endloop endfacet - facet normal -0.92275 0.385399 0 + facet normal -0.798774 -0.601632 0 outer loop - vertex -37.5165 -31.4193 -0.2 - vertex -36.4516 -28.8697 0 - vertex -36.4516 -28.8697 -0.2 + vertex -38.4261 -34.9619 -3 + vertex -38.7331 -34.5543 0 + vertex -38.7331 -34.5543 -3 endloop endfacet - facet normal -0.92275 0.385399 0 + facet normal -0.798774 -0.601632 0 outer loop - vertex -36.4516 -28.8697 0 - vertex -37.5165 -31.4193 -0.2 - vertex -37.5165 -31.4193 0 + vertex -38.7331 -34.5543 0 + vertex -38.4261 -34.9619 -3 + vertex -38.4261 -34.9619 0 endloop endfacet - facet normal -0.928331 0.371754 0 + facet normal -0.0360382 -0.99935 0 outer loop - vertex -38.3711 -33.5534 -0.2 - vertex -37.5165 -31.4193 0 - vertex -37.5165 -31.4193 -0.2 + vertex -38.4261 -34.9619 -3 + vertex -35.0529 -35.0835 0 + vertex -38.4261 -34.9619 0 endloop endfacet - facet normal -0.928331 0.371754 0 + facet normal -0.0360382 -0.99935 -0 outer loop - vertex -37.5165 -31.4193 0 - vertex -38.3711 -33.5534 -0.2 - vertex -38.3711 -33.5534 0 + vertex -35.0529 -35.0835 0 + vertex -38.4261 -34.9619 -3 + vertex -35.0529 -35.0835 -3 endloop endfacet - facet normal -0.936805 0.349851 0 + facet normal 0.0608671 -0.998146 0 outer loop - vertex -38.6277 -34.2404 -0.2 - vertex -38.3711 -33.5534 0 - vertex -38.3711 -33.5534 -0.2 + vertex -35.0529 -35.0835 -3 + vertex -31.3644 -34.8586 0 + vertex -35.0529 -35.0835 0 endloop endfacet - facet normal -0.936805 0.349851 0 + facet normal 0.0608671 -0.998146 0 outer loop - vertex -38.3711 -33.5534 0 - vertex -38.6277 -34.2404 -0.2 - vertex -38.6277 -34.2404 0 + vertex -31.3644 -34.8586 0 + vertex -35.0529 -35.0835 -3 + vertex -31.3644 -34.8586 -3 endloop endfacet - facet normal -0.958246 0.285946 0 + facet normal 0.33651 -0.94168 0 outer loop - vertex -38.7214 -34.5543 -0.2 - vertex -38.6277 -34.2404 0 - vertex -38.6277 -34.2404 -0.2 + vertex -31.3644 -34.8586 -3 + vertex -30.2578 -34.4631 0 + vertex -31.3644 -34.8586 0 endloop endfacet - facet normal -0.958246 0.285946 0 + facet normal 0.33651 -0.94168 0 outer loop - vertex -38.6277 -34.2404 0 - vertex -38.7214 -34.5543 -0.2 - vertex -38.7214 -34.5543 0 + vertex -30.2578 -34.4631 0 + vertex -31.3644 -34.8586 -3 + vertex -30.2578 -34.4631 -3 endloop endfacet - facet normal -0.979296 -0.202433 0 + facet normal 0.467106 -0.884201 0 outer loop - vertex -38.6971 -34.6715 -0.2 - vertex -38.7214 -34.5543 0 - vertex -38.7214 -34.5543 -0.2 + vertex -30.2578 -34.4631 -3 + vertex -29.0969 -33.8499 0 + vertex -30.2578 -34.4631 0 endloop endfacet - facet normal -0.979296 -0.202433 0 + facet normal 0.467106 -0.884201 0 outer loop - vertex -38.7214 -34.5543 0 - vertex -38.6971 -34.6715 -0.2 - vertex -38.6971 -34.6715 0 + vertex -29.0969 -33.8499 0 + vertex -30.2578 -34.4631 -3 + vertex -29.0969 -33.8499 -3 endloop endfacet - facet normal -0.869155 -0.494539 0 + facet normal 0.610499 -0.792017 0 outer loop - vertex -38.6312 -34.7874 -0.2 - vertex -38.6971 -34.6715 0 - vertex -38.6971 -34.6715 -0.2 + vertex -29.0969 -33.8499 -3 + vertex -26.8283 -32.1012 0 + vertex -29.0969 -33.8499 0 endloop endfacet - facet normal -0.869155 -0.494539 0 + facet normal 0.610499 -0.792017 0 outer loop - vertex -38.6971 -34.6715 0 - vertex -38.6312 -34.7874 -0.2 - vertex -38.6312 -34.7874 0 + vertex -26.8283 -32.1012 0 + vertex -29.0969 -33.8499 -3 + vertex -26.8283 -32.1012 -3 endloop endfacet - facet normal -0.719928 -0.694049 0 + facet normal 0.674561 -0.738219 0 outer loop - vertex -38.5336 -34.8886 -0.2 - vertex -38.6312 -34.7874 0 - vertex -38.6312 -34.7874 -0.2 + vertex -26.8283 -32.1012 -3 + vertex -24.8569 -30.2998 0 + vertex -26.8283 -32.1012 0 endloop endfacet - facet normal -0.719928 -0.694049 0 + facet normal 0.674561 -0.738219 0 outer loop - vertex -38.6312 -34.7874 0 - vertex -38.5336 -34.8886 -0.2 - vertex -38.5336 -34.8886 0 + vertex -24.8569 -30.2998 0 + vertex -26.8283 -32.1012 -3 + vertex -24.8569 -30.2998 -3 endloop endfacet - facet normal -0.523423 -0.852073 0 + facet normal 0.349743 -0.936846 0 outer loop - vertex -38.5336 -34.8886 -0.2 - vertex -38.4144 -34.9619 0 - vertex -38.5336 -34.8886 0 + vertex -24.8569 -30.2998 -3 + vertex -24.4667 -30.1541 0 + vertex -24.8569 -30.2998 0 endloop endfacet - facet normal -0.523423 -0.852073 -0 + facet normal 0.349743 -0.936846 0 outer loop - vertex -38.4144 -34.9619 0 - vertex -38.5336 -34.8886 -0.2 - vertex -38.4144 -34.9619 -0.2 + vertex -24.4667 -30.1541 0 + vertex -24.8569 -30.2998 -3 + vertex -24.4667 -30.1541 -3 endloop endfacet - facet normal -0.239855 -0.970809 0 + facet normal -0.235678 -0.971831 0 outer loop - vertex -38.4144 -34.9619 -0.2 - vertex -38.2613 -34.9997 0 - vertex -38.4144 -34.9619 0 + vertex -24.4667 -30.1541 -3 + vertex -24.0819 -30.2475 0 + vertex -24.4667 -30.1541 0 endloop endfacet - facet normal -0.239855 -0.970809 -0 + facet normal -0.235678 -0.971831 -0 outer loop - vertex -38.2613 -34.9997 0 - vertex -38.4144 -34.9619 -0.2 - vertex -38.2613 -34.9997 -0.2 + vertex -24.0819 -30.2475 0 + vertex -24.4667 -30.1541 -3 + vertex -24.0819 -30.2475 -3 endloop endfacet - facet normal -0.118843 -0.992913 0 + facet normal -0.453986 -0.891009 0 outer loop - vertex -38.2613 -34.9997 -0.2 - vertex -38.0027 -35.0306 0 - vertex -38.2613 -34.9997 0 + vertex -24.0819 -30.2475 -3 + vertex -23.655 -30.4649 0 + vertex -24.0819 -30.2475 0 endloop endfacet - facet normal -0.118843 -0.992913 -0 + facet normal -0.453986 -0.891009 -0 outer loop - vertex -38.0027 -35.0306 0 - vertex -38.2613 -34.9997 -0.2 - vertex -38.0027 -35.0306 -0.2 + vertex -23.655 -30.4649 0 + vertex -24.0819 -30.2475 -3 + vertex -23.655 -30.4649 -3 endloop endfacet - facet normal -0.0541463 -0.998533 0 + facet normal -0.79441 -0.607382 0 outer loop - vertex -38.0027 -35.0306 -0.2 - vertex -37.2267 -35.0727 0 - vertex -38.0027 -35.0306 0 + vertex -23.4462 -30.738 -3 + vertex -23.655 -30.4649 0 + vertex -23.655 -30.4649 -3 endloop endfacet - facet normal -0.0541463 -0.998533 -0 + facet normal -0.79441 -0.607382 0 outer loop - vertex -37.2267 -35.0727 0 - vertex -38.0027 -35.0306 -0.2 - vertex -37.2267 -35.0727 -0.2 + vertex -23.655 -30.4649 0 + vertex -23.4462 -30.738 -3 + vertex -23.4462 -30.738 0 endloop endfacet - facet normal -0.0166336 -0.999862 0 + facet normal -0.917968 0.396655 0 outer loop - vertex -37.2267 -35.0727 -0.2 - vertex -36.2012 -35.0898 0 - vertex -37.2267 -35.0727 0 + vertex -23.8149 -31.5911 -3 + vertex -23.4462 -30.738 0 + vertex -23.4462 -30.738 -3 endloop endfacet - facet normal -0.0166336 -0.999862 -0 + facet normal -0.917968 0.396655 0 outer loop - vertex -36.2012 -35.0898 0 - vertex -37.2267 -35.0727 -0.2 - vertex -36.2012 -35.0898 -0.2 + vertex -23.4462 -30.738 0 + vertex -23.8149 -31.5911 -3 + vertex -23.8149 -31.5911 0 endloop endfacet - facet normal 0.00541272 -0.999985 0 + facet normal -0.860785 0.508968 0 outer loop - vertex -36.2012 -35.0898 -0.2 - vertex -35.0412 -35.0835 0 - vertex -36.2012 -35.0898 0 + vertex -24.7956 -33.2498 -3 + vertex -23.8149 -31.5911 0 + vertex -23.8149 -31.5911 -3 endloop endfacet - facet normal 0.00541272 -0.999985 0 + facet normal -0.860785 0.508968 0 outer loop - vertex -35.0412 -35.0835 0 - vertex -36.2012 -35.0898 -0.2 - vertex -35.0412 -35.0835 -0.2 + vertex -23.8149 -31.5911 0 + vertex -24.7956 -33.2498 -3 + vertex -24.7956 -33.2498 0 endloop endfacet - facet normal 0.0236788 -0.99972 0 + facet normal -0.825216 0.564817 0 outer loop - vertex -35.0412 -35.0835 -0.2 - vertex -33.8615 -35.0556 0 - vertex -35.0412 -35.0835 0 + vertex -27.2791 -36.8782 -3 + vertex -24.7956 -33.2498 0 + vertex -24.7956 -33.2498 -3 endloop endfacet - facet normal 0.0236788 -0.99972 0 + facet normal -0.825216 0.564817 0 outer loop - vertex -33.8615 -35.0556 0 - vertex -35.0412 -35.0835 -0.2 - vertex -33.8615 -35.0556 -0.2 - endloop - endfacet - facet normal 0.0441434 -0.999025 0 - outer loop - vertex -33.8615 -35.0556 -0.2 - vertex -32.7769 -35.0076 0 - vertex -33.8615 -35.0556 0 - endloop - endfacet - facet normal 0.0441434 -0.999025 0 - outer loop - vertex -32.7769 -35.0076 0 - vertex -33.8615 -35.0556 -0.2 - vertex -32.7769 -35.0076 -0.2 - endloop - endfacet - facet normal 0.0755008 -0.997146 0 - outer loop - vertex -32.7769 -35.0076 -0.2 - vertex -31.9023 -34.9414 0 - vertex -32.7769 -35.0076 0 - endloop - endfacet - facet normal 0.0755008 -0.997146 0 - outer loop - vertex -31.9023 -34.9414 0 - vertex -32.7769 -35.0076 -0.2 - vertex -31.9023 -34.9414 -0.2 - endloop - endfacet - facet normal 0.121377 -0.992606 0 - outer loop - vertex -31.9023 -34.9414 -0.2 - vertex -31.5797 -34.902 0 - vertex -31.9023 -34.9414 0 - endloop - endfacet - facet normal 0.121377 -0.992606 0 - outer loop - vertex -31.5797 -34.902 0 - vertex -31.9023 -34.9414 -0.2 - vertex -31.5797 -34.902 -0.2 - endloop - endfacet - facet normal 0.187713 -0.982224 0 - outer loop - vertex -31.5797 -34.902 -0.2 - vertex -31.3526 -34.8586 0 - vertex -31.5797 -34.902 0 - endloop - endfacet - facet normal 0.187713 -0.982224 0 - outer loop - vertex -31.3526 -34.8586 0 - vertex -31.5797 -34.902 -0.2 - vertex -31.3526 -34.8586 -0.2 - endloop - endfacet - facet normal 0.296204 -0.955125 0 - outer loop - vertex -31.3526 -34.8586 -0.2 - vertex -30.8095 -34.6902 0 - vertex -31.3526 -34.8586 0 - endloop - endfacet - facet normal 0.296204 -0.955125 0 - outer loop - vertex -30.8095 -34.6902 0 - vertex -31.3526 -34.8586 -0.2 - vertex -30.8095 -34.6902 -0.2 - endloop - endfacet - facet normal 0.373689 -0.927554 0 - outer loop - vertex -30.8095 -34.6902 -0.2 - vertex -30.2461 -34.4632 0 - vertex -30.8095 -34.6902 0 - endloop - endfacet - facet normal 0.373689 -0.927554 0 - outer loop - vertex -30.2461 -34.4632 0 - vertex -30.8095 -34.6902 -0.2 - vertex -30.2461 -34.4632 -0.2 - endloop - endfacet - facet normal 0.438403 -0.898778 0 - outer loop - vertex -30.2461 -34.4632 -0.2 - vertex -29.669 -34.1817 0 - vertex -30.2461 -34.4632 0 - endloop - endfacet - facet normal 0.438403 -0.898778 0 - outer loop - vertex -29.669 -34.1817 0 - vertex -30.2461 -34.4632 -0.2 - vertex -29.669 -34.1817 -0.2 - endloop - endfacet - facet normal 0.494095 -0.869408 0 - outer loop - vertex -29.669 -34.1817 -0.2 - vertex -29.0852 -33.8499 0 - vertex -29.669 -34.1817 0 - endloop - endfacet - facet normal 0.494095 -0.869408 0 - outer loop - vertex -29.0852 -33.8499 0 - vertex -29.669 -34.1817 -0.2 - vertex -29.0852 -33.8499 -0.2 - endloop - endfacet - facet normal 0.543479 -0.839423 0 - outer loop - vertex -29.0852 -33.8499 -0.2 - vertex -28.5012 -33.4718 0 - vertex -29.0852 -33.8499 0 - endloop - endfacet - facet normal 0.543479 -0.839423 0 - outer loop - vertex -28.5012 -33.4718 0 - vertex -29.0852 -33.8499 -0.2 - vertex -28.5012 -33.4718 -0.2 - endloop - endfacet - facet normal 0.588526 -0.808478 0 - outer loop - vertex -28.5012 -33.4718 -0.2 - vertex -27.924 -33.0516 0 - vertex -28.5012 -33.4718 0 - endloop - endfacet - facet normal 0.588526 -0.808478 0 - outer loop - vertex -27.924 -33.0516 0 - vertex -28.5012 -33.4718 -0.2 - vertex -27.924 -33.0516 -0.2 - endloop - endfacet - facet normal 0.630713 -0.776016 0 - outer loop - vertex -27.924 -33.0516 -0.2 - vertex -27.3602 -32.5933 0 - vertex -27.924 -33.0516 0 - endloop - endfacet - facet normal 0.630713 -0.776016 0 - outer loop - vertex -27.3602 -32.5933 0 - vertex -27.924 -33.0516 -0.2 - vertex -27.3602 -32.5933 -0.2 - endloop - endfacet - facet normal 0.671162 -0.741311 0 - outer loop - vertex -27.3602 -32.5933 -0.2 - vertex -26.8166 -32.1012 0 - vertex -27.3602 -32.5933 0 - endloop - endfacet - facet normal 0.671162 -0.741311 0 - outer loop - vertex -26.8166 -32.1012 0 - vertex -27.3602 -32.5933 -0.2 - vertex -26.8166 -32.1012 -0.2 - endloop - endfacet - facet normal 0.688884 -0.724872 0 - outer loop - vertex -26.8166 -32.1012 -0.2 - vertex -25.5344 -30.8827 0 - vertex -26.8166 -32.1012 0 - endloop - endfacet - facet normal 0.688884 -0.724872 0 - outer loop - vertex -25.5344 -30.8827 0 - vertex -26.8166 -32.1012 -0.2 - vertex -25.5344 -30.8827 -0.2 - endloop - endfacet - facet normal 0.667079 -0.744987 0 - outer loop - vertex -25.5344 -30.8827 -0.2 - vertex -25.1341 -30.5242 0 - vertex -25.5344 -30.8827 0 - endloop - endfacet - facet normal 0.667079 -0.744987 0 - outer loop - vertex -25.1341 -30.5242 0 - vertex -25.5344 -30.8827 -0.2 - vertex -25.1341 -30.5242 -0.2 - endloop - endfacet - facet normal 0.613469 -0.789718 0 - outer loop - vertex -25.1341 -30.5242 -0.2 - vertex -24.8452 -30.2998 0 - vertex -25.1341 -30.5242 0 - endloop - endfacet - facet normal 0.613469 -0.789718 0 - outer loop - vertex -24.8452 -30.2998 0 - vertex -25.1341 -30.5242 -0.2 - vertex -24.8452 -30.2998 -0.2 - endloop - endfacet - facet normal 0.473466 -0.880812 0 - outer loop - vertex -24.8452 -30.2998 -0.2 - vertex -24.6311 -30.1847 0 - vertex -24.8452 -30.2998 0 - endloop - endfacet - facet normal 0.473466 -0.880812 0 - outer loop - vertex -24.6311 -30.1847 0 - vertex -24.8452 -30.2998 -0.2 - vertex -24.6311 -30.1847 -0.2 - endloop - endfacet - facet normal 0.259354 -0.965782 0 - outer loop - vertex -24.6311 -30.1847 -0.2 - vertex -24.5406 -30.1604 0 - vertex -24.6311 -30.1847 0 - endloop - endfacet - facet normal 0.259354 -0.965782 0 - outer loop - vertex -24.5406 -30.1604 0 - vertex -24.6311 -30.1847 -0.2 - vertex -24.5406 -30.1604 -0.2 - endloop - endfacet - facet normal 0.0730053 -0.997332 0 - outer loop - vertex -24.5406 -30.1604 -0.2 - vertex -24.455 -30.1541 0 - vertex -24.5406 -30.1604 0 - endloop - endfacet - facet normal 0.0730053 -0.997332 0 - outer loop - vertex -24.455 -30.1541 0 - vertex -24.5406 -30.1604 -0.2 - vertex -24.455 -30.1541 -0.2 - endloop - endfacet - facet normal -0.164732 -0.986338 0 - outer loop - vertex -24.455 -30.1541 -0.2 - vertex -24.2803 -30.1833 0 - vertex -24.455 -30.1541 0 - endloop - endfacet - facet normal -0.164732 -0.986338 -0 - outer loop - vertex -24.2803 -30.1833 0 - vertex -24.455 -30.1541 -0.2 - vertex -24.2803 -30.1833 -0.2 - endloop - endfacet - facet normal -0.291983 -0.956423 0 - outer loop - vertex -24.2803 -30.1833 -0.2 - vertex -24.0701 -30.2475 0 - vertex -24.2803 -30.1833 0 - endloop - endfacet - facet normal -0.291983 -0.956423 -0 - outer loop - vertex -24.0701 -30.2475 0 - vertex -24.2803 -30.1833 -0.2 - vertex -24.0701 -30.2475 -0.2 - endloop - endfacet - facet normal -0.377094 -0.926175 0 - outer loop - vertex -24.0701 -30.2475 -0.2 - vertex -23.8399 -30.3412 0 - vertex -24.0701 -30.2475 0 - endloop - endfacet - facet normal -0.377094 -0.926175 -0 - outer loop - vertex -23.8399 -30.3412 0 - vertex -24.0701 -30.2475 -0.2 - vertex -23.8399 -30.3412 -0.2 - endloop - endfacet - facet normal -0.532683 -0.846315 0 - outer loop - vertex -23.8399 -30.3412 -0.2 - vertex -23.6433 -30.465 0 - vertex -23.8399 -30.3412 0 - endloop - endfacet - facet normal -0.532683 -0.846315 -0 - outer loop - vertex -23.6433 -30.465 0 - vertex -23.8399 -30.3412 -0.2 - vertex -23.6433 -30.465 -0.2 - endloop - endfacet - facet normal -0.695789 -0.718246 0 - outer loop - vertex -23.6433 -30.465 -0.2 - vertex -23.5012 -30.6026 0 - vertex -23.6433 -30.465 0 - endloop - endfacet - facet normal -0.695789 -0.718246 -0 - outer loop - vertex -23.5012 -30.6026 0 - vertex -23.6433 -30.465 -0.2 - vertex -23.5012 -30.6026 -0.2 - endloop - endfacet - facet normal -0.84273 -0.538337 0 - outer loop - vertex -23.4571 -30.6716 -0.2 - vertex -23.5012 -30.6026 0 - vertex -23.5012 -30.6026 -0.2 - endloop - endfacet - facet normal -0.84273 -0.538337 0 - outer loop - vertex -23.5012 -30.6026 0 - vertex -23.4571 -30.6716 -0.2 - vertex -23.4571 -30.6716 0 - endloop - endfacet - facet normal -0.946617 -0.322361 0 - outer loop - vertex -23.4345 -30.738 -0.2 - vertex -23.4571 -30.6716 0 - vertex -23.4571 -30.6716 -0.2 - endloop - endfacet - facet normal -0.946617 -0.322361 0 - outer loop - vertex -23.4571 -30.6716 0 - vertex -23.4345 -30.738 -0.2 - vertex -23.4345 -30.738 0 - endloop - endfacet - facet normal -0.988328 0.152339 0 - outer loop - vertex -23.4513 -30.847 -0.2 - vertex -23.4345 -30.738 0 - vertex -23.4345 -30.738 -0.2 - endloop - endfacet - facet normal -0.988328 0.152339 0 - outer loop - vertex -23.4345 -30.738 0 - vertex -23.4513 -30.847 -0.2 - vertex -23.4513 -30.847 0 - endloop - endfacet - facet normal -0.933862 0.357635 0 - outer loop - vertex -23.5218 -31.031 -0.2 - vertex -23.4513 -30.847 0 - vertex -23.4513 -30.847 -0.2 - endloop - endfacet - facet normal -0.933862 0.357635 0 - outer loop - vertex -23.4513 -30.847 0 - vertex -23.5218 -31.031 -0.2 - vertex -23.5218 -31.031 0 - endloop - endfacet - facet normal -0.893602 0.44886 0 - outer loop - vertex -23.8031 -31.5911 -0.2 - vertex -23.5218 -31.031 0 - vertex -23.5218 -31.031 -0.2 - endloop - endfacet - facet normal -0.893602 0.44886 0 - outer loop - vertex -23.5218 -31.031 0 - vertex -23.8031 -31.5911 -0.2 - vertex -23.8031 -31.5911 0 - endloop - endfacet - facet normal -0.86862 0.495478 0 - outer loop - vertex -24.2375 -32.3527 -0.2 - vertex -23.8031 -31.5911 0 - vertex -23.8031 -31.5911 -0.2 - endloop - endfacet - facet normal -0.86862 0.495478 0 - outer loop - vertex -23.8031 -31.5911 0 - vertex -24.2375 -32.3527 -0.2 - vertex -24.2375 -32.3527 0 - endloop - endfacet - facet normal -0.854086 0.520132 0 - outer loop - vertex -24.7839 -33.2498 -0.2 - vertex -24.2375 -32.3527 0 - vertex -24.2375 -32.3527 -0.2 - endloop - endfacet - facet normal -0.854086 0.520132 0 - outer loop - vertex -24.2375 -32.3527 0 - vertex -24.7839 -33.2498 -0.2 - vertex -24.7839 -33.2498 0 - endloop - endfacet - facet normal -0.842904 0.538064 0 - outer loop - vertex -25.4011 -34.2168 -0.2 - vertex -24.7839 -33.2498 0 - vertex -24.7839 -33.2498 -0.2 - endloop - endfacet - facet normal -0.842904 0.538064 0 - outer loop - vertex -24.7839 -33.2498 0 - vertex -25.4011 -34.2168 -0.2 - vertex -25.4011 -34.2168 0 - endloop - endfacet - facet normal -0.832144 0.55456 0 - outer loop - vertex -26.0482 -35.1877 -0.2 - vertex -25.4011 -34.2168 0 - vertex -25.4011 -34.2168 -0.2 - endloop - endfacet - facet normal -0.832144 0.55456 0 - outer loop - vertex -25.4011 -34.2168 0 - vertex -26.0482 -35.1877 -0.2 - vertex -26.0482 -35.1877 0 - endloop - endfacet - facet normal -0.819486 0.573099 0 - outer loop - vertex -26.6839 -36.0968 -0.2 - vertex -26.0482 -35.1877 0 - vertex -26.0482 -35.1877 -0.2 - endloop - endfacet - facet normal -0.819486 0.573099 0 - outer loop - vertex -26.0482 -35.1877 0 - vertex -26.6839 -36.0968 -0.2 - vertex -26.6839 -36.0968 0 - endloop - endfacet - facet normal -0.801319 0.598238 0 - outer loop - vertex -27.2673 -36.8782 -0.2 - vertex -26.6839 -36.0968 0 - vertex -26.6839 -36.0968 -0.2 - endloop - endfacet - facet normal -0.801319 0.598238 0 - outer loop - vertex -26.6839 -36.0968 0 - vertex -27.2673 -36.8782 -0.2 - vertex -27.2673 -36.8782 0 + vertex -24.7956 -33.2498 0 + vertex -27.2791 -36.8782 -3 + vertex -27.2791 -36.8782 0 endloop endfacet facet normal -0.788011 0.615661 0 outer loop - vertex -28.2718 -38.1638 -0.2 - vertex -27.2673 -36.8782 0 - vertex -27.2673 -36.8782 -0.2 + vertex -28.2835 -38.1638 -3 + vertex -27.2791 -36.8782 0 + vertex -27.2791 -36.8782 -3 endloop endfacet facet normal -0.788011 0.615661 0 outer loop - vertex -27.2673 -36.8782 0 - vertex -28.2718 -38.1638 -0.2 - vertex -28.2718 -38.1638 0 + vertex -27.2791 -36.8782 0 + vertex -28.2835 -38.1638 -3 + vertex -28.2835 -38.1638 0 endloop endfacet - facet normal 0.00335501 0.999994 -0 + facet normal 0.0033546 0.999994 -0 outer loop - vertex -28.2718 -38.1638 -0.2 - vertex -37.6203 -38.1325 0 - vertex -28.2718 -38.1638 0 + vertex -28.2835 -38.1638 -3 + vertex -37.632 -38.1325 0 + vertex -28.2835 -38.1638 0 endloop endfacet - facet normal 0.00335501 0.999994 0 + facet normal 0.0033546 0.999994 0 outer loop - vertex -37.6203 -38.1325 0 - vertex -28.2718 -38.1638 -0.2 - vertex -37.6203 -38.1325 -0.2 + vertex -37.632 -38.1325 0 + vertex -28.2835 -38.1638 -3 + vertex -37.632 -38.1325 -3 endloop endfacet - facet normal 0.00646856 0.999979 -0 + facet normal 0.018075 0.999837 -0 outer loop - vertex -37.6203 -38.1325 -0.2 - vertex -41.2883 -38.1087 0 - vertex -37.6203 -38.1325 0 + vertex -37.632 -38.1325 -3 + vertex -47.4646 -37.9547 0 + vertex -37.632 -38.1325 0 endloop endfacet - facet normal 0.00646856 0.999979 0 + facet normal 0.018075 0.999837 0 outer loop - vertex -41.2883 -38.1087 0 - vertex -37.6203 -38.1325 -0.2 - vertex -41.2883 -38.1087 -0.2 + vertex -47.4646 -37.9547 0 + vertex -37.632 -38.1325 -3 + vertex -47.4646 -37.9547 -3 endloop endfacet - facet normal 0.013462 0.999909 -0 + facet normal 0.462743 0.886493 -0 outer loop - vertex -41.2883 -38.1087 -0.2 - vertex -44.3648 -38.0673 0 - vertex -41.2883 -38.1087 0 + vertex -47.4646 -37.9547 -3 + vertex -47.8161 -37.7712 0 + vertex -47.4646 -37.9547 0 endloop endfacet - facet normal 0.013462 0.999909 0 + facet normal 0.462743 0.886493 0 outer loop - vertex -44.3648 -38.0673 0 - vertex -41.2883 -38.1087 -0.2 - vertex -44.3648 -38.0673 -0.2 + vertex -47.8161 -37.7712 0 + vertex -47.4646 -37.9547 -3 + vertex -47.8161 -37.7712 -3 endloop endfacet - facet normal 0.0246353 0.999697 -0 + facet normal 0.836367 0.54817 0 outer loop - vertex -44.3648 -38.0673 -0.2 - vertex -46.5272 -38.014 0 - vertex -44.3648 -38.0673 0 + vertex -47.8161 -37.7712 0 + vertex -47.9875 -37.5097 -3 + vertex -47.9875 -37.5097 0 endloop endfacet - facet normal 0.0246353 0.999697 0 + facet normal 0.836367 0.54817 0 outer loop - vertex -46.5272 -38.014 0 - vertex -44.3648 -38.0673 -0.2 - vertex -46.5272 -38.014 -0.2 + vertex -47.9875 -37.5097 -3 + vertex -47.8161 -37.7712 0 + vertex -47.8161 -37.7712 -3 endloop endfacet - facet normal 0.0458604 0.998948 -0 + facet normal 0.980441 -0.196811 0 outer loop - vertex -46.5272 -38.014 -0.2 - vertex -47.1648 -37.9848 0 - vertex -46.5272 -38.014 0 + vertex -47.9875 -37.5097 0 + vertex -47.8577 -36.863 -3 + vertex -47.8577 -36.863 0 endloop endfacet - facet normal 0.0458604 0.998948 0 + facet normal 0.980441 -0.196811 0 outer loop - vertex -47.1648 -37.9848 0 - vertex -46.5272 -38.014 -0.2 - vertex -47.1648 -37.9848 -0.2 + vertex -47.8577 -36.863 -3 + vertex -47.9875 -37.5097 0 + vertex -47.9875 -37.5097 -3 endloop endfacet - facet normal 0.103752 0.994603 -0 + facet normal 0.695658 -0.718373 0 outer loop - vertex -47.1648 -37.9848 -0.2 - vertex -47.4529 -37.9547 0 - vertex -47.1648 -37.9848 0 + vertex -47.8577 -36.863 -3 + vertex -47.2102 -36.2359 0 + vertex -47.8577 -36.863 0 endloop endfacet - facet normal 0.103752 0.994603 0 + facet normal 0.695658 -0.718373 0 outer loop - vertex -47.4529 -37.9547 0 - vertex -47.1648 -37.9848 -0.2 - vertex -47.4529 -37.9547 -0.2 + vertex -47.2102 -36.2359 0 + vertex -47.8577 -36.863 -3 + vertex -47.2102 -36.2359 -3 endloop endfacet - facet normal 0.373487 0.927636 -0 + facet normal 0.350904 -0.936412 0 outer loop - vertex -47.4529 -37.9547 -0.2 - vertex -47.6522 -37.8745 0 - vertex -47.4529 -37.9547 0 + vertex -47.2102 -36.2359 -3 + vertex -46.1801 -35.8499 0 + vertex -47.2102 -36.2359 0 endloop endfacet - facet normal 0.373487 0.927636 0 + facet normal 0.350904 -0.936412 0 outer loop - vertex -47.6522 -37.8745 0 - vertex -47.4529 -37.9547 -0.2 - vertex -47.6522 -37.8745 -0.2 + vertex -46.1801 -35.8499 0 + vertex -47.2102 -36.2359 -3 + vertex -46.1801 -35.8499 -3 endloop endfacet - facet normal 0.561365 0.827568 -0 + facet normal 0.289535 -0.957168 0 outer loop - vertex -47.6522 -37.8745 -0.2 - vertex -47.8044 -37.7712 0 - vertex -47.6522 -37.8745 0 + vertex -46.1801 -35.8499 -3 + vertex -45.0296 -35.5019 0 + vertex -46.1801 -35.8499 0 endloop endfacet - facet normal 0.561365 0.827568 0 + facet normal 0.289535 -0.957168 0 outer loop - vertex -47.8044 -37.7712 0 - vertex -47.6522 -37.8745 -0.2 - vertex -47.8044 -37.7712 -0.2 + vertex -45.0296 -35.5019 0 + vertex -46.1801 -35.8499 -3 + vertex -45.0296 -35.5019 -3 endloop endfacet - facet normal 0.753293 0.657685 0 + facet normal 0.646662 -0.762777 0 outer loop - vertex -47.8044 -37.7712 0 - vertex -47.9115 -37.6485 -0.2 - vertex -47.9115 -37.6485 0 + vertex -45.0296 -35.5019 -3 + vertex -44.1198 -34.7306 0 + vertex -45.0296 -35.5019 0 endloop endfacet - facet normal 0.753293 0.657685 0 + facet normal 0.646662 -0.762777 0 outer loop - vertex -47.9115 -37.6485 -0.2 - vertex -47.8044 -37.7712 0 - vertex -47.8044 -37.7712 -0.2 + vertex -44.1198 -34.7306 0 + vertex -45.0296 -35.5019 -3 + vertex -44.1198 -34.7306 -3 endloop endfacet - facet normal 0.907474 0.420108 0 + facet normal 0.856952 -0.515395 0 outer loop - vertex -47.9115 -37.6485 0 - vertex -47.9758 -37.5097 -0.2 - vertex -47.9758 -37.5097 0 + vertex -44.1198 -34.7306 0 + vertex -43.2543 -33.2915 -3 + vertex -43.2543 -33.2915 0 endloop endfacet - facet normal 0.907474 0.420108 0 + facet normal 0.856952 -0.515395 0 outer loop - vertex -47.9758 -37.5097 -0.2 - vertex -47.9115 -37.6485 0 - vertex -47.9115 -37.6485 -0.2 + vertex -43.2543 -33.2915 -3 + vertex -44.1198 -34.7306 0 + vertex -44.1198 -34.7306 -3 endloop endfacet - facet normal 0.988205 0.153137 0 + facet normal 0.917761 -0.397133 0 outer loop - vertex -47.9758 -37.5097 0 - vertex -47.9993 -37.3583 -0.2 - vertex -47.9993 -37.3583 0 + vertex -43.2543 -33.2915 0 + vertex -42.237 -30.9405 -3 + vertex -42.237 -30.9405 0 endloop endfacet - facet normal 0.988205 0.153137 0 + facet normal 0.917761 -0.397133 0 outer loop - vertex -47.9993 -37.3583 -0.2 - vertex -47.9758 -37.5097 0 - vertex -47.9758 -37.5097 -0.2 + vertex -42.237 -30.9405 -3 + vertex -43.2543 -33.2915 0 + vertex -43.2543 -33.2915 -3 endloop endfacet - facet normal 0.995535 -0.0943972 0 + facet normal 0.919921 -0.392104 0 outer loop - vertex -47.9993 -37.3583 0 - vertex -47.984 -37.1977 -0.2 - vertex -47.984 -37.1977 0 + vertex -42.237 -30.9405 0 + vertex -39.9072 -25.4747 -3 + vertex -39.9072 -25.4747 0 endloop endfacet - facet normal 0.995535 -0.0943972 0 + facet normal 0.919921 -0.392104 0 outer loop - vertex -47.984 -37.1977 -0.2 - vertex -47.9993 -37.3583 0 - vertex -47.9993 -37.3583 -0.2 + vertex -39.9072 -25.4747 -3 + vertex -42.237 -30.9405 0 + vertex -42.237 -30.9405 -3 endloop endfacet - facet normal 0.954736 -0.297455 0 + facet normal 0.92143 -0.388544 0 outer loop - vertex -47.984 -37.1977 0 - vertex -47.9322 -37.0315 -0.2 - vertex -47.9322 -37.0315 0 + vertex -39.9072 -25.4747 0 + vertex -37.0548 -18.7102 -3 + vertex -37.0548 -18.7102 0 endloop endfacet - facet normal 0.954736 -0.297455 0 + facet normal 0.92143 -0.388544 0 outer loop - vertex -47.9322 -37.0315 -0.2 - vertex -47.984 -37.1977 0 - vertex -47.984 -37.1977 -0.2 + vertex -37.0548 -18.7102 -3 + vertex -39.9072 -25.4747 0 + vertex -39.9072 -25.4747 -3 endloop endfacet - facet normal 0.890101 -0.455763 0 + facet normal 0.937894 -0.346922 0 outer loop - vertex -47.9322 -37.0315 0 - vertex -47.846 -36.863 -0.2 - vertex -47.846 -36.863 0 + vertex -37.0548 -18.7102 0 + vertex -35.6081 -14.799 -3 + vertex -35.6081 -14.799 0 endloop endfacet - facet normal 0.890101 -0.455763 0 + facet normal 0.937894 -0.346922 0 outer loop - vertex -47.846 -36.863 -0.2 - vertex -47.9322 -37.0315 0 - vertex -47.9322 -37.0315 -0.2 + vertex -35.6081 -14.799 -3 + vertex -37.0548 -18.7102 0 + vertex -37.0548 -18.7102 -3 endloop endfacet - facet normal 0.815677 -0.578507 0 + facet normal 0.984127 -0.177463 0 outer loop - vertex -47.846 -36.863 0 - vertex -47.7274 -36.6957 -0.2 - vertex -47.7274 -36.6957 0 + vertex -35.6081 -14.799 0 + vertex -35.4871 -14.1281 -3 + vertex -35.4871 -14.1281 0 endloop endfacet - facet normal 0.815677 -0.578507 0 + facet normal 0.984127 -0.177463 0 outer loop - vertex -47.7274 -36.6957 -0.2 - vertex -47.846 -36.863 0 - vertex -47.846 -36.863 -0.2 + vertex -35.4871 -14.1281 -3 + vertex -35.6081 -14.799 0 + vertex -35.6081 -14.799 -3 endloop endfacet - facet normal 0.737497 -0.67535 0 + facet normal 0.978316 0.207116 0 outer loop - vertex -47.7274 -36.6957 0 - vertex -47.5785 -36.5332 -0.2 - vertex -47.5785 -36.5332 0 + vertex -35.4871 -14.1281 0 + vertex -35.5739 -13.718 -3 + vertex -35.5739 -13.718 0 endloop endfacet - facet normal 0.737497 -0.67535 0 + facet normal 0.978316 0.207116 0 outer loop - vertex -47.5785 -36.5332 -0.2 - vertex -47.7274 -36.6957 0 - vertex -47.7274 -36.6957 -0.2 + vertex -35.5739 -13.718 -3 + vertex -35.4871 -14.1281 0 + vertex -35.4871 -14.1281 -3 endloop endfacet - facet normal 0.65739 -0.753551 0 + facet normal 0.525627 0.850715 -0 outer loop - vertex -47.5785 -36.5332 -0.2 - vertex -47.4015 -36.3788 0 - vertex -47.5785 -36.5332 0 + vertex -35.5739 -13.718 -3 + vertex -35.9073 -13.512 0 + vertex -35.5739 -13.718 0 endloop endfacet - facet normal 0.65739 -0.753551 0 + facet normal 0.525627 0.850715 0 outer loop - vertex -47.4015 -36.3788 0 - vertex -47.5785 -36.5332 -0.2 - vertex -47.4015 -36.3788 -0.2 + vertex -35.9073 -13.512 0 + vertex -35.5739 -13.718 -3 + vertex -35.9073 -13.512 -3 endloop endfacet - facet normal 0.575341 -0.817914 0 + facet normal 0.0947129 0.995505 -0 outer loop - vertex -47.4015 -36.3788 -0.2 - vertex -47.1985 -36.2359 0 - vertex -47.4015 -36.3788 0 + vertex -35.9073 -13.512 -3 + vertex -36.5262 -13.4531 0 + vertex -35.9073 -13.512 0 endloop endfacet - facet normal 0.575341 -0.817914 0 + facet normal 0.0947129 0.995505 0 outer loop - vertex -47.1985 -36.2359 0 - vertex -47.4015 -36.3788 -0.2 - vertex -47.1985 -36.2359 -0.2 + vertex -36.5262 -13.4531 0 + vertex -35.9073 -13.512 -3 + vertex -36.5262 -13.4531 -3 endloop endfacet - facet normal 0.490533 -0.871423 0 + facet normal 0.264376 0.96442 -0 outer loop - vertex -47.1985 -36.2359 -0.2 - vertex -46.9715 -36.1082 0 - vertex -47.1985 -36.2359 0 + vertex -36.5262 -13.4531 -3 + vertex -37.2393 -13.2576 0 + vertex -36.5262 -13.4531 0 endloop endfacet - facet normal 0.490533 -0.871423 0 + facet normal 0.264376 0.96442 0 outer loop - vertex -46.9715 -36.1082 0 - vertex -47.1985 -36.2359 -0.2 - vertex -46.9715 -36.1082 -0.2 + vertex -37.2393 -13.2576 0 + vertex -36.5262 -13.4531 -3 + vertex -37.2393 -13.2576 -3 endloop endfacet - facet normal 0.402049 -0.915618 0 + facet normal 0.846268 0.532757 0 outer loop - vertex -46.9715 -36.1082 -0.2 - vertex -46.7228 -35.999 0 - vertex -46.9715 -36.1082 0 + vertex -37.2393 -13.2576 0 + vertex -37.5366 -12.7854 -3 + vertex -37.5366 -12.7854 0 endloop endfacet - facet normal 0.402049 -0.915618 0 + facet normal 0.846268 0.532757 0 outer loop - vertex -46.7228 -35.999 0 - vertex -46.9715 -36.1082 -0.2 - vertex -46.7228 -35.999 -0.2 + vertex -37.5366 -12.7854 -3 + vertex -37.2393 -13.2576 0 + vertex -37.2393 -13.2576 -3 endloop endfacet - facet normal 0.309107 -0.951027 0 + facet normal 0.972647 -0.232287 0 outer loop - vertex -46.7228 -35.999 -0.2 - vertex -46.4544 -35.9117 0 - vertex -46.7228 -35.999 0 + vertex -37.5366 -12.7854 0 + vertex -37.3951 -12.1929 -3 + vertex -37.3951 -12.1929 0 endloop endfacet - facet normal 0.309107 -0.951027 0 + facet normal 0.972647 -0.232287 0 outer loop - vertex -46.4544 -35.9117 0 - vertex -46.7228 -35.999 -0.2 - vertex -46.4544 -35.9117 -0.2 + vertex -37.3951 -12.1929 -3 + vertex -37.5366 -12.7854 0 + vertex -37.5366 -12.7854 -3 endloop endfacet - facet normal 0.211211 -0.977441 0 + facet normal 0.678121 -0.73495 0 outer loop - vertex -46.4544 -35.9117 -0.2 - vertex -46.1684 -35.8499 0 - vertex -46.4544 -35.9117 0 + vertex -37.3951 -12.1929 -3 + vertex -36.792 -11.6364 0 + vertex -37.3951 -12.1929 0 endloop endfacet - facet normal 0.211211 -0.977441 0 + facet normal 0.678121 -0.73495 0 outer loop - vertex -46.1684 -35.8499 0 - vertex -46.4544 -35.9117 -0.2 - vertex -46.1684 -35.8499 -0.2 + vertex -36.792 -11.6364 0 + vertex -37.3951 -12.1929 -3 + vertex -36.792 -11.6364 -3 endloop endfacet - facet normal 0.185786 -0.98259 0 + facet normal 0.33489 -0.942257 0 outer loop - vertex -46.1684 -35.8499 -0.2 - vertex -45.8475 -35.7893 0 - vertex -46.1684 -35.8499 0 + vertex -36.792 -11.6364 -3 + vertex -36.1936 -11.4238 0 + vertex -36.792 -11.6364 0 endloop endfacet - facet normal 0.185786 -0.98259 0 + facet normal 0.33489 -0.942257 0 outer loop - vertex -45.8475 -35.7893 0 - vertex -46.1684 -35.8499 -0.2 - vertex -45.8475 -35.7893 -0.2 + vertex -36.1936 -11.4238 0 + vertex -36.792 -11.6364 -3 + vertex -36.1936 -11.4238 -3 endloop endfacet - facet normal 0.247179 -0.96897 0 + facet normal 0.0784345 -0.996919 0 outer loop - vertex -45.8475 -35.7893 -0.2 - vertex -45.5508 -35.7136 0 - vertex -45.8475 -35.7893 0 + vertex -36.1936 -11.4238 -3 + vertex -34.87 -11.3196 0 + vertex -36.1936 -11.4238 0 endloop endfacet - facet normal 0.247179 -0.96897 0 + facet normal 0.0784345 -0.996919 0 outer loop - vertex -45.5508 -35.7136 0 - vertex -45.8475 -35.7893 -0.2 - vertex -45.5508 -35.7136 -0.2 + vertex -34.87 -11.3196 0 + vertex -36.1936 -11.4238 -3 + vertex -34.87 -11.3196 -3 endloop endfacet - facet normal 0.324475 -0.945894 0 + facet normal -0.00425069 -0.999991 0 outer loop - vertex -45.5508 -35.7136 -0.2 - vertex -45.2753 -35.6191 0 - vertex -45.5508 -35.7136 0 + vertex -34.87 -11.3196 -3 + vertex -27.1868 -11.3523 0 + vertex -34.87 -11.3196 0 endloop endfacet - facet normal 0.324475 -0.945894 0 + facet normal -0.00425069 -0.999991 -0 outer loop - vertex -45.2753 -35.6191 0 - vertex -45.5508 -35.7136 -0.2 - vertex -45.2753 -35.6191 -0.2 + vertex -27.1868 -11.3523 0 + vertex -34.87 -11.3196 -3 + vertex -27.1868 -11.3523 -3 endloop endfacet - facet normal 0.414245 -0.910165 0 + facet normal -0.778969 -0.627062 0 outer loop - vertex -45.2753 -35.6191 -0.2 - vertex -45.0179 -35.5019 0 - vertex -45.2753 -35.6191 0 + vertex -11.7016 -19.4898 -3 + vertex -11.9141 -19.2259 0 + vertex -11.9141 -19.2259 -3 endloop endfacet - facet normal 0.414245 -0.910165 0 + facet normal -0.778969 -0.627062 0 outer loop - vertex -45.0179 -35.5019 0 - vertex -45.2753 -35.6191 -0.2 - vertex -45.0179 -35.5019 -0.2 + vertex -11.9141 -19.2259 0 + vertex -11.7016 -19.4898 -3 + vertex -11.7016 -19.4898 0 endloop endfacet - facet normal 0.509766 -0.860313 0 + facet normal -0.998948 -0.0458637 0 outer loop - vertex -45.0179 -35.5019 -0.2 - vertex -44.7755 -35.3583 0 - vertex -45.0179 -35.5019 0 + vertex -11.6824 -19.9072 -3 + vertex -11.7016 -19.4898 0 + vertex -11.7016 -19.4898 -3 endloop endfacet - facet normal 0.509766 -0.860313 0 + facet normal -0.998948 -0.0458637 0 outer loop - vertex -44.7755 -35.3583 0 - vertex -45.0179 -35.5019 -0.2 - vertex -44.7755 -35.3583 -0.2 + vertex -11.7016 -19.4898 0 + vertex -11.6824 -19.9072 -3 + vertex -11.6824 -19.9072 0 endloop endfacet - facet normal 0.602421 -0.798179 0 + facet normal -0.950718 0.310058 0 outer loop - vertex -44.7755 -35.3583 -0.2 - vertex -44.5451 -35.1844 0 - vertex -44.7755 -35.3583 0 + vertex -11.8627 -20.4599 -3 + vertex -11.6824 -19.9072 0 + vertex -11.6824 -19.9072 -3 endloop endfacet - facet normal 0.602421 -0.798179 0 + facet normal -0.950718 0.310058 0 outer loop - vertex -44.5451 -35.1844 0 - vertex -44.7755 -35.3583 -0.2 - vertex -44.5451 -35.1844 -0.2 + vertex -11.6824 -19.9072 0 + vertex -11.8627 -20.4599 -3 + vertex -11.8627 -20.4599 0 endloop endfacet - facet normal 0.684546 -0.728969 0 + facet normal -0.958208 0.286074 0 outer loop - vertex -44.5451 -35.1844 -0.2 - vertex -44.3237 -34.9765 0 - vertex -44.5451 -35.1844 0 + vertex -12.0544 -21.102 -3 + vertex -11.8627 -20.4599 0 + vertex -11.8627 -20.4599 -3 endloop endfacet - facet normal 0.684546 -0.728969 0 + facet normal -0.958208 0.286074 0 outer loop - vertex -44.3237 -34.9765 0 - vertex -44.5451 -35.1844 -0.2 - vertex -44.3237 -34.9765 -0.2 + vertex -11.8627 -20.4599 0 + vertex -12.0544 -21.102 -3 + vertex -12.0544 -21.102 0 endloop endfacet - facet normal 0.751841 -0.659345 0 + facet normal 0.484491 -0.874796 0 outer loop - vertex -44.3237 -34.9765 0 - vertex -44.108 -34.7306 -0.2 - vertex -44.108 -34.7306 0 + vertex -12.0544 -21.102 -3 + vertex -10.3766 -20.1728 0 + vertex -12.0544 -21.102 0 endloop endfacet - facet normal 0.751841 -0.659345 0 + facet normal 0.484491 -0.874796 0 outer loop - vertex -44.108 -34.7306 -0.2 - vertex -44.3237 -34.9765 0 - vertex -44.3237 -34.9765 -0.2 + vertex -10.3766 -20.1728 0 + vertex -12.0544 -21.102 -3 + vertex -10.3766 -20.1728 -3 endloop endfacet - facet normal 0.803805 -0.594893 0 + facet normal 0.447022 -0.894523 0 outer loop - vertex -44.108 -34.7306 0 - vertex -43.8952 -34.443 -0.2 - vertex -43.8952 -34.443 0 + vertex -10.3766 -20.1728 -3 + vertex -8.78621 -19.378 0 + vertex -10.3766 -20.1728 0 endloop endfacet - facet normal 0.803805 -0.594893 0 + facet normal 0.447022 -0.894523 0 outer loop - vertex -43.8952 -34.443 -0.2 - vertex -44.108 -34.7306 0 - vertex -44.108 -34.7306 -0.2 + vertex -8.78621 -19.378 0 + vertex -10.3766 -20.1728 -3 + vertex -8.78621 -19.378 -3 endloop endfacet - facet normal 0.842352 -0.538928 0 + facet normal 0.124012 -0.992281 0 outer loop - vertex -43.8952 -34.443 0 - vertex -43.682 -34.1098 -0.2 - vertex -43.682 -34.1098 0 + vertex -8.78621 -19.378 -3 + vertex -7.1272 -19.1706 0 + vertex -8.78621 -19.378 0 endloop endfacet - facet normal 0.842352 -0.538928 0 + facet normal 0.124012 -0.992281 0 outer loop - vertex -43.682 -34.1098 -0.2 - vertex -43.8952 -34.443 0 - vertex -43.8952 -34.443 -0.2 + vertex -7.1272 -19.1706 0 + vertex -8.78621 -19.378 -3 + vertex -7.1272 -19.1706 -3 endloop endfacet - facet normal 0.870266 -0.492581 0 + facet normal -0.019656 -0.999807 0 outer loop - vertex -43.682 -34.1098 0 - vertex -43.4655 -33.7273 -0.2 - vertex -43.4655 -33.7273 0 + vertex -7.1272 -19.1706 -3 + vertex -5.57075 -19.2012 0 + vertex -7.1272 -19.1706 0 endloop endfacet - facet normal 0.870266 -0.492581 0 + facet normal -0.019656 -0.999807 -0 outer loop - vertex -43.4655 -33.7273 -0.2 - vertex -43.682 -34.1098 0 - vertex -43.682 -34.1098 -0.2 + vertex -5.57075 -19.2012 0 + vertex -7.1272 -19.1706 -3 + vertex -5.57075 -19.2012 -3 endloop endfacet - facet normal 0.890236 -0.4555 0 + facet normal -0.587249 -0.809407 0 outer loop - vertex -43.4655 -33.7273 0 - vertex -43.2426 -33.2915 -0.2 - vertex -43.2426 -33.2915 0 + vertex -5.57075 -19.2012 -3 + vertex -4.70045 -19.8327 0 + vertex -5.57075 -19.2012 0 endloop endfacet - facet normal 0.890236 -0.4555 0 + facet normal -0.587249 -0.809407 -0 outer loop - vertex -43.2426 -33.2915 -0.2 - vertex -43.4655 -33.7273 0 - vertex -43.4655 -33.7273 -0.2 + vertex -4.70045 -19.8327 0 + vertex -5.57075 -19.2012 -3 + vertex -4.70045 -19.8327 -3 endloop endfacet - facet normal 0.909757 -0.41514 0 + facet normal -0.783181 -0.621793 0 outer loop - vertex -43.2426 -33.2915 0 - vertex -42.7651 -32.2453 -0.2 - vertex -42.7651 -32.2453 0 + vertex -4.06681 -20.6308 -3 + vertex -4.70045 -19.8327 0 + vertex -4.70045 -19.8327 -3 endloop endfacet - facet normal 0.909757 -0.41514 0 + facet normal -0.783181 -0.621793 0 outer loop - vertex -42.7651 -32.2453 -0.2 - vertex -43.2426 -33.2915 0 - vertex -43.2426 -33.2915 -0.2 + vertex -4.70045 -19.8327 0 + vertex -4.06681 -20.6308 -3 + vertex -4.06681 -20.6308 0 endloop endfacet - facet normal 0.924016 -0.382355 0 + facet normal -0.979543 -0.201235 0 outer loop - vertex -42.7651 -32.2453 0 - vertex -42.2252 -30.9405 -0.2 - vertex -42.2252 -30.9405 0 + vertex -3.85646 -21.6547 -3 + vertex -4.06681 -20.6308 0 + vertex -4.06681 -20.6308 -3 endloop endfacet - facet normal 0.924016 -0.382355 0 + facet normal -0.979543 -0.201235 0 outer loop - vertex -42.2252 -30.9405 -0.2 - vertex -42.7651 -32.2453 0 - vertex -42.7651 -32.2453 -0.2 + vertex -4.06681 -20.6308 0 + vertex -3.85646 -21.6547 -3 + vertex -3.85646 -21.6547 0 endloop endfacet - facet normal 0.922377 -0.38629 0 + facet normal -0.999487 0.0320236 0 outer loop - vertex -42.2252 -30.9405 0 - vertex -41.2695 -28.6585 -0.2 - vertex -41.2695 -28.6585 0 + vertex -3.89417 -22.8317 -3 + vertex -3.85646 -21.6547 0 + vertex -3.85646 -21.6547 -3 endloop endfacet - facet normal 0.922377 -0.38629 0 + facet normal -0.999487 0.0320236 0 outer loop - vertex -41.2695 -28.6585 -0.2 - vertex -42.2252 -30.9405 0 - vertex -42.2252 -30.9405 -0.2 + vertex -3.85646 -21.6547 0 + vertex -3.89417 -22.8317 -3 + vertex -3.89417 -22.8317 0 endloop endfacet - facet normal 0.918146 -0.396243 0 + facet normal -0.971741 0.236051 0 outer loop - vertex -41.2695 -28.6585 0 - vertex -39.8955 -25.4747 -0.2 - vertex -39.8955 -25.4747 0 + vertex -4.26405 -24.3543 -3 + vertex -3.89417 -22.8317 0 + vertex -3.89417 -22.8317 -3 endloop endfacet - facet normal 0.918146 -0.396243 0 + facet normal -0.971741 0.236051 0 outer loop - vertex -39.8955 -25.4747 -0.2 - vertex -41.2695 -28.6585 0 - vertex -41.2695 -28.6585 -0.2 + vertex -3.89417 -22.8317 0 + vertex -4.26405 -24.3543 -3 + vertex -4.26405 -24.3543 0 endloop endfacet - facet normal 0.918872 -0.394555 0 + facet normal -0.928824 0.370521 0 outer loop - vertex -39.8955 -25.4747 0 - vertex -38.3469 -21.8682 -0.2 - vertex -38.3469 -21.8682 0 + vertex -6.41168 -29.738 -3 + vertex -4.26405 -24.3543 0 + vertex -4.26405 -24.3543 -3 endloop endfacet - facet normal 0.918872 -0.394555 0 + facet normal -0.928824 0.370521 0 outer loop - vertex -38.3469 -21.8682 -0.2 - vertex -39.8955 -25.4747 0 - vertex -39.8955 -25.4747 -0.2 + vertex -4.26405 -24.3543 0 + vertex -6.41168 -29.738 -3 + vertex -6.41168 -29.738 0 endloop endfacet - facet normal 0.92432 -0.381618 0 + facet normal -0.923854 0.382746 0 outer loop - vertex -38.3469 -21.8682 0 - vertex -37.0431 -18.7102 -0.2 - vertex -37.0431 -18.7102 0 + vertex -8.33648 -34.384 -3 + vertex -6.41168 -29.738 0 + vertex -6.41168 -29.738 -3 endloop endfacet - facet normal 0.92432 -0.381618 0 + facet normal -0.923854 0.382746 0 outer loop - vertex -37.0431 -18.7102 -0.2 - vertex -38.3469 -21.8682 0 - vertex -38.3469 -21.8682 -0.2 + vertex -6.41168 -29.738 0 + vertex -8.33648 -34.384 -3 + vertex -8.33648 -34.384 0 endloop endfacet - facet normal 0.929541 -0.368719 0 + facet normal -0.969782 0.243973 0 outer loop - vertex -37.0431 -18.7102 0 - vertex -36.5163 -17.3821 -0.2 - vertex -36.5163 -17.3821 0 + vertex -8.56822 -35.3052 -3 + vertex -8.33648 -34.384 0 + vertex -8.33648 -34.384 -3 endloop endfacet - facet normal 0.929541 -0.368719 0 + facet normal -0.969782 0.243973 0 outer loop - vertex -36.5163 -17.3821 -0.2 - vertex -37.0431 -18.7102 0 - vertex -37.0431 -18.7102 -0.2 + vertex -8.33648 -34.384 0 + vertex -8.56822 -35.3052 -3 + vertex -8.56822 -35.3052 0 endloop endfacet - facet normal 0.934424 -0.356162 0 + facet normal -0.990389 -0.138307 0 outer loop - vertex -36.5163 -17.3821 0 - vertex -36.0907 -16.2655 -0.2 - vertex -36.0907 -16.2655 0 + vertex -8.51129 -35.7129 -3 + vertex -8.56822 -35.3052 0 + vertex -8.56822 -35.3052 -3 endloop endfacet - facet normal 0.934424 -0.356162 0 + facet normal -0.990389 -0.138307 0 outer loop - vertex -36.0907 -16.2655 -0.2 - vertex -36.5163 -17.3821 0 - vertex -36.5163 -17.3821 -0.2 + vertex -8.56822 -35.3052 0 + vertex -8.51129 -35.7129 -3 + vertex -8.51129 -35.7129 0 endloop endfacet - facet normal 0.941869 -0.335981 0 + facet normal -0.550548 -0.834803 0 outer loop - vertex -36.0907 -16.2655 0 - vertex -35.7796 -15.3934 -0.2 - vertex -35.7796 -15.3934 0 + vertex -8.51129 -35.7129 -3 + vertex -7.98605 -36.0592 0 + vertex -8.51129 -35.7129 0 endloop endfacet - facet normal 0.941869 -0.335981 0 + facet normal -0.550548 -0.834803 -0 outer loop - vertex -35.7796 -15.3934 -0.2 - vertex -36.0907 -16.2655 0 - vertex -36.0907 -16.2655 -0.2 + vertex -7.98605 -36.0592 0 + vertex -8.51129 -35.7129 -3 + vertex -7.98605 -36.0592 -3 endloop endfacet - facet normal 0.955627 -0.294578 0 + facet normal -0.557022 -0.830498 0 outer loop - vertex -35.7796 -15.3934 0 - vertex -35.5964 -14.799 -0.2 - vertex -35.5964 -14.799 0 + vertex -7.98605 -36.0592 -3 + vertex -7.51249 -36.3769 0 + vertex -7.98605 -36.0592 0 endloop endfacet - facet normal 0.955627 -0.294578 0 + facet normal -0.557022 -0.830498 -0 outer loop - vertex -35.5964 -14.799 -0.2 - vertex -35.7796 -15.3934 0 - vertex -35.7796 -15.3934 -0.2 + vertex -7.51249 -36.3769 0 + vertex -7.98605 -36.0592 -3 + vertex -7.51249 -36.3769 -3 endloop endfacet - facet normal 0.97537 -0.220574 0 + facet normal -0.885076 -0.465446 0 outer loop - vertex -35.5964 -14.799 0 - vertex -35.5123 -14.4274 -0.2 - vertex -35.5123 -14.4274 0 + vertex -7.31439 -36.7536 -3 + vertex -7.51249 -36.3769 0 + vertex -7.51249 -36.3769 -3 endloop endfacet - facet normal 0.97537 -0.220574 0 + facet normal -0.885076 -0.465446 0 outer loop - vertex -35.5123 -14.4274 -0.2 - vertex -35.5964 -14.799 0 - vertex -35.5964 -14.799 -0.2 + vertex -7.51249 -36.3769 0 + vertex -7.31439 -36.7536 -3 + vertex -7.31439 -36.7536 0 endloop endfacet - facet normal 0.992467 -0.122514 0 + facet normal -0.984477 0.175514 0 outer loop - vertex -35.5123 -14.4274 0 - vertex -35.4754 -14.1281 -0.2 - vertex -35.4754 -14.1281 0 + vertex -7.3919 -37.1883 -3 + vertex -7.31439 -36.7536 0 + vertex -7.31439 -36.7536 -3 endloop endfacet - facet normal 0.992467 -0.122514 0 + facet normal -0.984477 0.175514 0 outer loop - vertex -35.4754 -14.1281 -0.2 - vertex -35.5123 -14.4274 0 - vertex -35.5123 -14.4274 -0.2 + vertex -7.31439 -36.7536 0 + vertex -7.3919 -37.1883 -3 + vertex -7.3919 -37.1883 0 endloop endfacet - facet normal 0.997952 0.0639612 0 + facet normal -0.812154 0.583443 0 outer loop - vertex -35.4754 -14.1281 0 - vertex -35.4904 -13.894 -0.2 - vertex -35.4904 -13.894 0 + vertex -7.74517 -37.6801 -3 + vertex -7.3919 -37.1883 0 + vertex -7.3919 -37.1883 -3 endloop endfacet - facet normal 0.997952 0.0639612 0 + facet normal -0.812154 0.583443 0 outer loop - vertex -35.4904 -13.894 -0.2 - vertex -35.4754 -14.1281 0 - vertex -35.4754 -14.1281 -0.2 + vertex -7.3919 -37.1883 0 + vertex -7.74517 -37.6801 -3 + vertex -7.74517 -37.6801 0 endloop endfacet - facet normal 0.957653 0.287925 0 + facet normal -0.622963 0.782251 0 outer loop - vertex -35.4904 -13.894 0 - vertex -35.5189 -13.7992 -0.2 - vertex -35.5189 -13.7992 0 + vertex -7.74517 -37.6801 -3 + vertex -8.07933 -37.9462 0 + vertex -7.74517 -37.6801 0 endloop endfacet - facet normal 0.957653 0.287925 0 + facet normal -0.622963 0.782251 0 outer loop - vertex -35.5189 -13.7992 -0.2 - vertex -35.4904 -13.894 0 - vertex -35.4904 -13.894 -0.2 + vertex -8.07933 -37.9462 0 + vertex -7.74517 -37.6801 -3 + vertex -8.07933 -37.9462 -3 endloop endfacet - facet normal 0.882255 0.470771 0 + facet normal -0.234375 0.972146 0 outer loop - vertex -35.5189 -13.7992 0 - vertex -35.5622 -13.718 -0.2 - vertex -35.5622 -13.718 0 + vertex -8.07933 -37.9462 -3 + vertex -8.66873 -38.0883 0 + vertex -8.07933 -37.9462 0 endloop endfacet - facet normal 0.882255 0.470771 0 + facet normal -0.234375 0.972146 0 outer loop - vertex -35.5622 -13.718 -0.2 - vertex -35.5189 -13.7992 0 - vertex -35.5189 -13.7992 -0.2 + vertex -8.66873 -38.0883 0 + vertex -8.07933 -37.9462 -3 + vertex -8.66873 -38.0883 -3 endloop endfacet - facet normal 0.758808 0.651314 0 + facet normal -0.02015 0.999797 0 outer loop - vertex -35.5622 -13.718 0 - vertex -35.6209 -13.6496 -0.2 - vertex -35.6209 -13.6496 0 + vertex -8.66873 -38.0883 -3 + vertex -12.0013 -38.1555 0 + vertex -8.66873 -38.0883 0 endloop endfacet - facet normal 0.758808 0.651314 0 + facet normal -0.02015 0.999797 0 outer loop - vertex -35.6209 -13.6496 -0.2 - vertex -35.5622 -13.718 0 - vertex -35.5622 -13.718 -0.2 + vertex -12.0013 -38.1555 0 + vertex -8.66873 -38.0883 -3 + vertex -12.0013 -38.1555 -3 endloop endfacet - facet normal 0.603335 0.797487 -0 + facet normal 0.0188466 0.999822 -0 outer loop - vertex -35.6209 -13.6496 -0.2 - vertex -35.6956 -13.593 0 - vertex -35.6209 -13.6496 0 + vertex -12.0013 -38.1555 -3 + vertex -15.3277 -38.0928 0 + vertex -12.0013 -38.1555 0 endloop endfacet - facet normal 0.603335 0.797487 0 + facet normal 0.0188466 0.999822 0 outer loop - vertex -35.6956 -13.593 0 - vertex -35.6209 -13.6496 -0.2 - vertex -35.6956 -13.593 -0.2 + vertex -15.3277 -38.0928 0 + vertex -12.0013 -38.1555 -3 + vertex -15.3277 -38.0928 -3 endloop endfacet - facet normal 0.375678 0.92675 -0 + facet normal 0.289952 0.957041 -0 outer loop - vertex -35.6956 -13.593 -0.2 - vertex -35.8956 -13.512 0 - vertex -35.6956 -13.593 0 + vertex -15.3277 -38.0928 -3 + vertex -15.7983 -37.9502 0 + vertex -15.3277 -38.0928 0 endloop endfacet - facet normal 0.375678 0.92675 0 + facet normal 0.289952 0.957041 0 outer loop - vertex -35.8956 -13.512 0 - vertex -35.6956 -13.593 -0.2 - vertex -35.8956 -13.512 -0.2 + vertex -15.7983 -37.9502 0 + vertex -15.3277 -38.0928 -3 + vertex -15.7983 -37.9502 -3 endloop endfacet - facet normal 0.161053 0.986946 -0 + facet normal 0.88368 0.468092 0 outer loop - vertex -35.8956 -13.512 -0.2 - vertex -36.1669 -13.4677 0 - vertex -35.8956 -13.512 0 + vertex -15.7983 -37.9502 0 + vertex -15.9433 -37.6764 -3 + vertex -15.9433 -37.6764 0 endloop endfacet - facet normal 0.161053 0.986946 0 + facet normal 0.88368 0.468092 0 outer loop - vertex -36.1669 -13.4677 0 - vertex -35.8956 -13.512 -0.2 - vertex -36.1669 -13.4677 -0.2 + vertex -15.9433 -37.6764 -3 + vertex -15.7983 -37.9502 0 + vertex -15.7983 -37.9502 -3 endloop endfacet - facet normal 0.0419804 0.999118 -0 + facet normal 0.999065 -0.0432335 0 outer loop - vertex -36.1669 -13.4677 -0.2 - vertex -36.5145 -13.4531 0 - vertex -36.1669 -13.4677 0 + vertex -15.9433 -37.6764 0 + vertex -15.9213 -37.1689 -3 + vertex -15.9213 -37.1689 0 endloop endfacet - facet normal 0.0419804 0.999118 0 + facet normal 0.999065 -0.0432335 0 outer loop - vertex -36.5145 -13.4531 0 - vertex -36.1669 -13.4677 -0.2 - vertex -36.5145 -13.4531 -0.2 + vertex -15.9213 -37.1689 -3 + vertex -15.9433 -37.6764 0 + vertex -15.9433 -37.6764 -3 endloop endfacet - facet normal 0.0664354 0.997791 -0 + facet normal 0.790901 -0.611944 0 outer loop - vertex -36.5145 -13.4531 -0.2 - vertex -36.7305 -13.4387 0 - vertex -36.5145 -13.4531 0 + vertex -15.9213 -37.1689 0 + vertex -15.4682 -36.5832 -3 + vertex -15.4682 -36.5832 0 endloop endfacet - facet normal 0.0664354 0.997791 0 + facet normal 0.790901 -0.611944 0 outer loop - vertex -36.7305 -13.4387 0 - vertex -36.5145 -13.4531 -0.2 - vertex -36.7305 -13.4387 -0.2 + vertex -15.4682 -36.5832 -3 + vertex -15.9213 -37.1689 0 + vertex -15.9213 -37.1689 -3 endloop endfacet - facet normal 0.199985 0.979799 -0 + facet normal 0.603331 -0.797491 0 outer loop - vertex -36.7305 -13.4387 -0.2 - vertex -36.9216 -13.3997 0 - vertex -36.7305 -13.4387 0 + vertex -15.4682 -36.5832 -3 + vertex -14.8949 -36.1495 0 + vertex -15.4682 -36.5832 0 endloop endfacet - facet normal 0.199985 0.979799 0 + facet normal 0.603331 -0.797491 0 outer loop - vertex -36.9216 -13.3997 0 - vertex -36.7305 -13.4387 -0.2 - vertex -36.9216 -13.3997 -0.2 + vertex -14.8949 -36.1495 0 + vertex -15.4682 -36.5832 -3 + vertex -14.8949 -36.1495 -3 endloop endfacet - facet normal 0.346161 0.938175 -0 + facet normal 0.32682 -0.945087 0 outer loop - vertex -36.9216 -13.3997 -0.2 - vertex -37.0874 -13.3385 0 - vertex -36.9216 -13.3997 0 + vertex -14.8949 -36.1495 -3 + vertex -14.3732 -35.9691 0 + vertex -14.8949 -36.1495 0 endloop endfacet - facet normal 0.346161 0.938175 0 + facet normal 0.32682 -0.945087 0 outer loop - vertex -37.0874 -13.3385 0 - vertex -36.9216 -13.3997 -0.2 - vertex -37.0874 -13.3385 -0.2 + vertex -14.3732 -35.9691 0 + vertex -14.8949 -36.1495 -3 + vertex -14.3732 -35.9691 -3 endloop endfacet - facet normal 0.49992 0.866072 -0 + facet normal 0.336732 -0.941601 0 outer loop - vertex -37.0874 -13.3385 -0.2 - vertex -37.2276 -13.2576 0 - vertex -37.0874 -13.3385 0 + vertex -14.3732 -35.9691 -3 + vertex -13.7203 -35.7356 0 + vertex -14.3732 -35.9691 0 endloop endfacet - facet normal 0.49992 0.866072 0 + facet normal 0.336732 -0.941601 0 outer loop - vertex -37.2276 -13.2576 0 - vertex -37.0874 -13.3385 -0.2 - vertex -37.2276 -13.2576 -0.2 + vertex -13.7203 -35.7356 0 + vertex -14.3732 -35.9691 -3 + vertex -13.7203 -35.7356 -3 endloop endfacet - facet normal 0.652051 0.758175 -0 + facet normal 0.723518 -0.690305 0 outer loop - vertex -37.2276 -13.2576 -0.2 - vertex -37.3418 -13.1594 0 - vertex -37.2276 -13.2576 0 + vertex -13.7203 -35.7356 0 + vertex -13.0448 -35.0276 -3 + vertex -13.0448 -35.0276 0 endloop endfacet - facet normal 0.652051 0.758175 0 + facet normal 0.723518 -0.690305 0 outer loop - vertex -37.3418 -13.1594 0 - vertex -37.2276 -13.2576 -0.2 - vertex -37.3418 -13.1594 -0.2 + vertex -13.0448 -35.0276 -3 + vertex -13.7203 -35.7356 0 + vertex -13.7203 -35.7356 -3 endloop endfacet - facet normal 0.789664 0.613539 0 + facet normal 0.860653 -0.509193 0 outer loop - vertex -37.3418 -13.1594 0 - vertex -37.4296 -13.0463 -0.2 - vertex -37.4296 -13.0463 0 + vertex -13.0448 -35.0276 0 + vertex -12.3385 -33.8339 -3 + vertex -12.3385 -33.8339 0 endloop endfacet - facet normal 0.789664 0.613539 0 + facet normal 0.860653 -0.509193 0 outer loop - vertex -37.4296 -13.0463 -0.2 - vertex -37.3418 -13.1594 0 - vertex -37.3418 -13.1594 -0.2 + vertex -12.3385 -33.8339 -3 + vertex -13.0448 -35.0276 0 + vertex -13.0448 -35.0276 -3 endloop endfacet - facet normal 0.898957 0.438037 0 + facet normal 0.915054 -0.403331 0 outer loop - vertex -37.4296 -13.0463 0 - vertex -37.4908 -12.9209 -0.2 - vertex -37.4908 -12.9209 0 + vertex -12.3385 -33.8339 0 + vertex -11.5932 -32.143 -3 + vertex -11.5932 -32.143 0 endloop endfacet - facet normal 0.898957 0.438037 0 + facet normal 0.915054 -0.403331 0 outer loop - vertex -37.4908 -12.9209 -0.2 - vertex -37.4296 -13.0463 0 - vertex -37.4296 -13.0463 -0.2 - endloop - endfacet - facet normal 0.969773 0.244009 0 - outer loop - vertex -37.4908 -12.9209 0 - vertex -37.5249 -12.7854 -0.2 - vertex -37.5249 -12.7854 0 - endloop - endfacet - facet normal 0.969773 0.244009 0 - outer loop - vertex -37.5249 -12.7854 -0.2 - vertex -37.4908 -12.9209 0 - vertex -37.4908 -12.9209 -0.2 - endloop - endfacet - facet normal 0.99892 0.0464614 0 - outer loop - vertex -37.5249 -12.7854 0 - vertex -37.5315 -12.6425 -0.2 - vertex -37.5315 -12.6425 0 - endloop - endfacet - facet normal 0.99892 0.0464614 0 - outer loop - vertex -37.5315 -12.6425 -0.2 - vertex -37.5249 -12.7854 0 - vertex -37.5249 -12.7854 -0.2 - endloop - endfacet - facet normal 0.989966 -0.141306 0 - outer loop - vertex -37.5315 -12.6425 0 - vertex -37.5104 -12.4945 -0.2 - vertex -37.5104 -12.4945 0 - endloop - endfacet - facet normal 0.989966 -0.141306 0 - outer loop - vertex -37.5104 -12.4945 -0.2 - vertex -37.5315 -12.6425 0 - vertex -37.5315 -12.6425 -0.2 - endloop - endfacet - facet normal 0.950483 -0.310777 0 - outer loop - vertex -37.5104 -12.4945 0 - vertex -37.4611 -12.3438 -0.2 - vertex -37.4611 -12.3438 0 - endloop - endfacet - facet normal 0.950483 -0.310777 0 - outer loop - vertex -37.4611 -12.3438 -0.2 - vertex -37.5104 -12.4945 0 - vertex -37.5104 -12.4945 -0.2 - endloop - endfacet - facet normal 0.888869 -0.458162 0 - outer loop - vertex -37.4611 -12.3438 0 - vertex -37.3834 -12.1929 -0.2 - vertex -37.3834 -12.1929 0 - endloop - endfacet - facet normal 0.888869 -0.458162 0 - outer loop - vertex -37.3834 -12.1929 -0.2 - vertex -37.4611 -12.3438 0 - vertex -37.4611 -12.3438 -0.2 - endloop - endfacet - facet normal 0.812527 -0.582923 0 - outer loop - vertex -37.3834 -12.1929 0 - vertex -37.2767 -12.0443 -0.2 - vertex -37.2767 -12.0443 0 - endloop - endfacet - facet normal 0.812527 -0.582923 0 - outer loop - vertex -37.2767 -12.0443 -0.2 - vertex -37.3834 -12.1929 0 - vertex -37.3834 -12.1929 -0.2 - endloop - endfacet - facet normal 0.727267 -0.686355 0 - outer loop - vertex -37.2767 -12.0443 0 - vertex -37.1409 -11.9004 -0.2 - vertex -37.1409 -11.9004 0 - endloop - endfacet - facet normal 0.727267 -0.686355 0 - outer loop - vertex -37.1409 -11.9004 -0.2 - vertex -37.2767 -12.0443 0 - vertex -37.2767 -12.0443 -0.2 - endloop - endfacet - facet normal 0.637301 -0.770615 0 - outer loop - vertex -37.1409 -11.9004 -0.2 - vertex -36.9755 -11.7636 0 - vertex -37.1409 -11.9004 0 - endloop - endfacet - facet normal 0.637301 -0.770615 0 - outer loop - vertex -36.9755 -11.7636 0 - vertex -37.1409 -11.9004 -0.2 - vertex -36.9755 -11.7636 -0.2 - endloop - endfacet - facet normal 0.545722 -0.837967 0 - outer loop - vertex -36.9755 -11.7636 -0.2 - vertex -36.7802 -11.6364 0 - vertex -36.9755 -11.7636 0 - endloop - endfacet - facet normal 0.545722 -0.837967 0 - outer loop - vertex -36.7802 -11.6364 0 - vertex -36.9755 -11.7636 -0.2 - vertex -36.7802 -11.6364 -0.2 - endloop - endfacet - facet normal 0.431805 -0.901967 0 - outer loop - vertex -36.7802 -11.6364 -0.2 - vertex -36.527 -11.5152 0 - vertex -36.7802 -11.6364 0 - endloop - endfacet - facet normal 0.431805 -0.901967 0 - outer loop - vertex -36.527 -11.5152 0 - vertex -36.7802 -11.6364 -0.2 - vertex -36.527 -11.5152 -0.2 - endloop - endfacet - facet normal 0.256105 -0.966649 0 - outer loop - vertex -36.527 -11.5152 -0.2 - vertex -36.1819 -11.4238 0 - vertex -36.527 -11.5152 0 - endloop - endfacet - facet normal 0.256105 -0.966649 0 - outer loop - vertex -36.1819 -11.4238 0 - vertex -36.527 -11.5152 -0.2 - vertex -36.1819 -11.4238 -0.2 - endloop - endfacet - facet normal 0.121259 -0.992621 0 - outer loop - vertex -36.1819 -11.4238 -0.2 - vertex -35.6555 -11.3595 0 - vertex -36.1819 -11.4238 0 - endloop - endfacet - facet normal 0.121259 -0.992621 0 - outer loop - vertex -35.6555 -11.3595 0 - vertex -36.1819 -11.4238 -0.2 - vertex -35.6555 -11.3595 -0.2 - endloop - endfacet - facet normal 0.0498988 -0.998754 0 - outer loop - vertex -35.6555 -11.3595 -0.2 - vertex -34.8583 -11.3197 0 - vertex -35.6555 -11.3595 0 - endloop - endfacet - facet normal 0.0498988 -0.998754 0 - outer loop - vertex -34.8583 -11.3197 0 - vertex -35.6555 -11.3595 -0.2 - vertex -34.8583 -11.3197 -0.2 - endloop - endfacet - facet normal 0.0155398 -0.999879 0 - outer loop - vertex -34.8583 -11.3197 -0.2 - vertex -33.7011 -11.3017 0 - vertex -34.8583 -11.3197 0 - endloop - endfacet - facet normal 0.0155398 -0.999879 0 - outer loop - vertex -33.7011 -11.3017 0 - vertex -34.8583 -11.3197 -0.2 - vertex -33.7011 -11.3017 -0.2 - endloop - endfacet - facet normal -0.000753226 -1 0 - outer loop - vertex -33.7011 -11.3017 -0.2 - vertex -32.0944 -11.3029 0 - vertex -33.7011 -11.3017 0 - endloop - endfacet - facet normal -0.000753226 -1 -0 - outer loop - vertex -32.0944 -11.3029 0 - vertex -33.7011 -11.3017 -0.2 - vertex -32.0944 -11.3029 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.0792 -19.1571 -0.2 - vertex -11.6557 -19.6804 -0.2 - vertex -11.6899 -19.4898 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.302 -19.1333 -0.2 - vertex -11.6557 -19.6804 -0.2 - vertex -12.0792 -19.1571 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.9023 -19.2259 -0.2 - vertex -11.6899 -19.4898 -0.2 - vertex -11.7723 -19.3375 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.6557 -19.6804 -0.2 - vertex -12.302 -19.1333 -0.2 - vertex -11.6707 -19.9072 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.6899 -19.4898 -0.2 - vertex -11.9023 -19.2259 -0.2 - vertex -12.0792 -19.1571 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -12.6849 -19.1929 -0.2 - vertex -11.6707 -19.9072 -0.2 - vertex -12.302 -19.1333 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.7355 -20.1677 -0.2 - vertex -12.6849 -19.1929 -0.2 - vertex -11.851 -20.4599 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.6707 -19.9072 -0.2 - vertex -12.6849 -19.1929 -0.2 - vertex -11.7355 -20.1677 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.01943 -23.5295 -0.2 - vertex -8.48242 -23.1923 -0.2 - vertex -8.45645 -23.4267 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.06691 -19.2358 -0.2 - vertex -8.54451 -22.9989 -0.2 - vertex -8.48242 -23.1923 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.06691 -19.2358 -0.2 - vertex -8.64279 -22.8439 -0.2 - vertex -8.54451 -22.9989 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.94827 -22.6394 -0.2 - vertex -8.43701 -19.2929 -0.2 - vertex -8.77447 -19.378 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.06691 -19.2358 -0.2 - vertex -8.77736 -22.7249 -0.2 - vertex -8.64279 -22.8439 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.43701 -19.2929 -0.2 - vertex -8.94827 -22.6394 -0.2 - vertex -8.77736 -22.7249 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -9.10766 -19.4997 -0.2 - vertex -8.94827 -22.6394 -0.2 - vertex -8.77447 -19.378 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -9.46489 -19.667 -0.2 - vertex -8.94827 -22.6394 -0.2 - vertex -9.10766 -19.4997 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.94827 -22.6394 -0.2 - vertex -9.46489 -19.667 -0.2 - vertex -9.15561 -22.5851 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -9.87453 -19.8884 -0.2 - vertex -9.15561 -22.5851 -0.2 - vertex -9.46489 -19.667 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.15561 -22.5851 -0.2 - vertex -9.87453 -19.8884 -0.2 - vertex -9.39946 -22.5595 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -10.3649 -20.1728 -0.2 - vertex -9.39946 -22.5595 -0.2 - vertex -9.87453 -19.8884 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.39946 -22.5595 -0.2 - vertex -10.3649 -20.1728 -0.2 - vertex -9.67988 -22.56 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.67988 -22.56 -0.2 - vertex -10.3649 -20.1728 -0.2 - vertex -10.0796 -22.6123 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.5073 -20.829 -0.2 - vertex -10.0796 -22.6123 -0.2 - vertex -10.3649 -20.1728 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.0796 -22.6123 -0.2 - vertex -11.5073 -20.829 -0.2 - vertex -10.5344 -22.7271 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.5344 -22.7271 -0.2 - vertex -11.5073 -20.829 -0.2 - vertex -10.9881 -22.8877 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.8784 -21.0286 -0.2 - vertex -10.9881 -22.8877 -0.2 - vertex -11.5073 -20.829 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -12.0427 -21.102 -0.2 - vertex -10.9881 -22.8877 -0.2 - vertex -11.8784 -21.0286 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.9881 -22.8877 -0.2 - vertex -12.0427 -21.102 -0.2 - vertex -11.3849 -23.0769 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.3849 -23.0769 -0.2 - vertex -12.0427 -21.102 -0.2 - vertex -11.9359 -23.4045 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.4007 -23.7203 -0.2 - vertex -12.0427 -21.102 -0.2 - vertex -12.0573 -21.0889 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.1989 -19.5967 -0.2 - vertex -12.0573 -21.0889 -0.2 - vertex -12.0594 -21.0513 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.3483 -19.3556 -0.2 - vertex -11.851 -20.4599 -0.2 - vertex -12.6849 -19.1929 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.851 -20.4599 -0.2 - vertex -13.3483 -19.3556 -0.2 - vertex -12.0288 -20.9134 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.0288 -20.9134 -0.2 - vertex -13.3483 -19.3556 -0.2 - vertex -12.0594 -21.0513 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -14.1989 -19.5967 -0.2 - vertex -12.0594 -21.0513 -0.2 - vertex -13.3483 -19.3556 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.0573 -21.0889 -0.2 - vertex -14.1989 -19.5967 -0.2 - vertex -15.1436 -19.8912 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.0427 -21.102 -0.2 - vertex -12.4007 -23.7203 -0.2 - vertex -11.9359 -23.4045 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.0573 -21.0889 -0.2 - vertex -15.1436 -19.8912 -0.2 - vertex -12.7941 -24.0414 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.0573 -21.0889 -0.2 - vertex -12.7941 -24.0414 -0.2 - vertex -12.4007 -23.7203 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.2249 -22.8126 -0.2 - vertex -12.7941 -24.0414 -0.2 - vertex -15.1436 -19.8912 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.7941 -24.0414 -0.2 - vertex -17.2249 -22.8126 -0.2 - vertex -13.131 -24.3848 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -17.2226 -22.9371 -0.2 - vertex -13.131 -24.3848 -0.2 - vertex -17.2249 -22.8126 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.131 -24.3848 -0.2 - vertex -17.2226 -22.9371 -0.2 - vertex -13.4262 -24.7676 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.2873 -23.335 -0.2 - vertex -13.4262 -24.7676 -0.2 - vertex -17.2226 -22.9371 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.4084 -23.7485 -0.2 - vertex -13.6945 -25.2068 -0.2 - vertex -17.2873 -23.335 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.6656 -24.469 -0.2 - vertex -13.9508 -25.7195 -0.2 - vertex -17.4084 -23.7485 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.2578 -22.7276 -0.2 - vertex -15.1436 -19.8912 -0.2 - vertex -16.9393 -20.461 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.6945 -25.2068 -0.2 - vertex -17.4084 -23.7485 -0.2 - vertex -13.9508 -25.7195 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.9508 -25.7195 -0.2 - vertex -17.6656 -24.469 -0.2 - vertex -14.2098 -26.3227 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.4262 -24.7676 -0.2 - vertex -17.2873 -23.335 -0.2 - vertex -13.6945 -25.2068 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.1436 -19.8912 -0.2 - vertex -17.2578 -22.7276 -0.2 - vertex -17.2249 -22.8126 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9393 -20.461 -0.2 - vertex -17.3267 -22.6747 -0.2 - vertex -17.2578 -22.7276 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9393 -20.461 -0.2 - vertex -17.4374 -22.6462 -0.2 - vertex -17.3267 -22.6747 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.9865 -20.7653 -0.2 - vertex -17.4374 -22.6462 -0.2 - vertex -16.9393 -20.461 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4374 -22.6462 -0.2 - vertex -17.9865 -20.7653 -0.2 - vertex -17.8061 -22.6324 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -18.5788 -21.2283 -0.2 - vertex -17.8061 -22.6324 -0.2 - vertex -17.9865 -20.7653 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5053 -21.1105 -0.2 - vertex -17.9865 -20.7653 -0.2 - vertex -18.1109 -20.8023 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5053 -21.1105 -0.2 - vertex -18.1109 -20.8023 -0.2 - vertex -18.2248 -20.8552 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5053 -21.1105 -0.2 - vertex -18.2248 -20.8552 -0.2 - vertex -18.3284 -20.924 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -18.6967 -21.5139 -0.2 - vertex -17.8061 -22.6324 -0.2 - vertex -18.5788 -21.2283 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5053 -21.1105 -0.2 - vertex -18.3284 -20.924 -0.2 - vertex -18.4218 -21.0091 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.9865 -20.7653 -0.2 - vertex -18.5053 -21.1105 -0.2 - vertex -18.5788 -21.2283 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.8061 -22.6324 -0.2 - vertex -18.6967 -21.5139 -0.2 - vertex -18.1091 -22.6172 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -18.766 -21.7922 -0.2 - vertex -18.1091 -22.6172 -0.2 - vertex -18.6967 -21.5139 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.1091 -22.6172 -0.2 - vertex -18.766 -21.7922 -0.2 - vertex -18.3541 -22.5704 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -18.7869 -22.0269 -0.2 - vertex -18.3541 -22.5704 -0.2 - vertex -18.766 -21.7922 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.3541 -22.5704 -0.2 - vertex -18.7869 -22.0269 -0.2 - vertex -18.5429 -22.4899 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -18.7577 -22.2202 -0.2 - vertex -18.5429 -22.4899 -0.2 - vertex -18.7869 -22.0269 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5429 -22.4899 -0.2 - vertex -18.7577 -22.2202 -0.2 - vertex -18.6769 -22.3738 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.48242 -23.1923 -0.2 - vertex -3.82849 -22.2203 -0.2 - vertex -3.84473 -21.6547 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.48242 -23.1923 -0.2 - vertex -3.84473 -21.6547 -0.2 - vertex -3.87719 -21.3353 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.48242 -23.1923 -0.2 - vertex -3.84589 -22.5177 -0.2 - vertex -3.82849 -22.2203 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.47107 -20.0532 -0.2 - vertex -3.87719 -21.3353 -0.2 - vertex -3.91934 -21.0662 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.48242 -23.1923 -0.2 - vertex -3.88244 -22.8317 -0.2 - vertex -3.84589 -22.5177 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.29663 -20.2518 -0.2 - vertex -3.91934 -21.0662 -0.2 - vertex -3.97677 -20.8354 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.48242 -23.1923 -0.2 - vertex -3.93975 -23.1672 -0.2 - vertex -3.88244 -22.8317 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.15983 -20.4402 -0.2 - vertex -3.97677 -20.8354 -0.2 - vertex -4.05507 -20.6308 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.97677 -20.8354 -0.2 - vertex -4.15983 -20.4402 -0.2 - vertex -4.29663 -20.2518 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -8.48242 -23.1923 -0.2 - vertex -4.01943 -23.5295 -0.2 - vertex -3.93975 -23.1672 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.91934 -21.0662 -0.2 - vertex -4.29663 -20.2518 -0.2 - vertex -4.47107 -20.0532 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.68872 -19.8327 -0.2 - vertex -3.87719 -21.3353 -0.2 - vertex -4.47107 -20.0532 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.01943 -23.5295 -0.2 - vertex -8.45645 -23.4267 -0.2 - vertex -4.25232 -24.3543 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.48242 -23.1923 -0.2 - vertex -3.87719 -21.3353 -0.2 - vertex -4.68872 -19.8327 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.14058 -19.1411 -0.2 - vertex -4.68872 -19.8327 -0.2 - vertex -4.93899 -19.592 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -8.46654 -23.7044 -0.2 - vertex -4.25232 -24.3543 -0.2 - vertex -8.45645 -23.4267 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.8145 -19.1562 -0.2 - vertex -4.93899 -19.592 -0.2 - vertex -5.14898 -19.4116 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.55901 -19.2012 -0.2 - vertex -5.14898 -19.4116 -0.2 - vertex -5.34642 -19.2839 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.14898 -19.4116 -0.2 - vertex -5.55901 -19.2012 -0.2 - vertex -5.8145 -19.1562 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.25232 -24.3543 -0.2 - vertex -8.46654 -23.7044 -0.2 - vertex -4.59396 -25.347 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.93899 -19.592 -0.2 - vertex -5.8145 -19.1562 -0.2 - vertex -6.14058 -19.1411 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.48242 -23.1923 -0.2 - vertex -4.68872 -19.8327 -0.2 - vertex -6.14058 -19.1411 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -8.51259 -24.0278 -0.2 - vertex -4.59396 -25.347 -0.2 - vertex -8.46654 -23.7044 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.48242 -23.1923 -0.2 - vertex -6.14058 -19.1411 -0.2 - vertex -7.11547 -19.1706 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.48242 -23.1923 -0.2 - vertex -7.11547 -19.1706 -0.2 - vertex -7.63584 -19.198 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -8.59455 -24.3995 -0.2 - vertex -4.59396 -25.347 -0.2 - vertex -8.51259 -24.0278 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.48242 -23.1923 -0.2 - vertex -7.63584 -19.198 -0.2 - vertex -8.06691 -19.2358 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.59396 -25.347 -0.2 - vertex -8.71232 -24.8218 -0.2 - vertex -5.05721 -26.548 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -9.05502 -25.8283 -0.2 - vertex -5.05721 -26.548 -0.2 - vertex -8.71232 -24.8218 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.77736 -22.7249 -0.2 - vertex -8.06691 -19.2358 -0.2 - vertex -8.43701 -19.2929 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -8.71232 -24.8218 -0.2 - vertex -4.59396 -25.347 -0.2 - vertex -8.59455 -24.3995 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.05721 -26.548 -0.2 - vertex -9.05502 -25.8283 -0.2 - vertex -5.65492 -27.9982 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -9.5401 -27.0667 -0.2 - vertex -5.65492 -27.9982 -0.2 - vertex -9.05502 -25.8283 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.65492 -27.9982 -0.2 - vertex -9.5401 -27.0667 -0.2 - vertex -6.39994 -29.738 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.5815 -32.143 -0.2 - vertex -6.39994 -29.738 -0.2 - vertex -9.5401 -27.0667 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.39994 -29.738 -0.2 - vertex -11.5815 -32.143 -0.2 - vertex -7.70823 -32.8163 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.30266 -36.7536 -0.2 - vertex -7.30695 -36.9638 -0.2 - vertex -7.29619 -36.8569 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.32635 -36.6539 -0.2 - vertex -7.30695 -36.9638 -0.2 - vertex -7.30266 -36.7536 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.36727 -36.5579 -0.2 - vertex -7.30695 -36.9638 -0.2 - vertex -7.32635 -36.6539 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.50076 -36.3769 -0.2 - vertex -7.30695 -36.9638 -0.2 - vertex -7.36727 -36.5579 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.30695 -36.9638 -0.2 - vertex -7.50076 -36.3769 -0.2 - vertex -7.38017 -37.1883 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.70312 -36.2106 -0.2 - vertex -7.38017 -37.1883 -0.2 - vertex -7.50076 -36.3769 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.38017 -37.1883 -0.2 - vertex -7.70312 -36.2106 -0.2 - vertex -7.52232 -37.4271 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.97432 -36.0592 -0.2 - vertex -7.52232 -37.4271 -0.2 - vertex -7.70312 -36.2106 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.52232 -37.4271 -0.2 - vertex -7.97432 -36.0592 -0.2 - vertex -7.73344 -37.6801 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.73344 -37.6801 -0.2 - vertex -7.97432 -36.0592 -0.2 - vertex -7.8903 -37.8311 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.30871 -38.0303 -0.2 - vertex -7.8903 -37.8311 -0.2 - vertex -7.97432 -36.0592 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.30871 -38.0303 -0.2 - vertex -7.97432 -36.0592 -0.2 - vertex -8.30497 -35.8814 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.8903 -37.8311 -0.2 - vertex -8.30871 -38.0303 -0.2 - vertex -8.0676 -37.9462 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.15585 -38.1249 -0.2 - vertex -8.30497 -35.8814 -0.2 - vertex -8.41808 -35.7975 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.15585 -38.1249 -0.2 - vertex -8.41808 -35.7975 -0.2 - vertex -8.49955 -35.7129 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.84865 -38.1451 -0.2 - vertex -8.49955 -35.7129 -0.2 - vertex -8.55176 -35.6244 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.84865 -38.1451 -0.2 - vertex -8.55176 -35.6244 -0.2 - vertex -8.57707 -35.529 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.30497 -35.8814 -0.2 - vertex -8.657 -38.0883 -0.2 - vertex -8.30871 -38.0303 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.6843 -34.4922 -0.2 - vertex -8.57707 -35.529 -0.2 - vertex -8.57785 -35.4236 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.70823 -32.8163 -0.2 - vertex -11.5815 -32.143 -0.2 - vertex -8.13453 -33.8652 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.9595 -33.0513 -0.2 - vertex -8.13453 -33.8652 -0.2 - vertex -11.5815 -32.143 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.13453 -33.8652 -0.2 - vertex -11.9595 -33.0513 -0.2 - vertex -8.32474 -34.384 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -12.3268 -33.8339 -0.2 - vertex -8.32474 -34.384 -0.2 - vertex -11.9595 -33.0513 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.32474 -34.384 -0.2 - vertex -12.3268 -33.8339 -0.2 - vertex -8.55649 -35.3052 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.55649 -35.3052 -0.2 - vertex -12.3268 -33.8339 -0.2 - vertex -8.57785 -35.4236 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.30497 -35.8814 -0.2 - vertex -9.15585 -38.1249 -0.2 - vertex -8.657 -38.0883 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -12.6843 -34.4922 -0.2 - vertex -8.57785 -35.4236 -0.2 - vertex -12.3268 -33.8339 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.49955 -35.7129 -0.2 - vertex -9.84865 -38.1451 -0.2 - vertex -9.15585 -38.1249 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.57707 -35.529 -0.2 - vertex -12.6843 -34.4922 -0.2 - vertex -9.84865 -38.1451 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.0331 -35.0276 -0.2 - vertex -9.84865 -38.1451 -0.2 - vertex -12.6843 -34.4922 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.84865 -38.1451 -0.2 - vertex -13.0331 -35.0276 -0.2 - vertex -11.9896 -38.1555 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.2045 -35.2497 -0.2 - vertex -11.9896 -38.1555 -0.2 - vertex -13.0331 -35.0276 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.3741 -35.4417 -0.2 - vertex -11.9896 -38.1555 -0.2 - vertex -13.2045 -35.2497 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.5421 -35.6036 -0.2 - vertex -11.9896 -38.1555 -0.2 - vertex -13.3741 -35.4417 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.7085 -35.7356 -0.2 - vertex -11.9896 -38.1555 -0.2 - vertex -13.5421 -35.6036 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.8736 -35.838 -0.2 - vertex -11.9896 -38.1555 -0.2 - vertex -13.7085 -35.7356 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.1677 -38.1469 -0.2 - vertex -13.8736 -35.838 -0.2 - vertex -14.0373 -35.911 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.8736 -35.838 -0.2 - vertex -14.1677 -38.1469 -0.2 - vertex -11.9896 -38.1555 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -14.1999 -35.9546 -0.2 - vertex -14.1677 -38.1469 -0.2 - vertex -14.0373 -35.911 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -14.3614 -35.9691 -0.2 - vertex -14.1677 -38.1469 -0.2 - vertex -14.1999 -35.9546 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.5979 -36.0176 -0.2 - vertex -14.3614 -35.9691 -0.2 - vertex -14.4713 -35.9816 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.3614 -35.9691 -0.2 - vertex -14.5979 -36.0176 -0.2 - vertex -14.1677 -38.1469 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -14.8831 -36.1495 -0.2 - vertex -14.1677 -38.1469 -0.2 - vertex -14.5979 -36.0176 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -15.1813 -36.3448 -0.2 - vertex -14.1677 -38.1469 -0.2 - vertex -14.8831 -36.1495 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.1677 -38.1469 -0.2 - vertex -15.1813 -36.3448 -0.2 - vertex -14.8486 -38.1282 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -15.4564 -36.5832 -0.2 - vertex -14.8486 -38.1282 -0.2 - vertex -15.1813 -36.3448 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -15.7439 -36.902 -0.2 - vertex -14.8486 -38.1282 -0.2 - vertex -15.4564 -36.5832 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.8486 -38.1282 -0.2 - vertex -15.7439 -36.902 -0.2 - vertex -15.316 -38.0928 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -15.8411 -37.0399 -0.2 - vertex -15.316 -38.0928 -0.2 - vertex -15.7439 -36.902 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -15.9096 -37.1689 -0.2 - vertex -15.316 -38.0928 -0.2 - vertex -15.8411 -37.0399 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -15.9604 -37.5428 -0.2 - vertex -15.316 -38.0928 -0.2 - vertex -15.9096 -37.1689 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.316 -38.0928 -0.2 - vertex -15.9604 -37.5428 -0.2 - vertex -15.614 -38.0352 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.614 -38.0352 -0.2 - vertex -15.8777 -37.8324 -0.2 - vertex -15.7132 -37.9965 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.7132 -37.9965 -0.2 - vertex -15.8777 -37.8324 -0.2 - vertex -15.7865 -37.9502 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -15.9316 -37.6764 -0.2 - vertex -15.614 -38.0352 -0.2 - vertex -15.9604 -37.5428 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.7865 -37.9502 -0.2 - vertex -15.8777 -37.8324 -0.2 - vertex -15.8396 -37.8957 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.9604 -37.5428 -0.2 - vertex -15.9096 -37.1689 -0.2 - vertex -15.9511 -37.293 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -15.8777 -37.8324 -0.2 - vertex -15.614 -38.0352 -0.2 - vertex -15.9316 -37.6764 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -15.9604 -37.5428 -0.2 - vertex -15.9511 -37.293 -0.2 - vertex -15.9675 -37.4163 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5311 -26.6889 -0.2 - vertex -14.2098 -26.3227 -0.2 - vertex -17.6656 -24.469 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.2098 -26.3227 -0.2 - vertex -18.5311 -26.6889 -0.2 - vertex -15.3777 -29.1914 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -19.7699 -29.7113 -0.2 - vertex -15.3777 -29.1914 -0.2 - vertex -18.5311 -26.6889 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.3777 -29.1914 -0.2 - vertex -19.7699 -29.7113 -0.2 - vertex -16.8163 -32.7116 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.2682 -33.2523 -0.2 - vertex -16.8163 -32.7116 -0.2 - vertex -19.7699 -29.7113 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.8163 -32.7116 -0.2 - vertex -21.2682 -33.2523 -0.2 - vertex -17.1674 -33.591 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.1674 -33.591 -0.2 - vertex -21.2682 -33.2523 -0.2 - vertex -17.4329 -34.3072 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4329 -34.3072 -0.2 - vertex -21.2682 -33.2523 -0.2 - vertex -17.6153 -34.8741 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -21.6072 -34.0169 -0.2 - vertex -17.6153 -34.8741 -0.2 - vertex -21.2682 -33.2523 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.6153 -34.8741 -0.2 - vertex -21.6072 -34.0169 -0.2 - vertex -17.7168 -35.3062 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.7168 -35.3062 -0.2 - vertex -21.6072 -34.0169 -0.2 - vertex -17.738 -35.4761 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -21.9074 -34.6287 -0.2 - vertex -17.738 -35.4761 -0.2 - vertex -21.6072 -34.0169 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.7399 -35.6175 -0.2 - vertex -18.7028 -38.1359 -0.2 - vertex -18.0369 -38.1201 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.738 -35.4761 -0.2 - vertex -21.9074 -34.6287 -0.2 - vertex -17.7399 -35.6175 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -20.8109 -38.1301 -0.2 - vertex -17.7399 -35.6175 -0.2 - vertex -21.9074 -34.6287 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.7399 -35.6175 -0.2 - vertex -20.8109 -38.1301 -0.2 - vertex -18.7028 -38.1359 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -22.1824 -35.1035 -0.2 - vertex -20.8109 -38.1301 -0.2 - vertex -21.9074 -34.6287 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -22.4463 -35.4568 -0.2 - vertex -20.8109 -38.1301 -0.2 - vertex -22.1824 -35.1035 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -22.5782 -35.5929 -0.2 - vertex -20.8109 -38.1301 -0.2 - vertex -22.4463 -35.4568 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -22.7126 -35.7044 -0.2 - vertex -20.8109 -38.1301 -0.2 - vertex -22.5782 -35.5929 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -22.8511 -35.7934 -0.2 - vertex -20.8109 -38.1301 -0.2 - vertex -22.7126 -35.7044 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.4866 -38.0828 -0.2 - vertex -22.8511 -35.7934 -0.2 - vertex -22.9953 -35.8619 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.4866 -38.0828 -0.2 - vertex -22.9953 -35.8619 -0.2 - vertex -23.1471 -35.9117 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.4866 -38.0828 -0.2 - vertex -23.1471 -35.9117 -0.2 - vertex -23.3082 -35.9449 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.8511 -35.7934 -0.2 - vertex -23.4866 -38.0828 -0.2 - vertex -20.8109 -38.1301 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -23.665 -35.9691 -0.2 - vertex -23.4866 -38.0828 -0.2 - vertex -23.3082 -35.9449 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -23.8593 -35.9891 -0.2 - vertex -23.4866 -38.0828 -0.2 - vertex -23.665 -35.9691 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.0497 -36.0458 -0.2 - vertex -23.4866 -38.0828 -0.2 - vertex -23.8593 -35.9891 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.2334 -36.1344 -0.2 - vertex -23.4866 -38.0828 -0.2 - vertex -24.0497 -36.0458 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.4077 -36.2501 -0.2 - vertex -23.4866 -38.0828 -0.2 - vertex -24.2334 -36.1344 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.57 -36.3881 -0.2 - vertex -23.4866 -38.0828 -0.2 - vertex -24.4077 -36.2501 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.4866 -38.0828 -0.2 - vertex -24.57 -36.3881 -0.2 - vertex -24.3782 -38.0456 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.7177 -36.5437 -0.2 - vertex -24.3782 -38.0456 -0.2 - vertex -24.57 -36.3881 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.8479 -36.7119 -0.2 - vertex -24.3782 -38.0456 -0.2 - vertex -24.7177 -36.5437 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.9582 -36.888 -0.2 - vertex -24.3782 -38.0456 -0.2 - vertex -24.8479 -36.7119 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -25.0457 -37.0673 -0.2 - vertex -24.3782 -38.0456 -0.2 - vertex -24.9582 -36.888 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -25.1078 -37.2448 -0.2 - vertex -24.3782 -38.0456 -0.2 - vertex -25.0457 -37.0673 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.3782 -38.0456 -0.2 - vertex -25.1078 -37.2448 -0.2 - vertex -24.7978 -38.0047 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -25.1419 -37.4158 -0.2 - vertex -24.7978 -38.0047 -0.2 - vertex -25.1078 -37.2448 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -25.1453 -37.5754 -0.2 - vertex -24.7978 -38.0047 -0.2 - vertex -25.1419 -37.4158 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.7978 -38.0047 -0.2 - vertex -25.1453 -37.5754 -0.2 - vertex -24.9442 -37.9384 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -25.1152 -37.719 -0.2 - vertex -24.9442 -37.9384 -0.2 - vertex -25.1453 -37.5754 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.9442 -37.9384 -0.2 - vertex -25.1152 -37.719 -0.2 - vertex -25.0491 -37.8416 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.237 -36.6071 -0.2 - vertex -16.2485 -36.9225 -0.2 - vertex -16.2109 -36.752 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.3106 -36.4662 -0.2 - vertex -16.2485 -36.9225 -0.2 - vertex -16.237 -36.6071 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.4249 -36.334 -0.2 - vertex -16.2485 -36.9225 -0.2 - vertex -16.3106 -36.4662 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.2485 -36.9225 -0.2 - vertex -16.4249 -36.334 -0.2 - vertex -16.3508 -37.1428 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.5729 -36.2152 -0.2 - vertex -16.3508 -37.1428 -0.2 - vertex -16.4249 -36.334 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.7476 -36.1146 -0.2 - vertex -16.3508 -37.1428 -0.2 - vertex -16.5729 -36.2152 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.3508 -37.1428 -0.2 - vertex -16.7476 -36.1146 -0.2 - vertex -16.5023 -37.3844 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.942 -36.0369 -0.2 - vertex -16.5023 -37.3844 -0.2 - vertex -16.7476 -36.1146 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.1493 -35.9869 -0.2 - vertex -16.5023 -37.3844 -0.2 - vertex -16.942 -36.0369 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.5023 -37.3844 -0.2 - vertex -17.1493 -35.9869 -0.2 - vertex -16.6872 -37.6188 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.3625 -35.9691 -0.2 - vertex -16.6872 -37.6188 -0.2 - vertex -17.1493 -35.9869 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4702 -35.9608 -0.2 - vertex -16.6872 -37.6188 -0.2 - vertex -17.3625 -35.9691 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.6872 -37.6188 -0.2 - vertex -17.4702 -35.9608 -0.2 - vertex -16.8516 -37.795 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -17.2437 -38.0218 -0.2 - vertex -16.8516 -37.795 -0.2 - vertex -17.4702 -35.9608 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.8516 -37.795 -0.2 - vertex -17.2437 -38.0218 -0.2 - vertex -17.0213 -37.9274 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.5664 -38.0841 -0.2 - vertex -17.4702 -35.9608 -0.2 - vertex -17.5603 -35.9348 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4702 -35.9608 -0.2 - vertex -17.5664 -38.0841 -0.2 - vertex -17.2437 -38.0218 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.0369 -38.1201 -0.2 - vertex -17.5603 -35.9348 -0.2 - vertex -17.6327 -35.8892 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.0369 -38.1201 -0.2 - vertex -17.6327 -35.8892 -0.2 - vertex -17.6869 -35.8223 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.0369 -38.1201 -0.2 - vertex -17.6869 -35.8223 -0.2 - vertex -17.7228 -35.7323 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.0369 -38.1201 -0.2 - vertex -17.7228 -35.7323 -0.2 - vertex -17.7399 -35.6175 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.5603 -35.9348 -0.2 - vertex -18.0369 -38.1201 -0.2 - vertex -17.5664 -38.0841 -0.2 - endloop - endfacet - facet normal -0.362708 -0.931903 0 - outer loop - vertex -12.0792 -19.1571 -0.2 - vertex -11.9023 -19.2259 0 - vertex -12.0792 -19.1571 0 - endloop - endfacet - facet normal -0.362708 -0.931903 -0 - outer loop - vertex -11.9023 -19.2259 0 - vertex -12.0792 -19.1571 -0.2 - vertex -11.9023 -19.2259 -0.2 - endloop - endfacet - facet normal -0.651552 -0.758604 0 - outer loop - vertex -11.9023 -19.2259 -0.2 - vertex -11.7723 -19.3375 0 - vertex -11.9023 -19.2259 0 - endloop - endfacet - facet normal -0.651552 -0.758604 -0 - outer loop - vertex -11.7723 -19.3375 0 - vertex -11.9023 -19.2259 -0.2 - vertex -11.7723 -19.3375 -0.2 - endloop - endfacet - facet normal -0.879356 -0.476164 0 - outer loop - vertex -11.6899 -19.4898 -0.2 - vertex -11.7723 -19.3375 0 - vertex -11.7723 -19.3375 -0.2 - endloop - endfacet - facet normal -0.879356 -0.476164 0 - outer loop - vertex -11.7723 -19.3375 0 - vertex -11.6899 -19.4898 -0.2 - vertex -11.6899 -19.4898 0 - endloop - endfacet - facet normal -0.98435 -0.176224 0 - outer loop - vertex -11.6557 -19.6804 -0.2 - vertex -11.6899 -19.4898 0 - vertex -11.6899 -19.4898 -0.2 - endloop - endfacet - facet normal -0.98435 -0.176224 0 - outer loop - vertex -11.6899 -19.4898 0 - vertex -11.6557 -19.6804 -0.2 - vertex -11.6557 -19.6804 0 - endloop - endfacet - facet normal -0.997828 0.0658663 0 - outer loop - vertex -11.6707 -19.9072 -0.2 - vertex -11.6557 -19.6804 0 - vertex -11.6557 -19.6804 -0.2 - endloop - endfacet - facet normal -0.997828 0.0658663 0 - outer loop - vertex -11.6557 -19.6804 0 - vertex -11.6707 -19.9072 -0.2 - vertex -11.6707 -19.9072 0 - endloop - endfacet - facet normal -0.970423 0.241411 0 - outer loop - vertex -11.7355 -20.1677 -0.2 - vertex -11.6707 -19.9072 0 - vertex -11.6707 -19.9072 -0.2 - endloop - endfacet - facet normal -0.970423 0.241411 0 - outer loop - vertex -11.6707 -19.9072 0 - vertex -11.7355 -20.1677 -0.2 - vertex -11.7355 -20.1677 0 - endloop - endfacet - facet normal -0.930032 0.367479 0 - outer loop - vertex -11.851 -20.4599 -0.2 - vertex -11.7355 -20.1677 0 - vertex -11.7355 -20.1677 -0.2 - endloop - endfacet - facet normal -0.930032 0.367479 0 - outer loop - vertex -11.7355 -20.1677 0 - vertex -11.851 -20.4599 -0.2 - vertex -11.851 -20.4599 0 - endloop - endfacet - facet normal -0.930941 0.365169 0 - outer loop - vertex -12.0288 -20.9134 -0.2 - vertex -11.851 -20.4599 0 - vertex -11.851 -20.4599 -0.2 - endloop - endfacet - facet normal -0.930941 0.365169 0 - outer loop - vertex -11.851 -20.4599 0 - vertex -12.0288 -20.9134 -0.2 - vertex -12.0288 -20.9134 0 - endloop - endfacet - facet normal -0.976329 0.216289 0 - outer loop - vertex -12.0594 -21.0513 -0.2 - vertex -12.0288 -20.9134 0 - vertex -12.0288 -20.9134 -0.2 - endloop - endfacet - facet normal -0.976329 0.216289 0 - outer loop - vertex -12.0288 -20.9134 0 - vertex -12.0594 -21.0513 -0.2 - vertex -12.0594 -21.0513 0 - endloop - endfacet - facet normal -0.998491 -0.0549167 0 - outer loop - vertex -12.0573 -21.0889 -0.2 - vertex -12.0594 -21.0513 0 - vertex -12.0594 -21.0513 -0.2 - endloop - endfacet - facet normal -0.998491 -0.0549167 0 - outer loop - vertex -12.0594 -21.0513 0 - vertex -12.0573 -21.0889 -0.2 - vertex -12.0573 -21.0889 0 - endloop - endfacet - facet normal -0.666017 -0.745937 0 - outer loop - vertex -12.0573 -21.0889 -0.2 - vertex -12.0427 -21.102 0 - vertex -12.0573 -21.0889 0 - endloop - endfacet - facet normal -0.666017 -0.745937 -0 - outer loop - vertex -12.0427 -21.102 0 - vertex -12.0573 -21.0889 -0.2 - vertex -12.0427 -21.102 -0.2 - endloop - endfacet - facet normal 0.407619 -0.913152 0 - outer loop - vertex -12.0427 -21.102 -0.2 - vertex -11.8784 -21.0286 0 - vertex -12.0427 -21.102 0 - endloop - endfacet - facet normal 0.407619 -0.913152 0 - outer loop - vertex -11.8784 -21.0286 0 - vertex -12.0427 -21.102 -0.2 - vertex -11.8784 -21.0286 -0.2 - endloop - endfacet - facet normal 0.473772 -0.880648 0 - outer loop - vertex -11.8784 -21.0286 -0.2 - vertex -11.5073 -20.829 0 - vertex -11.8784 -21.0286 0 - endloop - endfacet - facet normal 0.473772 -0.880648 0 - outer loop - vertex -11.5073 -20.829 0 - vertex -11.8784 -21.0286 -0.2 - vertex -11.5073 -20.829 -0.2 - endloop - endfacet - facet normal 0.498101 -0.867119 0 - outer loop - vertex -11.5073 -20.829 -0.2 - vertex -10.3649 -20.1728 0 - vertex -11.5073 -20.829 0 - endloop - endfacet - facet normal 0.498101 -0.867119 0 - outer loop - vertex -10.3649 -20.1728 0 - vertex -11.5073 -20.829 -0.2 - vertex -10.3649 -20.1728 -0.2 - endloop - endfacet - facet normal 0.501647 -0.865072 0 - outer loop - vertex -10.3649 -20.1728 -0.2 - vertex -9.87453 -19.8884 0 - vertex -10.3649 -20.1728 0 - endloop - endfacet - facet normal 0.501647 -0.865072 0 - outer loop - vertex -9.87453 -19.8884 0 - vertex -10.3649 -20.1728 -0.2 - vertex -9.87453 -19.8884 -0.2 - endloop - endfacet - facet normal 0.475521 -0.879704 0 - outer loop - vertex -9.87453 -19.8884 -0.2 - vertex -9.46489 -19.667 0 - vertex -9.87453 -19.8884 0 - endloop - endfacet - facet normal 0.475521 -0.879704 0 - outer loop - vertex -9.46489 -19.667 0 - vertex -9.87453 -19.8884 -0.2 - vertex -9.46489 -19.667 -0.2 - endloop - endfacet - facet normal 0.423964 -0.905679 0 - outer loop - vertex -9.46489 -19.667 -0.2 - vertex -9.10766 -19.4997 0 - vertex -9.46489 -19.667 0 - endloop - endfacet - facet normal 0.423964 -0.905679 0 - outer loop - vertex -9.10766 -19.4997 0 - vertex -9.46489 -19.667 -0.2 - vertex -9.10766 -19.4997 -0.2 - endloop - endfacet - facet normal 0.343275 -0.939235 0 - outer loop - vertex -9.10766 -19.4997 -0.2 - vertex -8.77447 -19.378 0 - vertex -9.10766 -19.4997 0 - endloop - endfacet - facet normal 0.343275 -0.939235 0 - outer loop - vertex -8.77447 -19.378 0 - vertex -9.10766 -19.4997 -0.2 - vertex -8.77447 -19.378 -0.2 - endloop - endfacet - facet normal 0.244399 -0.969675 0 - outer loop - vertex -8.77447 -19.378 -0.2 - vertex -8.43701 -19.2929 0 - vertex -8.77447 -19.378 0 - endloop - endfacet - facet normal 0.244399 -0.969675 0 - outer loop - vertex -8.43701 -19.2929 0 - vertex -8.77447 -19.378 -0.2 - vertex -8.43701 -19.2929 -0.2 - endloop - endfacet - facet normal 0.152431 -0.988314 0 - outer loop - vertex -8.43701 -19.2929 -0.2 - vertex -8.06691 -19.2358 0 - vertex -8.43701 -19.2929 0 - endloop - endfacet - facet normal 0.152431 -0.988314 0 - outer loop - vertex -8.06691 -19.2358 0 - vertex -8.43701 -19.2929 -0.2 - vertex -8.06691 -19.2358 -0.2 - endloop - endfacet - facet normal 0.0874592 -0.996168 0 - outer loop - vertex -8.06691 -19.2358 -0.2 - vertex -7.63584 -19.198 0 - vertex -8.06691 -19.2358 0 - endloop - endfacet - facet normal 0.0874592 -0.996168 0 - outer loop - vertex -7.63584 -19.198 0 - vertex -8.06691 -19.2358 -0.2 - vertex -7.63584 -19.198 -0.2 - endloop - endfacet - facet normal 0.0524883 -0.998622 0 - outer loop - vertex -7.63584 -19.198 -0.2 - vertex -7.11547 -19.1706 0 - vertex -7.63584 -19.198 0 - endloop - endfacet - facet normal 0.0524883 -0.998622 0 - outer loop - vertex -7.11547 -19.1706 0 - vertex -7.63584 -19.198 -0.2 - vertex -7.11547 -19.1706 -0.2 - endloop - endfacet - facet normal 0.0303019 -0.999541 0 - outer loop - vertex -7.11547 -19.1706 -0.2 - vertex -6.14058 -19.1411 0 - vertex -7.11547 -19.1706 0 - endloop - endfacet - facet normal 0.0303019 -0.999541 0 - outer loop - vertex -6.14058 -19.1411 0 - vertex -7.11547 -19.1706 -0.2 - vertex -6.14058 -19.1411 -0.2 - endloop - endfacet - facet normal -0.0462057 -0.998932 0 - outer loop - vertex -6.14058 -19.1411 -0.2 - vertex -5.8145 -19.1562 0 - vertex -6.14058 -19.1411 0 - endloop - endfacet - facet normal -0.0462057 -0.998932 -0 - outer loop - vertex -5.8145 -19.1562 0 - vertex -6.14058 -19.1411 -0.2 - vertex -5.8145 -19.1562 -0.2 - endloop - endfacet - facet normal -0.173732 -0.984793 0 - outer loop - vertex -5.8145 -19.1562 -0.2 - vertex -5.55901 -19.2012 0 - vertex -5.8145 -19.1562 0 - endloop - endfacet - facet normal -0.173732 -0.984793 -0 - outer loop - vertex -5.55901 -19.2012 0 - vertex -5.8145 -19.1562 -0.2 - vertex -5.55901 -19.2012 -0.2 - endloop - endfacet - facet normal -0.362239 -0.932085 0 - outer loop - vertex -5.55901 -19.2012 -0.2 - vertex -5.34642 -19.2839 0 - vertex -5.55901 -19.2012 0 - endloop - endfacet - facet normal -0.362239 -0.932085 -0 - outer loop - vertex -5.34642 -19.2839 0 - vertex -5.55901 -19.2012 -0.2 - vertex -5.34642 -19.2839 -0.2 - endloop - endfacet - facet normal -0.543204 -0.8396 0 - outer loop - vertex -5.34642 -19.2839 -0.2 - vertex -5.14898 -19.4116 0 - vertex -5.34642 -19.2839 0 - endloop - endfacet - facet normal -0.543204 -0.8396 -0 - outer loop - vertex -5.14898 -19.4116 0 - vertex -5.34642 -19.2839 -0.2 - vertex -5.14898 -19.4116 -0.2 - endloop - endfacet - facet normal -0.651669 -0.758504 0 - outer loop - vertex -5.14898 -19.4116 -0.2 - vertex -4.93899 -19.592 0 - vertex -5.14898 -19.4116 0 - endloop - endfacet - facet normal -0.651669 -0.758504 -0 - outer loop - vertex -4.93899 -19.592 0 - vertex -5.14898 -19.4116 -0.2 - vertex -4.93899 -19.592 -0.2 - endloop - endfacet - facet normal -0.693118 -0.720824 0 - outer loop - vertex -4.93899 -19.592 -0.2 - vertex -4.68872 -19.8327 0 - vertex -4.93899 -19.592 0 - endloop - endfacet - facet normal -0.693118 -0.720824 -0 - outer loop - vertex -4.68872 -19.8327 0 - vertex -4.93899 -19.592 -0.2 - vertex -4.68872 -19.8327 -0.2 - endloop - endfacet - facet normal -0.711815 -0.702367 0 - outer loop - vertex -4.47107 -20.0532 -0.2 - vertex -4.68872 -19.8327 0 - vertex -4.68872 -19.8327 -0.2 - endloop - endfacet - facet normal -0.711815 -0.702367 0 - outer loop - vertex -4.68872 -19.8327 0 - vertex -4.47107 -20.0532 -0.2 - vertex -4.47107 -20.0532 0 - endloop - endfacet - facet normal -0.751184 -0.660092 0 - outer loop - vertex -4.29663 -20.2518 -0.2 - vertex -4.47107 -20.0532 0 - vertex -4.47107 -20.0532 -0.2 - endloop - endfacet - facet normal -0.751184 -0.660092 0 - outer loop - vertex -4.47107 -20.0532 0 - vertex -4.29663 -20.2518 -0.2 - vertex -4.29663 -20.2518 0 - endloop - endfacet - facet normal -0.80931 -0.587382 0 - outer loop - vertex -4.15983 -20.4402 -0.2 - vertex -4.29663 -20.2518 0 - vertex -4.29663 -20.2518 -0.2 - endloop - endfacet - facet normal -0.80931 -0.587382 0 - outer loop - vertex -4.29663 -20.2518 0 - vertex -4.15983 -20.4402 -0.2 - vertex -4.15983 -20.4402 0 - endloop - endfacet - facet normal -0.876288 -0.481787 0 - outer loop - vertex -4.05507 -20.6308 -0.2 - vertex -4.15983 -20.4402 0 - vertex -4.15983 -20.4402 -0.2 - endloop - endfacet - facet normal -0.876288 -0.481787 0 - outer loop - vertex -4.15983 -20.4402 0 - vertex -4.05507 -20.6308 -0.2 - vertex -4.05507 -20.6308 0 - endloop - endfacet - facet normal -0.93397 -0.357351 0 - outer loop - vertex -3.97677 -20.8354 -0.2 - vertex -4.05507 -20.6308 0 - vertex -4.05507 -20.6308 -0.2 - endloop - endfacet - facet normal -0.93397 -0.357351 0 - outer loop - vertex -4.05507 -20.6308 0 - vertex -3.97677 -20.8354 -0.2 - vertex -3.97677 -20.8354 0 - endloop - endfacet - facet normal -0.970412 -0.241456 0 - outer loop - vertex -3.91934 -21.0662 -0.2 - vertex -3.97677 -20.8354 0 - vertex -3.97677 -20.8354 -0.2 - endloop - endfacet - facet normal -0.970412 -0.241456 0 - outer loop - vertex -3.97677 -20.8354 0 - vertex -3.91934 -21.0662 -0.2 - vertex -3.91934 -21.0662 0 - endloop - endfacet - facet normal -0.987949 -0.154777 0 - outer loop - vertex -3.87719 -21.3353 -0.2 - vertex -3.91934 -21.0662 0 - vertex -3.91934 -21.0662 -0.2 - endloop - endfacet - facet normal -0.987949 -0.154777 0 - outer loop - vertex -3.91934 -21.0662 0 - vertex -3.87719 -21.3353 -0.2 - vertex -3.87719 -21.3353 0 - endloop - endfacet - facet normal -0.994874 -0.10112 0 - outer loop - vertex -3.84473 -21.6547 -0.2 - vertex -3.87719 -21.3353 0 - vertex -3.87719 -21.3353 -0.2 - endloop - endfacet - facet normal -0.994874 -0.10112 0 - outer loop - vertex -3.87719 -21.3353 0 - vertex -3.84473 -21.6547 -0.2 - vertex -3.84473 -21.6547 0 - endloop - endfacet - facet normal -0.999588 -0.0286991 0 - outer loop - vertex -3.82849 -22.2203 -0.2 - vertex -3.84473 -21.6547 0 - vertex -3.84473 -21.6547 -0.2 - endloop - endfacet - facet normal -0.999588 -0.0286991 0 - outer loop - vertex -3.84473 -21.6547 0 - vertex -3.82849 -22.2203 -0.2 - vertex -3.82849 -22.2203 0 - endloop - endfacet - facet normal -0.998294 0.058395 0 - outer loop - vertex -3.84589 -22.5177 -0.2 - vertex -3.82849 -22.2203 0 - vertex -3.82849 -22.2203 -0.2 - endloop - endfacet - facet normal -0.998294 0.058395 0 - outer loop - vertex -3.82849 -22.2203 0 - vertex -3.84589 -22.5177 -0.2 - vertex -3.84589 -22.5177 0 - endloop - endfacet - facet normal -0.99329 0.115647 0 - outer loop - vertex -3.88244 -22.8317 -0.2 - vertex -3.84589 -22.5177 0 - vertex -3.84589 -22.5177 -0.2 - endloop - endfacet - facet normal -0.99329 0.115647 0 - outer loop - vertex -3.84589 -22.5177 0 - vertex -3.88244 -22.8317 -0.2 - vertex -3.88244 -22.8317 0 - endloop - endfacet - facet normal -0.985725 0.168361 0 - outer loop - vertex -3.93975 -23.1672 -0.2 - vertex -3.88244 -22.8317 0 - vertex -3.88244 -22.8317 -0.2 - endloop - endfacet - facet normal -0.985725 0.168361 0 - outer loop - vertex -3.88244 -22.8317 0 - vertex -3.93975 -23.1672 -0.2 - vertex -3.93975 -23.1672 0 - endloop - endfacet - facet normal -0.976652 0.214827 0 - outer loop - vertex -4.01943 -23.5295 -0.2 - vertex -3.93975 -23.1672 0 - vertex -3.93975 -23.1672 -0.2 - endloop - endfacet - facet normal -0.976652 0.214827 0 - outer loop - vertex -3.93975 -23.1672 0 - vertex -4.01943 -23.5295 -0.2 - vertex -4.01943 -23.5295 0 - endloop - endfacet - facet normal -0.962379 0.27171 0 - outer loop - vertex -4.25232 -24.3543 -0.2 - vertex -4.01943 -23.5295 0 - vertex -4.01943 -23.5295 -0.2 - endloop - endfacet - facet normal -0.962379 0.27171 0 - outer loop - vertex -4.01943 -23.5295 0 - vertex -4.25232 -24.3543 -0.2 - vertex -4.25232 -24.3543 0 - endloop - endfacet - facet normal -0.945562 0.325441 0 - outer loop - vertex -4.59396 -25.347 -0.2 - vertex -4.25232 -24.3543 0 - vertex -4.25232 -24.3543 -0.2 - endloop - endfacet - facet normal -0.945562 0.325441 0 - outer loop - vertex -4.25232 -24.3543 0 - vertex -4.59396 -25.347 -0.2 - vertex -4.59396 -25.347 0 - endloop - endfacet - facet normal -0.933005 0.359863 0 - outer loop - vertex -5.05721 -26.548 -0.2 - vertex -4.59396 -25.347 0 - vertex -4.59396 -25.347 -0.2 - endloop - endfacet - facet normal -0.933005 0.359863 0 - outer loop - vertex -4.59396 -25.347 0 - vertex -5.05721 -26.548 -0.2 - vertex -5.05721 -26.548 0 - endloop - endfacet - facet normal -0.924544 0.381075 0 - outer loop - vertex -5.65492 -27.9982 -0.2 - vertex -5.05721 -26.548 0 - vertex -5.05721 -26.548 -0.2 - endloop - endfacet - facet normal -0.924544 0.381075 0 - outer loop - vertex -5.05721 -26.548 0 - vertex -5.65492 -27.9982 -0.2 - vertex -5.65492 -27.9982 0 - endloop - endfacet - facet normal -0.919267 0.393635 0 - outer loop - vertex -6.39994 -29.738 -0.2 - vertex -5.65492 -27.9982 0 - vertex -5.65492 -27.9982 -0.2 - endloop - endfacet - facet normal -0.919267 0.393635 0 - outer loop - vertex -5.65492 -27.9982 0 - vertex -6.39994 -29.738 -0.2 - vertex -6.39994 -29.738 0 - endloop - endfacet - facet normal -0.920331 0.391141 0 - outer loop - vertex -7.70823 -32.8163 -0.2 - vertex -6.39994 -29.738 0 - vertex -6.39994 -29.738 -0.2 - endloop - endfacet - facet normal -0.920331 0.391141 0 - outer loop - vertex -6.39994 -29.738 0 - vertex -7.70823 -32.8163 -0.2 - vertex -7.70823 -32.8163 0 - endloop - endfacet - facet normal -0.926406 0.376526 0 - outer loop - vertex -8.13453 -33.8652 -0.2 - vertex -7.70823 -32.8163 0 - vertex -7.70823 -32.8163 -0.2 - endloop - endfacet - facet normal -0.926406 0.376526 0 - outer loop - vertex -7.70823 -32.8163 0 - vertex -8.13453 -33.8652 -0.2 - vertex -8.13453 -33.8652 0 - endloop - endfacet - facet normal -0.938884 0.344234 0 - outer loop - vertex -8.32474 -34.384 -0.2 - vertex -8.13453 -33.8652 0 - vertex -8.13453 -33.8652 -0.2 - endloop - endfacet - facet normal -0.938884 0.344234 0 - outer loop - vertex -8.13453 -33.8652 0 - vertex -8.32474 -34.384 -0.2 - vertex -8.32474 -34.384 0 - endloop - endfacet - facet normal -0.969782 0.243972 0 - outer loop - vertex -8.55649 -35.3052 -0.2 - vertex -8.32474 -34.384 0 - vertex -8.32474 -34.384 -0.2 - endloop - endfacet - facet normal -0.969782 0.243972 0 - outer loop - vertex -8.32474 -34.384 0 - vertex -8.55649 -35.3052 -0.2 - vertex -8.55649 -35.3052 0 - endloop - endfacet - facet normal -0.98411 0.17756 0 - outer loop - vertex -8.57785 -35.4236 -0.2 - vertex -8.55649 -35.3052 0 - vertex -8.55649 -35.3052 -0.2 - endloop - endfacet - facet normal -0.98411 0.17756 0 - outer loop - vertex -8.55649 -35.3052 0 - vertex -8.57785 -35.4236 -0.2 - vertex -8.57785 -35.4236 0 - endloop - endfacet - facet normal -0.999972 -0.00745735 0 - outer loop - vertex -8.57707 -35.529 -0.2 - vertex -8.57785 -35.4236 0 - vertex -8.57785 -35.4236 -0.2 - endloop - endfacet - facet normal -0.999972 -0.00745735 0 - outer loop - vertex -8.57785 -35.4236 0 - vertex -8.57707 -35.529 -0.2 - vertex -8.57707 -35.529 0 - endloop - endfacet - facet normal -0.966564 -0.256425 0 - outer loop - vertex -8.55176 -35.6244 -0.2 - vertex -8.57707 -35.529 0 - vertex -8.57707 -35.529 -0.2 - endloop - endfacet - facet normal -0.966564 -0.256425 0 - outer loop - vertex -8.57707 -35.529 0 - vertex -8.55176 -35.6244 -0.2 - vertex -8.55176 -35.6244 0 - endloop - endfacet - facet normal -0.861289 -0.508115 0 - outer loop - vertex -8.49955 -35.7129 -0.2 - vertex -8.55176 -35.6244 0 - vertex -8.55176 -35.6244 -0.2 - endloop - endfacet - facet normal -0.861289 -0.508115 0 - outer loop - vertex -8.55176 -35.6244 0 - vertex -8.49955 -35.7129 -0.2 - vertex -8.49955 -35.7129 0 - endloop - endfacet - facet normal -0.720516 -0.693438 0 - outer loop - vertex -8.41808 -35.7975 -0.2 - vertex -8.49955 -35.7129 0 - vertex -8.49955 -35.7129 -0.2 - endloop - endfacet - facet normal -0.720516 -0.693438 0 - outer loop - vertex -8.49955 -35.7129 0 - vertex -8.41808 -35.7975 -0.2 - vertex -8.41808 -35.7975 0 - endloop - endfacet - facet normal -0.595759 -0.803164 0 - outer loop - vertex -8.41808 -35.7975 -0.2 - vertex -8.30497 -35.8814 0 - vertex -8.41808 -35.7975 0 - endloop - endfacet - facet normal -0.595759 -0.803164 -0 - outer loop - vertex -8.30497 -35.8814 0 - vertex -8.41808 -35.7975 -0.2 - vertex -8.30497 -35.8814 -0.2 - endloop - endfacet - facet normal -0.473656 -0.88071 0 - outer loop - vertex -8.30497 -35.8814 -0.2 - vertex -7.97432 -36.0592 0 - vertex -8.30497 -35.8814 0 - endloop - endfacet - facet normal -0.473656 -0.88071 -0 - outer loop - vertex -7.97432 -36.0592 0 - vertex -8.30497 -35.8814 -0.2 - vertex -7.97432 -36.0592 -0.2 - endloop - endfacet - facet normal -0.487345 -0.873209 0 - outer loop - vertex -7.97432 -36.0592 -0.2 - vertex -7.70312 -36.2106 0 - vertex -7.97432 -36.0592 0 - endloop - endfacet - facet normal -0.487345 -0.873209 -0 - outer loop - vertex -7.70312 -36.2106 0 - vertex -7.97432 -36.0592 -0.2 - vertex -7.70312 -36.2106 -0.2 - endloop - endfacet - facet normal -0.634834 -0.772648 0 - outer loop - vertex -7.70312 -36.2106 -0.2 - vertex -7.50076 -36.3769 0 - vertex -7.70312 -36.2106 0 - endloop - endfacet - facet normal -0.634834 -0.772648 -0 - outer loop - vertex -7.50076 -36.3769 0 - vertex -7.70312 -36.2106 -0.2 - vertex -7.50076 -36.3769 -0.2 - endloop - endfacet - facet normal -0.80484 -0.593492 0 - outer loop - vertex -7.36727 -36.5579 -0.2 - vertex -7.50076 -36.3769 0 - vertex -7.50076 -36.3769 -0.2 - endloop - endfacet - facet normal -0.80484 -0.593492 0 - outer loop - vertex -7.50076 -36.3769 0 - vertex -7.36727 -36.5579 -0.2 - vertex -7.36727 -36.5579 0 - endloop - endfacet - facet normal -0.919952 -0.39203 0 - outer loop - vertex -7.32635 -36.6539 -0.2 - vertex -7.36727 -36.5579 0 - vertex -7.36727 -36.5579 -0.2 - endloop - endfacet - facet normal -0.919952 -0.39203 0 - outer loop - vertex -7.36727 -36.5579 0 - vertex -7.32635 -36.6539 -0.2 - vertex -7.32635 -36.6539 0 - endloop - endfacet - facet normal -0.972883 -0.231299 0 - outer loop - vertex -7.30266 -36.7536 -0.2 - vertex -7.32635 -36.6539 0 - vertex -7.32635 -36.6539 -0.2 - endloop - endfacet - facet normal -0.972883 -0.231299 0 - outer loop - vertex -7.32635 -36.6539 0 - vertex -7.30266 -36.7536 -0.2 - vertex -7.30266 -36.7536 0 - endloop - endfacet - facet normal -0.998045 -0.0625022 0 - outer loop - vertex -7.29619 -36.8569 -0.2 - vertex -7.30266 -36.7536 0 - vertex -7.30266 -36.7536 -0.2 - endloop - endfacet - facet normal -0.998045 -0.0625022 0 - outer loop - vertex -7.30266 -36.7536 0 - vertex -7.29619 -36.8569 -0.2 - vertex -7.29619 -36.8569 0 - endloop - endfacet - facet normal -0.994972 0.100157 0 - outer loop - vertex -7.30695 -36.9638 -0.2 - vertex -7.29619 -36.8569 0 - vertex -7.29619 -36.8569 -0.2 - endloop - endfacet - facet normal -0.994972 0.100157 0 - outer loop - vertex -7.29619 -36.8569 0 - vertex -7.30695 -36.9638 -0.2 - vertex -7.30695 -36.9638 0 - endloop - endfacet - facet normal -0.950745 0.309974 0 - outer loop - vertex -7.38017 -37.1883 -0.2 - vertex -7.30695 -36.9638 0 - vertex -7.30695 -36.9638 -0.2 - endloop - endfacet - facet normal -0.950745 0.309974 0 - outer loop - vertex -7.30695 -36.9638 0 - vertex -7.38017 -37.1883 -0.2 - vertex -7.38017 -37.1883 0 - endloop - endfacet - facet normal -0.859288 0.511491 0 - outer loop - vertex -7.52232 -37.4271 -0.2 - vertex -7.38017 -37.1883 0 - vertex -7.38017 -37.1883 -0.2 - endloop - endfacet - facet normal -0.859288 0.511491 0 - outer loop - vertex -7.38017 -37.1883 0 - vertex -7.52232 -37.4271 -0.2 - vertex -7.52232 -37.4271 0 - endloop - endfacet - facet normal -0.767721 0.640785 0 - outer loop - vertex -7.73344 -37.6801 -0.2 - vertex -7.52232 -37.4271 0 - vertex -7.52232 -37.4271 -0.2 - endloop - endfacet - facet normal -0.767721 0.640785 0 - outer loop - vertex -7.52232 -37.4271 0 - vertex -7.73344 -37.6801 -0.2 - vertex -7.73344 -37.6801 0 - endloop - endfacet - facet normal -0.693467 0.720489 0 - outer loop - vertex -7.73344 -37.6801 -0.2 - vertex -7.8903 -37.8311 0 - vertex -7.73344 -37.6801 0 - endloop - endfacet - facet normal -0.693467 0.720489 0 - outer loop - vertex -7.8903 -37.8311 0 - vertex -7.73344 -37.6801 -0.2 - vertex -7.8903 -37.8311 -0.2 - endloop - endfacet - facet normal -0.544632 0.838675 0 - outer loop - vertex -7.8903 -37.8311 -0.2 - vertex -8.0676 -37.9462 0 - vertex -7.8903 -37.8311 0 - endloop - endfacet - facet normal -0.544632 0.838675 0 - outer loop - vertex -8.0676 -37.9462 0 - vertex -7.8903 -37.8311 -0.2 - vertex -8.0676 -37.9462 -0.2 - endloop - endfacet - facet normal -0.329452 0.944172 0 - outer loop - vertex -8.0676 -37.9462 -0.2 - vertex -8.30871 -38.0303 0 - vertex -8.0676 -37.9462 0 - endloop - endfacet - facet normal -0.329452 0.944172 0 - outer loop - vertex -8.30871 -38.0303 0 - vertex -8.0676 -37.9462 -0.2 - vertex -8.30871 -38.0303 -0.2 - endloop - endfacet - facet normal -0.164178 0.986431 0 - outer loop - vertex -8.30871 -38.0303 -0.2 - vertex -8.657 -38.0883 0 - vertex -8.30871 -38.0303 0 - endloop - endfacet - facet normal -0.164178 0.986431 0 - outer loop - vertex -8.657 -38.0883 0 - vertex -8.30871 -38.0303 -0.2 - vertex -8.657 -38.0883 -0.2 - endloop - endfacet - facet normal -0.0732736 0.997312 0 - outer loop - vertex -8.657 -38.0883 -0.2 - vertex -9.15585 -38.1249 0 - vertex -8.657 -38.0883 0 - endloop - endfacet - facet normal -0.0732736 0.997312 0 - outer loop - vertex -9.15585 -38.1249 0 - vertex -8.657 -38.0883 -0.2 - vertex -9.15585 -38.1249 -0.2 - endloop - endfacet - facet normal -0.0291211 0.999576 0 - outer loop - vertex -9.15585 -38.1249 -0.2 - vertex -9.84865 -38.1451 0 - vertex -9.15585 -38.1249 0 - endloop - endfacet - facet normal -0.0291211 0.999576 0 - outer loop - vertex -9.84865 -38.1451 0 - vertex -9.15585 -38.1249 -0.2 - vertex -9.84865 -38.1451 -0.2 - endloop - endfacet - facet normal -0.00482502 0.999988 0 - outer loop - vertex -9.84865 -38.1451 -0.2 - vertex -11.9896 -38.1555 0 - vertex -9.84865 -38.1451 0 - endloop - endfacet - facet normal -0.00482502 0.999988 0 - outer loop - vertex -11.9896 -38.1555 0 - vertex -9.84865 -38.1451 -0.2 - vertex -11.9896 -38.1555 -0.2 - endloop - endfacet - facet normal 0.0039213 0.999992 -0 - outer loop - vertex -11.9896 -38.1555 -0.2 - vertex -14.1677 -38.1469 0 - vertex -11.9896 -38.1555 0 - endloop - endfacet - facet normal 0.0039213 0.999992 0 - outer loop - vertex -14.1677 -38.1469 0 - vertex -11.9896 -38.1555 -0.2 - vertex -14.1677 -38.1469 -0.2 - endloop - endfacet - facet normal 0.0274602 0.999623 -0 - outer loop - vertex -14.1677 -38.1469 -0.2 - vertex -14.8486 -38.1282 0 - vertex -14.1677 -38.1469 0 - endloop - endfacet - facet normal 0.0274602 0.999623 0 - outer loop - vertex -14.8486 -38.1282 0 - vertex -14.1677 -38.1469 -0.2 - vertex -14.8486 -38.1282 -0.2 - endloop - endfacet - facet normal 0.0756421 0.997135 -0 - outer loop - vertex -14.8486 -38.1282 -0.2 - vertex -15.316 -38.0928 0 - vertex -14.8486 -38.1282 0 - endloop - endfacet - facet normal 0.0756421 0.997135 0 - outer loop - vertex -15.316 -38.0928 0 - vertex -14.8486 -38.1282 -0.2 - vertex -15.316 -38.0928 -0.2 - endloop - endfacet - facet normal 0.189644 0.981853 -0 - outer loop - vertex -15.316 -38.0928 -0.2 - vertex -15.614 -38.0352 0 - vertex -15.316 -38.0928 0 - endloop - endfacet - facet normal 0.189644 0.981853 0 - outer loop - vertex -15.614 -38.0352 0 - vertex -15.316 -38.0928 -0.2 - vertex -15.614 -38.0352 -0.2 - endloop - endfacet - facet normal 0.363705 0.931514 -0 - outer loop - vertex -15.614 -38.0352 -0.2 - vertex -15.7132 -37.9965 0 - vertex -15.614 -38.0352 0 - endloop - endfacet - facet normal 0.363705 0.931514 0 - outer loop - vertex -15.7132 -37.9965 0 - vertex -15.614 -38.0352 -0.2 - vertex -15.7132 -37.9965 -0.2 - endloop - endfacet - facet normal 0.533432 0.845843 -0 - outer loop - vertex -15.7132 -37.9965 -0.2 - vertex -15.7865 -37.9502 0 - vertex -15.7132 -37.9965 0 - endloop - endfacet - facet normal 0.533432 0.845843 0 - outer loop - vertex -15.7865 -37.9502 0 - vertex -15.7132 -37.9965 -0.2 - vertex -15.7865 -37.9502 -0.2 - endloop - endfacet - facet normal 0.71659 0.697495 0 - outer loop - vertex -15.7865 -37.9502 0 - vertex -15.8396 -37.8957 -0.2 - vertex -15.8396 -37.8957 0 - endloop - endfacet - facet normal 0.71659 0.697495 0 - outer loop - vertex -15.8396 -37.8957 -0.2 - vertex -15.7865 -37.9502 0 - vertex -15.7865 -37.9502 -0.2 - endloop - endfacet - facet normal 0.856476 0.516186 0 - outer loop - vertex -15.8396 -37.8957 0 - vertex -15.8777 -37.8324 -0.2 - vertex -15.8777 -37.8324 0 - endloop - endfacet - facet normal 0.856476 0.516186 0 - outer loop - vertex -15.8777 -37.8324 -0.2 - vertex -15.8396 -37.8957 0 - vertex -15.8396 -37.8957 -0.2 - endloop - endfacet - facet normal 0.945292 0.326225 0 - outer loop - vertex -15.8777 -37.8324 0 - vertex -15.9316 -37.6764 -0.2 - vertex -15.9316 -37.6764 0 - endloop - endfacet - facet normal 0.945292 0.326225 0 - outer loop - vertex -15.9316 -37.6764 -0.2 - vertex -15.8777 -37.8324 0 - vertex -15.8777 -37.8324 -0.2 - endloop - endfacet - facet normal 0.977576 0.210582 0 - outer loop - vertex -15.9316 -37.6764 0 - vertex -15.9604 -37.5428 -0.2 - vertex -15.9604 -37.5428 0 - endloop - endfacet - facet normal 0.977576 0.210582 0 - outer loop - vertex -15.9604 -37.5428 -0.2 - vertex -15.9316 -37.6764 0 - vertex -15.9316 -37.6764 -0.2 - endloop - endfacet - facet normal 0.998424 0.0561231 0 - outer loop - vertex -15.9604 -37.5428 0 - vertex -15.9675 -37.4163 -0.2 - vertex -15.9675 -37.4163 0 - endloop - endfacet - facet normal 0.998424 0.0561231 0 - outer loop - vertex -15.9675 -37.4163 -0.2 - vertex -15.9604 -37.5428 0 - vertex -15.9604 -37.5428 -0.2 - endloop - endfacet - facet normal 0.991334 -0.131364 0 - outer loop - vertex -15.9675 -37.4163 0 - vertex -15.9511 -37.293 -0.2 - vertex -15.9511 -37.293 0 - endloop - endfacet - facet normal 0.991334 -0.131364 0 - outer loop - vertex -15.9511 -37.293 -0.2 - vertex -15.9675 -37.4163 0 - vertex -15.9675 -37.4163 -0.2 - endloop - endfacet - facet normal 0.94832 -0.317316 0 - outer loop - vertex -15.9511 -37.293 0 - vertex -15.9096 -37.1689 -0.2 - vertex -15.9096 -37.1689 0 - endloop - endfacet - facet normal 0.94832 -0.317316 0 - outer loop - vertex -15.9096 -37.1689 -0.2 - vertex -15.9511 -37.293 0 - vertex -15.9511 -37.293 -0.2 - endloop - endfacet - facet normal 0.883259 -0.468885 0 - outer loop - vertex -15.9096 -37.1689 0 - vertex -15.8411 -37.0399 -0.2 - vertex -15.8411 -37.0399 0 - endloop - endfacet - facet normal 0.883259 -0.468885 0 - outer loop - vertex -15.8411 -37.0399 -0.2 - vertex -15.9096 -37.1689 0 - vertex -15.9096 -37.1689 -0.2 - endloop - endfacet - facet normal 0.817454 -0.575994 0 - outer loop - vertex -15.8411 -37.0399 0 - vertex -15.7439 -36.902 -0.2 - vertex -15.7439 -36.902 0 - endloop - endfacet - facet normal 0.817454 -0.575994 0 - outer loop - vertex -15.7439 -36.902 -0.2 - vertex -15.8411 -37.0399 0 - vertex -15.8411 -37.0399 -0.2 - endloop - endfacet - facet normal 0.742584 -0.669753 0 - outer loop - vertex -15.7439 -36.902 0 - vertex -15.4564 -36.5832 -0.2 - vertex -15.4564 -36.5832 0 - endloop - endfacet - facet normal 0.742584 -0.669753 0 - outer loop - vertex -15.4564 -36.5832 -0.2 - vertex -15.7439 -36.902 0 - vertex -15.7439 -36.902 -0.2 - endloop - endfacet - facet normal 0.654929 -0.755691 0 - outer loop - vertex -15.4564 -36.5832 -0.2 - vertex -15.1813 -36.3448 0 - vertex -15.4564 -36.5832 0 - endloop - endfacet - facet normal 0.654929 -0.755691 0 - outer loop - vertex -15.1813 -36.3448 0 - vertex -15.4564 -36.5832 -0.2 - vertex -15.1813 -36.3448 -0.2 - endloop - endfacet - facet normal 0.547883 -0.836555 0 - outer loop - vertex -15.1813 -36.3448 -0.2 - vertex -14.8831 -36.1495 0 - vertex -15.1813 -36.3448 0 - endloop - endfacet - facet normal 0.547883 -0.836555 0 - outer loop - vertex -14.8831 -36.1495 0 - vertex -15.1813 -36.3448 -0.2 - vertex -14.8831 -36.1495 -0.2 - endloop - endfacet - facet normal 0.419801 -0.907616 0 - outer loop - vertex -14.8831 -36.1495 -0.2 - vertex -14.5979 -36.0176 0 - vertex -14.8831 -36.1495 0 - endloop - endfacet - facet normal 0.419801 -0.907616 0 - outer loop - vertex -14.5979 -36.0176 0 - vertex -14.8831 -36.1495 -0.2 - vertex -14.5979 -36.0176 -0.2 - endloop - endfacet - facet normal 0.273076 -0.961992 0 - outer loop - vertex -14.5979 -36.0176 -0.2 - vertex -14.4713 -35.9816 0 - vertex -14.5979 -36.0176 0 - endloop - endfacet - facet normal 0.273076 -0.961992 0 - outer loop - vertex -14.4713 -35.9816 0 - vertex -14.5979 -36.0176 -0.2 - vertex -14.4713 -35.9816 -0.2 - endloop - endfacet - facet normal 0.113362 -0.993554 0 - outer loop - vertex -14.4713 -35.9816 -0.2 - vertex -14.3614 -35.9691 0 - vertex -14.4713 -35.9816 0 - endloop - endfacet - facet normal 0.113362 -0.993554 0 - outer loop - vertex -14.3614 -35.9691 0 - vertex -14.4713 -35.9816 -0.2 - vertex -14.3614 -35.9691 -0.2 - endloop - endfacet - facet normal 0.0894161 -0.995994 0 - outer loop - vertex -14.3614 -35.9691 -0.2 - vertex -14.1999 -35.9546 0 - vertex -14.3614 -35.9691 0 - endloop - endfacet - facet normal 0.0894161 -0.995994 0 - outer loop - vertex -14.1999 -35.9546 0 - vertex -14.3614 -35.9691 -0.2 - vertex -14.1999 -35.9546 -0.2 - endloop - endfacet - facet normal 0.259204 -0.965823 0 - outer loop - vertex -14.1999 -35.9546 -0.2 - vertex -14.0373 -35.911 0 - vertex -14.1999 -35.9546 0 - endloop - endfacet - facet normal 0.259204 -0.965823 0 - outer loop - vertex -14.0373 -35.911 0 - vertex -14.1999 -35.9546 -0.2 - vertex -14.0373 -35.911 -0.2 - endloop - endfacet - facet normal 0.406893 -0.913476 0 - outer loop - vertex -14.0373 -35.911 -0.2 - vertex -13.8736 -35.838 0 - vertex -14.0373 -35.911 0 - endloop - endfacet - facet normal 0.406893 -0.913476 0 - outer loop - vertex -13.8736 -35.838 0 - vertex -14.0373 -35.911 -0.2 - vertex -13.8736 -35.838 -0.2 - endloop - endfacet - facet normal 0.527319 -0.849667 0 - outer loop - vertex -13.8736 -35.838 -0.2 - vertex -13.7085 -35.7356 0 - vertex -13.8736 -35.838 0 - endloop - endfacet - facet normal 0.527319 -0.849667 0 - outer loop - vertex -13.7085 -35.7356 0 - vertex -13.8736 -35.838 -0.2 - vertex -13.7085 -35.7356 -0.2 - endloop - endfacet - facet normal 0.621601 -0.783334 0 - outer loop - vertex -13.7085 -35.7356 -0.2 - vertex -13.5421 -35.6036 0 - vertex -13.7085 -35.7356 0 - endloop - endfacet - facet normal 0.621601 -0.783334 0 - outer loop - vertex -13.5421 -35.6036 0 - vertex -13.7085 -35.7356 -0.2 - vertex -13.5421 -35.6036 -0.2 - endloop - endfacet - facet normal 0.693973 -0.720001 0 - outer loop - vertex -13.5421 -35.6036 -0.2 - vertex -13.3741 -35.4417 0 - vertex -13.5421 -35.6036 0 - endloop - endfacet - facet normal 0.693973 -0.720001 0 - outer loop - vertex -13.3741 -35.4417 0 - vertex -13.5421 -35.6036 -0.2 - vertex -13.3741 -35.4417 -0.2 - endloop - endfacet - facet normal 0.74925 -0.662287 0 - outer loop - vertex -13.3741 -35.4417 0 - vertex -13.2045 -35.2497 -0.2 - vertex -13.2045 -35.2497 0 - endloop - endfacet - facet normal 0.74925 -0.662287 0 - outer loop - vertex -13.2045 -35.2497 -0.2 - vertex -13.3741 -35.4417 0 - vertex -13.3741 -35.4417 -0.2 - endloop - endfacet - facet normal 0.791599 -0.611041 0 - outer loop - vertex -13.2045 -35.2497 0 - vertex -13.0331 -35.0276 -0.2 - vertex -13.0331 -35.0276 0 - endloop - endfacet - facet normal 0.791599 -0.611041 0 - outer loop - vertex -13.0331 -35.0276 -0.2 - vertex -13.2045 -35.2497 0 - vertex -13.2045 -35.2497 -0.2 - endloop - endfacet - facet normal 0.837921 -0.545792 0 - outer loop - vertex -13.0331 -35.0276 0 - vertex -12.6843 -34.4922 -0.2 - vertex -12.6843 -34.4922 0 - endloop - endfacet - facet normal 0.837921 -0.545792 0 - outer loop - vertex -12.6843 -34.4922 -0.2 - vertex -13.0331 -35.0276 0 - vertex -13.0331 -35.0276 -0.2 - endloop - endfacet - facet normal 0.878782 -0.477224 0 - outer loop - vertex -12.6843 -34.4922 0 - vertex -12.3268 -33.8339 -0.2 - vertex -12.3268 -33.8339 0 - endloop - endfacet - facet normal 0.878782 -0.477224 0 - outer loop - vertex -12.3268 -33.8339 -0.2 - vertex -12.6843 -34.4922 0 - vertex -12.6843 -34.4922 -0.2 - endloop - endfacet - facet normal 0.905274 -0.424829 0 - outer loop - vertex -12.3268 -33.8339 0 - vertex -11.9595 -33.0513 -0.2 - vertex -11.9595 -33.0513 0 - endloop - endfacet - facet normal 0.905274 -0.424829 0 - outer loop - vertex -11.9595 -33.0513 -0.2 - vertex -12.3268 -33.8339 0 - vertex -12.3268 -33.8339 -0.2 - endloop - endfacet - facet normal 0.923227 -0.384256 0 - outer loop - vertex -11.9595 -33.0513 0 - vertex -11.5815 -32.143 -0.2 - vertex -11.5815 -32.143 0 - endloop - endfacet - facet normal 0.923227 -0.384256 0 - outer loop - vertex -11.5815 -32.143 -0.2 - vertex -11.9595 -33.0513 0 - vertex -11.9595 -33.0513 -0.2 + vertex -11.5932 -32.143 -3 + vertex -12.3385 -33.8339 0 + vertex -12.3385 -33.8339 -3 endloop endfacet facet normal 0.927789 -0.373105 0 outer loop - vertex -11.5815 -32.143 0 - vertex -9.5401 -27.0667 -0.2 - vertex -9.5401 -27.0667 0 + vertex -11.5932 -32.143 0 + vertex -9.55184 -27.0667 -3 + vertex -9.55184 -27.0667 0 endloop endfacet facet normal 0.927789 -0.373105 0 outer loop - vertex -9.5401 -27.0667 -0.2 - vertex -11.5815 -32.143 0 - vertex -11.5815 -32.143 -0.2 + vertex -9.55184 -27.0667 -3 + vertex -11.5932 -32.143 0 + vertex -11.5932 -32.143 -3 endloop endfacet - facet normal 0.931122 -0.364709 0 + facet normal 0.938245 -0.345971 0 outer loop - vertex -9.5401 -27.0667 0 - vertex -9.05502 -25.8283 -0.2 - vertex -9.05502 -25.8283 0 + vertex -9.55184 -27.0667 0 + vertex -8.72405 -24.8218 -3 + vertex -8.72405 -24.8218 0 endloop endfacet - facet normal 0.931122 -0.364709 0 + facet normal 0.938245 -0.345971 0 outer loop - vertex -9.05502 -25.8283 -0.2 - vertex -9.5401 -27.0667 0 - vertex -9.5401 -27.0667 -0.2 + vertex -8.72405 -24.8218 -3 + vertex -9.55184 -27.0667 0 + vertex -9.55184 -27.0667 -3 endloop endfacet - facet normal 0.946626 -0.322334 0 + facet normal 0.983596 -0.180388 0 outer loop - vertex -9.05502 -25.8283 0 - vertex -8.71232 -24.8218 -0.2 - vertex -8.71232 -24.8218 0 + vertex -8.72405 -24.8218 0 + vertex -8.46819 -23.4267 -3 + vertex -8.46819 -23.4267 0 endloop endfacet - facet normal 0.946626 -0.322334 0 + facet normal 0.983596 -0.180388 0 outer loop - vertex -8.71232 -24.8218 -0.2 - vertex -9.05502 -25.8283 0 - vertex -9.05502 -25.8283 -0.2 + vertex -8.46819 -23.4267 -3 + vertex -8.72405 -24.8218 0 + vertex -8.72405 -24.8218 -3 endloop endfacet - facet normal 0.963249 -0.26861 0 + facet normal 0.979467 0.201603 0 outer loop - vertex -8.71232 -24.8218 0 - vertex -8.59455 -24.3995 -0.2 - vertex -8.59455 -24.3995 0 + vertex -8.46819 -23.4267 0 + vertex -8.55624 -22.9989 -3 + vertex -8.55624 -22.9989 0 endloop endfacet - facet normal 0.963249 -0.26861 0 + facet normal 0.979467 0.201603 0 outer loop - vertex -8.59455 -24.3995 -0.2 - vertex -8.71232 -24.8218 0 - vertex -8.71232 -24.8218 -0.2 + vertex -8.55624 -22.9989 -3 + vertex -8.46819 -23.4267 0 + vertex -8.46819 -23.4267 -3 endloop endfacet - facet normal 0.976543 -0.215323 0 + facet normal 0.762012 0.647563 0 outer loop - vertex -8.59455 -24.3995 0 - vertex -8.51259 -24.0278 -0.2 - vertex -8.51259 -24.0278 0 + vertex -8.55624 -22.9989 0 + vertex -8.78909 -22.7249 -3 + vertex -8.78909 -22.7249 0 endloop endfacet - facet normal 0.976543 -0.215323 0 + facet normal 0.762012 0.647563 0 outer loop - vertex -8.51259 -24.0278 -0.2 - vertex -8.59455 -24.3995 0 - vertex -8.59455 -24.3995 -0.2 + vertex -8.78909 -22.7249 -3 + vertex -8.55624 -22.9989 0 + vertex -8.55624 -22.9989 -3 endloop endfacet - facet normal 0.990015 -0.140965 0 + facet normal 0.179668 0.983727 -0 outer loop - vertex -8.51259 -24.0278 0 - vertex -8.46654 -23.7044 -0.2 - vertex -8.46654 -23.7044 0 + vertex -8.78909 -22.7249 -3 + vertex -9.69161 -22.56 0 + vertex -8.78909 -22.7249 0 endloop endfacet - facet normal 0.990015 -0.140965 0 + facet normal 0.179668 0.983727 0 outer loop - vertex -8.46654 -23.7044 -0.2 - vertex -8.51259 -24.0278 0 - vertex -8.51259 -24.0278 -0.2 + vertex -9.69161 -22.56 0 + vertex -8.78909 -22.7249 -3 + vertex -9.69161 -22.56 -3 endloop endfacet - facet normal 0.999341 -0.0362924 0 + facet normal -0.191908 0.981413 0 outer loop - vertex -8.46654 -23.7044 0 - vertex -8.45645 -23.4267 -0.2 - vertex -8.45645 -23.4267 0 + vertex -9.69161 -22.56 -3 + vertex -10.5461 -22.7271 0 + vertex -9.69161 -22.56 0 endloop endfacet - facet normal 0.999341 -0.0362924 0 + facet normal -0.191908 0.981413 0 outer loop - vertex -8.45645 -23.4267 -0.2 - vertex -8.46654 -23.7044 0 - vertex -8.46654 -23.7044 -0.2 + vertex -10.5461 -22.7271 0 + vertex -9.69161 -22.56 -3 + vertex -10.5461 -22.7271 -3 endloop endfacet - facet normal 0.993917 0.110127 0 + facet normal -0.380356 0.92484 0 outer loop - vertex -8.45645 -23.4267 0 - vertex -8.48242 -23.1923 -0.2 - vertex -8.48242 -23.1923 0 + vertex -10.5461 -22.7271 -3 + vertex -11.3967 -23.0769 0 + vertex -10.5461 -22.7271 0 endloop endfacet - facet normal 0.993917 0.110127 0 + facet normal -0.380356 0.92484 0 outer loop - vertex -8.48242 -23.1923 -0.2 - vertex -8.45645 -23.4267 0 - vertex -8.45645 -23.4267 -0.2 + vertex -11.3967 -23.0769 0 + vertex -10.5461 -22.7271 -3 + vertex -11.3967 -23.0769 -3 endloop endfacet - facet normal 0.952162 0.305593 0 + facet normal -0.535069 0.844808 0 outer loop - vertex -8.48242 -23.1923 0 - vertex -8.54451 -22.9989 -0.2 - vertex -8.54451 -22.9989 0 + vertex -11.3967 -23.0769 -3 + vertex -12.4124 -23.7203 0 + vertex -11.3967 -23.0769 0 endloop endfacet - facet normal 0.952162 0.305593 0 + facet normal -0.535069 0.844808 0 outer loop - vertex -8.54451 -22.9989 -0.2 - vertex -8.48242 -23.1923 0 - vertex -8.48242 -23.1923 -0.2 + vertex -12.4124 -23.7203 0 + vertex -11.3967 -23.0769 -3 + vertex -12.4124 -23.7203 -3 endloop endfacet - facet normal 0.844525 0.535516 0 + facet normal -0.673005 0.739638 0 outer loop - vertex -8.54451 -22.9989 0 - vertex -8.64279 -22.8439 -0.2 - vertex -8.64279 -22.8439 0 + vertex -12.4124 -23.7203 -3 + vertex -13.1427 -24.3848 0 + vertex -12.4124 -23.7203 0 endloop endfacet - facet normal 0.844525 0.535516 0 + facet normal -0.673005 0.739638 0 outer loop - vertex -8.64279 -22.8439 -0.2 - vertex -8.54451 -22.9989 0 - vertex -8.54451 -22.9989 -0.2 + vertex -13.1427 -24.3848 0 + vertex -12.4124 -23.7203 -3 + vertex -13.1427 -24.3848 -3 endloop endfacet - facet normal 0.662463 0.749095 -0 + facet normal -0.824808 0.565412 0 outer loop - vertex -8.64279 -22.8439 -0.2 - vertex -8.77736 -22.7249 0 - vertex -8.64279 -22.8439 0 + vertex -13.7062 -25.2068 -3 + vertex -13.1427 -24.3848 0 + vertex -13.1427 -24.3848 -3 endloop endfacet - facet normal 0.662463 0.749095 0 + facet normal -0.824808 0.565412 0 outer loop - vertex -8.77736 -22.7249 0 - vertex -8.64279 -22.8439 -0.2 - vertex -8.77736 -22.7249 -0.2 + vertex -13.1427 -24.3848 0 + vertex -13.7062 -25.2068 -3 + vertex -13.7062 -25.2068 0 endloop endfacet - facet normal 0.447148 0.89446 -0 + facet normal -0.907849 0.419297 0 outer loop - vertex -8.77736 -22.7249 -0.2 - vertex -8.94827 -22.6394 0 - vertex -8.77736 -22.7249 0 + vertex -14.2216 -26.3227 -3 + vertex -13.7062 -25.2068 0 + vertex -13.7062 -25.2068 -3 endloop endfacet - facet normal 0.447148 0.89446 0 + facet normal -0.907849 0.419297 0 outer loop - vertex -8.94827 -22.6394 0 - vertex -8.77736 -22.7249 -0.2 - vertex -8.94827 -22.6394 -0.2 + vertex -13.7062 -25.2068 0 + vertex -14.2216 -26.3227 -3 + vertex -14.2216 -26.3227 0 endloop endfacet - facet normal 0.253452 0.967348 -0 + facet normal -0.926196 0.377043 0 outer loop - vertex -8.94827 -22.6394 -0.2 - vertex -9.15561 -22.5851 0 - vertex -8.94827 -22.6394 0 + vertex -15.3894 -29.1914 -3 + vertex -14.2216 -26.3227 0 + vertex -14.2216 -26.3227 -3 endloop endfacet - facet normal 0.253452 0.967348 0 + facet normal -0.926196 0.377043 0 outer loop - vertex -9.15561 -22.5851 0 - vertex -8.94827 -22.6394 -0.2 - vertex -9.15561 -22.5851 -0.2 - endloop - endfacet - facet normal 0.104613 0.994513 -0 - outer loop - vertex -9.15561 -22.5851 -0.2 - vertex -9.39946 -22.5595 0 - vertex -9.15561 -22.5851 0 - endloop - endfacet - facet normal 0.104613 0.994513 0 - outer loop - vertex -9.39946 -22.5595 0 - vertex -9.15561 -22.5851 -0.2 - vertex -9.39946 -22.5595 -0.2 - endloop - endfacet - facet normal -0.0020677 0.999998 0 - outer loop - vertex -9.39946 -22.5595 -0.2 - vertex -9.67988 -22.56 0 - vertex -9.39946 -22.5595 0 - endloop - endfacet - facet normal -0.0020677 0.999998 0 - outer loop - vertex -9.67988 -22.56 0 - vertex -9.39946 -22.5595 -0.2 - vertex -9.67988 -22.56 -0.2 - endloop - endfacet - facet normal -0.129535 0.991575 0 - outer loop - vertex -9.67988 -22.56 -0.2 - vertex -10.0796 -22.6123 0 - vertex -9.67988 -22.56 0 - endloop - endfacet - facet normal -0.129535 0.991575 0 - outer loop - vertex -10.0796 -22.6123 0 - vertex -9.67988 -22.56 -0.2 - vertex -10.0796 -22.6123 -0.2 - endloop - endfacet - facet normal -0.24491 0.969546 0 - outer loop - vertex -10.0796 -22.6123 -0.2 - vertex -10.5344 -22.7271 0 - vertex -10.0796 -22.6123 0 - endloop - endfacet - facet normal -0.24491 0.969546 0 - outer loop - vertex -10.5344 -22.7271 0 - vertex -10.0796 -22.6123 -0.2 - vertex -10.5344 -22.7271 -0.2 - endloop - endfacet - facet normal -0.333557 0.94273 0 - outer loop - vertex -10.5344 -22.7271 -0.2 - vertex -10.9881 -22.8877 0 - vertex -10.5344 -22.7271 0 - endloop - endfacet - facet normal -0.333557 0.94273 0 - outer loop - vertex -10.9881 -22.8877 0 - vertex -10.5344 -22.7271 -0.2 - vertex -10.9881 -22.8877 -0.2 - endloop - endfacet - facet normal -0.430494 0.902594 0 - outer loop - vertex -10.9881 -22.8877 -0.2 - vertex -11.3849 -23.0769 0 - vertex -10.9881 -22.8877 0 - endloop - endfacet - facet normal -0.430494 0.902594 0 - outer loop - vertex -11.3849 -23.0769 0 - vertex -10.9881 -22.8877 -0.2 - vertex -11.3849 -23.0769 -0.2 - endloop - endfacet - facet normal -0.511004 0.859578 0 - outer loop - vertex -11.3849 -23.0769 -0.2 - vertex -11.9359 -23.4045 0 - vertex -11.3849 -23.0769 0 - endloop - endfacet - facet normal -0.511004 0.859578 0 - outer loop - vertex -11.9359 -23.4045 0 - vertex -11.3849 -23.0769 -0.2 - vertex -11.9359 -23.4045 -0.2 - endloop - endfacet - facet normal -0.561997 0.827139 0 - outer loop - vertex -11.9359 -23.4045 -0.2 - vertex -12.4007 -23.7203 0 - vertex -11.9359 -23.4045 0 - endloop - endfacet - facet normal -0.561997 0.827139 0 - outer loop - vertex -12.4007 -23.7203 0 - vertex -11.9359 -23.4045 -0.2 - vertex -12.4007 -23.7203 -0.2 - endloop - endfacet - facet normal -0.632295 0.774728 0 - outer loop - vertex -12.4007 -23.7203 -0.2 - vertex -12.7941 -24.0414 0 - vertex -12.4007 -23.7203 0 - endloop - endfacet - facet normal -0.632295 0.774728 0 - outer loop - vertex -12.7941 -24.0414 0 - vertex -12.4007 -23.7203 -0.2 - vertex -12.7941 -24.0414 -0.2 - endloop - endfacet - facet normal -0.713871 0.700277 0 - outer loop - vertex -13.131 -24.3848 -0.2 - vertex -12.7941 -24.0414 0 - vertex -12.7941 -24.0414 -0.2 - endloop - endfacet - facet normal -0.713871 0.700277 0 - outer loop - vertex -12.7941 -24.0414 0 - vertex -13.131 -24.3848 -0.2 - vertex -13.131 -24.3848 0 - endloop - endfacet - facet normal -0.791901 0.61065 0 - outer loop - vertex -13.4262 -24.7676 -0.2 - vertex -13.131 -24.3848 0 - vertex -13.131 -24.3848 -0.2 - endloop - endfacet - facet normal -0.791901 0.61065 0 - outer loop - vertex -13.131 -24.3848 0 - vertex -13.4262 -24.7676 -0.2 - vertex -13.4262 -24.7676 0 - endloop - endfacet - facet normal -0.853364 0.521315 0 - outer loop - vertex -13.6945 -25.2068 -0.2 - vertex -13.4262 -24.7676 0 - vertex -13.4262 -24.7676 -0.2 - endloop - endfacet - facet normal -0.853364 0.521315 0 - outer loop - vertex -13.4262 -24.7676 0 - vertex -13.6945 -25.2068 -0.2 - vertex -13.6945 -25.2068 0 - endloop - endfacet - facet normal -0.894467 0.447134 0 - outer loop - vertex -13.9508 -25.7195 -0.2 - vertex -13.6945 -25.2068 0 - vertex -13.6945 -25.2068 -0.2 - endloop - endfacet - facet normal -0.894467 0.447134 0 - outer loop - vertex -13.6945 -25.2068 0 - vertex -13.9508 -25.7195 -0.2 - vertex -13.9508 -25.7195 0 - endloop - endfacet - facet normal -0.918824 0.394667 0 - outer loop - vertex -14.2098 -26.3227 -0.2 - vertex -13.9508 -25.7195 0 - vertex -13.9508 -25.7195 -0.2 - endloop - endfacet - facet normal -0.918824 0.394667 0 - outer loop - vertex -13.9508 -25.7195 0 - vertex -14.2098 -26.3227 -0.2 - vertex -14.2098 -26.3227 0 - endloop - endfacet - facet normal -0.926196 0.377042 0 - outer loop - vertex -15.3777 -29.1914 -0.2 - vertex -14.2098 -26.3227 0 - vertex -14.2098 -26.3227 -0.2 - endloop - endfacet - facet normal -0.926196 0.377042 0 - outer loop - vertex -14.2098 -26.3227 0 - vertex -15.3777 -29.1914 -0.2 - vertex -15.3777 -29.1914 0 + vertex -14.2216 -26.3227 0 + vertex -15.3894 -29.1914 -3 + vertex -15.3894 -29.1914 0 endloop endfacet facet normal -0.925675 0.37832 0 outer loop - vertex -16.8163 -32.7116 -0.2 - vertex -15.3777 -29.1914 0 - vertex -15.3777 -29.1914 -0.2 + vertex -16.8281 -32.7116 -3 + vertex -15.3894 -29.1914 0 + vertex -15.3894 -29.1914 -3 endloop endfacet facet normal -0.925675 0.37832 0 outer loop - vertex -15.3777 -29.1914 0 - vertex -16.8163 -32.7116 -0.2 - vertex -16.8163 -32.7116 0 + vertex -15.3894 -29.1914 0 + vertex -16.8281 -32.7116 -3 + vertex -16.8281 -32.7116 0 endloop endfacet - facet normal -0.928735 0.370745 0 + facet normal -0.944728 0.327855 0 outer loop - vertex -17.1674 -33.591 -0.2 - vertex -16.8163 -32.7116 0 - vertex -16.8163 -32.7116 -0.2 + vertex -17.7285 -35.3062 -3 + vertex -16.8281 -32.7116 0 + vertex -16.8281 -32.7116 -3 endloop endfacet - facet normal -0.928735 0.370745 0 + facet normal -0.944728 0.327855 0 outer loop - vertex -16.8163 -32.7116 0 - vertex -17.1674 -33.591 -0.2 - vertex -17.1674 -33.591 0 + vertex -16.8281 -32.7116 0 + vertex -17.7285 -35.3062 -3 + vertex -17.7285 -35.3062 0 endloop endfacet - facet normal -0.937631 0.347632 0 + facet normal -0.998333 -0.0577213 0 outer loop - vertex -17.4329 -34.3072 -0.2 - vertex -17.1674 -33.591 0 - vertex -17.1674 -33.591 -0.2 + vertex -17.6987 -35.8223 -3 + vertex -17.7285 -35.3062 0 + vertex -17.7285 -35.3062 -3 endloop endfacet - facet normal -0.937631 0.347632 0 + facet normal -0.998333 -0.0577213 0 outer loop - vertex -17.1674 -33.591 0 - vertex -17.4329 -34.3072 -0.2 - vertex -17.4329 -34.3072 0 + vertex -17.7285 -35.3062 0 + vertex -17.6987 -35.8223 -3 + vertex -17.6987 -35.8223 0 endloop endfacet - facet normal -0.951989 0.306132 0 + facet normal -0.412173 -0.911106 0 outer loop - vertex -17.6153 -34.8741 -0.2 - vertex -17.4329 -34.3072 0 - vertex -17.4329 -34.3072 -0.2 + vertex -17.6987 -35.8223 -3 + vertex -17.3742 -35.9691 0 + vertex -17.6987 -35.8223 0 endloop endfacet - facet normal -0.951989 0.306132 0 + facet normal -0.412173 -0.911106 -0 outer loop - vertex -17.4329 -34.3072 0 - vertex -17.6153 -34.8741 -0.2 - vertex -17.6153 -34.8741 0 + vertex -17.3742 -35.9691 0 + vertex -17.6987 -35.8223 -3 + vertex -17.3742 -35.9691 -3 endloop endfacet - facet normal -0.973485 0.228749 0 + facet normal -0.297585 -0.954695 0 outer loop - vertex -17.7168 -35.3062 -0.2 - vertex -17.6153 -34.8741 0 - vertex -17.6153 -34.8741 -0.2 + vertex -17.3742 -35.9691 -3 + vertex -16.5846 -36.2152 0 + vertex -17.3742 -35.9691 0 endloop endfacet - facet normal -0.973485 0.228749 0 + facet normal -0.297585 -0.954695 -0 outer loop - vertex -17.6153 -34.8741 0 - vertex -17.7168 -35.3062 -0.2 - vertex -17.7168 -35.3062 0 + vertex -16.5846 -36.2152 0 + vertex -17.3742 -35.9691 -3 + vertex -16.5846 -36.2152 -3 endloop endfacet - facet normal -0.992299 0.123865 0 + facet normal -0.829044 -0.559183 0 outer loop - vertex -17.738 -35.4761 -0.2 - vertex -17.7168 -35.3062 0 - vertex -17.7168 -35.3062 -0.2 + vertex -16.2226 -36.752 -3 + vertex -16.5846 -36.2152 0 + vertex -16.5846 -36.2152 -3 endloop endfacet - facet normal -0.992299 0.123865 0 + facet normal -0.829044 -0.559183 0 outer loop - vertex -17.7168 -35.3062 0 - vertex -17.738 -35.4761 -0.2 - vertex -17.738 -35.4761 0 + vertex -16.5846 -36.2152 0 + vertex -16.2226 -36.752 -3 + vertex -16.2226 -36.752 0 endloop endfacet - facet normal -0.99991 0.0134015 0 + facet normal -0.876406 0.481572 0 outer loop - vertex -17.7399 -35.6175 -0.2 - vertex -17.738 -35.4761 0 - vertex -17.738 -35.4761 -0.2 + vertex -16.6989 -37.6188 -3 + vertex -16.2226 -36.752 0 + vertex -16.2226 -36.752 -3 endloop endfacet - facet normal -0.99991 0.0134015 0 + facet normal -0.876406 0.481572 0 outer loop - vertex -17.738 -35.4761 0 - vertex -17.7399 -35.6175 -0.2 - vertex -17.7399 -35.6175 0 + vertex -16.2226 -36.752 0 + vertex -16.6989 -37.6188 -3 + vertex -16.6989 -37.6188 0 endloop endfacet - facet normal -0.989073 -0.147424 0 + facet normal -0.678562 0.734543 0 outer loop - vertex -17.7228 -35.7323 -0.2 - vertex -17.7399 -35.6175 0 - vertex -17.7399 -35.6175 -0.2 + vertex -16.6989 -37.6188 -3 + vertex -17.033 -37.9274 0 + vertex -16.6989 -37.6188 0 endloop endfacet - facet normal -0.989073 -0.147424 0 + facet normal -0.678562 0.734543 0 outer loop - vertex -17.7399 -35.6175 0 - vertex -17.7228 -35.7323 -0.2 - vertex -17.7228 -35.7323 0 + vertex -17.033 -37.9274 0 + vertex -16.6989 -37.6188 -3 + vertex -17.033 -37.9274 -3 endloop endfacet - facet normal -0.929053 -0.369947 0 + facet normal -0.276188 0.961104 0 outer loop - vertex -17.6869 -35.8223 -0.2 - vertex -17.7228 -35.7323 0 - vertex -17.7228 -35.7323 -0.2 + vertex -17.033 -37.9274 -3 + vertex -17.5781 -38.0841 0 + vertex -17.033 -37.9274 0 endloop endfacet - facet normal -0.929053 -0.369947 0 + facet normal -0.276188 0.961104 0 outer loop - vertex -17.7228 -35.7323 0 - vertex -17.6869 -35.8223 -0.2 - vertex -17.6869 -35.8223 0 + vertex -17.5781 -38.0841 0 + vertex -17.033 -37.9274 -3 + vertex -17.5781 -38.0841 -3 endloop endfacet - facet normal -0.776679 -0.629897 0 + facet normal -0.0141874 0.999899 0 outer loop - vertex -17.6327 -35.8892 -0.2 - vertex -17.6869 -35.8223 0 - vertex -17.6869 -35.8223 -0.2 + vertex -17.5781 -38.0841 -3 + vertex -20.8226 -38.1301 0 + vertex -17.5781 -38.0841 0 endloop endfacet - facet normal -0.776679 -0.629897 0 + facet normal -0.0141874 0.999899 0 outer loop - vertex -17.6869 -35.8223 0 - vertex -17.6327 -35.8892 -0.2 - vertex -17.6327 -35.8892 0 + vertex -20.8226 -38.1301 0 + vertex -17.5781 -38.0841 -3 + vertex -20.8226 -38.1301 -3 endloop endfacet - facet normal -0.532937 -0.846155 0 + facet normal 0.0314237 0.999506 -0 outer loop - vertex -17.6327 -35.8892 -0.2 - vertex -17.5603 -35.9348 0 - vertex -17.6327 -35.8892 0 + vertex -20.8226 -38.1301 -3 + vertex -24.8096 -38.0047 0 + vertex -20.8226 -38.1301 0 endloop endfacet - facet normal -0.532937 -0.846155 -0 + facet normal 0.0314237 0.999506 0 outer loop - vertex -17.5603 -35.9348 0 - vertex -17.6327 -35.8892 -0.2 - vertex -17.5603 -35.9348 -0.2 + vertex -24.8096 -38.0047 0 + vertex -20.8226 -38.1301 -3 + vertex -24.8096 -38.0047 -3 endloop endfacet - facet normal -0.277484 -0.96073 0 + facet normal 0.544713 0.838623 -0 outer loop - vertex -17.5603 -35.9348 -0.2 - vertex -17.4702 -35.9608 0 - vertex -17.5603 -35.9348 0 + vertex -24.8096 -38.0047 -3 + vertex -25.0608 -37.8416 0 + vertex -24.8096 -38.0047 0 endloop endfacet - facet normal -0.277484 -0.96073 -0 + facet normal 0.544713 0.838623 0 outer loop - vertex -17.4702 -35.9608 0 - vertex -17.5603 -35.9348 -0.2 - vertex -17.4702 -35.9608 -0.2 + vertex -25.0608 -37.8416 0 + vertex -24.8096 -38.0047 -3 + vertex -25.0608 -37.8416 -3 endloop endfacet - facet normal -0.0767033 -0.997054 0 + facet normal 0.940452 0.339927 0 outer loop - vertex -17.4702 -35.9608 -0.2 - vertex -17.3625 -35.9691 0 - vertex -17.4702 -35.9608 0 + vertex -25.0608 -37.8416 0 + vertex -25.157 -37.5754 -3 + vertex -25.157 -37.5754 0 endloop endfacet - facet normal -0.0767033 -0.997054 -0 + facet normal 0.940452 0.339927 0 outer loop - vertex -17.3625 -35.9691 0 - vertex -17.4702 -35.9608 -0.2 - vertex -17.3625 -35.9691 -0.2 + vertex -25.157 -37.5754 -3 + vertex -25.0608 -37.8416 0 + vertex -25.0608 -37.8416 -3 endloop endfacet - facet normal -0.0829709 -0.996552 0 + facet normal 0.964896 -0.262631 0 outer loop - vertex -17.3625 -35.9691 -0.2 - vertex -17.1493 -35.9869 0 - vertex -17.3625 -35.9691 0 + vertex -25.157 -37.5754 0 + vertex -24.9699 -36.888 -3 + vertex -24.9699 -36.888 0 endloop endfacet - facet normal -0.0829709 -0.996552 -0 + facet normal 0.964896 -0.262631 0 outer loop - vertex -17.1493 -35.9869 0 - vertex -17.3625 -35.9691 -0.2 - vertex -17.1493 -35.9869 -0.2 + vertex -24.9699 -36.888 -3 + vertex -25.157 -37.5754 0 + vertex -25.157 -37.5754 -3 endloop endfacet - facet normal -0.234852 -0.972031 0 + facet normal 0.757107 -0.653291 0 outer loop - vertex -17.1493 -35.9869 -0.2 - vertex -16.942 -36.0369 0 - vertex -17.1493 -35.9869 0 + vertex -24.9699 -36.888 0 + vertex -24.4194 -36.2501 -3 + vertex -24.4194 -36.2501 0 endloop endfacet - facet normal -0.234852 -0.972031 -0 + facet normal 0.757107 -0.653291 0 outer loop - vertex -16.942 -36.0369 0 - vertex -17.1493 -35.9869 -0.2 - vertex -16.942 -36.0369 -0.2 + vertex -24.4194 -36.2501 -3 + vertex -24.9699 -36.888 0 + vertex -24.9699 -36.888 -3 endloop endfacet - facet normal -0.371048 -0.928614 0 + facet normal 0.353851 -0.935302 0 outer loop - vertex -16.942 -36.0369 -0.2 - vertex -16.7476 -36.1146 0 - vertex -16.942 -36.0369 0 + vertex -24.4194 -36.2501 -3 + vertex -23.6767 -35.9691 0 + vertex -24.4194 -36.2501 0 endloop endfacet - facet normal -0.371048 -0.928614 -0 + facet normal 0.353851 -0.935302 0 outer loop - vertex -16.7476 -36.1146 0 - vertex -16.942 -36.0369 -0.2 - vertex -16.7476 -36.1146 -0.2 + vertex -23.6767 -35.9691 0 + vertex -24.4194 -36.2501 -3 + vertex -23.6767 -35.9691 -3 endloop endfacet - facet normal -0.499006 -0.866599 0 + facet normal 0.158077 -0.987427 0 outer loop - vertex -16.7476 -36.1146 -0.2 - vertex -16.5729 -36.2152 0 - vertex -16.7476 -36.1146 0 + vertex -23.6767 -35.9691 -3 + vertex -23.007 -35.8619 0 + vertex -23.6767 -35.9691 0 endloop endfacet - facet normal -0.499006 -0.866599 -0 + facet normal 0.158077 -0.987427 0 outer loop - vertex -16.5729 -36.2152 0 - vertex -16.7476 -36.1146 -0.2 - vertex -16.5729 -36.2152 -0.2 + vertex -23.007 -35.8619 0 + vertex -23.6767 -35.9691 -3 + vertex -23.007 -35.8619 -3 endloop endfacet - facet normal -0.625925 -0.779883 0 + facet normal 0.593681 -0.8047 0 outer loop - vertex -16.5729 -36.2152 -0.2 - vertex -16.4249 -36.334 0 - vertex -16.5729 -36.2152 0 + vertex -23.007 -35.8619 -3 + vertex -22.458 -35.4568 0 + vertex -23.007 -35.8619 0 endloop endfacet - facet normal -0.625925 -0.779883 -0 + facet normal 0.593681 -0.8047 0 outer loop - vertex -16.4249 -36.334 0 - vertex -16.5729 -36.2152 -0.2 - vertex -16.4249 -36.334 -0.2 + vertex -22.458 -35.4568 0 + vertex -23.007 -35.8619 -3 + vertex -22.458 -35.4568 -3 endloop endfacet - facet normal -0.756453 -0.654048 0 + facet normal 0.83817 -0.545409 0 outer loop - vertex -16.3106 -36.4662 -0.2 - vertex -16.4249 -36.334 0 - vertex -16.4249 -36.334 -0.2 + vertex -22.458 -35.4568 0 + vertex -21.9191 -34.6287 -3 + vertex -21.9191 -34.6287 0 endloop endfacet - facet normal -0.756453 -0.654048 0 + facet normal 0.83817 -0.545409 0 outer loop - vertex -16.4249 -36.334 0 - vertex -16.3106 -36.4662 -0.2 - vertex -16.3106 -36.4662 0 + vertex -21.9191 -34.6287 -3 + vertex -22.458 -35.4568 0 + vertex -22.458 -35.4568 -3 endloop endfacet - facet normal -0.886186 -0.46333 0 + facet normal 0.906982 -0.42117 0 outer loop - vertex -16.237 -36.6071 -0.2 - vertex -16.3106 -36.4662 0 - vertex -16.3106 -36.4662 -0.2 + vertex -21.9191 -34.6287 0 + vertex -21.28 -33.2523 -3 + vertex -21.28 -33.2523 0 endloop endfacet - facet normal -0.886186 -0.46333 0 + facet normal 0.906982 -0.42117 0 outer loop - vertex -16.3106 -36.4662 0 - vertex -16.237 -36.6071 -0.2 - vertex -16.237 -36.6071 0 + vertex -21.28 -33.2523 -3 + vertex -21.9191 -34.6287 0 + vertex -21.9191 -34.6287 -3 endloop endfacet - facet normal -0.984159 -0.177288 0 + facet normal 0.922958 -0.384901 0 outer loop - vertex -16.2109 -36.752 -0.2 - vertex -16.237 -36.6071 0 - vertex -16.237 -36.6071 -0.2 + vertex -21.28 -33.2523 0 + vertex -18.5428 -26.6889 -3 + vertex -18.5428 -26.6889 0 endloop endfacet - facet normal -0.984159 -0.177288 0 + facet normal 0.922958 -0.384901 0 outer loop - vertex -16.237 -36.6071 0 - vertex -16.2109 -36.752 -0.2 - vertex -16.2109 -36.752 0 + vertex -18.5428 -26.6889 -3 + vertex -21.28 -33.2523 0 + vertex -21.28 -33.2523 -3 endloop endfacet - facet normal -0.97657 0.215201 0 + facet normal 0.9376 -0.347716 0 outer loop - vertex -16.2485 -36.9225 -0.2 - vertex -16.2109 -36.752 0 - vertex -16.2109 -36.752 -0.2 + vertex -18.5428 -26.6889 0 + vertex -17.299 -23.335 -3 + vertex -17.299 -23.335 0 endloop endfacet - facet normal -0.97657 0.215201 0 + facet normal 0.9376 -0.347716 0 outer loop - vertex -16.2109 -36.752 0 - vertex -16.2485 -36.9225 -0.2 - vertex -16.2485 -36.9225 0 + vertex -17.299 -23.335 -3 + vertex -18.5428 -26.6889 0 + vertex -18.5428 -26.6889 -3 endloop endfacet - facet normal -0.906917 0.42131 0 + facet normal 0.99882 -0.0485627 0 outer loop - vertex -16.3508 -37.1428 -0.2 - vertex -16.2485 -36.9225 0 - vertex -16.2485 -36.9225 -0.2 + vertex -17.299 -23.335 0 + vertex -17.2695 -22.7276 -3 + vertex -17.2695 -22.7276 0 endloop endfacet - facet normal -0.906917 0.42131 0 + facet normal 0.99882 -0.0485627 0 outer loop - vertex -16.2485 -36.9225 0 - vertex -16.3508 -37.1428 -0.2 - vertex -16.3508 -37.1428 0 + vertex -17.2695 -22.7276 -3 + vertex -17.299 -23.335 0 + vertex -17.299 -23.335 -3 endloop endfacet - facet normal -0.847258 0.531182 0 + facet normal 0.171081 0.985257 -0 outer loop - vertex -16.5023 -37.3844 -0.2 - vertex -16.3508 -37.1428 0 - vertex -16.3508 -37.1428 -0.2 + vertex -17.2695 -22.7276 -3 + vertex -17.8179 -22.6324 0 + vertex -17.2695 -22.7276 0 endloop endfacet - facet normal -0.847258 0.531182 0 + facet normal 0.171081 0.985257 0 outer loop - vertex -16.3508 -37.1428 0 - vertex -16.5023 -37.3844 -0.2 - vertex -16.5023 -37.3844 0 + vertex -17.8179 -22.6324 0 + vertex -17.2695 -22.7276 -3 + vertex -17.8179 -22.6324 -3 endloop endfacet - facet normal -0.785088 0.619384 0 + facet normal 0.112446 0.993658 -0 outer loop - vertex -16.6872 -37.6188 -0.2 - vertex -16.5023 -37.3844 0 - vertex -16.5023 -37.3844 -0.2 + vertex -17.8179 -22.6324 -3 + vertex -18.3659 -22.5704 0 + vertex -17.8179 -22.6324 0 endloop endfacet - facet normal -0.785088 0.619384 0 + facet normal 0.112446 0.993658 0 outer loop - vertex -16.5023 -37.3844 0 - vertex -16.6872 -37.6188 -0.2 - vertex -16.6872 -37.6188 0 + vertex -18.3659 -22.5704 0 + vertex -17.8179 -22.6324 -3 + vertex -18.3659 -22.5704 -3 endloop endfacet - facet normal -0.731213 0.68215 0 + facet normal 0.520189 0.854051 -0 outer loop - vertex -16.8516 -37.795 -0.2 - vertex -16.6872 -37.6188 0 - vertex -16.6872 -37.6188 -0.2 + vertex -18.3659 -22.5704 -3 + vertex -18.6886 -22.3738 0 + vertex -18.3659 -22.5704 0 endloop endfacet - facet normal -0.731213 0.68215 0 + facet normal 0.520189 0.854051 0 outer loop - vertex -16.6872 -37.6188 0 - vertex -16.8516 -37.795 -0.2 - vertex -16.8516 -37.795 0 + vertex -18.6886 -22.3738 0 + vertex -18.3659 -22.5704 -3 + vertex -18.6886 -22.3738 -3 endloop endfacet - facet normal -0.615138 0.78842 0 + facet normal 0.953226 0.302258 0 outer loop - vertex -16.8516 -37.795 -0.2 - vertex -17.0213 -37.9274 0 - vertex -16.8516 -37.795 0 + vertex -18.6886 -22.3738 0 + vertex -18.7986 -22.0269 -3 + vertex -18.7986 -22.0269 0 endloop endfacet - facet normal -0.615138 0.78842 0 + facet normal 0.953226 0.302258 0 outer loop - vertex -17.0213 -37.9274 0 - vertex -16.8516 -37.795 -0.2 - vertex -17.0213 -37.9274 -0.2 + vertex -18.7986 -22.0269 -3 + vertex -18.6886 -22.3738 0 + vertex -18.6886 -22.3738 -3 endloop endfacet - facet normal -0.390611 0.920556 0 + facet normal 0.984904 -0.1731 0 outer loop - vertex -17.0213 -37.9274 -0.2 - vertex -17.2437 -38.0218 0 - vertex -17.0213 -37.9274 0 + vertex -18.7986 -22.0269 0 + vertex -18.7084 -21.5139 -3 + vertex -18.7084 -21.5139 0 endloop endfacet - facet normal -0.390611 0.920556 0 + facet normal 0.984904 -0.1731 0 outer loop - vertex -17.2437 -38.0218 0 - vertex -17.0213 -37.9274 -0.2 - vertex -17.2437 -38.0218 -0.2 + vertex -18.7084 -21.5139 -3 + vertex -18.7986 -22.0269 0 + vertex -18.7986 -22.0269 -3 endloop endfacet - facet normal -0.189492 0.981882 0 + facet normal 0.878265 -0.478174 0 outer loop - vertex -17.2437 -38.0218 -0.2 - vertex -17.5664 -38.0841 0 - vertex -17.2437 -38.0218 0 + vertex -18.7084 -21.5139 0 + vertex -18.4336 -21.0091 -3 + vertex -18.4336 -21.0091 0 endloop endfacet - facet normal -0.189492 0.981882 0 + facet normal 0.878265 -0.478174 0 outer loop - vertex -17.5664 -38.0841 0 - vertex -17.2437 -38.0218 -0.2 - vertex -17.5664 -38.0841 -0.2 + vertex -18.4336 -21.0091 -3 + vertex -18.7084 -21.5139 0 + vertex -18.7084 -21.5139 -3 endloop endfacet - facet normal -0.0764443 0.997074 0 + facet normal 0.488581 -0.872518 0 outer loop - vertex -17.5664 -38.0841 -0.2 - vertex -18.0369 -38.1201 0 - vertex -17.5664 -38.0841 0 + vertex -18.4336 -21.0091 -3 + vertex -17.9982 -20.7653 0 + vertex -18.4336 -21.0091 0 endloop endfacet - facet normal -0.0764443 0.997074 0 + facet normal 0.488581 -0.872518 0 outer loop - vertex -18.0369 -38.1201 0 - vertex -17.5664 -38.0841 -0.2 - vertex -18.0369 -38.1201 -0.2 + vertex -17.9982 -20.7653 0 + vertex -18.4336 -21.0091 -3 + vertex -17.9982 -20.7653 -3 endloop endfacet - facet normal -0.0236695 0.99972 0 + facet normal 0.293895 -0.955838 0 outer loop - vertex -18.0369 -38.1201 -0.2 - vertex -18.7028 -38.1359 0 - vertex -18.0369 -38.1201 0 + vertex -17.9982 -20.7653 -3 + vertex -15.1553 -19.8912 0 + vertex -17.9982 -20.7653 0 endloop endfacet - facet normal -0.0236695 0.99972 0 + facet normal 0.293895 -0.955838 0 outer loop - vertex -18.7028 -38.1359 0 - vertex -18.0369 -38.1201 -0.2 - vertex -18.7028 -38.1359 -0.2 + vertex -15.1553 -19.8912 0 + vertex -17.9982 -20.7653 -3 + vertex -15.1553 -19.8912 -3 endloop endfacet - facet normal 0.00275597 0.999996 -0 + facet normal 0.257693 -0.966227 0 outer loop - vertex -18.7028 -38.1359 -0.2 - vertex -20.8109 -38.1301 0 - vertex -18.7028 -38.1359 0 + vertex -15.1553 -19.8912 -3 + vertex -12.3137 -19.1333 0 + vertex -15.1553 -19.8912 0 endloop endfacet - facet normal 0.00275597 0.999996 0 + facet normal 0.257693 -0.966227 0 outer loop - vertex -20.8109 -38.1301 0 - vertex -18.7028 -38.1359 -0.2 - vertex -20.8109 -38.1301 -0.2 + vertex -12.3137 -19.1333 0 + vertex -15.1553 -19.8912 -3 + vertex -12.3137 -19.1333 -3 endloop endfacet - facet normal 0.0176671 0.999844 -0 + facet normal -0.225556 -0.97423 0 outer loop - vertex -20.8109 -38.1301 -0.2 - vertex -23.4866 -38.0828 0 - vertex -20.8109 -38.1301 0 + vertex -12.3137 -19.1333 -3 + vertex -11.9141 -19.2259 0 + vertex -12.3137 -19.1333 0 endloop endfacet - facet normal 0.0176671 0.999844 0 + facet normal -0.225556 -0.97423 -0 outer loop - vertex -23.4866 -38.0828 0 - vertex -20.8109 -38.1301 -0.2 - vertex -23.4866 -38.0828 -0.2 + vertex -11.9141 -19.2259 0 + vertex -12.3137 -19.1333 -3 + vertex -11.9141 -19.2259 -3 endloop endfacet - facet normal 0.0417305 0.999129 -0 + facet normal -0.569265 -0.822154 0 outer loop - vertex -23.4866 -38.0828 -0.2 - vertex -24.3782 -38.0456 0 - vertex -23.4866 -38.0828 0 + vertex 47.2139 -19.2263 -3 + vertex 47.7267 -19.5813 0 + vertex 47.2139 -19.2263 0 endloop endfacet - facet normal 0.0417305 0.999129 0 + facet normal -0.569265 -0.822154 -0 outer loop - vertex -24.3782 -38.0456 0 - vertex -23.4866 -38.0828 -0.2 - vertex -24.3782 -38.0456 -0.2 + vertex 47.7267 -19.5813 0 + vertex 47.2139 -19.2263 -3 + vertex 47.7267 -19.5813 -3 endloop endfacet - facet normal 0.0968237 0.995302 -0 + facet normal -0.900824 -0.434184 0 outer loop - vertex -24.3782 -38.0456 -0.2 - vertex -24.7978 -38.0047 0 - vertex -24.3782 -38.0456 0 + vertex 47.9875 -20.1225 -3 + vertex 47.7267 -19.5813 0 + vertex 47.7267 -19.5813 -3 endloop endfacet - facet normal 0.0968237 0.995302 0 + facet normal -0.900824 -0.434184 0 outer loop - vertex -24.7978 -38.0047 0 - vertex -24.3782 -38.0456 -0.2 - vertex -24.7978 -38.0047 -0.2 + vertex 47.7267 -19.5813 0 + vertex 47.9875 -20.1225 -3 + vertex 47.9875 -20.1225 0 endloop endfacet - facet normal 0.412814 0.910815 -0 + facet normal -0.988067 0.154023 0 outer loop - vertex -24.7978 -38.0047 -0.2 - vertex -24.9442 -37.9384 0 - vertex -24.7978 -38.0047 0 + vertex 47.8425 -21.0531 -3 + vertex 47.9875 -20.1225 0 + vertex 47.9875 -20.1225 -3 endloop endfacet - facet normal 0.412814 0.910815 0 + facet normal -0.988067 0.154023 0 outer loop - vertex -24.9442 -37.9384 0 - vertex -24.7978 -38.0047 -0.2 - vertex -24.9442 -37.9384 -0.2 + vertex 47.9875 -20.1225 0 + vertex 47.8425 -21.0531 -3 + vertex 47.8425 -21.0531 0 endloop endfacet - facet normal 0.678412 0.734682 -0 + facet normal -0.94959 0.313495 0 outer loop - vertex -24.9442 -37.9384 -0.2 - vertex -25.0491 -37.8416 0 - vertex -24.9442 -37.9384 0 + vertex 47.5305 -21.9981 -3 + vertex 47.8425 -21.0531 0 + vertex 47.8425 -21.0531 -3 endloop endfacet - facet normal 0.678412 0.734682 0 + facet normal -0.94959 0.313495 0 outer loop - vertex -25.0491 -37.8416 0 - vertex -24.9442 -37.9384 -0.2 - vertex -25.0491 -37.8416 -0.2 + vertex 47.8425 -21.0531 0 + vertex 47.5305 -21.9981 -3 + vertex 47.5305 -21.9981 0 endloop endfacet - facet normal 0.880101 0.474787 0 + facet normal -0.87808 0.478513 0 outer loop - vertex -25.0491 -37.8416 0 - vertex -25.1152 -37.719 -0.2 - vertex -25.1152 -37.719 0 + vertex 47.0957 -22.796 -3 + vertex 47.5305 -21.9981 0 + vertex 47.5305 -21.9981 -3 endloop endfacet - facet normal 0.880101 0.474787 0 + facet normal -0.87808 0.478513 0 outer loop - vertex -25.1152 -37.719 -0.2 - vertex -25.0491 -37.8416 0 - vertex -25.0491 -37.8416 -0.2 + vertex 47.5305 -21.9981 0 + vertex 47.0957 -22.796 -3 + vertex 47.0957 -22.796 0 endloop endfacet - facet normal 0.978769 0.204965 0 + facet normal -0.768497 0.639853 0 outer loop - vertex -25.1152 -37.719 0 - vertex -25.1453 -37.5754 -0.2 - vertex -25.1453 -37.5754 0 + vertex 46.5684 -23.4293 -3 + vertex 47.0957 -22.796 0 + vertex 47.0957 -22.796 -3 endloop endfacet - facet normal 0.978769 0.204965 0 + facet normal -0.768497 0.639853 0 outer loop - vertex -25.1453 -37.5754 -0.2 - vertex -25.1152 -37.719 0 - vertex -25.1152 -37.719 -0.2 + vertex 47.0957 -22.796 0 + vertex 46.5684 -23.4293 -3 + vertex 46.5684 -23.4293 0 endloop endfacet - facet normal 0.99978 -0.0209726 0 + facet normal -0.607748 0.79413 0 outer loop - vertex -25.1453 -37.5754 0 - vertex -25.1419 -37.4158 -0.2 - vertex -25.1419 -37.4158 0 + vertex 46.5684 -23.4293 -3 + vertex 45.9792 -23.8802 0 + vertex 46.5684 -23.4293 0 endloop endfacet - facet normal 0.99978 -0.0209726 0 + facet normal -0.607748 0.79413 0 outer loop - vertex -25.1419 -37.4158 -0.2 - vertex -25.1453 -37.5754 0 - vertex -25.1453 -37.5754 -0.2 + vertex 45.9792 -23.8802 0 + vertex 46.5684 -23.4293 -3 + vertex 45.9792 -23.8802 -3 endloop endfacet - facet normal 0.980708 -0.195479 0 + facet normal -0.374765 0.92712 0 outer loop - vertex -25.1419 -37.4158 0 - vertex -25.1078 -37.2448 -0.2 - vertex -25.1078 -37.2448 0 + vertex 45.9792 -23.8802 -3 + vertex 45.3585 -24.1311 0 + vertex 45.9792 -23.8802 0 endloop endfacet - facet normal 0.980708 -0.195479 0 + facet normal -0.374765 0.92712 0 outer loop - vertex -25.1078 -37.2448 -0.2 - vertex -25.1419 -37.4158 0 - vertex -25.1419 -37.4158 -0.2 + vertex 45.3585 -24.1311 0 + vertex 45.9792 -23.8802 -3 + vertex 45.3585 -24.1311 -3 endloop endfacet - facet normal 0.94384 -0.330404 0 + facet normal -0.0533306 0.998577 0 outer loop - vertex -25.1078 -37.2448 0 - vertex -25.0457 -37.0673 -0.2 - vertex -25.0457 -37.0673 0 + vertex 45.3585 -24.1311 -3 + vertex 44.7368 -24.1643 0 + vertex 45.3585 -24.1311 0 endloop endfacet - facet normal 0.94384 -0.330404 0 + facet normal -0.0533306 0.998577 0 outer loop - vertex -25.0457 -37.0673 -0.2 - vertex -25.1078 -37.2448 0 - vertex -25.1078 -37.2448 -0.2 + vertex 44.7368 -24.1643 0 + vertex 45.3585 -24.1311 -3 + vertex 44.7368 -24.1643 -3 endloop endfacet - facet normal 0.898573 -0.438825 0 + facet normal 0.323025 0.94639 -0 outer loop - vertex -25.0457 -37.0673 0 - vertex -24.9582 -36.888 -0.2 - vertex -24.9582 -36.888 0 + vertex 44.7368 -24.1643 -3 + vertex 44.1445 -23.9621 0 + vertex 44.7368 -24.1643 0 endloop endfacet - facet normal 0.898573 -0.438825 0 + facet normal 0.323025 0.94639 0 outer loop - vertex -24.9582 -36.888 -0.2 - vertex -25.0457 -37.0673 0 - vertex -25.0457 -37.0673 -0.2 + vertex 44.1445 -23.9621 0 + vertex 44.7368 -24.1643 -3 + vertex 44.1445 -23.9621 -3 endloop endfacet - facet normal 0.847669 -0.530525 0 + facet normal 0.649875 0.760041 -0 outer loop - vertex -24.9582 -36.888 0 - vertex -24.8479 -36.7119 -0.2 - vertex -24.8479 -36.7119 0 + vertex 44.1445 -23.9621 -3 + vertex 43.6122 -23.5069 0 + vertex 44.1445 -23.9621 0 endloop endfacet - facet normal 0.847669 -0.530525 0 + facet normal 0.649875 0.760041 0 outer loop - vertex -24.8479 -36.7119 -0.2 - vertex -24.9582 -36.888 0 - vertex -24.9582 -36.888 -0.2 + vertex 43.6122 -23.5069 0 + vertex 44.1445 -23.9621 -3 + vertex 43.6122 -23.5069 -3 endloop endfacet - facet normal 0.790663 -0.612252 0 + facet normal 0.613628 0.789596 -0 outer loop - vertex -24.8479 -36.7119 0 - vertex -24.7177 -36.5437 -0.2 - vertex -24.7177 -36.5437 0 + vertex 43.6122 -23.5069 -3 + vertex 42.7682 -22.851 0 + vertex 43.6122 -23.5069 0 endloop endfacet - facet normal 0.790663 -0.612252 0 + facet normal 0.613628 0.789596 0 outer loop - vertex -24.7177 -36.5437 -0.2 - vertex -24.8479 -36.7119 0 - vertex -24.8479 -36.7119 -0.2 + vertex 42.7682 -22.851 0 + vertex 43.6122 -23.5069 -3 + vertex 42.7682 -22.851 -3 endloop endfacet - facet normal 0.7253 -0.688433 0 + facet normal -0.589043 0.808102 0 outer loop - vertex -24.7177 -36.5437 0 - vertex -24.57 -36.3881 -0.2 - vertex -24.57 -36.3881 0 + vertex 42.7682 -22.851 -3 + vertex 41.2986 -23.9223 0 + vertex 42.7682 -22.851 0 endloop endfacet - facet normal 0.7253 -0.688433 0 + facet normal -0.589043 0.808102 0 outer loop - vertex -24.57 -36.3881 -0.2 - vertex -24.7177 -36.5437 0 - vertex -24.7177 -36.5437 -0.2 + vertex 41.2986 -23.9223 0 + vertex 42.7682 -22.851 -3 + vertex 41.2986 -23.9223 -3 endloop endfacet - facet normal 0.647808 -0.761803 0 + facet normal -0.701303 0.712864 0 outer loop - vertex -24.57 -36.3881 -0.2 - vertex -24.4077 -36.2501 0 - vertex -24.57 -36.3881 0 + vertex 41.2986 -23.9223 -3 + vertex 40.5923 -24.6171 0 + vertex 41.2986 -23.9223 0 endloop endfacet - facet normal 0.647808 -0.761803 0 + facet normal -0.701303 0.712864 0 outer loop - vertex -24.4077 -36.2501 0 - vertex -24.57 -36.3881 -0.2 - vertex -24.4077 -36.2501 -0.2 + vertex 40.5923 -24.6171 0 + vertex 41.2986 -23.9223 -3 + vertex 40.5923 -24.6171 -3 endloop endfacet - facet normal 0.553033 -0.833159 0 + facet normal -0.831353 0.555744 0 outer loop - vertex -24.4077 -36.2501 -0.2 - vertex -24.2334 -36.1344 0 - vertex -24.4077 -36.2501 0 + vertex 40.0289 -25.46 -3 + vertex 40.5923 -24.6171 0 + vertex 40.5923 -24.6171 -3 endloop endfacet - facet normal 0.553033 -0.833159 0 + facet normal -0.831353 0.555744 0 outer loop - vertex -24.2334 -36.1344 0 - vertex -24.4077 -36.2501 -0.2 - vertex -24.2334 -36.1344 -0.2 + vertex 40.5923 -24.6171 0 + vertex 40.0289 -25.46 -3 + vertex 40.0289 -25.46 0 endloop endfacet - facet normal 0.434505 -0.900669 0 + facet normal -0.918395 0.395664 0 outer loop - vertex -24.2334 -36.1344 -0.2 - vertex -24.0497 -36.0458 0 - vertex -24.2334 -36.1344 0 + vertex 38.2188 -29.6614 -3 + vertex 40.0289 -25.46 0 + vertex 40.0289 -25.46 -3 endloop endfacet - facet normal 0.434505 -0.900669 0 + facet normal -0.918395 0.395664 0 outer loop - vertex -24.0497 -36.0458 0 - vertex -24.2334 -36.1344 -0.2 - vertex -24.0497 -36.0458 -0.2 + vertex 40.0289 -25.46 0 + vertex 38.2188 -29.6614 -3 + vertex 38.2188 -29.6614 0 endloop endfacet - facet normal 0.285417 -0.958403 0 + facet normal -0.932877 0.360196 0 outer loop - vertex -24.0497 -36.0458 -0.2 - vertex -23.8593 -35.9891 0 - vertex -24.0497 -36.0458 0 + vertex 36.8272 -33.2656 -3 + vertex 38.2188 -29.6614 0 + vertex 38.2188 -29.6614 -3 endloop endfacet - facet normal 0.285417 -0.958403 0 + facet normal -0.932877 0.360196 0 outer loop - vertex -23.8593 -35.9891 0 - vertex -24.0497 -36.0458 -0.2 - vertex -23.8593 -35.9891 -0.2 + vertex 38.2188 -29.6614 0 + vertex 36.8272 -33.2656 -3 + vertex 36.8272 -33.2656 0 endloop endfacet - facet normal 0.1022 -0.994764 0 + facet normal -0.959728 0.28093 0 outer loop - vertex -23.8593 -35.9891 -0.2 - vertex -23.665 -35.9691 0 - vertex -23.8593 -35.9891 0 + vertex 36.2918 -35.0946 -3 + vertex 36.8272 -33.2656 0 + vertex 36.8272 -33.2656 -3 endloop endfacet - facet normal 0.1022 -0.994764 0 + facet normal -0.959728 0.28093 0 outer loop - vertex -23.665 -35.9691 0 - vertex -23.8593 -35.9891 -0.2 - vertex -23.665 -35.9691 -0.2 + vertex 36.8272 -33.2656 0 + vertex 36.2918 -35.0946 -3 + vertex 36.2918 -35.0946 0 endloop endfacet - facet normal 0.0676467 -0.997709 0 + facet normal -0.988492 -0.151276 0 outer loop - vertex -23.665 -35.9691 -0.2 - vertex -23.3082 -35.9449 0 - vertex -23.665 -35.9691 0 + vertex 36.3972 -35.7834 -3 + vertex 36.2918 -35.0946 0 + vertex 36.2918 -35.0946 -3 endloop endfacet - facet normal 0.0676467 -0.997709 0 + facet normal -0.988492 -0.151276 0 outer loop - vertex -23.3082 -35.9449 0 - vertex -23.665 -35.9691 -0.2 - vertex -23.3082 -35.9449 -0.2 + vertex 36.2918 -35.0946 0 + vertex 36.3972 -35.7834 -3 + vertex 36.3972 -35.7834 0 endloop endfacet - facet normal 0.201749 -0.979437 0 + facet normal -0.329373 -0.9442 0 outer loop - vertex -23.3082 -35.9449 -0.2 - vertex -23.1471 -35.9117 0 - vertex -23.3082 -35.9449 0 + vertex 36.3972 -35.7834 -3 + vertex 37.1913 -36.0604 0 + vertex 36.3972 -35.7834 0 endloop endfacet - facet normal 0.201749 -0.979437 0 + facet normal -0.329373 -0.9442 -0 outer loop - vertex -23.1471 -35.9117 0 - vertex -23.3082 -35.9449 -0.2 - vertex -23.1471 -35.9117 -0.2 + vertex 37.1913 -36.0604 0 + vertex 36.3972 -35.7834 -3 + vertex 37.1913 -36.0604 -3 endloop endfacet - facet normal 0.311945 -0.9501 0 + facet normal -0.323821 -0.946118 0 outer loop - vertex -23.1471 -35.9117 -0.2 - vertex -22.9953 -35.8619 0 - vertex -23.1471 -35.9117 0 + vertex 37.1913 -36.0604 -3 + vertex 37.9618 -36.3241 0 + vertex 37.1913 -36.0604 0 endloop endfacet - facet normal 0.311945 -0.9501 0 + facet normal -0.323821 -0.946118 -0 outer loop - vertex -22.9953 -35.8619 0 - vertex -23.1471 -35.9117 -0.2 - vertex -22.9953 -35.8619 -0.2 + vertex 37.9618 -36.3241 0 + vertex 37.1913 -36.0604 -3 + vertex 37.9618 -36.3241 -3 endloop endfacet - facet normal 0.428709 -0.903443 0 + facet normal -0.960551 -0.278105 0 outer loop - vertex -22.9953 -35.8619 -0.2 - vertex -22.8511 -35.7934 0 - vertex -22.9953 -35.8619 0 + vertex 38.113 -36.8464 -3 + vertex 37.9618 -36.3241 0 + vertex 37.9618 -36.3241 -3 endloop endfacet - facet normal 0.428709 -0.903443 0 + facet normal -0.960551 -0.278105 0 outer loop - vertex -22.8511 -35.7934 0 - vertex -22.9953 -35.8619 -0.2 - vertex -22.8511 -35.7934 -0.2 + vertex 37.9618 -36.3241 0 + vertex 38.113 -36.8464 -3 + vertex 38.113 -36.8464 0 endloop endfacet - facet normal 0.540869 -0.841107 0 + facet normal -0.986742 0.162295 0 outer loop - vertex -22.8511 -35.7934 -0.2 - vertex -22.7126 -35.7044 0 - vertex -22.8511 -35.7934 0 + vertex 37.9939 -37.5705 -3 + vertex 38.113 -36.8464 0 + vertex 38.113 -36.8464 -3 endloop endfacet - facet normal 0.540869 -0.841107 0 + facet normal -0.986742 0.162295 0 outer loop - vertex -22.7126 -35.7044 0 - vertex -22.8511 -35.7934 -0.2 - vertex -22.7126 -35.7044 -0.2 + vertex 38.113 -36.8464 0 + vertex 37.9939 -37.5705 -3 + vertex 37.9939 -37.5705 0 endloop endfacet - facet normal 0.638801 -0.769372 0 + facet normal -0.539022 0.842292 0 outer loop - vertex -22.7126 -35.7044 -0.2 - vertex -22.5782 -35.5929 0 - vertex -22.7126 -35.7044 0 + vertex 37.9939 -37.5705 -3 + vertex 37.381 -37.9628 0 + vertex 37.9939 -37.5705 0 endloop endfacet - facet normal 0.638801 -0.769372 0 + facet normal -0.539022 0.842292 0 outer loop - vertex -22.5782 -35.5929 0 - vertex -22.7126 -35.7044 -0.2 - vertex -22.5782 -35.5929 -0.2 + vertex 37.381 -37.9628 0 + vertex 37.9939 -37.5705 -3 + vertex 37.381 -37.9628 -3 endloop endfacet - facet normal 0.717693 -0.69636 0 + facet normal -0.10763 0.994191 0 outer loop - vertex -22.5782 -35.5929 0 - vertex -22.4463 -35.4568 -0.2 - vertex -22.4463 -35.4568 0 + vertex 37.381 -37.9628 -3 + vertex 35.8907 -38.1241 0 + vertex 37.381 -37.9628 0 endloop endfacet - facet normal 0.717693 -0.69636 0 + facet normal -0.10763 0.994191 0 outer loop - vertex -22.4463 -35.4568 -0.2 - vertex -22.5782 -35.5929 0 - vertex -22.5782 -35.5929 -0.2 + vertex 35.8907 -38.1241 0 + vertex 37.381 -37.9628 -3 + vertex 35.8907 -38.1241 -3 endloop endfacet - facet normal 0.801318 -0.598238 0 + facet normal -0.0113945 0.999935 0 outer loop - vertex -22.4463 -35.4568 0 - vertex -22.1824 -35.1035 -0.2 - vertex -22.1824 -35.1035 0 + vertex 35.8907 -38.1241 -3 + vertex 33.1396 -38.1555 0 + vertex 35.8907 -38.1241 0 endloop endfacet - facet normal 0.801318 -0.598238 0 + facet normal -0.0113945 0.999935 0 outer loop - vertex -22.1824 -35.1035 -0.2 - vertex -22.4463 -35.4568 0 - vertex -22.4463 -35.4568 -0.2 + vertex 33.1396 -38.1555 0 + vertex 35.8907 -38.1241 -3 + vertex 33.1396 -38.1555 -3 endloop endfacet - facet normal 0.865265 -0.501314 0 + facet normal 0.0181925 0.999835 -0 outer loop - vertex -22.1824 -35.1035 0 - vertex -21.9074 -34.6287 -0.2 - vertex -21.9074 -34.6287 0 + vertex 33.1396 -38.1555 -3 + vertex 29.8074 -38.0948 0 + vertex 33.1396 -38.1555 0 endloop endfacet - facet normal 0.865265 -0.501314 0 + facet normal 0.0181925 0.999835 0 outer loop - vertex -21.9074 -34.6287 -0.2 - vertex -22.1824 -35.1035 0 - vertex -22.1824 -35.1035 -0.2 + vertex 29.8074 -38.0948 0 + vertex 33.1396 -38.1555 -3 + vertex 29.8074 -38.0948 -3 endloop endfacet - facet normal 0.897795 -0.440414 0 + facet normal 0.170719 0.98532 -0 outer loop - vertex -21.9074 -34.6287 0 - vertex -21.6072 -34.0169 -0.2 - vertex -21.6072 -34.0169 0 + vertex 29.8074 -38.0948 -3 + vertex 28.6431 -37.8931 0 + vertex 29.8074 -38.0948 0 endloop endfacet - facet normal 0.897795 -0.440414 0 + facet normal 0.170719 0.98532 0 outer loop - vertex -21.6072 -34.0169 -0.2 - vertex -21.9074 -34.6287 0 - vertex -21.9074 -34.6287 -0.2 + vertex 28.6431 -37.8931 0 + vertex 29.8074 -38.0948 -3 + vertex 28.6431 -37.8931 -3 endloop endfacet - facet normal 0.914162 -0.405349 0 + facet normal 0.913427 0.407002 0 outer loop - vertex -21.6072 -34.0169 0 - vertex -21.2682 -33.2523 -0.2 - vertex -21.2682 -33.2523 0 + vertex 28.6431 -37.8931 0 + vertex 28.4102 -37.3704 -3 + vertex 28.4102 -37.3704 0 endloop endfacet - facet normal 0.914162 -0.405349 0 + facet normal 0.913427 0.407002 0 outer loop - vertex -21.2682 -33.2523 -0.2 - vertex -21.6072 -34.0169 0 - vertex -21.6072 -34.0169 -0.2 + vertex 28.4102 -37.3704 -3 + vertex 28.6431 -37.8931 0 + vertex 28.6431 -37.8931 -3 endloop endfacet - facet normal 0.920953 -0.389675 0 + facet normal 0.965523 -0.260316 0 outer loop - vertex -21.2682 -33.2523 0 - vertex -19.7699 -29.7113 -0.2 - vertex -19.7699 -29.7113 0 + vertex 28.4102 -37.3704 0 + vertex 28.553 -36.8405 -3 + vertex 28.553 -36.8405 0 endloop endfacet - facet normal 0.920953 -0.389675 0 + facet normal 0.965523 -0.260316 0 outer loop - vertex -19.7699 -29.7113 -0.2 - vertex -21.2682 -33.2523 0 - vertex -21.2682 -33.2523 -0.2 + vertex 28.553 -36.8405 -3 + vertex 28.4102 -37.3704 0 + vertex 28.4102 -37.3704 -3 endloop endfacet - facet normal 0.925287 -0.379267 0 + facet normal 0.697974 -0.716123 0 outer loop - vertex -19.7699 -29.7113 0 - vertex -18.5311 -26.6889 -0.2 - vertex -18.5311 -26.6889 0 + vertex 28.553 -36.8405 -3 + vertex 29.0223 -36.3831 0 + vertex 28.553 -36.8405 0 endloop endfacet - facet normal 0.925287 -0.379267 0 + facet normal 0.697974 -0.716123 0 outer loop - vertex -18.5311 -26.6889 -0.2 - vertex -19.7699 -29.7113 0 - vertex -19.7699 -29.7113 -0.2 + vertex 29.0223 -36.3831 0 + vertex 28.553 -36.8405 -3 + vertex 29.0223 -36.3831 -3 endloop endfacet - facet normal 0.931695 -0.363243 0 + facet normal 0.378617 -0.925554 0 outer loop - vertex -18.5311 -26.6889 0 - vertex -17.6656 -24.469 -0.2 - vertex -17.6656 -24.469 0 + vertex 29.0223 -36.3831 -3 + vertex 29.7686 -36.0779 0 + vertex 29.0223 -36.3831 0 endloop endfacet - facet normal 0.931695 -0.363243 0 + facet normal 0.378617 -0.925554 0 outer loop - vertex -17.6656 -24.469 -0.2 - vertex -18.5311 -26.6889 0 - vertex -18.5311 -26.6889 -0.2 + vertex 29.7686 -36.0779 0 + vertex 29.0223 -36.3831 -3 + vertex 29.7686 -36.0779 -3 endloop endfacet - facet normal 0.941797 -0.336183 0 + facet normal 0.28314 -0.959079 0 outer loop - vertex -17.6656 -24.469 0 - vertex -17.4084 -23.7485 -0.2 - vertex -17.4084 -23.7485 0 + vertex 29.7686 -36.0779 -3 + vertex 30.8837 -35.7486 0 + vertex 29.7686 -36.0779 0 endloop endfacet - facet normal 0.941797 -0.336183 0 + facet normal 0.28314 -0.959079 0 outer loop - vertex -17.4084 -23.7485 -0.2 - vertex -17.6656 -24.469 0 - vertex -17.6656 -24.469 -0.2 + vertex 30.8837 -35.7486 0 + vertex 29.7686 -36.0779 -3 + vertex 30.8837 -35.7486 -3 endloop endfacet - facet normal 0.959662 -0.281158 0 + facet normal 0.670445 -0.741959 0 outer loop - vertex -17.4084 -23.7485 0 - vertex -17.2873 -23.335 -0.2 - vertex -17.2873 -23.335 0 + vertex 30.8837 -35.7486 -3 + vertex 31.6707 -35.0376 0 + vertex 30.8837 -35.7486 0 endloop endfacet - facet normal 0.959662 -0.281158 0 + facet normal 0.670445 -0.741959 0 outer loop - vertex -17.2873 -23.335 -0.2 - vertex -17.4084 -23.7485 0 - vertex -17.4084 -23.7485 -0.2 + vertex 31.6707 -35.0376 0 + vertex 30.8837 -35.7486 -3 + vertex 31.6707 -35.0376 -3 endloop endfacet - facet normal 0.987024 -0.160575 0 + facet normal 0.889774 -0.456402 0 outer loop - vertex -17.2873 -23.335 0 - vertex -17.2226 -22.9371 -0.2 - vertex -17.2226 -22.9371 0 + vertex 31.6707 -35.0376 0 + vertex 32.5255 -33.371 -3 + vertex 32.5255 -33.371 0 endloop endfacet - facet normal 0.987024 -0.160575 0 + facet normal 0.889774 -0.456402 0 outer loop - vertex -17.2226 -22.9371 -0.2 - vertex -17.2873 -23.335 0 - vertex -17.2873 -23.335 -0.2 + vertex 32.5255 -33.371 -3 + vertex 31.6707 -35.0376 0 + vertex 31.6707 -35.0376 -3 endloop endfacet - facet normal 0.999826 0.0186517 0 + facet normal 0.924374 -0.381489 0 outer loop - vertex -17.2226 -22.9371 0 - vertex -17.2249 -22.8126 -0.2 - vertex -17.2249 -22.8126 0 + vertex 32.5255 -33.371 0 + vertex 33.8444 -30.1753 -3 + vertex 33.8444 -30.1753 0 endloop endfacet - facet normal 0.999826 0.0186517 0 + facet normal 0.924374 -0.381489 0 outer loop - vertex -17.2249 -22.8126 -0.2 - vertex -17.2226 -22.9371 0 - vertex -17.2226 -22.9371 -0.2 + vertex 33.8444 -30.1753 -3 + vertex 32.5255 -33.371 0 + vertex 32.5255 -33.371 -3 endloop endfacet - facet normal 0.932644 0.360799 0 + facet normal 0.926524 -0.376236 0 outer loop - vertex -17.2249 -22.8126 0 - vertex -17.2578 -22.7276 -0.2 - vertex -17.2578 -22.7276 0 + vertex 33.8444 -30.1753 0 + vertex 35.3305 -26.5156 -3 + vertex 35.3305 -26.5156 0 endloop endfacet - facet normal 0.932644 0.360799 0 + facet normal 0.926524 -0.376236 0 outer loop - vertex -17.2578 -22.7276 -0.2 - vertex -17.2249 -22.8126 0 - vertex -17.2249 -22.8126 -0.2 + vertex 35.3305 -26.5156 -3 + vertex 33.8444 -30.1753 0 + vertex 33.8444 -30.1753 -3 endloop endfacet - facet normal 0.608972 0.793192 -0 + facet normal 0.946541 -0.322585 0 outer loop - vertex -17.2578 -22.7276 -0.2 - vertex -17.3267 -22.6747 0 - vertex -17.2578 -22.7276 0 + vertex 35.3305 -26.5156 0 + vertex 36.2859 -23.7121 -3 + vertex 36.2859 -23.7121 0 endloop endfacet - facet normal 0.608972 0.793192 0 + facet normal 0.946541 -0.322585 0 outer loop - vertex -17.3267 -22.6747 0 - vertex -17.2578 -22.7276 -0.2 - vertex -17.3267 -22.6747 -0.2 + vertex 36.2859 -23.7121 -3 + vertex 35.3305 -26.5156 0 + vertex 35.3305 -26.5156 -3 endloop endfacet - facet normal 0.249366 0.968409 -0 + facet normal 0.99651 -0.0834774 0 outer loop - vertex -17.3267 -22.6747 -0.2 - vertex -17.4374 -22.6462 0 - vertex -17.3267 -22.6747 0 + vertex 36.2859 -23.7121 0 + vertex 36.3422 -23.0402 -3 + vertex 36.3422 -23.0402 0 endloop endfacet - facet normal 0.249366 0.968409 0 + facet normal 0.99651 -0.0834774 0 outer loop - vertex -17.4374 -22.6462 0 - vertex -17.3267 -22.6747 -0.2 - vertex -17.4374 -22.6462 -0.2 + vertex 36.3422 -23.0402 -3 + vertex 36.2859 -23.7121 0 + vertex 36.2859 -23.7121 -3 endloop endfacet - facet normal 0.0372683 0.999305 -0 + facet normal 0.457043 0.889445 -0 outer loop - vertex -17.4374 -22.6462 -0.2 - vertex -17.8061 -22.6324 0 - vertex -17.4374 -22.6462 0 + vertex 36.3422 -23.0402 -3 + vertex 36.104 -22.9178 0 + vertex 36.3422 -23.0402 0 endloop endfacet - facet normal 0.0372683 0.999305 0 + facet normal 0.457043 0.889445 0 outer loop - vertex -17.8061 -22.6324 0 - vertex -17.4374 -22.6462 -0.2 - vertex -17.8061 -22.6324 -0.2 + vertex 36.104 -22.9178 0 + vertex 36.3422 -23.0402 -3 + vertex 36.104 -22.9178 -3 endloop endfacet - facet normal 0.050033 0.998748 -0 + facet normal -0.010303 0.999947 0 outer loop - vertex -17.8061 -22.6324 -0.2 - vertex -18.1091 -22.6172 0 - vertex -17.8061 -22.6324 0 + vertex 36.104 -22.9178 -3 + vertex 35.2001 -22.9271 0 + vertex 36.104 -22.9178 0 endloop endfacet - facet normal 0.050033 0.998748 0 + facet normal -0.010303 0.999947 0 outer loop - vertex -18.1091 -22.6172 0 - vertex -17.8061 -22.6324 -0.2 - vertex -18.1091 -22.6172 -0.2 + vertex 35.2001 -22.9271 0 + vertex 36.104 -22.9178 -3 + vertex 35.2001 -22.9271 -3 endloop endfacet - facet normal 0.187734 0.98222 -0 + facet normal 0.419058 0.907959 -0 outer loop - vertex -18.1091 -22.6172 -0.2 - vertex -18.3541 -22.5704 0 - vertex -18.1091 -22.6172 0 + vertex 35.2001 -22.9271 -3 + vertex 34.7441 -22.7166 0 + vertex 35.2001 -22.9271 0 endloop endfacet - facet normal 0.187734 0.98222 0 + facet normal 0.419058 0.907959 0 outer loop - vertex -18.3541 -22.5704 0 - vertex -18.1091 -22.6172 -0.2 - vertex -18.3541 -22.5704 -0.2 + vertex 34.7441 -22.7166 0 + vertex 35.2001 -22.9271 -3 + vertex 34.7441 -22.7166 -3 endloop endfacet - facet normal 0.392235 0.919865 -0 + facet normal 0.959742 0.280882 0 outer loop - vertex -18.3541 -22.5704 -0.2 - vertex -18.5429 -22.4899 0 - vertex -18.3541 -22.5704 0 + vertex 34.7441 -22.7166 0 + vertex 34.62 -22.2927 -3 + vertex 34.62 -22.2927 0 endloop endfacet - facet normal 0.392235 0.919865 0 + facet normal 0.959742 0.280882 0 outer loop - vertex -18.5429 -22.4899 0 - vertex -18.3541 -22.5704 -0.2 - vertex -18.5429 -22.4899 -0.2 + vertex 34.62 -22.2927 -3 + vertex 34.7441 -22.7166 0 + vertex 34.7441 -22.7166 -3 endloop endfacet - facet normal 0.654816 0.755788 -0 + facet normal 0.94057 -0.3396 0 outer loop - vertex -18.5429 -22.4899 -0.2 - vertex -18.6769 -22.3738 0 - vertex -18.5429 -22.4899 0 + vertex 34.62 -22.2927 0 + vertex 34.9156 -21.474 -3 + vertex 34.9156 -21.474 0 endloop endfacet - facet normal 0.654816 0.755788 0 + facet normal 0.94057 -0.3396 0 outer loop - vertex -18.6769 -22.3738 0 - vertex -18.5429 -22.4899 -0.2 - vertex -18.6769 -22.3738 -0.2 + vertex 34.9156 -21.474 -3 + vertex 34.62 -22.2927 0 + vertex 34.62 -22.2927 -3 endloop endfacet - facet normal 0.885096 0.465409 0 + facet normal 0.664894 -0.746938 0 outer loop - vertex -18.6769 -22.3738 0 - vertex -18.7577 -22.2202 -0.2 - vertex -18.7577 -22.2202 0 + vertex 34.9156 -21.474 -3 + vertex 35.2187 -21.2043 0 + vertex 34.9156 -21.474 0 endloop endfacet - facet normal 0.885096 0.465409 0 + facet normal 0.664894 -0.746938 0 outer loop - vertex -18.7577 -22.2202 -0.2 - vertex -18.6769 -22.3738 0 - vertex -18.6769 -22.3738 -0.2 + vertex 35.2187 -21.2043 0 + vertex 34.9156 -21.474 -3 + vertex 35.2187 -21.2043 -3 endloop endfacet - facet normal 0.988779 0.149383 0 + facet normal 0.282474 -0.959275 0 outer loop - vertex -18.7577 -22.2202 0 - vertex -18.7869 -22.0269 -0.2 - vertex -18.7869 -22.0269 0 + vertex 35.2187 -21.2043 -3 + vertex 35.5661 -21.102 0 + vertex 35.2187 -21.2043 0 endloop endfacet - facet normal 0.988779 0.149383 0 + facet normal 0.282474 -0.959275 0 outer loop - vertex -18.7869 -22.0269 -0.2 - vertex -18.7577 -22.2202 0 - vertex -18.7577 -22.2202 -0.2 + vertex 35.5661 -21.102 0 + vertex 35.2187 -21.2043 -3 + vertex 35.5661 -21.102 -3 endloop endfacet - facet normal 0.99608 -0.0884566 0 + facet normal 0.319916 -0.947446 0 outer loop - vertex -18.7869 -22.0269 0 - vertex -18.766 -21.7922 -0.2 - vertex -18.766 -21.7922 0 + vertex 35.5661 -21.102 -3 + vertex 38.4798 -20.1181 0 + vertex 35.5661 -21.102 0 endloop endfacet - facet normal 0.99608 -0.0884566 0 + facet normal 0.319916 -0.947446 0 outer loop - vertex -18.766 -21.7922 -0.2 - vertex -18.7869 -22.0269 0 - vertex -18.7869 -22.0269 -0.2 + vertex 38.4798 -20.1181 0 + vertex 35.5661 -21.102 -3 + vertex 38.4798 -20.1181 -3 endloop endfacet - facet normal 0.970344 -0.241728 0 + facet normal 0.306814 -0.951769 0 outer loop - vertex -18.766 -21.7922 0 - vertex -18.6967 -21.5139 -0.2 - vertex -18.6967 -21.5139 0 + vertex 38.4798 -20.1181 -3 + vertex 41.5319 -19.1343 0 + vertex 38.4798 -20.1181 0 endloop endfacet - facet normal 0.970344 -0.241728 0 + facet normal 0.306814 -0.951769 0 outer loop - vertex -18.6967 -21.5139 -0.2 - vertex -18.766 -21.7922 0 - vertex -18.766 -21.7922 -0.2 + vertex 41.5319 -19.1343 0 + vertex 38.4798 -20.1181 -3 + vertex 41.5319 -19.1343 -3 endloop endfacet - facet normal 0.92433 -0.381593 0 + facet normal -0.240332 -0.970691 0 outer loop - vertex -18.6967 -21.5139 0 - vertex -18.5788 -21.2283 -0.2 - vertex -18.5788 -21.2283 0 + vertex 41.5319 -19.1343 -3 + vertex 41.8934 -19.2238 0 + vertex 41.5319 -19.1343 0 endloop endfacet - facet normal 0.92433 -0.381593 0 + facet normal -0.240332 -0.970691 -0 outer loop - vertex -18.5788 -21.2283 -0.2 - vertex -18.6967 -21.5139 0 - vertex -18.6967 -21.5139 -0.2 + vertex 41.8934 -19.2238 0 + vertex 41.5319 -19.1343 -3 + vertex 41.8934 -19.2238 -3 endloop endfacet - facet normal 0.848388 -0.529374 0 + facet normal -0.766739 -0.641959 0 outer loop - vertex -18.5788 -21.2283 0 - vertex -18.5053 -21.1105 -0.2 - vertex -18.5053 -21.1105 0 + vertex 42.1032 -19.4743 -3 + vertex 41.8934 -19.2238 0 + vertex 41.8934 -19.2238 -3 endloop endfacet - facet normal 0.848388 -0.529374 0 + facet normal -0.766739 -0.641959 0 outer loop - vertex -18.5053 -21.1105 -0.2 - vertex -18.5788 -21.2283 0 - vertex -18.5788 -21.2283 -0.2 + vertex 41.8934 -19.2238 0 + vertex 42.1032 -19.4743 -3 + vertex 42.1032 -19.4743 0 endloop endfacet - facet normal 0.772185 -0.635398 0 + facet normal -0.995926 0.090175 0 outer loop - vertex -18.5053 -21.1105 0 - vertex -18.4218 -21.0091 -0.2 - vertex -18.4218 -21.0091 0 + vertex 42.0238 -20.3507 -3 + vertex 42.1032 -19.4743 0 + vertex 42.1032 -19.4743 -3 endloop endfacet - facet normal 0.772185 -0.635398 0 + facet normal -0.995926 0.090175 0 outer loop - vertex -18.4218 -21.0091 -0.2 - vertex -18.5053 -21.1105 0 - vertex -18.5053 -21.1105 -0.2 + vertex 42.1032 -19.4743 0 + vertex 42.0238 -20.3507 -3 + vertex 42.0238 -20.3507 0 endloop endfacet - facet normal 0.673134 -0.739521 0 + facet normal -0.949137 0.314864 0 outer loop - vertex -18.4218 -21.0091 -0.2 - vertex -18.3284 -20.924 0 - vertex -18.4218 -21.0091 0 + vertex 41.8981 -20.7296 -3 + vertex 42.0238 -20.3507 0 + vertex 42.0238 -20.3507 -3 endloop endfacet - facet normal 0.673134 -0.739521 0 + facet normal -0.949137 0.314864 0 outer loop - vertex -18.3284 -20.924 0 - vertex -18.4218 -21.0091 -0.2 - vertex -18.3284 -20.924 -0.2 + vertex 42.0238 -20.3507 0 + vertex 41.8981 -20.7296 -3 + vertex 41.8981 -20.7296 0 endloop endfacet - facet normal 0.553635 -0.832759 0 + facet normal -0.846258 -0.532773 0 outer loop - vertex -18.3284 -20.924 -0.2 - vertex -18.2248 -20.8552 0 - vertex -18.3284 -20.924 0 + vertex 41.971 -20.8453 -3 + vertex 41.8981 -20.7296 0 + vertex 41.8981 -20.7296 -3 endloop endfacet - facet normal 0.553635 -0.832759 0 + facet normal -0.846258 -0.532773 0 outer loop - vertex -18.2248 -20.8552 0 - vertex -18.3284 -20.924 -0.2 - vertex -18.2248 -20.8552 -0.2 + vertex 41.8981 -20.7296 0 + vertex 41.971 -20.8453 -3 + vertex 41.971 -20.8453 0 endloop endfacet - facet normal 0.4209 -0.907107 0 + facet normal 0.512131 -0.858907 0 outer loop - vertex -18.2248 -20.8552 -0.2 - vertex -18.1109 -20.8023 0 - vertex -18.2248 -20.8552 0 + vertex 41.971 -20.8453 -3 + vertex 42.943 -20.2657 0 + vertex 41.971 -20.8453 0 endloop endfacet - facet normal 0.4209 -0.907107 0 + facet normal 0.512131 -0.858907 0 outer loop - vertex -18.1109 -20.8023 0 - vertex -18.2248 -20.8552 -0.2 - vertex -18.1109 -20.8023 -0.2 + vertex 42.943 -20.2657 0 + vertex 41.971 -20.8453 -3 + vertex 42.943 -20.2657 -3 endloop endfacet - facet normal 0.284987 -0.958531 0 + facet normal 0.474768 -0.880111 0 outer loop - vertex -18.1109 -20.8023 -0.2 - vertex -17.9865 -20.7653 0 - vertex -18.1109 -20.8023 0 + vertex 42.943 -20.2657 -3 + vertex 44.5909 -19.3768 0 + vertex 42.943 -20.2657 0 endloop endfacet - facet normal 0.284987 -0.958531 0 + facet normal 0.474768 -0.880111 0 outer loop - vertex -17.9865 -20.7653 0 - vertex -18.1109 -20.8023 -0.2 - vertex -17.9865 -20.7653 -0.2 + vertex 44.5909 -19.3768 0 + vertex 42.943 -20.2657 -3 + vertex 44.5909 -19.3768 -3 endloop endfacet - facet normal 0.279088 -0.960266 0 + facet normal 0.143592 -0.989637 0 outer loop - vertex -17.9865 -20.7653 -0.2 - vertex -16.9393 -20.461 0 - vertex -17.9865 -20.7653 0 + vertex 44.5909 -19.3768 -3 + vertex 46.2623 -19.1343 0 + vertex 44.5909 -19.3768 0 endloop endfacet - facet normal 0.279088 -0.960266 0 + facet normal 0.143592 -0.989637 0 outer loop - vertex -16.9393 -20.461 0 - vertex -17.9865 -20.7653 -0.2 - vertex -16.9393 -20.461 -0.2 + vertex 46.2623 -19.1343 0 + vertex 44.5909 -19.3768 -3 + vertex 46.2623 -19.1343 -3 endloop endfacet - facet normal 0.302435 -0.95317 0 + facet normal -0.096262 -0.995356 0 outer loop - vertex -16.9393 -20.461 -0.2 - vertex -15.1436 -19.8912 0 - vertex -16.9393 -20.461 0 + vertex 46.2623 -19.1343 -3 + vertex 47.2139 -19.2263 0 + vertex 46.2623 -19.1343 0 endloop endfacet - facet normal 0.302435 -0.95317 0 + facet normal -0.096262 -0.995356 -0 outer loop - vertex -15.1436 -19.8912 0 - vertex -16.9393 -20.461 -0.2 - vertex -15.1436 -19.8912 -0.2 + vertex 47.2139 -19.2263 0 + vertex 46.2623 -19.1343 -3 + vertex 47.2139 -19.2263 -3 endloop endfacet - facet normal 0.297661 -0.954672 0 + facet normal -0.989139 0.146981 0 outer loop - vertex -15.1436 -19.8912 -0.2 - vertex -14.1989 -19.5967 0 - vertex -15.1436 -19.8912 0 + vertex 5.19939 38.083 -3 + vertex 5.25321 38.4452 0 + vertex 5.25321 38.4452 -3 endloop endfacet - facet normal 0.297661 -0.954672 0 + facet normal -0.989139 0.146981 0 outer loop - vertex -14.1989 -19.5967 0 - vertex -15.1436 -19.8912 -0.2 - vertex -14.1989 -19.5967 -0.2 + vertex 5.25321 38.4452 0 + vertex 5.19939 38.083 -3 + vertex 5.19939 38.083 0 endloop endfacet - facet normal 0.272658 -0.962111 0 + facet normal -0.909259 0.41623 0 outer loop - vertex -14.1989 -19.5967 -0.2 - vertex -13.3483 -19.3556 0 - vertex -14.1989 -19.5967 0 + vertex 4.72188 37.0399 -3 + vertex 5.19939 38.083 0 + vertex 5.19939 38.083 -3 endloop endfacet - facet normal 0.272658 -0.962111 0 + facet normal -0.909259 0.41623 0 outer loop - vertex -13.3483 -19.3556 0 - vertex -14.1989 -19.5967 -0.2 - vertex -13.3483 -19.3556 -0.2 + vertex 5.19939 38.083 0 + vertex 4.72188 37.0399 -3 + vertex 4.72188 37.0399 0 endloop endfacet - facet normal 0.238231 -0.971209 0 + facet normal -0.923768 0.382952 0 outer loop - vertex -13.3483 -19.3556 -0.2 - vertex -12.6849 -19.1929 0 - vertex -13.3483 -19.3556 0 + vertex 4.30515 36.0346 -3 + vertex 4.72188 37.0399 0 + vertex 4.72188 37.0399 -3 endloop endfacet - facet normal 0.238231 -0.971209 0 + facet normal -0.923768 0.382952 0 outer loop - vertex -12.6849 -19.1929 0 - vertex -13.3483 -19.3556 -0.2 - vertex -12.6849 -19.1929 -0.2 + vertex 4.72188 37.0399 0 + vertex 4.30515 36.0346 -3 + vertex 4.30515 36.0346 0 endloop endfacet - facet normal 0.153595 -0.988134 0 + facet normal -0.970112 0.242658 0 outer loop - vertex -12.6849 -19.1929 -0.2 - vertex -12.302 -19.1333 0 - vertex -12.6849 -19.1929 0 + vertex 3.93589 34.5584 -3 + vertex 4.30515 36.0346 0 + vertex 4.30515 36.0346 -3 endloop endfacet - facet normal 0.153595 -0.988134 0 + facet normal -0.970112 0.242658 0 outer loop - vertex -12.302 -19.1333 0 - vertex -12.6849 -19.1929 -0.2 - vertex -12.302 -19.1333 -0.2 + vertex 4.30515 36.0346 0 + vertex 3.93589 34.5584 -3 + vertex 3.93589 34.5584 0 endloop endfacet - facet normal -0.105808 -0.994387 0 + facet normal -0.993642 0.112587 0 outer loop - vertex -12.302 -19.1333 -0.2 - vertex -12.0792 -19.1571 0 - vertex -12.302 -19.1333 0 + vertex 3.57109 31.3388 -3 + vertex 3.93589 34.5584 0 + vertex 3.93589 34.5584 -3 endloop endfacet - facet normal -0.105808 -0.994387 -0 + facet normal -0.993642 0.112587 0 outer loop - vertex -12.0792 -19.1571 0 - vertex -12.302 -19.1333 -0.2 - vertex -12.0792 -19.1571 -0.2 + vertex 3.93589 34.5584 0 + vertex 3.57109 31.3388 -3 + vertex 3.57109 31.3388 0 endloop endfacet - facet normal -0 0 1 + facet normal -0.99786 -0.0653884 0 outer loop - vertex 35.6833 -25.6471 -0.2 - vertex 39.342 -26.9688 -0.2 - vertex 35.957 -24.8864 -0.2 + vertex 3.67763 29.7129 -3 + vertex 3.57109 31.3388 0 + vertex 3.57109 31.3388 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0.99786 -0.0653884 0 outer loop - vertex 35.3422 -26.5156 -0.2 - vertex 39.342 -26.9688 -0.2 - vertex 35.6833 -25.6471 -0.2 + vertex 3.57109 31.3388 0 + vertex 3.67763 29.7129 -3 + vertex 3.67763 29.7129 0 endloop endfacet - facet normal 0 0 1 + facet normal -0.893644 -0.448776 0 outer loop - vertex 39.342 -26.9688 -0.2 - vertex 35.3422 -26.5156 -0.2 - vertex 38.2305 -29.6614 -0.2 + vertex 4.3138 28.4461 -3 + vertex 3.67763 29.7129 0 + vertex 3.67763 29.7129 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0.893644 -0.448776 0 outer loop - vertex 33.8561 -30.1753 -0.2 - vertex 38.2305 -29.6614 -0.2 - vertex 35.3422 -26.5156 -0.2 + vertex 3.67763 29.7129 0 + vertex 4.3138 28.4461 -3 + vertex 4.3138 28.4461 0 endloop endfacet - facet normal 0 0 1 + facet normal -0.787428 -0.616407 0 outer loop - vertex 38.2305 -29.6614 -0.2 - vertex 33.8561 -30.1753 -0.2 - vertex 37.444 -31.6395 -0.2 + vertex 5.72413 26.6445 -3 + vertex 4.3138 28.4461 0 + vertex 4.3138 28.4461 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0.787428 -0.616407 0 outer loop - vertex 41.3957 -19.1543 -0.2 - vertex 42.162 -19.859 -0.2 - vertex 42.1595 -19.6516 -0.2 + vertex 4.3138 28.4461 0 + vertex 5.72413 26.6445 -3 + vertex 5.72413 26.6445 0 endloop endfacet - facet normal 0 0 1 + facet normal -0.565537 -0.824723 0 outer loop - vertex 41.7426 -19.1572 -0.2 - vertex 42.1595 -19.6516 -0.2 - vertex 42.1149 -19.4743 -0.2 + vertex 5.72413 26.6445 -3 + vertex 6.4022 26.1795 0 + vertex 5.72413 26.6445 0 endloop endfacet - facet normal 0 0 1 + facet normal -0.565537 -0.824723 -0 outer loop - vertex 42.162 -19.859 -0.2 - vertex 41.3957 -19.1543 -0.2 - vertex 42.1212 -20.0931 -0.2 + vertex 6.4022 26.1795 0 + vertex 5.72413 26.6445 -3 + vertex 6.4022 26.1795 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0.296038 -0.955176 0 outer loop - vertex 41.7426 -19.1572 -0.2 - vertex 42.1149 -19.4743 -0.2 - vertex 42.0297 -19.3306 -0.2 + vertex 6.4022 26.1795 -3 + vertex 7.11433 25.9588 0 + vertex 6.4022 26.1795 0 endloop endfacet - facet normal -0 0 1 + facet normal -0.296038 -0.955176 -0 outer loop - vertex 41.156 -19.2119 -0.2 - vertex 42.1212 -20.0931 -0.2 - vertex 41.3957 -19.1543 -0.2 + vertex 7.11433 25.9588 0 + vertex 6.4022 26.1795 -3 + vertex 7.11433 25.9588 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0.249452 -0.968387 0 outer loop - vertex 42.1212 -20.0931 -0.2 - vertex 41.156 -19.2119 -0.2 - vertex 42.0356 -20.3507 -0.2 + vertex 7.11433 25.9588 -3 + vertex 7.91411 25.7528 0 + vertex 7.11433 25.9588 0 endloop endfacet - facet normal 0 0 1 + facet normal -0.249452 -0.968387 -0 outer loop - vertex 41.7426 -19.1572 -0.2 - vertex 42.0297 -19.3306 -0.2 - vertex 41.9051 -19.2238 -0.2 + vertex 7.91411 25.7528 0 + vertex 7.11433 25.9588 -3 + vertex 7.91411 25.7528 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0.590139 -0.807301 0 outer loop - vertex 47.9233 -19.8512 -0.2 - vertex 47.9993 -20.1225 -0.2 - vertex 47.9745 -19.9807 -0.2 + vertex 7.91411 25.7528 -3 + vertex 8.51885 25.3107 0 + vertex 7.91411 25.7528 0 endloop endfacet - facet normal 0 0 1 + facet normal -0.590139 -0.807301 -0 outer loop - vertex 47.9993 -20.1225 -0.2 - vertex 47.9233 -19.8512 -0.2 - vertex 47.9987 -20.2887 -0.2 + vertex 8.51885 25.3107 0 + vertex 7.91411 25.7528 -3 + vertex 8.51885 25.3107 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0.834337 -0.551255 0 outer loop - vertex 47.845 -19.7221 -0.2 - vertex 47.9987 -20.2887 -0.2 - vertex 47.9233 -19.8512 -0.2 + vertex 9.07032 24.476 -3 + vertex 8.51885 25.3107 0 + vertex 8.51885 25.3107 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0.834337 -0.551255 0 outer loop - vertex 47.9987 -20.2887 -0.2 - vertex 47.845 -19.7221 -0.2 - vertex 47.9737 -20.4912 -0.2 + vertex 8.51885 25.3107 0 + vertex 9.07032 24.476 -3 + vertex 9.07032 24.476 0 endloop endfacet - facet normal 0 0 1 + facet normal -0.907633 -0.419764 0 outer loop - vertex 47.7384 -19.5813 -0.2 - vertex 47.9737 -20.4912 -0.2 - vertex 47.845 -19.7221 -0.2 + vertex 9.71033 23.0922 -3 + vertex 9.07032 24.476 0 + vertex 9.07032 24.476 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0.907633 -0.419764 0 outer loop - vertex 47.044 -19.1833 -0.2 - vertex 47.9737 -20.4912 -0.2 - vertex 47.7384 -19.5813 -0.2 + vertex 9.07032 24.476 0 + vertex 9.71033 23.0922 -3 + vertex 9.71033 23.0922 0 endloop endfacet - facet normal 0 0 1 + facet normal -0.895482 -0.445097 0 outer loop - vertex 46.8289 -19.1548 -0.2 - vertex 47.9737 -20.4912 -0.2 - vertex 47.044 -19.1833 -0.2 + vertex 10.9729 20.5521 -3 + vertex 9.71033 23.0922 0 + vertex 9.71033 23.0922 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0.895482 -0.445097 0 outer loop - vertex 47.2257 -19.2263 -0.2 - vertex 47.7384 -19.5813 -0.2 - vertex 47.6302 -19.4614 -0.2 + vertex 9.71033 23.0922 0 + vertex 10.9729 20.5521 -3 + vertex 10.9729 20.5521 0 endloop endfacet - facet normal 0 0 1 + facet normal -0.741992 -0.670408 0 outer loop - vertex 46.274 -19.1343 -0.2 - vertex 47.8542 -21.0531 -0.2 - vertex 46.8289 -19.1548 -0.2 + vertex 12.6982 18.6425 -3 + vertex 10.9729 20.5521 0 + vertex 10.9729 20.5521 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0.741992 -0.670408 0 outer loop - vertex 47.2257 -19.2263 -0.2 - vertex 47.6302 -19.4614 -0.2 - vertex 47.5127 -19.3635 -0.2 + vertex 10.9729 20.5521 0 + vertex 12.6982 18.6425 -3 + vertex 12.6982 18.6425 0 endloop endfacet - facet normal 0 0 1 + facet normal -0.66692 -0.745129 0 outer loop - vertex 47.2257 -19.2263 -0.2 - vertex 47.5127 -19.3635 -0.2 - vertex 47.3799 -19.2858 -0.2 + vertex 12.6982 18.6425 -3 + vertex 13.99 17.4864 0 + vertex 12.6982 18.6425 0 endloop endfacet - facet normal 0 0 1 + facet normal -0.66692 -0.745129 -0 outer loop - vertex 47.9737 -20.4912 -0.2 - vertex 46.8289 -19.1548 -0.2 - vertex 47.8542 -21.0531 -0.2 + vertex 13.99 17.4864 0 + vertex 12.6982 18.6425 -3 + vertex 13.99 17.4864 -3 endloop endfacet - facet normal 0 0 1 + facet normal -0.579406 -0.815039 0 outer loop - vertex 47.7384 -19.5813 -0.2 - vertex 47.2257 -19.2263 -0.2 - vertex 47.044 -19.1833 -0.2 + vertex 13.99 17.4864 -3 + vertex 15.2045 16.623 0 + vertex 13.99 17.4864 0 endloop endfacet - facet normal 0 0 1 + facet normal -0.579406 -0.815039 -0 outer loop - vertex 47.8542 -21.0531 -0.2 - vertex 46.274 -19.1343 -0.2 - vertex 47.7155 -21.5429 -0.2 + vertex 15.2045 16.623 0 + vertex 13.99 17.4864 -3 + vertex 15.2045 16.623 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0.462357 -0.886694 0 outer loop - vertex 45.8151 -19.1475 -0.2 - vertex 47.7155 -21.5429 -0.2 - vertex 46.274 -19.1343 -0.2 + vertex 15.2045 16.623 -3 + vertex 16.5954 15.8977 0 + vertex 15.2045 16.623 0 endloop endfacet - facet normal 0 0 1 + facet normal -0.462357 -0.886694 -0 outer loop - vertex 47.7155 -21.5429 -0.2 - vertex 45.8151 -19.1475 -0.2 - vertex 47.5422 -21.9981 -0.2 + vertex 16.5954 15.8977 0 + vertex 15.2045 16.623 -3 + vertex 16.5954 15.8977 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0.377272 -0.926103 0 outer loop - vertex 45.391 -19.1898 -0.2 - vertex 47.5422 -21.9981 -0.2 - vertex 45.8151 -19.1475 -0.2 + vertex 16.5954 15.8977 -3 + vertex 18.4164 15.1559 0 + vertex 16.5954 15.8977 0 endloop endfacet - facet normal 0 0 1 + facet normal -0.377272 -0.926103 -0 outer loop - vertex 47.5422 -21.9981 -0.2 - vertex 45.391 -19.1898 -0.2 - vertex 47.3383 -22.4165 -0.2 + vertex 18.4164 15.1559 0 + vertex 16.5954 15.8977 -3 + vertex 18.4164 15.1559 -3 endloop endfacet - facet normal -0 0 1 + facet normal -0.305414 -0.95222 0 outer loop - vertex 44.9905 -19.265 -0.2 - vertex 47.3383 -22.4165 -0.2 - vertex 45.391 -19.1898 -0.2 + vertex 18.4164 15.1559 -3 + vertex 20.0668 14.6265 0 + vertex 18.4164 15.1559 0 endloop endfacet - facet normal -0 0 1 + facet normal -0.305414 -0.95222 -0 outer loop - vertex 44.6026 -19.3768 -0.2 - vertex 47.3383 -22.4165 -0.2 - vertex 44.9905 -19.265 -0.2 + vertex 20.0668 14.6265 0 + vertex 18.4164 15.1559 -3 + vertex 20.0668 14.6265 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0.198377 -0.980126 0 outer loop - vertex 47.3383 -22.4165 -0.2 - vertex 44.6026 -19.3768 -0.2 - vertex 47.1074 -22.796 -0.2 + vertex 20.0668 14.6265 -3 + vertex 21.1653 14.8489 0 + vertex 20.0668 14.6265 0 endloop endfacet - facet normal -0 0 1 + facet normal 0.198377 -0.980126 0 outer loop - vertex 44.2162 -19.5289 -0.2 - vertex 47.1074 -22.796 -0.2 - vertex 44.6026 -19.3768 -0.2 + vertex 21.1653 14.8489 0 + vertex 20.0668 14.6265 -3 + vertex 21.1653 14.8489 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0.403705 -0.914889 0 outer loop - vertex 47.1074 -22.796 -0.2 - vertex 44.2162 -19.5289 -0.2 - vertex 46.8534 -23.1343 -0.2 + vertex 21.1653 14.8489 -3 + vertex 23.3802 15.8262 0 + vertex 21.1653 14.8489 0 endloop endfacet - facet normal 0 0 1 + facet normal 0.403705 -0.914889 0 outer loop - vertex 43.3873 -23.2523 -0.2 - vertex 46.8534 -23.1343 -0.2 - vertex 44.2162 -19.5289 -0.2 + vertex 23.3802 15.8262 0 + vertex 21.1653 14.8489 -3 + vertex 23.3802 15.8262 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0.513821 -0.857898 0 outer loop - vertex 46.8534 -23.1343 -0.2 - vertex 43.3873 -23.2523 -0.2 - vertex 46.5801 -23.4293 -0.2 + vertex 23.3802 15.8262 -3 + vertex 24.7931 16.6725 0 + vertex 23.3802 15.8262 0 endloop endfacet - facet normal 0 0 1 + facet normal 0.513821 -0.857898 0 outer loop - vertex 46.5801 -23.4293 -0.2 - vertex 43.3873 -23.2523 -0.2 - vertex 46.2914 -23.6786 -0.2 + vertex 24.7931 16.6725 0 + vertex 23.3802 15.8262 -3 + vertex 24.7931 16.6725 -3 endloop endfacet - facet normal -0 -0 1 + facet normal 0.988574 0.150735 0 outer loop - vertex 43.6239 -23.5069 -0.2 - vertex 46.2914 -23.6786 -0.2 - vertex 43.3873 -23.2523 -0.2 + vertex 24.7931 16.6725 0 + vertex 24.7174 17.1695 -3 + vertex 24.7174 17.1695 0 endloop endfacet - facet normal 0 0 1 + facet normal 0.988574 0.150735 0 outer loop - vertex 46.2914 -23.6786 -0.2 - vertex 43.6239 -23.5069 -0.2 - vertex 45.9909 -23.8802 -0.2 + vertex 24.7174 17.1695 -3 + vertex 24.7931 16.6725 0 + vertex 24.7931 16.6725 -3 endloop endfacet - facet normal -0 -0 1 + facet normal 0.409608 0.912261 -0 outer loop - vertex 43.8807 -23.7673 -0.2 - vertex 45.3703 -24.1311 -0.2 - vertex 43.6239 -23.5069 -0.2 + vertex 24.7174 17.1695 -3 + vertex 24.1542 17.4223 0 + vertex 24.7174 17.1695 0 endloop endfacet - facet normal 0 0 1 + facet normal 0.409608 0.912261 0 outer loop - vertex 45.3703 -24.1311 -0.2 - vertex 43.8807 -23.7673 -0.2 - vertex 45.0576 -24.176 -0.2 + vertex 24.1542 17.4223 0 + vertex 24.7174 17.1695 -3 + vertex 24.1542 17.4223 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0.049214 0.998788 -0 outer loop - vertex 45.9909 -23.8802 -0.2 - vertex 43.6239 -23.5069 -0.2 - vertex 45.6826 -24.0317 -0.2 + vertex 24.1542 17.4223 -3 + vertex 22.547 17.5015 0 + vertex 24.1542 17.4223 0 endloop endfacet - facet normal 0 0 1 + facet normal 0.049214 0.998788 0 outer loop - vertex 45.0576 -24.176 -0.2 - vertex 43.8807 -23.7673 -0.2 - vertex 44.7485 -24.1643 -0.2 + vertex 22.547 17.5015 0 + vertex 24.1542 17.4223 -3 + vertex 22.547 17.5015 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0.0234404 0.999725 -0 outer loop - vertex 44.7485 -24.1643 -0.2 - vertex 43.8807 -23.7673 -0.2 - vertex 44.4468 -24.0937 -0.2 + vertex 22.547 17.5015 -3 + vertex 20.2159 17.5562 0 + vertex 22.547 17.5015 0 endloop endfacet - facet normal 0 0 1 + facet normal 0.0234404 0.999725 0 outer loop - vertex 43.3873 -23.2523 -0.2 - vertex 44.2162 -19.5289 -0.2 - vertex 43.8201 -19.7253 -0.2 + vertex 20.2159 17.5562 0 + vertex 22.547 17.5015 -3 + vertex 20.2159 17.5562 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0.471751 0.881732 -0 outer loop - vertex 44.4468 -24.0937 -0.2 - vertex 43.8807 -23.7673 -0.2 - vertex 44.1563 -23.9621 -0.2 + vertex 20.2159 17.5562 -3 + vertex 19.8437 17.7553 0 + vertex 20.2159 17.5562 0 endloop endfacet - facet normal 0 0 1 + facet normal 0.471751 0.881732 0 outer loop - vertex 43.3873 -23.2523 -0.2 - vertex 43.8201 -19.7253 -0.2 - vertex 43.4033 -19.9696 -0.2 + vertex 19.8437 17.7553 0 + vertex 20.2159 17.5562 -3 + vertex 19.8437 17.7553 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0.853692 0.520778 0 outer loop - vertex 45.6826 -24.0317 -0.2 - vertex 43.6239 -23.5069 -0.2 - vertex 45.3703 -24.1311 -0.2 + vertex 19.8437 17.7553 0 + vertex 19.5351 18.2611 -3 + vertex 19.5351 18.2611 0 endloop endfacet - facet normal 0 0 1 + facet normal 0.853692 0.520778 0 outer loop - vertex 43.4033 -19.9696 -0.2 - vertex 43.1493 -23.0437 -0.2 - vertex 43.3873 -23.2523 -0.2 + vertex 19.5351 18.2611 -3 + vertex 19.8437 17.7553 0 + vertex 19.8437 17.7553 -3 endloop endfacet - facet normal -0 0 1 + facet normal 0.975799 0.21867 0 outer loop - vertex 42.9547 -20.2657 -0.2 - vertex 43.1493 -23.0437 -0.2 - vertex 43.4033 -19.9696 -0.2 + vertex 19.5351 18.2611 0 + vertex 19.0948 20.2262 -3 + vertex 19.0948 20.2262 0 endloop endfacet - facet normal 0 0 1 + facet normal 0.975799 0.21867 0 outer loop - vertex 42.9547 -20.2657 -0.2 - vertex 42.9376 -22.9028 -0.2 - vertex 43.1493 -23.0437 -0.2 + vertex 19.0948 20.2262 -3 + vertex 19.5351 18.2611 0 + vertex 19.5351 18.2611 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0.973279 0.229626 0 outer loop - vertex 42.9547 -20.2657 -0.2 - vertex 42.8503 -22.8644 -0.2 - vertex 42.9376 -22.9028 -0.2 + vertex 19.0948 20.2262 0 + vertex 18.6529 22.0992 -3 + vertex 18.6529 22.0992 0 endloop endfacet - facet normal -0 0 1 + facet normal 0.973279 0.229626 0 outer loop - vertex 42.3117 -20.6924 -0.2 - vertex 42.8503 -22.8644 -0.2 - vertex 42.9547 -20.2657 -0.2 + vertex 18.6529 22.0992 -3 + vertex 19.0948 20.2262 0 + vertex 19.0948 20.2262 -3 endloop endfacet - facet normal 0 0 1 + facet normal 0.439505 0.89824 -0 outer loop - vertex 42.8503 -22.8644 -0.2 - vertex 42.3117 -20.6924 -0.2 - vertex 42.7799 -22.851 -0.2 + vertex 18.6529 22.0992 -3 + vertex 17.155 22.8321 0 + vertex 18.6529 22.0992 0 endloop endfacet - facet normal -0 0 1 + facet normal 0.439505 0.89824 0 outer loop - vertex 42.1116 -20.8028 -0.2 - vertex 42.7799 -22.851 -0.2 - vertex 42.3117 -20.6924 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 42.7799 -22.851 -0.2 - vertex 42.1116 -20.8028 -0.2 - vertex 42.6968 -22.8729 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 41.9827 -20.8453 -0.2 - vertex 42.6968 -22.8729 -0.2 - vertex 42.1116 -20.8028 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 42.6968 -22.8729 -0.2 - vertex 41.9827 -20.8453 -0.2 - vertex 42.5728 -22.9356 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.9427 -20.8413 -0.2 - vertex 42.5728 -22.9356 -0.2 - vertex 41.9827 -20.8453 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 42.5728 -22.9356 -0.2 - vertex 41.9427 -20.8413 -0.2 - vertex 42.2267 -23.1657 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.7898 -23.5063 -0.2 - vertex 41.9427 -20.8413 -0.2 - vertex 41.9179 -20.8207 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.9427 -20.8413 -0.2 - vertex 41.7898 -23.5063 -0.2 - vertex 42.2267 -23.1657 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 39.5298 -19.7361 -0.2 - vertex 41.9179 -20.8207 -0.2 - vertex 41.9099 -20.7296 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 42.0356 -20.3507 -0.2 - vertex 41.156 -19.2119 -0.2 - vertex 41.9515 -20.5727 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 42.1595 -19.6516 -0.2 - vertex 41.7426 -19.1572 -0.2 - vertex 41.5436 -19.1343 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 42.1595 -19.6516 -0.2 - vertex 41.5436 -19.1343 -0.2 - vertex 41.3957 -19.1543 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 40.4513 -19.4233 -0.2 - vertex 41.9515 -20.5727 -0.2 - vertex 41.156 -19.2119 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.9515 -20.5727 -0.2 - vertex 40.4513 -19.4233 -0.2 - vertex 41.9099 -20.7296 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 39.5298 -19.7361 -0.2 - vertex 41.9099 -20.7296 -0.2 - vertex 40.4513 -19.4233 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.9179 -20.8207 -0.2 - vertex 39.5298 -19.7361 -0.2 - vertex 41.3103 -23.9223 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.9179 -20.8207 -0.2 - vertex 41.3103 -23.9223 -0.2 - vertex 41.7898 -23.5063 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 38.4916 -20.1181 -0.2 - vertex 41.3103 -23.9223 -0.2 - vertex 39.5298 -19.7361 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.3103 -23.9223 -0.2 - vertex 38.4916 -20.1181 -0.2 - vertex 40.922 -24.2835 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 40.922 -24.2835 -0.2 - vertex 38.4916 -20.1181 -0.2 - vertex 40.604 -24.6171 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 36.3539 -23.0402 -0.2 - vertex 40.604 -24.6171 -0.2 - vertex 38.4916 -20.1181 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 36.3671 -23.1585 -0.2 - vertex 40.604 -24.6171 -0.2 - vertex 36.3539 -23.0402 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 40.604 -24.6171 -0.2 - vertex 36.362 -23.3104 -0.2 - vertex 40.3218 -24.9877 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 36.2977 -23.7121 -0.2 - vertex 40.3218 -24.9877 -0.2 - vertex 36.362 -23.3104 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 40.3218 -24.9877 -0.2 - vertex 36.2977 -23.7121 -0.2 - vertex 40.0406 -25.46 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.3539 -23.0402 -0.2 - vertex 38.4916 -20.1181 -0.2 - vertex 37.4642 -20.5001 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 36.1622 -24.2394 -0.2 - vertex 40.0406 -25.46 -0.2 - vertex 36.2977 -23.7121 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 40.0406 -25.46 -0.2 - vertex 36.1622 -24.2394 -0.2 - vertex 39.7256 -26.0988 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.3224 -22.9562 -0.2 - vertex 37.4642 -20.5001 -0.2 - vertex 36.5724 -20.813 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 35.957 -24.8864 -0.2 - vertex 39.7256 -26.0988 -0.2 - vertex 36.1622 -24.2394 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 39.7256 -26.0988 -0.2 - vertex 35.957 -24.8864 -0.2 - vertex 39.342 -26.9688 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 36.362 -23.3104 -0.2 - vertex 40.604 -24.6171 -0.2 - vertex 36.3671 -23.1585 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.4642 -20.5001 -0.2 - vertex 36.3224 -22.9562 -0.2 - vertex 36.3539 -23.0402 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.5724 -20.813 -0.2 - vertex 36.2723 -22.9073 -0.2 - vertex 36.3224 -22.9562 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 35.9118 -21.0243 -0.2 - vertex 36.2723 -22.9073 -0.2 - vertex 36.5724 -20.813 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.2723 -22.9073 -0.2 - vertex 35.9118 -21.0243 -0.2 - vertex 36.2034 -22.8943 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 35.5778 -21.102 -0.2 - vertex 36.2034 -22.8943 -0.2 - vertex 35.9118 -21.0243 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.2034 -22.8943 -0.2 - vertex 35.5778 -21.102 -0.2 - vertex 36.1157 -22.9178 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.1157 -22.9178 -0.2 - vertex 35.5778 -21.102 -0.2 - vertex 35.9442 -22.9618 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.9442 -22.9618 -0.2 - vertex 35.5778 -21.102 -0.2 - vertex 35.7166 -22.9783 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 35.0706 -21.3217 -0.2 - vertex 35.7166 -22.9783 -0.2 - vertex 35.5778 -21.102 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.2304 -21.2043 -0.2 - vertex 35.5778 -21.102 -0.2 - vertex 35.4013 -21.1287 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.5778 -21.102 -0.2 - vertex 35.2304 -21.2043 -0.2 - vertex 35.0706 -21.3217 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 34.9274 -21.474 -0.2 - vertex 35.7166 -22.9783 -0.2 - vertex 35.0706 -21.3217 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.7166 -22.9783 -0.2 - vertex 34.9274 -21.474 -0.2 - vertex 35.4626 -22.9668 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 34.8063 -21.6543 -0.2 - vertex 35.4626 -22.9668 -0.2 - vertex 34.9274 -21.474 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 34.713 -21.8554 -0.2 - vertex 35.4626 -22.9668 -0.2 - vertex 34.8063 -21.6543 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.4626 -22.9668 -0.2 - vertex 34.713 -21.8554 -0.2 - vertex 35.2118 -22.9271 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 34.653 -22.0706 -0.2 - vertex 35.2118 -22.9271 -0.2 - vertex 34.713 -21.8554 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 34.6318 -22.2927 -0.2 - vertex 35.2118 -22.9271 -0.2 - vertex 34.653 -22.0706 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.2118 -22.9271 -0.2 - vertex 34.6318 -22.2927 -0.2 - vertex 34.9345 -22.8399 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 34.6385 -22.4262 -0.2 - vertex 34.9345 -22.8399 -0.2 - vertex 34.6318 -22.2927 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 34.6602 -22.54 -0.2 - vertex 34.9345 -22.8399 -0.2 - vertex 34.6385 -22.4262 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.9345 -22.8399 -0.2 - vertex 34.6602 -22.54 -0.2 - vertex 34.8338 -22.7839 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.8338 -22.7839 -0.2 - vertex 34.6602 -22.54 -0.2 - vertex 34.7558 -22.7166 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.7558 -22.7166 -0.2 - vertex 34.6602 -22.54 -0.2 - vertex 34.6986 -22.636 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.6954 -36.1853 -0.2 - vertex 38.1248 -36.8464 -0.2 - vertex 38.119 -36.6694 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.8576 -36.2498 -0.2 - vertex 38.119 -36.6694 -0.2 - vertex 38.0969 -36.5276 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.203 -36.0604 -0.2 - vertex 38.1248 -36.8464 -0.2 - vertex 37.6954 -36.1853 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.9736 -36.3241 -0.2 - vertex 38.0969 -36.5276 -0.2 - vertex 38.0509 -36.4146 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.1248 -36.8464 -0.2 - vertex 37.203 -36.0604 -0.2 - vertex 38.103 -37.2562 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.0969 -36.5276 -0.2 - vertex 37.9736 -36.3241 -0.2 - vertex 37.8576 -36.2498 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.119 -36.6694 -0.2 - vertex 37.8576 -36.2498 -0.2 - vertex 37.6954 -36.1853 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 37.3927 -37.9628 -0.2 - vertex 38.103 -37.2562 -0.2 - vertex 37.203 -36.0604 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 37.7849 -37.8018 -0.2 - vertex 38.0668 -37.4245 -0.2 - vertex 37.6132 -37.8903 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.0668 -37.4245 -0.2 - vertex 37.7849 -37.8018 -0.2 - vertex 38.0057 -37.5705 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.0057 -37.5705 -0.2 - vertex 37.7849 -37.8018 -0.2 - vertex 37.9137 -37.6957 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 37.6132 -37.8903 -0.2 - vertex 38.103 -37.2562 -0.2 - vertex 37.3927 -37.9628 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.103 -37.2562 -0.2 - vertex 37.6132 -37.8903 -0.2 - vertex 38.0668 -37.4245 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.203 -36.0604 -0.2 - vertex 37.1174 -38.0208 -0.2 - vertex 37.3927 -37.9628 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.203 -36.0604 -0.2 - vertex 36.7812 -38.066 -0.2 - vertex 37.1174 -38.0208 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.6812 -35.9318 -0.2 - vertex 36.7812 -38.066 -0.2 - vertex 37.203 -36.0604 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.9024 -38.1241 -0.2 - vertex 36.6812 -35.9318 -0.2 - vertex 36.5187 -35.8653 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.9024 -38.1241 -0.2 - vertex 36.5187 -35.8653 -0.2 - vertex 36.4089 -35.7834 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.7085 -38.1497 -0.2 - vertex 36.4089 -35.7834 -0.2 - vertex 36.3422 -35.6758 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.7085 -38.1497 -0.2 - vertex 36.3422 -35.6758 -0.2 - vertex 36.3089 -35.532 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.444 -31.6395 -0.2 - vertex 33.8561 -30.1753 -0.2 - vertex 36.8389 -33.2656 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 33.1139 -32.0001 -0.2 - vertex 36.8389 -33.2656 -0.2 - vertex 33.8561 -30.1753 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.6812 -35.9318 -0.2 - vertex 35.9024 -38.1241 -0.2 - vertex 36.7812 -38.066 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 32.0766 -34.3595 -0.2 - vertex 36.3089 -35.532 -0.2 - vertex 36.2992 -35.3418 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.8389 -33.2656 -0.2 - vertex 33.1139 -32.0001 -0.2 - vertex 36.4479 -34.448 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 32.5373 -33.371 -0.2 - vertex 36.4479 -34.448 -0.2 - vertex 33.1139 -32.0001 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.4479 -34.448 -0.2 - vertex 32.5373 -33.371 -0.2 - vertex 36.3428 -34.844 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.3428 -34.844 -0.2 - vertex 32.5373 -33.371 -0.2 - vertex 36.3035 -35.0946 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 32.0766 -34.3595 -0.2 - vertex 36.3035 -35.0946 -0.2 - vertex 32.5373 -33.371 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.3035 -35.0946 -0.2 - vertex 32.0766 -34.3595 -0.2 - vertex 36.2992 -35.3418 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.4089 -35.7834 -0.2 - vertex 34.7085 -38.1497 -0.2 - vertex 35.9024 -38.1241 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.3089 -35.532 -0.2 - vertex 32.0766 -34.3595 -0.2 - vertex 31.8743 -34.7329 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.3089 -35.532 -0.2 - vertex 31.8743 -34.7329 -0.2 - vertex 34.7085 -38.1497 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.7085 -38.1497 -0.2 - vertex 31.8743 -34.7329 -0.2 - vertex 33.1514 -38.1555 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 31.6824 -35.0376 -0.2 - vertex 33.1514 -38.1555 -0.2 - vertex 31.8743 -34.7329 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 31.4948 -35.2825 -0.2 - vertex 33.1514 -38.1555 -0.2 - vertex 31.6824 -35.0376 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 31.3052 -35.4767 -0.2 - vertex 33.1514 -38.1555 -0.2 - vertex 31.4948 -35.2825 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 31.1075 -35.6291 -0.2 - vertex 33.1514 -38.1555 -0.2 - vertex 31.3052 -35.4767 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 33.1514 -38.1555 -0.2 - vertex 31.1075 -35.6291 -0.2 - vertex 31.1824 -38.1409 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 30.8955 -35.7486 -0.2 - vertex 31.1824 -38.1409 -0.2 - vertex 31.1075 -35.6291 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 30.6629 -35.8443 -0.2 - vertex 31.1824 -38.1409 -0.2 - vertex 30.8955 -35.7486 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 30.4037 -35.9251 -0.2 - vertex 31.1824 -38.1409 -0.2 - vertex 30.6629 -35.8443 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.4037 -35.9251 -0.2 - vertex 29.8192 -38.0948 -0.2 - vertex 31.1824 -38.1409 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 29.7804 -36.0779 -0.2 - vertex 29.8192 -38.0948 -0.2 - vertex 30.4037 -35.9251 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 29.5705 -36.1356 -0.2 - vertex 29.8192 -38.0948 -0.2 - vertex 29.7804 -36.0779 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 29.3757 -36.2065 -0.2 - vertex 29.8192 -38.0948 -0.2 - vertex 29.5705 -36.1356 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 29.1966 -36.2895 -0.2 - vertex 29.8192 -38.0948 -0.2 - vertex 29.3757 -36.2065 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.8192 -38.0948 -0.2 - vertex 29.1966 -36.2895 -0.2 - vertex 29.3448 -38.0588 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 29.034 -36.3831 -0.2 - vertex 29.3448 -38.0588 -0.2 - vertex 29.1966 -36.2895 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 28.8888 -36.4863 -0.2 - vertex 29.3448 -38.0588 -0.2 - vertex 29.034 -36.3831 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 28.7617 -36.5978 -0.2 - vertex 29.3448 -38.0588 -0.2 - vertex 28.8888 -36.4863 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 28.6534 -36.7163 -0.2 - vertex 29.3448 -38.0588 -0.2 - vertex 28.7617 -36.5978 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.3448 -38.0588 -0.2 - vertex 28.6534 -36.7163 -0.2 - vertex 28.9979 -38.0135 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 28.5648 -36.8405 -0.2 - vertex 28.9979 -38.0135 -0.2 - vertex 28.6534 -36.7163 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 28.4965 -36.9693 -0.2 - vertex 28.9979 -38.0135 -0.2 - vertex 28.5648 -36.8405 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 28.4495 -37.1014 -0.2 - vertex 28.9979 -38.0135 -0.2 - vertex 28.4965 -36.9693 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.7706 -37.9584 -0.2 - vertex 28.5587 -37.7674 -0.2 - vertex 28.6548 -37.8931 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 28.4243 -37.2355 -0.2 - vertex 28.9979 -38.0135 -0.2 - vertex 28.4495 -37.1014 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.9979 -38.0135 -0.2 - vertex 28.5587 -37.7674 -0.2 - vertex 28.7706 -37.9584 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 28.4219 -37.3704 -0.2 - vertex 28.9979 -38.0135 -0.2 - vertex 28.4243 -37.2355 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 28.5587 -37.7674 -0.2 - vertex 28.9979 -38.0135 -0.2 - vertex 28.4883 -37.6376 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 28.4883 -37.6376 -0.2 - vertex 28.9979 -38.0135 -0.2 - vertex 28.443 -37.5048 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.9979 -38.0135 -0.2 - vertex 28.4219 -37.3704 -0.2 - vertex 28.443 -37.5048 -0.2 - endloop - endfacet - facet normal -0.131122 -0.991366 0 - outer loop - vertex 46.8289 -19.1548 -0.2 - vertex 47.044 -19.1833 0 - vertex 46.8289 -19.1548 0 - endloop - endfacet - facet normal -0.131122 -0.991366 -0 - outer loop - vertex 47.044 -19.1833 0 - vertex 46.8289 -19.1548 -0.2 - vertex 47.044 -19.1833 -0.2 - endloop - endfacet - facet normal -0.230596 -0.97305 0 - outer loop - vertex 47.044 -19.1833 -0.2 - vertex 47.2257 -19.2263 0 - vertex 47.044 -19.1833 0 - endloop - endfacet - facet normal -0.230596 -0.97305 -0 - outer loop - vertex 47.2257 -19.2263 0 - vertex 47.044 -19.1833 -0.2 - vertex 47.2257 -19.2263 -0.2 - endloop - endfacet - facet normal -0.359881 -0.932998 0 - outer loop - vertex 47.2257 -19.2263 -0.2 - vertex 47.3799 -19.2858 0 - vertex 47.2257 -19.2263 0 - endloop - endfacet - facet normal -0.359881 -0.932998 -0 - outer loop - vertex 47.3799 -19.2858 0 - vertex 47.2257 -19.2263 -0.2 - vertex 47.3799 -19.2858 -0.2 - endloop - endfacet - facet normal -0.505271 -0.862961 0 - outer loop - vertex 47.3799 -19.2858 -0.2 - vertex 47.5127 -19.3635 0 - vertex 47.3799 -19.2858 0 - endloop - endfacet - facet normal -0.505271 -0.862961 -0 - outer loop - vertex 47.5127 -19.3635 0 - vertex 47.3799 -19.2858 -0.2 - vertex 47.5127 -19.3635 -0.2 - endloop - endfacet - facet normal -0.640123 -0.768272 0 - outer loop - vertex 47.5127 -19.3635 -0.2 - vertex 47.6302 -19.4614 0 - vertex 47.5127 -19.3635 0 - endloop - endfacet - facet normal -0.640123 -0.768272 -0 - outer loop - vertex 47.6302 -19.4614 0 - vertex 47.5127 -19.3635 -0.2 - vertex 47.6302 -19.4614 -0.2 - endloop - endfacet - facet normal -0.742266 -0.670106 0 - outer loop - vertex 47.7384 -19.5813 -0.2 - vertex 47.6302 -19.4614 0 - vertex 47.6302 -19.4614 -0.2 - endloop - endfacet - facet normal -0.742266 -0.670106 0 - outer loop - vertex 47.6302 -19.4614 0 - vertex 47.7384 -19.5813 -0.2 - vertex 47.7384 -19.5813 0 - endloop - endfacet - facet normal -0.797332 -0.60354 0 - outer loop - vertex 47.845 -19.7221 -0.2 - vertex 47.7384 -19.5813 0 - vertex 47.7384 -19.5813 -0.2 - endloop - endfacet - facet normal -0.797332 -0.60354 0 - outer loop - vertex 47.7384 -19.5813 0 - vertex 47.845 -19.7221 -0.2 - vertex 47.845 -19.7221 0 - endloop - endfacet - facet normal -0.85488 -0.518827 0 - outer loop - vertex 47.9233 -19.8512 -0.2 - vertex 47.845 -19.7221 0 - vertex 47.845 -19.7221 -0.2 - endloop - endfacet - facet normal -0.85488 -0.518827 0 - outer loop - vertex 47.845 -19.7221 0 - vertex 47.9233 -19.8512 -0.2 - vertex 47.9233 -19.8512 0 - endloop - endfacet - facet normal -0.930142 -0.367201 0 - outer loop - vertex 47.9745 -19.9807 -0.2 - vertex 47.9233 -19.8512 0 - vertex 47.9233 -19.8512 -0.2 - endloop - endfacet - facet normal -0.930142 -0.367201 0 - outer loop - vertex 47.9233 -19.8512 0 - vertex 47.9745 -19.9807 -0.2 - vertex 47.9745 -19.9807 0 - endloop - endfacet - facet normal -0.985048 -0.172278 0 - outer loop - vertex 47.9993 -20.1225 -0.2 - vertex 47.9745 -19.9807 0 - vertex 47.9745 -19.9807 -0.2 - endloop - endfacet - facet normal -0.985048 -0.172278 0 - outer loop - vertex 47.9745 -19.9807 0 - vertex 47.9993 -20.1225 -0.2 - vertex 47.9993 -20.1225 0 - endloop - endfacet - facet normal -0.999994 0.0034209 0 - outer loop - vertex 47.9987 -20.2887 -0.2 - vertex 47.9993 -20.1225 0 - vertex 47.9993 -20.1225 -0.2 - endloop - endfacet - facet normal -0.999994 0.0034209 0 - outer loop - vertex 47.9993 -20.1225 0 - vertex 47.9987 -20.2887 -0.2 - vertex 47.9987 -20.2887 0 - endloop - endfacet - facet normal -0.992465 0.122526 0 - outer loop - vertex 47.9737 -20.4912 -0.2 - vertex 47.9987 -20.2887 0 - vertex 47.9987 -20.2887 -0.2 - endloop - endfacet - facet normal -0.992465 0.122526 0 - outer loop - vertex 47.9987 -20.2887 0 - vertex 47.9737 -20.4912 -0.2 - vertex 47.9737 -20.4912 0 - endloop - endfacet - facet normal -0.97813 0.207995 0 - outer loop - vertex 47.8542 -21.0531 -0.2 - vertex 47.9737 -20.4912 0 - vertex 47.9737 -20.4912 -0.2 - endloop - endfacet - facet normal -0.97813 0.207995 0 - outer loop - vertex 47.9737 -20.4912 0 - vertex 47.8542 -21.0531 -0.2 - vertex 47.8542 -21.0531 0 - endloop - endfacet - facet normal -0.962149 0.272524 0 - outer loop - vertex 47.7155 -21.5429 -0.2 - vertex 47.8542 -21.0531 0 - vertex 47.8542 -21.0531 -0.2 - endloop - endfacet - facet normal -0.962149 0.272524 0 - outer loop - vertex 47.8542 -21.0531 0 - vertex 47.7155 -21.5429 -0.2 - vertex 47.7155 -21.5429 0 - endloop - endfacet - facet normal -0.934598 0.355705 0 - outer loop - vertex 47.5422 -21.9981 -0.2 - vertex 47.7155 -21.5429 0 - vertex 47.7155 -21.5429 -0.2 - endloop - endfacet - facet normal -0.934598 0.355705 0 - outer loop - vertex 47.7155 -21.5429 0 - vertex 47.5422 -21.9981 -0.2 - vertex 47.5422 -21.9981 0 - endloop - endfacet - facet normal -0.898902 0.438149 0 - outer loop - vertex 47.3383 -22.4165 -0.2 - vertex 47.5422 -21.9981 0 - vertex 47.5422 -21.9981 -0.2 - endloop - endfacet - facet normal -0.898902 0.438149 0 - outer loop - vertex 47.5422 -21.9981 0 - vertex 47.3383 -22.4165 -0.2 - vertex 47.3383 -22.4165 0 - endloop - endfacet - facet normal -0.854314 0.519757 0 - outer loop - vertex 47.1074 -22.796 -0.2 - vertex 47.3383 -22.4165 0 - vertex 47.3383 -22.4165 -0.2 - endloop - endfacet - facet normal -0.854314 0.519757 0 - outer loop - vertex 47.3383 -22.4165 0 - vertex 47.1074 -22.796 -0.2 - vertex 47.1074 -22.796 0 - endloop - endfacet - facet normal -0.79973 0.600359 0 - outer loop - vertex 46.8534 -23.1343 -0.2 - vertex 47.1074 -22.796 0 - vertex 47.1074 -22.796 -0.2 - endloop - endfacet - facet normal -0.79973 0.600359 0 - outer loop - vertex 47.1074 -22.796 0 - vertex 46.8534 -23.1343 -0.2 - vertex 46.8534 -23.1343 0 - endloop - endfacet - facet normal -0.73354 0.679647 0 - outer loop - vertex 46.5801 -23.4293 -0.2 - vertex 46.8534 -23.1343 0 - vertex 46.8534 -23.1343 -0.2 - endloop - endfacet - facet normal -0.73354 0.679647 0 - outer loop - vertex 46.8534 -23.1343 0 - vertex 46.5801 -23.4293 -0.2 - vertex 46.5801 -23.4293 0 - endloop - endfacet - facet normal -0.653573 0.756863 0 - outer loop - vertex 46.5801 -23.4293 -0.2 - vertex 46.2914 -23.6786 0 - vertex 46.5801 -23.4293 0 - endloop - endfacet - facet normal -0.653573 0.756863 0 - outer loop - vertex 46.2914 -23.6786 0 - vertex 46.5801 -23.4293 -0.2 - vertex 46.2914 -23.6786 -0.2 - endloop - endfacet - facet normal -0.557126 0.830428 0 - outer loop - vertex 46.2914 -23.6786 -0.2 - vertex 45.9909 -23.8802 0 - vertex 46.2914 -23.6786 0 - endloop - endfacet - facet normal -0.557126 0.830428 0 - outer loop - vertex 45.9909 -23.8802 0 - vertex 46.2914 -23.6786 -0.2 - vertex 45.9909 -23.8802 -0.2 - endloop - endfacet - facet normal -0.441145 0.897436 0 - outer loop - vertex 45.9909 -23.8802 -0.2 - vertex 45.6826 -24.0317 0 - vertex 45.9909 -23.8802 0 - endloop - endfacet - facet normal -0.441145 0.897436 0 - outer loop - vertex 45.6826 -24.0317 0 - vertex 45.9909 -23.8802 -0.2 - vertex 45.6826 -24.0317 -0.2 - endloop - endfacet - facet normal -0.303061 0.952971 0 - outer loop - vertex 45.6826 -24.0317 -0.2 - vertex 45.3703 -24.1311 0 - vertex 45.6826 -24.0317 0 - endloop - endfacet - facet normal -0.303061 0.952971 0 - outer loop - vertex 45.3703 -24.1311 0 - vertex 45.6826 -24.0317 -0.2 - vertex 45.3703 -24.1311 -0.2 - endloop - endfacet - facet normal -0.142218 0.989835 0 - outer loop - vertex 45.3703 -24.1311 -0.2 - vertex 45.0576 -24.176 0 - vertex 45.3703 -24.1311 0 - endloop - endfacet - facet normal -0.142218 0.989835 0 - outer loop - vertex 45.0576 -24.176 0 - vertex 45.3703 -24.1311 -0.2 - vertex 45.0576 -24.176 -0.2 - endloop - endfacet - facet normal 0.0378695 0.999283 -0 - outer loop - vertex 45.0576 -24.176 -0.2 - vertex 44.7485 -24.1643 0 - vertex 45.0576 -24.176 0 - endloop - endfacet - facet normal 0.0378695 0.999283 0 - outer loop - vertex 44.7485 -24.1643 0 - vertex 45.0576 -24.176 -0.2 - vertex 44.7485 -24.1643 -0.2 - endloop - endfacet - facet normal 0.227696 0.973732 -0 - outer loop - vertex 44.7485 -24.1643 -0.2 - vertex 44.4468 -24.0937 0 - vertex 44.7485 -24.1643 0 - endloop - endfacet - facet normal 0.227696 0.973732 0 - outer loop - vertex 44.4468 -24.0937 0 - vertex 44.7485 -24.1643 -0.2 - vertex 44.4468 -24.0937 -0.2 - endloop - endfacet - facet normal 0.412594 0.910915 -0 - outer loop - vertex 44.4468 -24.0937 -0.2 - vertex 44.1563 -23.9621 0 - vertex 44.4468 -24.0937 0 - endloop - endfacet - facet normal 0.412594 0.910915 0 - outer loop - vertex 44.1563 -23.9621 0 - vertex 44.4468 -24.0937 -0.2 - vertex 44.1563 -23.9621 -0.2 - endloop - endfacet - facet normal 0.57736 0.81649 -0 - outer loop - vertex 44.1563 -23.9621 -0.2 - vertex 43.8807 -23.7673 0 - vertex 44.1563 -23.9621 0 - endloop - endfacet - facet normal 0.57736 0.81649 0 - outer loop - vertex 43.8807 -23.7673 0 - vertex 44.1563 -23.9621 -0.2 - vertex 43.8807 -23.7673 -0.2 - endloop - endfacet - facet normal 0.711931 0.70225 0 - outer loop - vertex 43.8807 -23.7673 0 - vertex 43.6239 -23.5069 -0.2 - vertex 43.6239 -23.5069 0 - endloop - endfacet - facet normal 0.711931 0.70225 0 - outer loop - vertex 43.6239 -23.5069 -0.2 - vertex 43.8807 -23.7673 0 - vertex 43.8807 -23.7673 -0.2 - endloop - endfacet - facet normal 0.732645 0.680611 0 - outer loop - vertex 43.6239 -23.5069 0 - vertex 43.3873 -23.2523 -0.2 - vertex 43.3873 -23.2523 0 - endloop - endfacet - facet normal 0.732645 0.680611 0 - outer loop - vertex 43.3873 -23.2523 -0.2 - vertex 43.6239 -23.5069 0 - vertex 43.6239 -23.5069 -0.2 - endloop - endfacet - facet normal 0.659068 0.752084 -0 - outer loop - vertex 43.3873 -23.2523 -0.2 - vertex 43.1493 -23.0437 0 - vertex 43.3873 -23.2523 0 - endloop - endfacet - facet normal 0.659068 0.752084 0 - outer loop - vertex 43.1493 -23.0437 0 - vertex 43.3873 -23.2523 -0.2 - vertex 43.1493 -23.0437 -0.2 - endloop - endfacet - facet normal 0.55411 0.832444 -0 - outer loop - vertex 43.1493 -23.0437 -0.2 - vertex 42.9376 -22.9028 0 - vertex 43.1493 -23.0437 0 - endloop - endfacet - facet normal 0.55411 0.832444 0 - outer loop - vertex 42.9376 -22.9028 0 - vertex 43.1493 -23.0437 -0.2 - vertex 42.9376 -22.9028 -0.2 - endloop - endfacet - facet normal 0.402192 0.915555 -0 - outer loop - vertex 42.9376 -22.9028 -0.2 - vertex 42.8503 -22.8644 0 - vertex 42.9376 -22.9028 0 - endloop - endfacet - facet normal 0.402192 0.915555 0 - outer loop - vertex 42.8503 -22.8644 0 - vertex 42.9376 -22.9028 -0.2 - vertex 42.8503 -22.8644 -0.2 - endloop - endfacet - facet normal 0.186876 0.982384 -0 - outer loop - vertex 42.8503 -22.8644 -0.2 - vertex 42.7799 -22.851 0 - vertex 42.8503 -22.8644 0 - endloop - endfacet - facet normal 0.186876 0.982384 0 - outer loop - vertex 42.7799 -22.851 0 - vertex 42.8503 -22.8644 -0.2 - vertex 42.7799 -22.851 -0.2 - endloop - endfacet - facet normal -0.254315 0.967121 0 - outer loop - vertex 42.7799 -22.851 -0.2 - vertex 42.6968 -22.8729 0 - vertex 42.7799 -22.851 0 - endloop - endfacet - facet normal -0.254315 0.967121 0 - outer loop - vertex 42.6968 -22.8729 0 - vertex 42.7799 -22.851 -0.2 - vertex 42.6968 -22.8729 -0.2 - endloop - endfacet - facet normal -0.451219 0.892413 0 - outer loop - vertex 42.6968 -22.8729 -0.2 - vertex 42.5728 -22.9356 0 - vertex 42.6968 -22.8729 0 - endloop - endfacet - facet normal -0.451219 0.892413 0 - outer loop - vertex 42.5728 -22.9356 0 - vertex 42.6968 -22.8729 -0.2 - vertex 42.5728 -22.9356 -0.2 - endloop - endfacet - facet normal -0.553713 0.832708 0 - outer loop - vertex 42.5728 -22.9356 -0.2 - vertex 42.2267 -23.1657 0 - vertex 42.5728 -22.9356 0 - endloop - endfacet - facet normal -0.553713 0.832708 0 - outer loop - vertex 42.2267 -23.1657 0 - vertex 42.5728 -22.9356 -0.2 - vertex 42.2267 -23.1657 -0.2 - endloop - endfacet - facet normal -0.614835 0.788656 0 - outer loop - vertex 42.2267 -23.1657 -0.2 - vertex 41.7898 -23.5063 0 - vertex 42.2267 -23.1657 0 - endloop - endfacet - facet normal -0.614835 0.788656 0 - outer loop - vertex 41.7898 -23.5063 0 - vertex 42.2267 -23.1657 -0.2 - vertex 41.7898 -23.5063 -0.2 - endloop - endfacet - facet normal -0.655263 0.755401 0 - outer loop - vertex 41.7898 -23.5063 -0.2 - vertex 41.3103 -23.9223 0 - vertex 41.7898 -23.5063 0 - endloop - endfacet - facet normal -0.655263 0.755401 0 - outer loop - vertex 41.3103 -23.9223 0 - vertex 41.7898 -23.5063 -0.2 - vertex 41.3103 -23.9223 -0.2 - endloop - endfacet - facet normal -0.681106 0.732185 0 - outer loop - vertex 41.3103 -23.9223 -0.2 - vertex 40.922 -24.2835 0 - vertex 41.3103 -23.9223 0 - endloop - endfacet - facet normal -0.681106 0.732185 0 - outer loop - vertex 40.922 -24.2835 0 - vertex 41.3103 -23.9223 -0.2 - vertex 40.922 -24.2835 -0.2 - endloop - endfacet - facet normal -0.723872 0.689934 0 - outer loop - vertex 40.604 -24.6171 -0.2 - vertex 40.922 -24.2835 0 - vertex 40.922 -24.2835 -0.2 - endloop - endfacet - facet normal -0.723872 0.689934 0 - outer loop - vertex 40.922 -24.2835 0 - vertex 40.604 -24.6171 -0.2 - vertex 40.604 -24.6171 0 - endloop - endfacet - facet normal -0.795563 0.60587 0 - outer loop - vertex 40.3218 -24.9877 -0.2 - vertex 40.604 -24.6171 0 - vertex 40.604 -24.6171 -0.2 - endloop - endfacet - facet normal -0.795563 0.60587 0 - outer loop - vertex 40.604 -24.6171 0 - vertex 40.3218 -24.9877 -0.2 - vertex 40.3218 -24.9877 0 - endloop - endfacet - facet normal -0.859211 0.511621 0 - outer loop - vertex 40.0406 -25.46 -0.2 - vertex 40.3218 -24.9877 0 - vertex 40.3218 -24.9877 -0.2 - endloop - endfacet - facet normal -0.859211 0.511621 0 - outer loop - vertex 40.3218 -24.9877 0 - vertex 40.0406 -25.46 -0.2 - vertex 40.0406 -25.46 0 - endloop - endfacet - facet normal -0.896877 0.442281 0 - outer loop - vertex 39.7256 -26.0988 -0.2 - vertex 40.0406 -25.46 0 - vertex 40.0406 -25.46 -0.2 - endloop - endfacet - facet normal -0.896877 0.442281 0 - outer loop - vertex 40.0406 -25.46 0 - vertex 39.7256 -26.0988 -0.2 - vertex 39.7256 -26.0988 0 - endloop - endfacet - facet normal -0.915036 0.403372 0 - outer loop - vertex 39.342 -26.9688 -0.2 - vertex 39.7256 -26.0988 0 - vertex 39.7256 -26.0988 -0.2 - endloop - endfacet - facet normal -0.915036 0.403372 0 - outer loop - vertex 39.7256 -26.0988 0 - vertex 39.342 -26.9688 -0.2 - vertex 39.342 -26.9688 0 - endloop - endfacet - facet normal -0.924339 0.381572 0 - outer loop - vertex 38.2305 -29.6614 -0.2 - vertex 39.342 -26.9688 0 - vertex 39.342 -26.9688 -0.2 - endloop - endfacet - facet normal -0.924339 0.381572 0 - outer loop - vertex 39.342 -26.9688 0 - vertex 38.2305 -29.6614 -0.2 - vertex 38.2305 -29.6614 0 - endloop - endfacet - facet normal -0.929232 0.369498 0 - outer loop - vertex 37.444 -31.6395 -0.2 - vertex 38.2305 -29.6614 0 - vertex 38.2305 -29.6614 -0.2 - endloop - endfacet - facet normal -0.929232 0.369498 0 - outer loop - vertex 38.2305 -29.6614 0 - vertex 37.444 -31.6395 -0.2 - vertex 37.444 -31.6395 0 - endloop - endfacet - facet normal -0.937221 0.348736 0 - outer loop - vertex 36.8389 -33.2656 -0.2 - vertex 37.444 -31.6395 0 - vertex 37.444 -31.6395 -0.2 - endloop - endfacet - facet normal -0.937221 0.348736 0 - outer loop - vertex 37.444 -31.6395 0 - vertex 36.8389 -33.2656 -0.2 - vertex 36.8389 -33.2656 0 - endloop - endfacet - facet normal -0.949427 0.313989 0 - outer loop - vertex 36.4479 -34.448 -0.2 - vertex 36.8389 -33.2656 0 - vertex 36.8389 -33.2656 -0.2 - endloop - endfacet - facet normal -0.949427 0.313989 0 - outer loop - vertex 36.8389 -33.2656 0 - vertex 36.4479 -34.448 -0.2 - vertex 36.4479 -34.448 0 - endloop - endfacet - facet normal -0.966574 0.256387 0 - outer loop - vertex 36.3428 -34.844 -0.2 - vertex 36.4479 -34.448 0 - vertex 36.4479 -34.448 -0.2 - endloop - endfacet - facet normal -0.966574 0.256387 0 - outer loop - vertex 36.4479 -34.448 0 - vertex 36.3428 -34.844 -0.2 - vertex 36.3428 -34.844 0 - endloop - endfacet - facet normal -0.987922 0.154951 0 - outer loop - vertex 36.3035 -35.0946 -0.2 - vertex 36.3428 -34.844 0 - vertex 36.3428 -34.844 -0.2 - endloop - endfacet - facet normal -0.987922 0.154951 0 - outer loop - vertex 36.3428 -34.844 0 - vertex 36.3035 -35.0946 -0.2 - vertex 36.3035 -35.0946 0 - endloop - endfacet - facet normal -0.999846 0.0175753 0 - outer loop - vertex 36.2992 -35.3418 -0.2 - vertex 36.3035 -35.0946 0 - vertex 36.3035 -35.0946 -0.2 - endloop - endfacet - facet normal -0.999846 0.0175753 0 - outer loop - vertex 36.3035 -35.0946 0 - vertex 36.2992 -35.3418 -0.2 - vertex 36.2992 -35.3418 0 - endloop - endfacet - facet normal -0.99871 -0.0507764 0 - outer loop - vertex 36.3089 -35.532 -0.2 - vertex 36.2992 -35.3418 0 - vertex 36.2992 -35.3418 -0.2 - endloop - endfacet - facet normal -0.99871 -0.0507764 0 - outer loop - vertex 36.2992 -35.3418 0 - vertex 36.3089 -35.532 -0.2 - vertex 36.3089 -35.532 0 - endloop - endfacet - facet normal -0.974112 -0.226068 0 - outer loop - vertex 36.3422 -35.6758 -0.2 - vertex 36.3089 -35.532 0 - vertex 36.3089 -35.532 -0.2 - endloop - endfacet - facet normal -0.974112 -0.226068 0 - outer loop - vertex 36.3089 -35.532 0 - vertex 36.3422 -35.6758 -0.2 - vertex 36.3422 -35.6758 0 - endloop - endfacet - facet normal -0.84992 -0.526911 0 - outer loop - vertex 36.4089 -35.7834 -0.2 - vertex 36.3422 -35.6758 0 - vertex 36.3422 -35.6758 -0.2 - endloop - endfacet - facet normal -0.84992 -0.526911 0 - outer loop - vertex 36.3422 -35.6758 0 - vertex 36.4089 -35.7834 -0.2 - vertex 36.4089 -35.7834 0 - endloop - endfacet - facet normal -0.59793 -0.801548 0 - outer loop - vertex 36.4089 -35.7834 -0.2 - vertex 36.5187 -35.8653 0 - vertex 36.4089 -35.7834 0 - endloop - endfacet - facet normal -0.59793 -0.801548 -0 - outer loop - vertex 36.5187 -35.8653 0 - vertex 36.4089 -35.7834 -0.2 - vertex 36.5187 -35.8653 -0.2 - endloop - endfacet - facet normal -0.37896 -0.925413 0 - outer loop - vertex 36.5187 -35.8653 -0.2 - vertex 36.6812 -35.9318 0 - vertex 36.5187 -35.8653 0 - endloop - endfacet - facet normal -0.37896 -0.925413 -0 - outer loop - vertex 36.6812 -35.9318 0 - vertex 36.5187 -35.8653 -0.2 - vertex 36.6812 -35.9318 -0.2 - endloop - endfacet - facet normal -0.239239 -0.970961 0 - outer loop - vertex 36.6812 -35.9318 -0.2 - vertex 37.203 -36.0604 0 - vertex 36.6812 -35.9318 0 - endloop - endfacet - facet normal -0.239239 -0.970961 -0 - outer loop - vertex 37.203 -36.0604 0 - vertex 36.6812 -35.9318 -0.2 - vertex 37.203 -36.0604 -0.2 - endloop - endfacet - facet normal -0.245847 -0.969309 0 - outer loop - vertex 37.203 -36.0604 -0.2 - vertex 37.6954 -36.1853 0 - vertex 37.203 -36.0604 0 - endloop - endfacet - facet normal -0.245847 -0.969309 -0 - outer loop - vertex 37.6954 -36.1853 0 - vertex 37.203 -36.0604 -0.2 - vertex 37.6954 -36.1853 -0.2 - endloop - endfacet - facet normal -0.369675 -0.929161 0 - outer loop - vertex 37.6954 -36.1853 -0.2 - vertex 37.8576 -36.2498 0 - vertex 37.6954 -36.1853 0 - endloop - endfacet - facet normal -0.369675 -0.929161 -0 - outer loop - vertex 37.8576 -36.2498 0 - vertex 37.6954 -36.1853 -0.2 - vertex 37.8576 -36.2498 -0.2 - endloop - endfacet - facet normal -0.539517 -0.841975 0 - outer loop - vertex 37.8576 -36.2498 -0.2 - vertex 37.9736 -36.3241 0 - vertex 37.8576 -36.2498 0 - endloop - endfacet - facet normal -0.539517 -0.841975 -0 - outer loop - vertex 37.9736 -36.3241 0 - vertex 37.8576 -36.2498 -0.2 - vertex 37.9736 -36.3241 -0.2 - endloop - endfacet - facet normal -0.760366 -0.649494 0 - outer loop - vertex 38.0509 -36.4146 -0.2 - vertex 37.9736 -36.3241 0 - vertex 37.9736 -36.3241 -0.2 - endloop - endfacet - facet normal -0.760366 -0.649494 0 - outer loop - vertex 37.9736 -36.3241 0 - vertex 38.0509 -36.4146 -0.2 - vertex 38.0509 -36.4146 0 - endloop - endfacet - facet normal -0.926147 -0.377163 0 - outer loop - vertex 38.0969 -36.5276 -0.2 - vertex 38.0509 -36.4146 0 - vertex 38.0509 -36.4146 -0.2 - endloop - endfacet - facet normal -0.926147 -0.377163 0 - outer loop - vertex 38.0509 -36.4146 0 - vertex 38.0969 -36.5276 -0.2 - vertex 38.0969 -36.5276 0 - endloop - endfacet - facet normal -0.988006 -0.154417 0 - outer loop - vertex 38.119 -36.6694 -0.2 - vertex 38.0969 -36.5276 0 - vertex 38.0969 -36.5276 -0.2 - endloop - endfacet - facet normal -0.988006 -0.154417 0 - outer loop - vertex 38.0969 -36.5276 0 - vertex 38.119 -36.6694 -0.2 - vertex 38.119 -36.6694 0 - endloop - endfacet - facet normal -0.999475 -0.0324031 0 - outer loop - vertex 38.1248 -36.8464 -0.2 - vertex 38.119 -36.6694 0 - vertex 38.119 -36.6694 -0.2 - endloop - endfacet - facet normal -0.999475 -0.0324031 0 - outer loop - vertex 38.119 -36.6694 0 - vertex 38.1248 -36.8464 -0.2 - vertex 38.1248 -36.8464 0 - endloop - endfacet - facet normal -0.99859 0.0530808 0 - outer loop - vertex 38.103 -37.2562 -0.2 - vertex 38.1248 -36.8464 0 - vertex 38.1248 -36.8464 -0.2 - endloop - endfacet - facet normal -0.99859 0.0530808 0 - outer loop - vertex 38.1248 -36.8464 0 - vertex 38.103 -37.2562 -0.2 - vertex 38.103 -37.2562 0 - endloop - endfacet - facet normal -0.977614 0.210405 0 - outer loop - vertex 38.0668 -37.4245 -0.2 - vertex 38.103 -37.2562 0 - vertex 38.103 -37.2562 -0.2 - endloop - endfacet - facet normal -0.977614 0.210405 0 - outer loop - vertex 38.103 -37.2562 0 - vertex 38.0668 -37.4245 -0.2 - vertex 38.0668 -37.4245 0 - endloop - endfacet - facet normal -0.922461 0.38609 0 - outer loop - vertex 38.0057 -37.5705 -0.2 - vertex 38.0668 -37.4245 0 - vertex 38.0668 -37.4245 -0.2 - endloop - endfacet - facet normal -0.922461 0.38609 0 - outer loop - vertex 38.0668 -37.4245 0 - vertex 38.0057 -37.5705 -0.2 - vertex 38.0057 -37.5705 0 - endloop - endfacet - facet normal -0.806037 0.591865 0 - outer loop - vertex 37.9137 -37.6957 -0.2 - vertex 38.0057 -37.5705 0 - vertex 38.0057 -37.5705 -0.2 - endloop - endfacet - facet normal -0.806037 0.591865 0 - outer loop - vertex 38.0057 -37.5705 0 - vertex 37.9137 -37.6957 -0.2 - vertex 37.9137 -37.6957 0 - endloop - endfacet - facet normal -0.635642 0.771984 0 - outer loop - vertex 37.9137 -37.6957 -0.2 - vertex 37.7849 -37.8018 0 - vertex 37.9137 -37.6957 0 - endloop - endfacet - facet normal -0.635642 0.771984 0 - outer loop - vertex 37.7849 -37.8018 0 - vertex 37.9137 -37.6957 -0.2 - vertex 37.7849 -37.8018 -0.2 - endloop - endfacet - facet normal -0.458146 0.888877 0 - outer loop - vertex 37.7849 -37.8018 -0.2 - vertex 37.6132 -37.8903 0 - vertex 37.7849 -37.8018 0 - endloop - endfacet - facet normal -0.458146 0.888877 0 - outer loop - vertex 37.6132 -37.8903 0 - vertex 37.7849 -37.8018 -0.2 - vertex 37.6132 -37.8903 -0.2 - endloop - endfacet - facet normal -0.312246 0.950001 0 - outer loop - vertex 37.6132 -37.8903 -0.2 - vertex 37.3927 -37.9628 0 - vertex 37.6132 -37.8903 0 - endloop - endfacet - facet normal -0.312246 0.950001 0 - outer loop - vertex 37.3927 -37.9628 0 - vertex 37.6132 -37.8903 -0.2 - vertex 37.3927 -37.9628 -0.2 - endloop - endfacet - facet normal -0.206263 0.978497 0 - outer loop - vertex 37.3927 -37.9628 -0.2 - vertex 37.1174 -38.0208 0 - vertex 37.3927 -37.9628 0 - endloop - endfacet - facet normal -0.206263 0.978497 0 - outer loop - vertex 37.1174 -38.0208 0 - vertex 37.3927 -37.9628 -0.2 - vertex 37.1174 -38.0208 -0.2 - endloop - endfacet - facet normal -0.133215 0.991087 0 - outer loop - vertex 37.1174 -38.0208 -0.2 - vertex 36.7812 -38.066 0 - vertex 37.1174 -38.0208 0 - endloop - endfacet - facet normal -0.133215 0.991087 0 - outer loop - vertex 36.7812 -38.066 0 - vertex 37.1174 -38.0208 -0.2 - vertex 36.7812 -38.066 -0.2 - endloop - endfacet - facet normal -0.0659814 0.997821 0 - outer loop - vertex 36.7812 -38.066 -0.2 - vertex 35.9024 -38.1241 0 - vertex 36.7812 -38.066 0 - endloop - endfacet - facet normal -0.0659814 0.997821 0 - outer loop - vertex 35.9024 -38.1241 0 - vertex 36.7812 -38.066 -0.2 - vertex 35.9024 -38.1241 -0.2 - endloop - endfacet - facet normal -0.0214493 0.99977 0 - outer loop - vertex 35.9024 -38.1241 -0.2 - vertex 34.7085 -38.1497 0 - vertex 35.9024 -38.1241 0 - endloop - endfacet - facet normal -0.0214493 0.99977 0 - outer loop - vertex 34.7085 -38.1497 0 - vertex 35.9024 -38.1241 -0.2 - vertex 34.7085 -38.1497 -0.2 - endloop - endfacet - facet normal -0.00368212 0.999993 0 - outer loop - vertex 34.7085 -38.1497 -0.2 - vertex 33.1514 -38.1555 0 - vertex 34.7085 -38.1497 0 - endloop - endfacet - facet normal -0.00368212 0.999993 0 - outer loop - vertex 33.1514 -38.1555 0 - vertex 34.7085 -38.1497 -0.2 - vertex 33.1514 -38.1555 -0.2 - endloop - endfacet - facet normal 0.00738333 0.999973 -0 - outer loop - vertex 33.1514 -38.1555 -0.2 - vertex 31.1824 -38.1409 0 - vertex 33.1514 -38.1555 0 - endloop - endfacet - facet normal 0.00738333 0.999973 0 - outer loop - vertex 31.1824 -38.1409 0 - vertex 33.1514 -38.1555 -0.2 - vertex 31.1824 -38.1409 -0.2 - endloop - endfacet - facet normal 0.0337924 0.999429 -0 - outer loop - vertex 31.1824 -38.1409 -0.2 - vertex 29.8192 -38.0948 0 - vertex 31.1824 -38.1409 0 - endloop - endfacet - facet normal 0.0337924 0.999429 0 - outer loop - vertex 29.8192 -38.0948 0 - vertex 31.1824 -38.1409 -0.2 - vertex 29.8192 -38.0948 -0.2 - endloop - endfacet - facet normal 0.0757553 0.997126 -0 - outer loop - vertex 29.8192 -38.0948 -0.2 - vertex 29.3448 -38.0588 0 - vertex 29.8192 -38.0948 0 - endloop - endfacet - facet normal 0.0757553 0.997126 0 - outer loop - vertex 29.3448 -38.0588 0 - vertex 29.8192 -38.0948 -0.2 - vertex 29.3448 -38.0588 -0.2 - endloop - endfacet - facet normal 0.129569 0.99157 -0 - outer loop - vertex 29.3448 -38.0588 -0.2 - vertex 28.9979 -38.0135 0 - vertex 29.3448 -38.0588 0 - endloop - endfacet - facet normal 0.129569 0.99157 0 - outer loop - vertex 28.9979 -38.0135 0 - vertex 29.3448 -38.0588 -0.2 - vertex 28.9979 -38.0135 -0.2 - endloop - endfacet - facet normal 0.235468 0.971882 -0 - outer loop - vertex 28.9979 -38.0135 -0.2 - vertex 28.7706 -37.9584 0 - vertex 28.9979 -38.0135 0 - endloop - endfacet - facet normal 0.235468 0.971882 0 - outer loop - vertex 28.7706 -37.9584 0 - vertex 28.9979 -38.0135 -0.2 - vertex 28.7706 -37.9584 -0.2 - endloop - endfacet - facet normal 0.491281 0.871001 -0 - outer loop - vertex 28.7706 -37.9584 -0.2 - vertex 28.6548 -37.8931 0 - vertex 28.7706 -37.9584 0 - endloop - endfacet - facet normal 0.491281 0.871001 0 - outer loop - vertex 28.6548 -37.8931 0 - vertex 28.7706 -37.9584 -0.2 - vertex 28.6548 -37.8931 -0.2 - endloop - endfacet - facet normal 0.794168 0.607698 0 - outer loop - vertex 28.6548 -37.8931 0 - vertex 28.5587 -37.7674 -0.2 - vertex 28.5587 -37.7674 0 - endloop - endfacet - facet normal 0.794168 0.607698 0 - outer loop - vertex 28.5587 -37.7674 -0.2 - vertex 28.6548 -37.8931 0 - vertex 28.6548 -37.8931 -0.2 - endloop - endfacet - facet normal 0.879213 0.47643 0 - outer loop - vertex 28.5587 -37.7674 0 - vertex 28.4883 -37.6376 -0.2 - vertex 28.4883 -37.6376 0 - endloop - endfacet - facet normal 0.879213 0.47643 0 - outer loop - vertex 28.4883 -37.6376 -0.2 - vertex 28.5587 -37.7674 0 - vertex 28.5587 -37.7674 -0.2 - endloop - endfacet - facet normal 0.946363 0.323104 0 - outer loop - vertex 28.4883 -37.6376 0 - vertex 28.443 -37.5048 -0.2 - vertex 28.443 -37.5048 0 - endloop - endfacet - facet normal 0.946363 0.323104 0 - outer loop - vertex 28.443 -37.5048 -0.2 - vertex 28.4883 -37.6376 0 - vertex 28.4883 -37.6376 -0.2 - endloop - endfacet - facet normal 0.987941 0.154833 0 - outer loop - vertex 28.443 -37.5048 0 - vertex 28.4219 -37.3704 -0.2 - vertex 28.4219 -37.3704 0 - endloop - endfacet - facet normal 0.987941 0.154833 0 - outer loop - vertex 28.4219 -37.3704 -0.2 - vertex 28.443 -37.5048 0 - vertex 28.443 -37.5048 -0.2 - endloop - endfacet - facet normal 0.99984 -0.0178826 0 - outer loop - vertex 28.4219 -37.3704 0 - vertex 28.4243 -37.2355 -0.2 - vertex 28.4243 -37.2355 0 - endloop - endfacet - facet normal 0.99984 -0.0178826 0 - outer loop - vertex 28.4243 -37.2355 -0.2 - vertex 28.4219 -37.3704 0 - vertex 28.4219 -37.3704 -0.2 - endloop - endfacet - facet normal 0.982895 -0.184165 0 - outer loop - vertex 28.4243 -37.2355 0 - vertex 28.4495 -37.1014 -0.2 - vertex 28.4495 -37.1014 0 - endloop - endfacet - facet normal 0.982895 -0.184165 0 - outer loop - vertex 28.4495 -37.1014 -0.2 - vertex 28.4243 -37.2355 0 - vertex 28.4243 -37.2355 -0.2 - endloop - endfacet - facet normal 0.941957 -0.335735 0 - outer loop - vertex 28.4495 -37.1014 0 - vertex 28.4965 -36.9693 -0.2 - vertex 28.4965 -36.9693 0 - endloop - endfacet - facet normal 0.941957 -0.335735 0 - outer loop - vertex 28.4965 -36.9693 -0.2 - vertex 28.4495 -37.1014 0 - vertex 28.4495 -37.1014 -0.2 - endloop - endfacet - facet normal 0.883597 -0.468248 0 - outer loop - vertex 28.4965 -36.9693 0 - vertex 28.5648 -36.8405 -0.2 - vertex 28.5648 -36.8405 0 - endloop - endfacet - facet normal 0.883597 -0.468248 0 - outer loop - vertex 28.5648 -36.8405 -0.2 - vertex 28.4965 -36.9693 0 - vertex 28.4965 -36.9693 -0.2 - endloop - endfacet - facet normal 0.814058 -0.580783 0 - outer loop - vertex 28.5648 -36.8405 0 - vertex 28.6534 -36.7163 -0.2 - vertex 28.6534 -36.7163 0 - endloop - endfacet - facet normal 0.814058 -0.580783 0 - outer loop - vertex 28.6534 -36.7163 -0.2 - vertex 28.5648 -36.8405 0 - vertex 28.5648 -36.8405 -0.2 - endloop - endfacet - facet normal 0.738176 -0.674608 0 - outer loop - vertex 28.6534 -36.7163 0 - vertex 28.7617 -36.5978 -0.2 - vertex 28.7617 -36.5978 0 - endloop - endfacet - facet normal 0.738176 -0.674608 0 - outer loop - vertex 28.7617 -36.5978 -0.2 - vertex 28.6534 -36.7163 0 - vertex 28.6534 -36.7163 -0.2 - endloop - endfacet - facet normal 0.659231 -0.75194 0 - outer loop - vertex 28.7617 -36.5978 -0.2 - vertex 28.8888 -36.4863 0 - vertex 28.7617 -36.5978 0 - endloop - endfacet - facet normal 0.659231 -0.75194 0 - outer loop - vertex 28.8888 -36.4863 0 - vertex 28.7617 -36.5978 -0.2 - vertex 28.8888 -36.4863 -0.2 - endloop - endfacet - facet normal 0.57926 -0.815143 0 - outer loop - vertex 28.8888 -36.4863 -0.2 - vertex 29.034 -36.3831 0 - vertex 28.8888 -36.4863 0 - endloop - endfacet - facet normal 0.57926 -0.815143 0 - outer loop - vertex 29.034 -36.3831 0 - vertex 28.8888 -36.4863 -0.2 - vertex 29.034 -36.3831 -0.2 - endloop - endfacet - facet normal 0.499403 -0.86637 0 - outer loop - vertex 29.034 -36.3831 -0.2 - vertex 29.1966 -36.2895 0 - vertex 29.034 -36.3831 0 - endloop - endfacet - facet normal 0.499403 -0.86637 0 - outer loop - vertex 29.1966 -36.2895 0 - vertex 29.034 -36.3831 -0.2 - vertex 29.1966 -36.2895 -0.2 - endloop - endfacet - facet normal 0.420274 -0.907397 0 - outer loop - vertex 29.1966 -36.2895 -0.2 - vertex 29.3757 -36.2065 0 - vertex 29.1966 -36.2895 0 - endloop - endfacet - facet normal 0.420274 -0.907397 0 - outer loop - vertex 29.3757 -36.2065 0 - vertex 29.1966 -36.2895 -0.2 - vertex 29.3757 -36.2065 -0.2 - endloop - endfacet - facet normal 0.34216 -0.939642 0 - outer loop - vertex 29.3757 -36.2065 -0.2 - vertex 29.5705 -36.1356 0 - vertex 29.3757 -36.2065 0 - endloop - endfacet - facet normal 0.34216 -0.939642 0 - outer loop - vertex 29.5705 -36.1356 0 - vertex 29.3757 -36.2065 -0.2 - vertex 29.5705 -36.1356 -0.2 - endloop - endfacet - facet normal 0.265166 -0.964203 0 - outer loop - vertex 29.5705 -36.1356 -0.2 - vertex 29.7804 -36.0779 0 - vertex 29.5705 -36.1356 0 - endloop - endfacet - facet normal 0.265166 -0.964203 0 - outer loop - vertex 29.7804 -36.0779 0 - vertex 29.5705 -36.1356 -0.2 - vertex 29.7804 -36.0779 -0.2 - endloop - endfacet - facet normal 0.237962 -0.971274 0 - outer loop - vertex 29.7804 -36.0779 -0.2 - vertex 30.4037 -35.9251 0 - vertex 29.7804 -36.0779 0 - endloop - endfacet - facet normal 0.237962 -0.971274 0 - outer loop - vertex 30.4037 -35.9251 0 - vertex 29.7804 -36.0779 -0.2 - vertex 30.4037 -35.9251 -0.2 - endloop - endfacet - facet normal 0.297523 -0.954715 0 - outer loop - vertex 30.4037 -35.9251 -0.2 - vertex 30.6629 -35.8443 0 - vertex 30.4037 -35.9251 0 - endloop - endfacet - facet normal 0.297523 -0.954715 0 - outer loop - vertex 30.6629 -35.8443 0 - vertex 30.4037 -35.9251 -0.2 - vertex 30.6629 -35.8443 -0.2 - endloop - endfacet - facet normal 0.380574 -0.92475 0 - outer loop - vertex 30.6629 -35.8443 -0.2 - vertex 30.8955 -35.7486 0 - vertex 30.6629 -35.8443 0 - endloop - endfacet - facet normal 0.380574 -0.92475 0 - outer loop - vertex 30.8955 -35.7486 0 - vertex 30.6629 -35.8443 -0.2 - vertex 30.8955 -35.7486 -0.2 - endloop - endfacet - facet normal 0.491191 -0.871052 0 - outer loop - vertex 30.8955 -35.7486 -0.2 - vertex 31.1075 -35.6291 0 - vertex 30.8955 -35.7486 0 - endloop - endfacet - facet normal 0.491191 -0.871052 0 - outer loop - vertex 31.1075 -35.6291 0 - vertex 30.8955 -35.7486 -0.2 - vertex 31.1075 -35.6291 -0.2 - endloop - endfacet - facet normal 0.610497 -0.792019 0 - outer loop - vertex 31.1075 -35.6291 -0.2 - vertex 31.3052 -35.4767 0 - vertex 31.1075 -35.6291 0 - endloop - endfacet - facet normal 0.610497 -0.792019 0 - outer loop - vertex 31.3052 -35.4767 0 - vertex 31.1075 -35.6291 -0.2 - vertex 31.3052 -35.4767 -0.2 - endloop - endfacet - facet normal 0.71556 -0.698551 0 - outer loop - vertex 31.3052 -35.4767 0 - vertex 31.4948 -35.2825 -0.2 - vertex 31.4948 -35.2825 0 - endloop - endfacet - facet normal 0.71556 -0.698551 0 - outer loop - vertex 31.4948 -35.2825 -0.2 - vertex 31.3052 -35.4767 0 - vertex 31.3052 -35.4767 -0.2 - endloop - endfacet - facet normal 0.793854 -0.608109 0 - outer loop - vertex 31.4948 -35.2825 0 - vertex 31.6824 -35.0376 -0.2 - vertex 31.6824 -35.0376 0 - endloop - endfacet - facet normal 0.793854 -0.608109 0 - outer loop - vertex 31.6824 -35.0376 -0.2 - vertex 31.4948 -35.2825 0 - vertex 31.4948 -35.2825 -0.2 - endloop - endfacet - facet normal 0.846168 -0.532916 0 - outer loop - vertex 31.6824 -35.0376 0 - vertex 31.8743 -34.7329 -0.2 - vertex 31.8743 -34.7329 0 - endloop - endfacet - facet normal 0.846168 -0.532916 0 - outer loop - vertex 31.8743 -34.7329 -0.2 - vertex 31.6824 -35.0376 0 - vertex 31.6824 -35.0376 -0.2 - endloop - endfacet - facet normal 0.879213 -0.47643 0 - outer loop - vertex 31.8743 -34.7329 0 - vertex 32.0766 -34.3595 -0.2 - vertex 32.0766 -34.3595 0 - endloop - endfacet - facet normal 0.879213 -0.47643 0 - outer loop - vertex 32.0766 -34.3595 -0.2 - vertex 31.8743 -34.7329 0 - vertex 31.8743 -34.7329 -0.2 - endloop - endfacet - facet normal 0.906414 -0.422389 0 - outer loop - vertex 32.0766 -34.3595 0 - vertex 32.5373 -33.371 -0.2 - vertex 32.5373 -33.371 0 - endloop - endfacet - facet normal 0.906414 -0.422389 0 - outer loop - vertex 32.5373 -33.371 -0.2 - vertex 32.0766 -34.3595 0 - vertex 32.0766 -34.3595 -0.2 - endloop - endfacet - facet normal 0.921762 -0.387755 0 - outer loop - vertex 32.5373 -33.371 0 - vertex 33.1139 -32.0001 -0.2 - vertex 33.1139 -32.0001 0 - endloop - endfacet - facet normal 0.921762 -0.387755 0 - outer loop - vertex 33.1139 -32.0001 -0.2 - vertex 32.5373 -33.371 0 - vertex 32.5373 -33.371 -0.2 - endloop - endfacet - facet normal 0.926317 -0.376745 0 - outer loop - vertex 33.1139 -32.0001 0 - vertex 33.8561 -30.1753 -0.2 - vertex 33.8561 -30.1753 0 - endloop - endfacet - facet normal 0.926317 -0.376745 0 - outer loop - vertex 33.8561 -30.1753 -0.2 - vertex 33.1139 -32.0001 0 - vertex 33.1139 -32.0001 -0.2 - endloop - endfacet - facet normal 0.926524 -0.376237 0 - outer loop - vertex 33.8561 -30.1753 0 - vertex 35.3422 -26.5156 -0.2 - vertex 35.3422 -26.5156 0 - endloop - endfacet - facet normal 0.926524 -0.376237 0 - outer loop - vertex 35.3422 -26.5156 -0.2 - vertex 33.8561 -30.1753 0 - vertex 33.8561 -30.1753 -0.2 - endloop - endfacet - facet normal 0.930815 -0.36549 0 - outer loop - vertex 35.3422 -26.5156 0 - vertex 35.6833 -25.6471 -0.2 - vertex 35.6833 -25.6471 0 - endloop - endfacet - facet normal 0.930815 -0.36549 0 - outer loop - vertex 35.6833 -25.6471 -0.2 - vertex 35.3422 -26.5156 0 - vertex 35.3422 -26.5156 -0.2 - endloop - endfacet - facet normal 0.940922 -0.338624 0 - outer loop - vertex 35.6833 -25.6471 0 - vertex 35.957 -24.8864 -0.2 - vertex 35.957 -24.8864 0 - endloop - endfacet - facet normal 0.940922 -0.338624 0 - outer loop - vertex 35.957 -24.8864 -0.2 - vertex 35.6833 -25.6471 0 - vertex 35.6833 -25.6471 -0.2 - endloop - endfacet - facet normal 0.953192 -0.302366 0 - outer loop - vertex 35.957 -24.8864 0 - vertex 36.1622 -24.2394 -0.2 - vertex 36.1622 -24.2394 0 - endloop - endfacet - facet normal 0.953192 -0.302366 0 - outer loop - vertex 36.1622 -24.2394 -0.2 - vertex 35.957 -24.8864 0 - vertex 35.957 -24.8864 -0.2 - endloop - endfacet - facet normal 0.968572 -0.248734 0 - outer loop - vertex 36.1622 -24.2394 0 - vertex 36.2977 -23.7121 -0.2 - vertex 36.2977 -23.7121 0 - endloop - endfacet - facet normal 0.968572 -0.248734 0 - outer loop - vertex 36.2977 -23.7121 -0.2 - vertex 36.1622 -24.2394 0 - vertex 36.1622 -24.2394 -0.2 - endloop - endfacet - facet normal 0.987422 -0.158107 0 - outer loop - vertex 36.2977 -23.7121 0 - vertex 36.362 -23.3104 -0.2 - vertex 36.362 -23.3104 0 - endloop - endfacet - facet normal 0.987422 -0.158107 0 - outer loop - vertex 36.362 -23.3104 -0.2 - vertex 36.2977 -23.7121 0 - vertex 36.2977 -23.7121 -0.2 - endloop - endfacet - facet normal 0.999436 -0.0335772 0 - outer loop - vertex 36.362 -23.3104 0 - vertex 36.3671 -23.1585 -0.2 - vertex 36.3671 -23.1585 0 - endloop - endfacet - facet normal 0.999436 -0.0335772 0 - outer loop - vertex 36.3671 -23.1585 -0.2 - vertex 36.362 -23.3104 0 - vertex 36.362 -23.3104 -0.2 - endloop - endfacet - facet normal 0.993888 0.110395 0 - outer loop - vertex 36.3671 -23.1585 0 - vertex 36.3539 -23.0402 -0.2 - vertex 36.3539 -23.0402 0 - endloop - endfacet - facet normal 0.993888 0.110395 0 - outer loop - vertex 36.3539 -23.0402 -0.2 - vertex 36.3671 -23.1585 0 - vertex 36.3671 -23.1585 -0.2 - endloop - endfacet - facet normal 0.93611 0.351708 0 - outer loop - vertex 36.3539 -23.0402 0 - vertex 36.3224 -22.9562 -0.2 - vertex 36.3224 -22.9562 0 - endloop - endfacet - facet normal 0.93611 0.351708 0 - outer loop - vertex 36.3224 -22.9562 -0.2 - vertex 36.3539 -23.0402 0 - vertex 36.3539 -23.0402 -0.2 - endloop - endfacet - facet normal 0.698293 0.715812 -0 - outer loop - vertex 36.3224 -22.9562 -0.2 - vertex 36.2723 -22.9073 0 - vertex 36.3224 -22.9562 0 - endloop - endfacet - facet normal 0.698293 0.715812 0 - outer loop - vertex 36.2723 -22.9073 0 - vertex 36.3224 -22.9562 -0.2 - vertex 36.2723 -22.9073 -0.2 - endloop - endfacet - facet normal 0.186395 0.982475 -0 - outer loop - vertex 36.2723 -22.9073 -0.2 - vertex 36.2034 -22.8943 0 - vertex 36.2723 -22.9073 0 - endloop - endfacet - facet normal 0.186395 0.982475 0 - outer loop - vertex 36.2034 -22.8943 0 - vertex 36.2723 -22.9073 -0.2 - vertex 36.2034 -22.8943 -0.2 - endloop - endfacet - facet normal -0.258789 0.965934 0 - outer loop - vertex 36.2034 -22.8943 -0.2 - vertex 36.1157 -22.9178 0 - vertex 36.2034 -22.8943 0 - endloop - endfacet - facet normal -0.258789 0.965934 0 - outer loop - vertex 36.1157 -22.9178 0 - vertex 36.2034 -22.8943 -0.2 - vertex 36.1157 -22.9178 -0.2 - endloop - endfacet - facet normal -0.248765 0.968564 0 - outer loop - vertex 36.1157 -22.9178 -0.2 - vertex 35.9442 -22.9618 0 - vertex 36.1157 -22.9178 0 - endloop - endfacet - facet normal -0.248765 0.968564 0 - outer loop - vertex 35.9442 -22.9618 0 - vertex 36.1157 -22.9178 -0.2 - vertex 35.9442 -22.9618 -0.2 - endloop - endfacet - facet normal -0.0720501 0.997401 0 - outer loop - vertex 35.9442 -22.9618 -0.2 - vertex 35.7166 -22.9783 0 - vertex 35.9442 -22.9618 0 - endloop - endfacet - facet normal -0.0720501 0.997401 0 - outer loop - vertex 35.7166 -22.9783 0 - vertex 35.9442 -22.9618 -0.2 - vertex 35.7166 -22.9783 -0.2 - endloop - endfacet - facet normal 0.0451334 0.998981 -0 - outer loop - vertex 35.7166 -22.9783 -0.2 - vertex 35.4626 -22.9668 0 - vertex 35.7166 -22.9783 0 - endloop - endfacet - facet normal 0.0451334 0.998981 0 - outer loop - vertex 35.4626 -22.9668 0 - vertex 35.7166 -22.9783 -0.2 - vertex 35.4626 -22.9668 -0.2 - endloop - endfacet - facet normal 0.156383 0.987697 -0 - outer loop - vertex 35.4626 -22.9668 -0.2 - vertex 35.2118 -22.9271 0 - vertex 35.4626 -22.9668 0 - endloop - endfacet - facet normal 0.156383 0.987697 0 - outer loop - vertex 35.2118 -22.9271 0 - vertex 35.4626 -22.9668 -0.2 - vertex 35.2118 -22.9271 -0.2 - endloop - endfacet - facet normal 0.299759 0.954015 -0 - outer loop - vertex 35.2118 -22.9271 -0.2 - vertex 34.9345 -22.8399 0 - vertex 35.2118 -22.9271 0 - endloop - endfacet - facet normal 0.299759 0.954015 0 - outer loop - vertex 34.9345 -22.8399 0 - vertex 35.2118 -22.9271 -0.2 - vertex 34.9345 -22.8399 -0.2 - endloop - endfacet - facet normal 0.486497 0.873682 -0 - outer loop - vertex 34.9345 -22.8399 -0.2 - vertex 34.8338 -22.7839 0 - vertex 34.9345 -22.8399 0 - endloop - endfacet - facet normal 0.486497 0.873682 0 - outer loop - vertex 34.8338 -22.7839 0 - vertex 34.9345 -22.8399 -0.2 - vertex 34.8338 -22.7839 -0.2 - endloop - endfacet - facet normal 0.653163 0.757217 -0 - outer loop - vertex 34.8338 -22.7839 -0.2 - vertex 34.7558 -22.7166 0 - vertex 34.8338 -22.7839 0 - endloop - endfacet - facet normal 0.653163 0.757217 0 - outer loop - vertex 34.7558 -22.7166 0 - vertex 34.8338 -22.7839 -0.2 - vertex 34.7558 -22.7166 -0.2 - endloop - endfacet - facet normal 0.815361 0.578952 0 - outer loop - vertex 34.7558 -22.7166 0 - vertex 34.6986 -22.636 -0.2 - vertex 34.6986 -22.636 0 - endloop - endfacet - facet normal 0.815361 0.578952 0 - outer loop - vertex 34.6986 -22.636 -0.2 - vertex 34.7558 -22.7166 0 - vertex 34.7558 -22.7166 -0.2 - endloop - endfacet - facet normal 0.928456 0.371442 0 - outer loop - vertex 34.6986 -22.636 0 - vertex 34.6602 -22.54 -0.2 - vertex 34.6602 -22.54 0 - endloop - endfacet - facet normal 0.928456 0.371442 0 - outer loop - vertex 34.6602 -22.54 -0.2 - vertex 34.6986 -22.636 0 - vertex 34.6986 -22.636 -0.2 - endloop - endfacet - facet normal 0.982392 0.186829 0 - outer loop - vertex 34.6602 -22.54 0 - vertex 34.6385 -22.4262 -0.2 - vertex 34.6385 -22.4262 0 - endloop - endfacet - facet normal 0.982392 0.186829 0 - outer loop - vertex 34.6385 -22.4262 -0.2 - vertex 34.6602 -22.54 0 - vertex 34.6602 -22.54 -0.2 - endloop - endfacet - facet normal 0.998716 0.050655 0 - outer loop - vertex 34.6385 -22.4262 0 - vertex 34.6318 -22.2927 -0.2 - vertex 34.6318 -22.2927 0 - endloop - endfacet - facet normal 0.998716 0.050655 0 - outer loop - vertex 34.6318 -22.2927 -0.2 - vertex 34.6385 -22.4262 0 - vertex 34.6385 -22.4262 -0.2 - endloop - endfacet - facet normal 0.995457 -0.0952108 0 - outer loop - vertex 34.6318 -22.2927 0 - vertex 34.653 -22.0706 -0.2 - vertex 34.653 -22.0706 0 - endloop - endfacet - facet normal 0.995457 -0.0952108 0 - outer loop - vertex 34.653 -22.0706 -0.2 - vertex 34.6318 -22.2927 0 - vertex 34.6318 -22.2927 -0.2 - endloop - endfacet - facet normal 0.963199 -0.268788 0 - outer loop - vertex 34.653 -22.0706 0 - vertex 34.713 -21.8554 -0.2 - vertex 34.713 -21.8554 0 - endloop - endfacet - facet normal 0.963199 -0.268788 0 - outer loop - vertex 34.713 -21.8554 -0.2 - vertex 34.653 -22.0706 0 - vertex 34.653 -22.0706 -0.2 - endloop - endfacet - facet normal 0.90719 -0.420722 0 - outer loop - vertex 34.713 -21.8554 0 - vertex 34.8063 -21.6543 -0.2 - vertex 34.8063 -21.6543 0 - endloop - endfacet - facet normal 0.90719 -0.420722 0 - outer loop - vertex 34.8063 -21.6543 -0.2 - vertex 34.713 -21.8554 0 - vertex 34.713 -21.8554 -0.2 - endloop - endfacet - facet normal 0.830216 -0.557442 0 - outer loop - vertex 34.8063 -21.6543 0 - vertex 34.9274 -21.474 -0.2 - vertex 34.9274 -21.474 0 - endloop - endfacet - facet normal 0.830216 -0.557442 0 - outer loop - vertex 34.9274 -21.474 -0.2 - vertex 34.8063 -21.6543 0 - vertex 34.8063 -21.6543 -0.2 - endloop - endfacet - facet normal 0.728585 -0.684956 0 - outer loop - vertex 34.9274 -21.474 0 - vertex 35.0706 -21.3217 -0.2 - vertex 35.0706 -21.3217 0 - endloop - endfacet - facet normal 0.728585 -0.684956 0 - outer loop - vertex 35.0706 -21.3217 -0.2 - vertex 34.9274 -21.474 0 - vertex 34.9274 -21.474 -0.2 - endloop - endfacet - facet normal 0.592071 -0.805886 0 - outer loop - vertex 35.0706 -21.3217 -0.2 - vertex 35.2304 -21.2043 0 - vertex 35.0706 -21.3217 0 - endloop - endfacet - facet normal 0.592071 -0.805886 0 - outer loop - vertex 35.2304 -21.2043 0 - vertex 35.0706 -21.3217 -0.2 - vertex 35.2304 -21.2043 -0.2 - endloop - endfacet - facet normal 0.404331 -0.914613 0 - outer loop - vertex 35.2304 -21.2043 -0.2 - vertex 35.4013 -21.1287 0 - vertex 35.2304 -21.2043 0 - endloop - endfacet - facet normal 0.404331 -0.914613 0 - outer loop - vertex 35.4013 -21.1287 0 - vertex 35.2304 -21.2043 -0.2 - vertex 35.4013 -21.1287 -0.2 - endloop - endfacet - facet normal 0.149785 -0.988719 0 - outer loop - vertex 35.4013 -21.1287 -0.2 - vertex 35.5778 -21.102 0 - vertex 35.4013 -21.1287 0 - endloop - endfacet - facet normal 0.149785 -0.988719 0 - outer loop - vertex 35.5778 -21.102 0 - vertex 35.4013 -21.1287 -0.2 - vertex 35.5778 -21.102 -0.2 - endloop - endfacet - facet normal 0.22645 -0.974023 0 - outer loop - vertex 35.5778 -21.102 -0.2 - vertex 35.9118 -21.0243 0 - vertex 35.5778 -21.102 0 - endloop - endfacet - facet normal 0.22645 -0.974023 0 - outer loop - vertex 35.9118 -21.0243 0 - vertex 35.5778 -21.102 -0.2 - vertex 35.9118 -21.0243 -0.2 - endloop - endfacet - facet normal 0.304725 -0.95244 0 - outer loop - vertex 35.9118 -21.0243 -0.2 - vertex 36.5724 -20.813 0 - vertex 35.9118 -21.0243 0 - endloop - endfacet - facet normal 0.304725 -0.95244 0 - outer loop - vertex 36.5724 -20.813 0 - vertex 35.9118 -21.0243 -0.2 - vertex 36.5724 -20.813 -0.2 - endloop - endfacet - facet normal 0.331013 -0.943626 0 - outer loop - vertex 36.5724 -20.813 -0.2 - vertex 37.4642 -20.5001 0 - vertex 36.5724 -20.813 0 - endloop - endfacet - facet normal 0.331013 -0.943626 0 - outer loop - vertex 37.4642 -20.5001 0 - vertex 36.5724 -20.813 -0.2 - vertex 37.4642 -20.5001 -0.2 - endloop - endfacet - facet normal 0.348531 -0.937297 0 - outer loop - vertex 37.4642 -20.5001 -0.2 - vertex 38.4916 -20.1181 0 - vertex 37.4642 -20.5001 0 - endloop - endfacet - facet normal 0.348531 -0.937297 0 - outer loop - vertex 38.4916 -20.1181 0 - vertex 37.4642 -20.5001 -0.2 - vertex 38.4916 -20.1181 -0.2 - endloop - endfacet - facet normal 0.345306 -0.93849 0 - outer loop - vertex 38.4916 -20.1181 -0.2 - vertex 39.5298 -19.7361 0 - vertex 38.4916 -20.1181 0 - endloop - endfacet - facet normal 0.345306 -0.93849 0 - outer loop - vertex 39.5298 -19.7361 0 - vertex 38.4916 -20.1181 -0.2 - vertex 39.5298 -19.7361 -0.2 - endloop - endfacet - facet normal 0.321461 -0.946923 0 - outer loop - vertex 39.5298 -19.7361 -0.2 - vertex 40.4513 -19.4233 0 - vertex 39.5298 -19.7361 0 - endloop - endfacet - facet normal 0.321461 -0.946923 0 - outer loop - vertex 40.4513 -19.4233 0 - vertex 39.5298 -19.7361 -0.2 - vertex 40.4513 -19.4233 -0.2 - endloop - endfacet - facet normal 0.28733 -0.957832 0 - outer loop - vertex 40.4513 -19.4233 -0.2 - vertex 41.156 -19.2119 0 - vertex 40.4513 -19.4233 0 - endloop - endfacet - facet normal 0.28733 -0.957832 0 - outer loop - vertex 41.156 -19.2119 0 - vertex 40.4513 -19.4233 -0.2 - vertex 41.156 -19.2119 -0.2 - endloop - endfacet - facet normal 0.23347 -0.972364 0 - outer loop - vertex 41.156 -19.2119 -0.2 - vertex 41.3957 -19.1543 0 - vertex 41.156 -19.2119 0 - endloop - endfacet - facet normal 0.23347 -0.972364 0 - outer loop - vertex 41.3957 -19.1543 0 - vertex 41.156 -19.2119 -0.2 - vertex 41.3957 -19.1543 -0.2 - endloop - endfacet - facet normal 0.13452 -0.990911 0 - outer loop - vertex 41.3957 -19.1543 -0.2 - vertex 41.5436 -19.1343 0 - vertex 41.3957 -19.1543 0 - endloop - endfacet - facet normal 0.13452 -0.990911 0 - outer loop - vertex 41.5436 -19.1343 0 - vertex 41.3957 -19.1543 -0.2 - vertex 41.5436 -19.1343 -0.2 - endloop - endfacet - facet normal -0.114485 -0.993425 0 - outer loop - vertex 41.5436 -19.1343 -0.2 - vertex 41.7426 -19.1572 0 - vertex 41.5436 -19.1343 0 - endloop - endfacet - facet normal -0.114485 -0.993425 -0 - outer loop - vertex 41.7426 -19.1572 0 - vertex 41.5436 -19.1343 -0.2 - vertex 41.7426 -19.1572 -0.2 - endloop - endfacet - facet normal -0.379137 -0.925341 0 - outer loop - vertex 41.7426 -19.1572 -0.2 - vertex 41.9051 -19.2238 0 - vertex 41.7426 -19.1572 0 - endloop - endfacet - facet normal -0.379137 -0.925341 -0 - outer loop - vertex 41.9051 -19.2238 0 - vertex 41.7426 -19.1572 -0.2 - vertex 41.9051 -19.2238 -0.2 - endloop - endfacet - facet normal -0.651079 -0.75901 0 - outer loop - vertex 41.9051 -19.2238 -0.2 - vertex 42.0297 -19.3306 0 - vertex 41.9051 -19.2238 0 - endloop - endfacet - facet normal -0.651079 -0.75901 -0 - outer loop - vertex 42.0297 -19.3306 0 - vertex 41.9051 -19.2238 -0.2 - vertex 42.0297 -19.3306 -0.2 - endloop - endfacet - facet normal -0.860116 -0.510098 0 - outer loop - vertex 42.1149 -19.4743 -0.2 - vertex 42.0297 -19.3306 0 - vertex 42.0297 -19.3306 -0.2 - endloop - endfacet - facet normal -0.860116 -0.510098 0 - outer loop - vertex 42.0297 -19.3306 0 - vertex 42.1149 -19.4743 -0.2 - vertex 42.1149 -19.4743 0 - endloop - endfacet - facet normal -0.969806 -0.243876 0 - outer loop - vertex 42.1595 -19.6516 -0.2 - vertex 42.1149 -19.4743 0 - vertex 42.1149 -19.4743 -0.2 - endloop - endfacet - facet normal -0.969806 -0.243876 0 - outer loop - vertex 42.1149 -19.4743 0 - vertex 42.1595 -19.6516 -0.2 - vertex 42.1595 -19.6516 0 - endloop - endfacet - facet normal -0.999925 -0.0122495 0 - outer loop - vertex 42.162 -19.859 -0.2 - vertex 42.1595 -19.6516 0 - vertex 42.1595 -19.6516 -0.2 - endloop - endfacet - facet normal -0.999925 -0.0122495 0 - outer loop - vertex 42.1595 -19.6516 0 - vertex 42.162 -19.859 -0.2 - vertex 42.162 -19.859 0 - endloop - endfacet - facet normal -0.985121 0.171861 0 - outer loop - vertex 42.1212 -20.0931 -0.2 - vertex 42.162 -19.859 0 - vertex 42.162 -19.859 -0.2 - endloop - endfacet - facet normal -0.985121 0.171861 0 - outer loop - vertex 42.162 -19.859 0 - vertex 42.1212 -20.0931 -0.2 - vertex 42.1212 -20.0931 0 - endloop - endfacet - facet normal -0.948956 0.315408 0 - outer loop - vertex 42.0356 -20.3507 -0.2 - vertex 42.1212 -20.0931 0 - vertex 42.1212 -20.0931 -0.2 - endloop - endfacet - facet normal -0.948956 0.315408 0 - outer loop - vertex 42.1212 -20.0931 0 - vertex 42.0356 -20.3507 -0.2 - vertex 42.0356 -20.3507 0 - endloop - endfacet - facet normal -0.935213 0.354086 0 - outer loop - vertex 41.9515 -20.5727 -0.2 - vertex 42.0356 -20.3507 0 - vertex 42.0356 -20.3507 -0.2 - endloop - endfacet - facet normal -0.935213 0.354086 0 - outer loop - vertex 42.0356 -20.3507 0 - vertex 41.9515 -20.5727 -0.2 - vertex 41.9515 -20.5727 0 - endloop - endfacet - facet normal -0.96654 0.256517 0 - outer loop - vertex 41.9099 -20.7296 -0.2 - vertex 41.9515 -20.5727 0 - vertex 41.9515 -20.5727 -0.2 - endloop - endfacet - facet normal -0.96654 0.256517 0 - outer loop - vertex 41.9515 -20.5727 0 - vertex 41.9099 -20.7296 -0.2 - vertex 41.9099 -20.7296 0 - endloop - endfacet - facet normal -0.996169 -0.0874488 0 - outer loop - vertex 41.9179 -20.8207 -0.2 - vertex 41.9099 -20.7296 0 - vertex 41.9099 -20.7296 -0.2 - endloop - endfacet - facet normal -0.996169 -0.0874488 0 - outer loop - vertex 41.9099 -20.7296 0 - vertex 41.9179 -20.8207 -0.2 - vertex 41.9179 -20.8207 0 - endloop - endfacet - facet normal -0.639023 -0.769188 0 - outer loop - vertex 41.9179 -20.8207 -0.2 - vertex 41.9427 -20.8413 0 - vertex 41.9179 -20.8207 0 - endloop - endfacet - facet normal -0.639023 -0.769188 -0 - outer loop - vertex 41.9427 -20.8413 0 - vertex 41.9179 -20.8207 -0.2 - vertex 41.9427 -20.8413 -0.2 - endloop - endfacet - facet normal -0.0984788 -0.995139 0 - outer loop - vertex 41.9427 -20.8413 -0.2 - vertex 41.9827 -20.8453 0 - vertex 41.9427 -20.8413 0 - endloop - endfacet - facet normal -0.0984788 -0.995139 -0 - outer loop - vertex 41.9827 -20.8453 0 - vertex 41.9427 -20.8413 -0.2 - vertex 41.9827 -20.8453 -0.2 - endloop - endfacet - facet normal 0.313279 -0.949661 0 - outer loop - vertex 41.9827 -20.8453 -0.2 - vertex 42.1116 -20.8028 0 - vertex 41.9827 -20.8453 0 - endloop - endfacet - facet normal 0.313279 -0.949661 0 - outer loop - vertex 42.1116 -20.8028 0 - vertex 41.9827 -20.8453 -0.2 - vertex 42.1116 -20.8028 -0.2 - endloop - endfacet - facet normal 0.482712 -0.875779 0 - outer loop - vertex 42.1116 -20.8028 -0.2 - vertex 42.3117 -20.6924 0 - vertex 42.1116 -20.8028 0 - endloop - endfacet - facet normal 0.482712 -0.875779 0 - outer loop - vertex 42.3117 -20.6924 0 - vertex 42.1116 -20.8028 -0.2 - vertex 42.3117 -20.6924 -0.2 - endloop - endfacet - facet normal 0.552983 -0.833193 0 - outer loop - vertex 42.3117 -20.6924 -0.2 - vertex 42.9547 -20.2657 0 - vertex 42.3117 -20.6924 0 - endloop - endfacet - facet normal 0.552983 -0.833193 0 - outer loop - vertex 42.9547 -20.2657 0 - vertex 42.3117 -20.6924 -0.2 - vertex 42.9547 -20.2657 -0.2 - endloop - endfacet - facet normal 0.550831 -0.834617 0 - outer loop - vertex 42.9547 -20.2657 -0.2 - vertex 43.4033 -19.9696 0 - vertex 42.9547 -20.2657 0 - endloop - endfacet - facet normal 0.550831 -0.834617 0 - outer loop - vertex 43.4033 -19.9696 0 - vertex 42.9547 -20.2657 -0.2 - vertex 43.4033 -19.9696 -0.2 - endloop - endfacet - facet normal 0.505722 -0.862696 0 - outer loop - vertex 43.4033 -19.9696 -0.2 - vertex 43.8201 -19.7253 0 - vertex 43.4033 -19.9696 0 - endloop - endfacet - facet normal 0.505722 -0.862696 0 - outer loop - vertex 43.8201 -19.7253 0 - vertex 43.4033 -19.9696 -0.2 - vertex 43.8201 -19.7253 -0.2 - endloop - endfacet - facet normal 0.444191 -0.895932 0 - outer loop - vertex 43.8201 -19.7253 -0.2 - vertex 44.2162 -19.5289 0 - vertex 43.8201 -19.7253 0 - endloop - endfacet - facet normal 0.444191 -0.895932 0 - outer loop - vertex 44.2162 -19.5289 0 - vertex 43.8201 -19.7253 -0.2 - vertex 44.2162 -19.5289 -0.2 - endloop - endfacet - facet normal 0.36641 -0.930454 0 - outer loop - vertex 44.2162 -19.5289 -0.2 - vertex 44.6026 -19.3768 0 - vertex 44.2162 -19.5289 0 - endloop - endfacet - facet normal 0.36641 -0.930454 0 - outer loop - vertex 44.6026 -19.3768 0 - vertex 44.2162 -19.5289 -0.2 - vertex 44.6026 -19.3768 -0.2 - endloop - endfacet - facet normal 0.276888 -0.960902 0 - outer loop - vertex 44.6026 -19.3768 -0.2 - vertex 44.9905 -19.265 0 - vertex 44.6026 -19.3768 0 - endloop - endfacet - facet normal 0.276888 -0.960902 0 - outer loop - vertex 44.9905 -19.265 0 - vertex 44.6026 -19.3768 -0.2 - vertex 44.9905 -19.265 -0.2 - endloop - endfacet - facet normal 0.184446 -0.982843 0 - outer loop - vertex 44.9905 -19.265 -0.2 - vertex 45.391 -19.1898 0 - vertex 44.9905 -19.265 0 - endloop - endfacet - facet normal 0.184446 -0.982843 0 - outer loop - vertex 45.391 -19.1898 0 - vertex 44.9905 -19.265 -0.2 - vertex 45.391 -19.1898 -0.2 - endloop - endfacet - facet normal 0.0992848 -0.995059 0 - outer loop - vertex 45.391 -19.1898 -0.2 - vertex 45.8151 -19.1475 0 - vertex 45.391 -19.1898 0 - endloop - endfacet - facet normal 0.0992848 -0.995059 0 - outer loop - vertex 45.8151 -19.1475 0 - vertex 45.391 -19.1898 -0.2 - vertex 45.8151 -19.1475 -0.2 - endloop - endfacet - facet normal 0.028896 -0.999582 0 - outer loop - vertex 45.8151 -19.1475 -0.2 - vertex 46.274 -19.1343 0 - vertex 45.8151 -19.1475 0 - endloop - endfacet - facet normal 0.028896 -0.999582 0 - outer loop - vertex 46.274 -19.1343 0 - vertex 45.8151 -19.1475 -0.2 - vertex 46.274 -19.1343 -0.2 - endloop - endfacet - facet normal -0.036999 -0.999315 0 - outer loop - vertex 46.274 -19.1343 -0.2 - vertex 46.8289 -19.1548 0 - vertex 46.274 -19.1343 0 - endloop - endfacet - facet normal -0.036999 -0.999315 -0 - outer loop - vertex 46.8289 -19.1548 0 - vertex 46.274 -19.1343 -0.2 - vertex 46.8289 -19.1548 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.1728 30.7024 -0.2 - vertex 12.3025 30.5214 -0.2 - vertex 12.291 30.606 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.1728 30.7024 -0.2 - vertex 12.291 30.606 -0.2 - vertex 12.2478 30.6663 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.0661 30.7144 -0.2 - vertex 12.3025 30.5214 -0.2 - vertex 12.1728 30.7024 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3025 30.5214 -0.2 - vertex 12.0661 30.7144 -0.2 - vertex 12.2821 30.4122 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.9476 30.6899 -0.2 - vertex 12.2821 30.4122 -0.2 - vertex 12.0661 30.7144 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.2821 30.4122 -0.2 - vertex 11.9476 30.6899 -0.2 - vertex 12.23 30.2784 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.7177 30.5077 -0.2 - vertex 12.23 30.2784 -0.2 - vertex 11.8311 30.6195 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.23 30.2784 -0.2 - vertex 11.9476 30.6899 -0.2 - vertex 11.8311 30.6195 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.6088 30.3591 -0.2 - vertex 12.23 30.2784 -0.2 - vertex 11.7177 30.5077 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.23 30.2784 -0.2 - vertex 11.6088 30.3591 -0.2 - vertex 12.0304 29.9363 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.5057 30.1782 -0.2 - vertex 12.0304 29.9363 -0.2 - vertex 11.6088 30.3591 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.0304 29.9363 -0.2 - vertex 11.5057 30.1782 -0.2 - vertex 11.965 29.8184 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.965 29.8184 -0.2 - vertex 11.4096 29.9696 -0.2 - vertex 11.9082 29.6745 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.4096 29.9696 -0.2 - vertex 11.965 29.8184 -0.2 - vertex 11.5057 30.1782 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.6784 17.7808 -0.2 - vertex 26.0696 17.9605 -0.2 - vertex 26.0933 17.5963 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.2605 19.0904 -0.2 - vertex 26.0009 18.2942 -0.2 - vertex 26.0696 17.9605 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.5652 19.0574 -0.2 - vertex 26.1176 19.296 -0.2 - vertex 25.9541 19.4837 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.2605 19.0904 -0.2 - vertex 25.8914 18.5921 -0.2 - vertex 26.0009 18.2942 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.5652 19.0574 -0.2 - vertex 25.9541 19.4837 -0.2 - vertex 25.7697 19.6539 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.2605 19.0904 -0.2 - vertex 25.7448 18.8483 -0.2 - vertex 25.8914 18.5921 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.1176 19.296 -0.2 - vertex 25.5652 19.0574 -0.2 - vertex 25.7448 18.8483 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.3564 19.2137 -0.2 - vertex 25.7697 19.6539 -0.2 - vertex 25.5639 19.8069 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.7697 19.6539 -0.2 - vertex 25.3564 19.2137 -0.2 - vertex 25.5652 19.0574 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.1224 19.3115 -0.2 - vertex 25.5639 19.8069 -0.2 - vertex 25.3364 19.943 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.5639 19.8069 -0.2 - vertex 25.1224 19.3115 -0.2 - vertex 25.3564 19.2137 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.9972 19.3368 -0.2 - vertex 25.3364 19.943 -0.2 - vertex 25.087 20.0627 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.3364 19.943 -0.2 - vertex 24.9972 19.3368 -0.2 - vertex 25.1224 19.3115 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.087 20.0627 -0.2 - vertex 24.8672 19.3454 -0.2 - vertex 24.9972 19.3368 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.8151 20.1664 -0.2 - vertex 24.8672 19.3454 -0.2 - vertex 25.087 20.0627 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.8151 20.1664 -0.2 - vertex 24.6124 19.3722 -0.2 - vertex 24.8672 19.3454 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.5205 20.2543 -0.2 - vertex 24.6124 19.3722 -0.2 - vertex 24.8151 20.1664 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.5205 20.2543 -0.2 - vertex 24.2514 19.4451 -0.2 - vertex 24.6124 19.3722 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.2028 20.3268 -0.2 - vertex 24.2514 19.4451 -0.2 - vertex 24.5205 20.2543 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.8321 19.5531 -0.2 - vertex 24.2028 20.3268 -0.2 - vertex 23.8617 20.3844 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.2028 20.3268 -0.2 - vertex 23.8321 19.5531 -0.2 - vertex 24.2514 19.4451 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.4027 19.6849 -0.2 - vertex 23.8617 20.3844 -0.2 - vertex 23.4814 20.4643 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.8617 20.3844 -0.2 - vertex 23.4027 19.6849 -0.2 - vertex 23.8321 19.5531 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.9977 19.8472 -0.2 - vertex 23.4814 20.4643 -0.2 - vertex 23.1504 20.59 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.4814 20.4643 -0.2 - vertex 22.9977 19.8472 -0.2 - vertex 23.4027 19.6849 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.6486 20.047 -0.2 - vertex 23.1504 20.59 -0.2 - vertex 22.8668 20.7638 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.3515 20.2895 -0.2 - vertex 22.8668 20.7638 -0.2 - vertex 22.7421 20.8693 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.1504 20.59 -0.2 - vertex 22.6486 20.047 -0.2 - vertex 22.9977 19.8472 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.2213 20.4283 -0.2 - vertex 22.7421 20.8693 -0.2 - vertex 22.6286 20.9877 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.8989 20.9229 -0.2 - vertex 22.6286 20.9877 -0.2 - vertex 22.4341 21.2638 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.8668 20.7638 -0.2 - vertex 22.3515 20.2895 -0.2 - vertex 22.6486 20.047 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 21.7362 21.3239 -0.2 - vertex 22.4341 21.2638 -0.2 - vertex 22.2815 21.5943 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.7421 20.8693 -0.2 - vertex 22.2213 20.4283 -0.2 - vertex 22.3515 20.2895 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 21.6111 21.7881 -0.2 - vertex 22.2815 21.5943 -0.2 - vertex 22.1689 21.9813 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.6286 20.9877 -0.2 - vertex 22.1028 20.5797 -0.2 - vertex 22.2213 20.4283 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 21.5197 22.3204 -0.2 - vertex 22.1689 21.9813 -0.2 - vertex 22.0944 22.427 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 21.4205 22.8275 -0.2 - vertex 22.0944 22.427 -0.2 - vertex 21.9928 23.1034 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.3493 23.064 -0.2 - vertex 21.9928 23.1034 -0.2 - vertex 21.926 23.397 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.6286 20.9877 -0.2 - vertex 21.8989 20.9229 -0.2 - vertex 22.1028 20.5797 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.2635 23.2891 -0.2 - vertex 21.926 23.397 -0.2 - vertex 21.8437 23.6658 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.1632 23.503 -0.2 - vertex 21.8437 23.6658 -0.2 - vertex 21.7423 23.9135 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.4341 21.2638 -0.2 - vertex 21.7362 21.3239 -0.2 - vertex 21.8989 20.9229 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0482 23.7058 -0.2 - vertex 21.7423 23.9135 -0.2 - vertex 21.6182 24.144 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.2815 21.5943 -0.2 - vertex 21.6111 21.7881 -0.2 - vertex 21.7362 21.3239 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.1689 21.9813 -0.2 - vertex 21.5197 22.3204 -0.2 - vertex 21.6111 21.7881 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9184 23.8976 -0.2 - vertex 21.6182 24.144 -0.2 - vertex 21.4677 24.3609 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.0944 22.427 -0.2 - vertex 21.4205 22.8275 -0.2 - vertex 21.5197 22.3204 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.9928 23.1034 -0.2 - vertex 21.3493 23.064 -0.2 - vertex 21.4205 22.8275 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.7738 24.0784 -0.2 - vertex 21.4677 24.3609 -0.2 - vertex 21.2873 24.568 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.926 23.397 -0.2 - vertex 21.2635 23.2891 -0.2 - vertex 21.3493 23.064 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.8437 23.6658 -0.2 - vertex 21.1632 23.503 -0.2 - vertex 21.2635 23.2891 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.6143 24.2484 -0.2 - vertex 21.2873 24.568 -0.2 - vertex 21.0733 24.7691 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.7423 23.9135 -0.2 - vertex 21.0482 23.7058 -0.2 - vertex 21.1632 23.503 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.6182 24.144 -0.2 - vertex 20.9184 23.8976 -0.2 - vertex 21.0482 23.7058 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.4398 24.4076 -0.2 - vertex 21.0733 24.7691 -0.2 - vertex 20.8221 24.9679 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.4677 24.3609 -0.2 - vertex 20.7738 24.0784 -0.2 - vertex 20.9184 23.8976 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.2873 24.568 -0.2 - vertex 20.6143 24.2484 -0.2 - vertex 20.7738 24.0784 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2502 24.5562 -0.2 - vertex 20.8221 24.9679 -0.2 - vertex 20.53 25.168 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0733 24.7691 -0.2 - vertex 20.4398 24.4076 -0.2 - vertex 20.6143 24.2484 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.8221 24.9679 -0.2 - vertex 20.2502 24.5562 -0.2 - vertex 20.4398 24.4076 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0455 24.6942 -0.2 - vertex 20.53 25.168 -0.2 - vertex 20.1936 25.3734 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.53 25.168 -0.2 - vertex 20.0455 24.6942 -0.2 - vertex 20.2502 24.5562 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.1936 25.3734 -0.2 - vertex 19.5904 24.9388 -0.2 - vertex 20.0455 24.6942 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.3729 25.8147 -0.2 - vertex 19.5904 24.9388 -0.2 - vertex 20.1936 25.3734 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.3729 25.8147 -0.2 - vertex 19.0737 25.1422 -0.2 - vertex 19.5904 24.9388 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.3729 25.8147 -0.2 - vertex 18.5685 25.3244 -0.2 - vertex 19.0737 25.1422 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.3311 26.3216 -0.2 - vertex 18.5685 25.3244 -0.2 - vertex 19.3729 25.8147 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.3311 26.3216 -0.2 - vertex 18.1033 25.5216 -0.2 - vertex 18.5685 25.3244 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.3311 26.3216 -0.2 - vertex 17.6707 25.7385 -0.2 - vertex 18.1033 25.5216 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.6504 26.6607 -0.2 - vertex 17.6707 25.7385 -0.2 - vertex 18.3311 26.3216 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.6504 26.6607 -0.2 - vertex 17.2631 25.98 -0.2 - vertex 17.6707 25.7385 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.873 26.2508 -0.2 - vertex 17.6504 26.6607 -0.2 - vertex 17.0889 26.9817 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.6504 26.6607 -0.2 - vertex 16.873 26.2508 -0.2 - vertex 17.2631 25.98 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.4932 26.5558 -0.2 - vertex 17.0889 26.9817 -0.2 - vertex 16.6359 27.2959 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.0889 26.9817 -0.2 - vertex 16.4932 26.5558 -0.2 - vertex 16.873 26.2508 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.116 26.8997 -0.2 - vertex 16.6359 27.2959 -0.2 - vertex 16.4467 27.454 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.116 26.8997 -0.2 - vertex 16.4467 27.454 -0.2 - vertex 16.2806 27.6146 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.734 27.2872 -0.2 - vertex 16.2806 27.6146 -0.2 - vertex 16.1362 27.7792 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.6359 27.2959 -0.2 - vertex 16.116 26.8997 -0.2 - vertex 16.4932 26.5558 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.734 27.2872 -0.2 - vertex 16.1362 27.7792 -0.2 - vertex 16.0121 27.9491 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.344 27.7317 -0.2 - vertex 16.0121 27.9491 -0.2 - vertex 15.9071 28.1258 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2193 27.9155 -0.2 - vertex 15.9071 28.1258 -0.2 - vertex 15.8197 28.3106 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.1337 28.0941 -0.2 - vertex 15.8197 28.3106 -0.2 - vertex 15.7487 28.5051 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.2806 27.6146 -0.2 - vertex 15.734 27.2872 -0.2 - vertex 16.116 26.8997 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0574 28.4965 -0.2 - vertex 15.7487 28.5051 -0.2 - vertex 15.6927 28.7106 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.0552 28.7509 -0.2 - vertex 15.6927 28.7106 -0.2 - vertex 15.6202 29.1601 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.1102 29.496 -0.2 - vertex 15.6202 29.1601 -0.2 - vertex 15.5622 29.5773 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.1701 29.8123 -0.2 - vertex 15.5622 29.5773 -0.2 - vertex 15.49 29.8698 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.2437 30.0088 -0.2 - vertex 15.49 29.8698 -0.2 - vertex 15.4091 30.0386 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.2838 30.0618 -0.2 - vertex 15.4091 30.0386 -0.2 - vertex 15.3672 30.0768 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.6202 29.1601 -0.2 - vertex 15.0694 29.0611 -0.2 - vertex 15.0552 28.7509 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2838 30.0618 -0.2 - vertex 15.3672 30.0768 -0.2 - vertex 15.3252 30.0845 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.4091 30.0386 -0.2 - vertex 15.2838 30.0618 -0.2 - vertex 15.2437 30.0088 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.49 29.8698 -0.2 - vertex 15.2437 30.0088 -0.2 - vertex 15.1701 29.8123 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.6927 28.7106 -0.2 - vertex 15.0552 28.7509 -0.2 - vertex 15.0574 28.4965 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.5622 29.5773 -0.2 - vertex 15.1701 29.8123 -0.2 - vertex 15.1102 29.496 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.6202 29.1601 -0.2 - vertex 15.1102 29.496 -0.2 - vertex 15.0694 29.0611 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.0121 27.9491 -0.2 - vertex 15.344 27.7317 -0.2 - vertex 15.734 27.2872 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.7487 28.5051 -0.2 - vertex 15.0574 28.4965 -0.2 - vertex 15.0817 28.2827 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.9071 28.1258 -0.2 - vertex 15.2193 27.9155 -0.2 - vertex 15.344 27.7317 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.7487 28.5051 -0.2 - vertex 15.0817 28.2827 -0.2 - vertex 15.1337 28.0941 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.8197 28.3106 -0.2 - vertex 15.1337 28.0941 -0.2 - vertex 15.2193 27.9155 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.6024 10.7775 -0.2 - vertex 21.7259 8.22365 -0.2 - vertex 27.5775 10.2019 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 23.6083 4.95794 -0.2 - vertex 27.0158 7.30485 -0.2 - vertex 23.5351 5.37146 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 22.0631 7.89267 -0.2 - vertex 27.5775 10.2019 -0.2 - vertex 21.7259 8.22365 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.5397 9.70386 -0.2 - vertex 22.0631 7.89267 -0.2 - vertex 27.4871 9.26334 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 23.6192 4.7586 -0.2 - vertex 27.0158 7.30485 -0.2 - vertex 23.6083 4.95794 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.0158 7.30485 -0.2 - vertex 23.6192 4.7586 -0.2 - vertex 24.9074 2.59483 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 22.3621 7.54907 -0.2 - vertex 27.4871 9.26334 -0.2 - vertex 22.0631 7.89267 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.6129 4.5634 -0.2 - vertex 24.9074 2.59483 -0.2 - vertex 23.6192 4.7586 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.5494 4.18291 -0.2 - vertex 24.9074 2.59483 -0.2 - vertex 23.5897 4.3717 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.4176 8.86037 -0.2 - vertex 22.3621 7.54907 -0.2 - vertex 27.3295 8.47496 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.4183 3.81156 -0.2 - vertex 24.9074 2.59483 -0.2 - vertex 23.5494 4.18291 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.22 3.44442 -0.2 - vertex 24.764 2.4559 -0.2 - vertex 23.4183 3.81156 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.9074 2.59483 -0.2 - vertex 23.4183 3.81156 -0.2 - vertex 24.764 2.4559 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.5897 4.3717 -0.2 - vertex 24.9074 2.59483 -0.2 - vertex 23.6129 4.5634 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.0158 7.30485 -0.2 - vertex 23.3929 5.8089 -0.2 - vertex 23.5351 5.37146 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3295 8.47496 -0.2 - vertex 22.3621 7.54907 -0.2 - vertex 27.2208 8.08714 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.0158 7.30485 -0.2 - vertex 23.1811 6.27516 -0.2 - vertex 23.3929 5.8089 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.0158 7.30485 -0.2 - vertex 22.8992 6.77518 -0.2 - vertex 23.1811 6.27516 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.1048 7.68143 -0.2 - vertex 22.8992 6.77518 -0.2 - vertex 27.0158 7.30485 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 22.8992 6.77518 -0.2 - vertex 27.1048 7.68143 -0.2 - vertex 22.6364 7.18064 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.4871 9.26334 -0.2 - vertex 22.3621 7.54907 -0.2 - vertex 27.4176 8.86037 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.2208 8.08714 -0.2 - vertex 22.6364 7.18064 -0.2 - vertex 27.1048 7.68143 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 22.6364 7.18064 -0.2 - vertex 27.2208 8.08714 -0.2 - vertex 22.3621 7.54907 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.3371 8.55423 -0.2 - vertex 22.2336 15.278 -0.2 - vertex 21.6737 15.039 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.5775 10.2019 -0.2 - vertex 22.0631 7.89267 -0.2 - vertex 27.5397 9.70386 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.8834 8.89663 -0.2 - vertex 21.6737 15.039 -0.2 - vertex 21.1771 14.8489 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.6737 15.039 -0.2 - vertex 20.8834 8.89663 -0.2 - vertex 21.3371 8.55423 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.3513 9.26304 -0.2 - vertex 21.1771 14.8489 -0.2 - vertex 20.8452 14.735 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7274 9.66569 -0.2 - vertex 20.8452 14.735 -0.2 - vertex 20.5722 14.6577 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.1771 14.8489 -0.2 - vertex 20.3513 9.26304 -0.2 - vertex 20.8834 8.89663 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4723 9.81661 -0.2 - vertex 20.5722 14.6577 -0.2 - vertex 20.327 14.6203 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.2206 9.94402 -0.2 - vertex 20.327 14.6203 -0.2 - vertex 20.0785 14.6265 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.6964 10.137 -0.2 - vertex 20.0785 14.6265 -0.2 - vertex 19.7955 14.6797 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.8452 14.735 -0.2 - vertex 19.7274 9.66569 -0.2 - vertex 20.3513 9.26304 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.5722 14.6577 -0.2 - vertex 19.4723 9.81661 -0.2 - vertex 19.7274 9.66569 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4085 10.2069 -0.2 - vertex 19.7955 14.6797 -0.2 - vertex 19.4469 14.7833 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.327 14.6203 -0.2 - vertex 19.2206 9.94402 -0.2 - vertex 19.4723 9.81661 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0785 14.6265 -0.2 - vertex 18.9645 10.0501 -0.2 - vertex 19.2206 9.94402 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0785 14.6265 -0.2 - vertex 18.6964 10.137 -0.2 - vertex 18.9645 10.0501 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.093 10.2619 -0.2 - vertex 19.4469 14.7833 -0.2 - vertex 18.4281 15.1559 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7955 14.6797 -0.2 - vertex 18.4085 10.2069 -0.2 - vertex 18.6964 10.137 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4469 14.7833 -0.2 - vertex 18.093 10.2619 -0.2 - vertex 18.4085 10.2069 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.499 10.3797 -0.2 - vertex 18.4281 15.1559 -0.2 - vertex 17.448 15.5385 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4281 15.1559 -0.2 - vertex 17.3487 10.3363 -0.2 - vertex 18.093 10.2619 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.2187 10.3704 -0.2 - vertex 17.448 15.5385 -0.2 - vertex 16.6072 15.8977 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4281 15.1559 -0.2 - vertex 16.499 10.3797 -0.2 - vertex 17.3487 10.3363 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.448 15.5385 -0.2 - vertex 16.2187 10.3704 -0.2 - vertex 16.499 10.3797 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.6072 15.8977 -0.2 - vertex 16.005 10.3315 -0.2 - vertex 16.2187 10.3704 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.8738 16.2527 -0.2 - vertex 16.005 10.3315 -0.2 - vertex 16.6072 15.8977 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.8738 16.2527 -0.2 - vertex 15.8355 10.2563 -0.2 - vertex 16.005 10.3315 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2162 16.623 -0.2 - vertex 15.8355 10.2563 -0.2 - vertex 15.8738 16.2527 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.8355 10.2563 -0.2 - vertex 15.2162 16.623 -0.2 - vertex 15.6879 10.1383 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.4375 16.5104 -0.2 - vertex 15.6879 10.1383 -0.2 - vertex 15.2162 16.623 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.6879 10.1383 -0.2 - vertex 10.4375 16.5104 -0.2 - vertex 15.5399 9.97068 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.5399 9.97068 -0.2 - vertex 10.4375 16.5104 -0.2 - vertex 15.369 9.74689 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 9.73318 16.1788 -0.2 - vertex 15.369 9.74689 -0.2 - vertex 10.4375 16.5104 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.369 9.74689 -0.2 - vertex 9.73318 16.1788 -0.2 - vertex 15.213 9.52982 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.213 9.52982 -0.2 - vertex 9.73318 16.1788 -0.2 - vertex 15.0942 9.33737 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 9.19116 15.9452 -0.2 - vertex 15.0942 9.33737 -0.2 - vertex 9.73318 16.1788 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 8.99158 15.8746 -0.2 - vertex 15.0942 9.33737 -0.2 - vertex 9.19116 15.9452 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.4375 16.5104 -0.2 - vertex 15.2162 16.623 -0.2 - vertex 14.6028 17.0277 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 24.4388 2.25734 -0.2 - vertex 24.764 2.4559 -0.2 - vertex 23.22 3.44442 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.764 2.4559 -0.2 - vertex 24.4388 2.25734 -0.2 - vertex 24.6285 2.34829 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.4388 2.25734 -0.2 - vertex 23.22 3.44442 -0.2 - vertex 24.2201 2.19262 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.2201 2.19262 -0.2 - vertex 23.22 3.44442 -0.2 - vertex 23.9975 2.16372 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.9975 2.16372 -0.2 - vertex 23.22 3.44442 -0.2 - vertex 23.7673 2.14309 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.0427 3.12896 -0.2 - vertex 23.7673 2.14309 -0.2 - vertex 23.22 3.44442 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.7673 2.14309 -0.2 - vertex 23.0427 3.12896 -0.2 - vertex 23.5277 2.10089 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 22.9115 2.82433 -0.2 - vertex 23.5277 2.10089 -0.2 - vertex 23.0427 3.12896 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 22.827 2.54396 -0.2 - vertex 23.5277 2.10089 -0.2 - vertex 22.9115 2.82433 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.5277 2.10089 -0.2 - vertex 22.827 2.54396 -0.2 - vertex 23.3072 2.04326 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 22.7901 2.30129 -0.2 - vertex 23.3072 2.04326 -0.2 - vertex 22.827 2.54396 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.3072 2.04326 -0.2 - vertex 22.7901 2.30129 -0.2 - vertex 23.0469 1.94283 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 22.8016 2.10976 -0.2 - vertex 23.0469 1.94283 -0.2 - vertex 22.7901 2.30129 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 22.8257 2.03737 -0.2 - vertex 23.0469 1.94283 -0.2 - vertex 22.8016 2.10976 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.0469 1.94283 -0.2 - vertex 22.8257 2.03737 -0.2 - vertex 22.9727 1.93385 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 22.8622 1.9828 -0.2 - vertex 22.9727 1.93385 -0.2 - vertex 22.8257 2.03737 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.9727 1.93385 -0.2 - vertex 22.8622 1.9828 -0.2 - vertex 22.9112 1.94773 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.4227 15.3534 -0.2 - vertex 24.3498 16.3417 -0.2 - vertex 27.4995 15.0808 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3198 15.5987 -0.2 - vertex 24.3498 16.3417 -0.2 - vertex 27.4227 15.3534 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.4995 15.0808 -0.2 - vertex 24.3498 16.3417 -0.2 - vertex 27.5539 14.7505 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 24.3498 16.3417 -0.2 - vertex 27.3198 15.5987 -0.2 - vertex 24.659 16.5397 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.5539 14.7505 -0.2 - vertex 24.3498 16.3417 -0.2 - vertex 27.5896 14.3319 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.1872 15.8473 -0.2 - vertex 24.659 16.5397 -0.2 - vertex 27.3198 15.5987 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.9148 16.0975 -0.2 - vertex 27.5896 14.3319 -0.2 - vertex 24.3498 16.3417 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.659 16.5397 -0.2 - vertex 25.8187 16.7495 -0.2 - vertex 24.7548 16.6154 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.5896 14.3319 -0.2 - vertex 23.9148 16.0975 -0.2 - vertex 27.6103 13.7945 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.3919 15.8262 -0.2 - vertex 27.6103 13.7945 -0.2 - vertex 23.9148 16.0975 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.7548 16.6154 -0.2 - vertex 25.8187 16.7495 -0.2 - vertex 24.8049 16.6725 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.6103 13.7945 -0.2 - vertex 23.3919 15.8262 -0.2 - vertex 27.6211 12.2412 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 24.659 16.5397 -0.2 - vertex 27.1872 15.8473 -0.2 - vertex 25.8187 16.7495 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 22.2336 15.278 -0.2 - vertex 27.6211 12.2412 -0.2 - vertex 23.3919 15.8262 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.3371 8.55423 -0.2 - vertex 27.6211 12.2412 -0.2 - vertex 22.2336 15.278 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.8659 16.7424 -0.2 - vertex 27.1872 15.8473 -0.2 - vertex 27.0139 16.2113 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.6211 12.2412 -0.2 - vertex 21.3371 8.55423 -0.2 - vertex 27.6024 10.7775 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 21.7259 8.22365 -0.2 - vertex 27.6024 10.7775 -0.2 - vertex 21.3371 8.55423 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.0158 7.30485 -0.2 - vertex 24.9074 2.59483 -0.2 - vertex 26.9517 6.92758 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.1872 15.8473 -0.2 - vertex 25.8659 16.7424 -0.2 - vertex 25.8187 16.7495 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.8659 16.7424 -0.2 - vertex 27.0139 16.2113 -0.2 - vertex 26.8653 16.6367 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.8138 2.23679 -0.2 - vertex 26.9647 2.16551 -0.2 - vertex 26.9615 2.94949 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.4766 2.59351 -0.2 - vertex 26.9615 2.94949 -0.2 - vertex 26.9294 3.98634 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9647 2.16551 -0.2 - vertex 25.8138 2.23679 -0.2 - vertex 26.0094 1.96397 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.185 2.7087 -0.2 - vertex 26.9294 3.98634 -0.2 - vertex 26.8871 5.49316 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 26.3175 1.53367 -0.2 - vertex 26.9647 2.16551 -0.2 - vertex 26.0094 1.96397 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9517 6.92758 -0.2 - vertex 24.9074 2.59483 -0.2 - vertex 26.9103 6.51977 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9615 2.94949 -0.2 - vertex 25.6376 2.44612 -0.2 - vertex 25.8138 2.23679 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.9855 16.8461 -0.2 - vertex 26.8653 16.6367 -0.2 - vertex 26.7571 17.0706 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 26.4455 1.37999 -0.2 - vertex 26.9324 1.61996 -0.2 - vertex 26.3175 1.53367 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.0803 17.2678 -0.2 - vertex 26.7571 17.0706 -0.2 - vertex 26.7051 17.4601 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.0933 17.5963 -0.2 - vertex 26.7051 17.4601 -0.2 - vertex 26.6784 17.7808 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.8653 16.6367 -0.2 - vertex 25.9855 16.8461 -0.2 - vertex 25.9096 16.7563 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.0696 17.9605 -0.2 - vertex 26.6784 17.7808 -0.2 - vertex 26.6332 18.0815 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0696 17.9605 -0.2 - vertex 26.6332 18.0815 -0.2 - vertex 26.5691 18.3624 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.7571 17.0706 -0.2 - vertex 26.0434 17.0172 -0.2 - vertex 25.9855 16.8461 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0696 17.9605 -0.2 - vertex 26.5691 18.3624 -0.2 - vertex 26.4859 18.624 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9324 1.61996 -0.2 - vertex 26.4455 1.37999 -0.2 - vertex 26.901 1.43209 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0696 17.9605 -0.2 - vertex 26.4859 18.624 -0.2 - vertex 26.3832 18.8665 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 26.5572 1.2697 -0.2 - vertex 26.901 1.43209 -0.2 - vertex 26.4455 1.37999 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0696 17.9605 -0.2 - vertex 26.3832 18.8665 -0.2 - vertex 26.2605 19.0904 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.7448 18.8483 -0.2 - vertex 26.2605 19.0904 -0.2 - vertex 26.1176 19.296 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.7051 17.4601 -0.2 - vertex 26.0933 17.5963 -0.2 - vertex 26.0803 17.2678 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.7571 17.0706 -0.2 - vertex 26.0803 17.2678 -0.2 - vertex 26.0434 17.0172 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 26.6535 1.20459 -0.2 - vertex 26.8581 1.29842 -0.2 - vertex 26.5572 1.2697 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.8581 1.29842 -0.2 - vertex 26.6535 1.20459 -0.2 - vertex 26.8032 1.21715 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.8032 1.21715 -0.2 - vertex 26.6535 1.20459 -0.2 - vertex 26.7352 1.18648 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.8659 16.7424 -0.2 - vertex 26.8653 16.6367 -0.2 - vertex 25.9096 16.7563 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9103 6.51977 -0.2 - vertex 24.9074 2.59483 -0.2 - vertex 26.8894 6.05157 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.7157 16.8274 -0.2 - vertex 24.8049 16.6725 -0.2 - vertex 25.8187 16.7495 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.901 1.43209 -0.2 - vertex 26.5572 1.2697 -0.2 - vertex 26.8581 1.29842 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.8049 16.6725 -0.2 - vertex 25.7157 16.8274 -0.2 - vertex 24.8294 16.7672 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9647 2.16551 -0.2 - vertex 26.3175 1.53367 -0.2 - vertex 26.9324 1.61996 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.8294 16.7672 -0.2 - vertex 25.7157 16.8274 -0.2 - vertex 25.6037 16.9917 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.8232 16.8925 -0.2 - vertex 25.6037 16.9917 -0.2 - vertex 25.4856 17.2443 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9615 2.94949 -0.2 - vertex 25.4766 2.59351 -0.2 - vertex 25.6376 2.44612 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.789 17.0321 -0.2 - vertex 25.4856 17.2443 -0.2 - vertex 25.3467 17.5167 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 25.0464 2.67962 -0.2 - vertex 26.8894 6.05157 -0.2 - vertex 24.9074 2.59483 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.7291 17.1695 -0.2 - vertex 25.3467 17.5167 -0.2 - vertex 25.2614 17.6336 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9294 3.98634 -0.2 - vertex 25.3271 2.68052 -0.2 - vertex 25.4766 2.59351 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.6602 17.253 -0.2 - vertex 25.2614 17.6336 -0.2 - vertex 25.163 17.7384 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.6602 17.253 -0.2 - vertex 25.163 17.7384 -0.2 - vertex 25.0501 17.8316 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9294 3.98634 -0.2 - vertex 25.185 2.7087 -0.2 - vertex 25.3271 2.68052 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.6602 17.253 -0.2 - vertex 25.0501 17.8316 -0.2 - vertex 24.9207 17.9138 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.8871 5.49316 -0.2 - vertex 25.0464 2.67962 -0.2 - vertex 25.185 2.7087 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.8894 6.05157 -0.2 - vertex 25.0464 2.67962 -0.2 - vertex 26.8871 5.49316 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.6037 16.9917 -0.2 - vertex 24.8232 16.8925 -0.2 - vertex 24.8294 16.7672 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.4856 17.2443 -0.2 - vertex 24.789 17.0321 -0.2 - vertex 24.8232 16.8925 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.3467 17.5167 -0.2 - vertex 24.7291 17.1695 -0.2 - vertex 24.789 17.0321 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.2614 17.6336 -0.2 - vertex 24.6602 17.253 -0.2 - vertex 24.7291 17.1695 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.5483 17.3222 -0.2 - vertex 24.9207 17.9138 -0.2 - vertex 24.6059 18.0475 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.9207 17.9138 -0.2 - vertex 24.5483 17.3222 -0.2 - vertex 24.6602 17.253 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.6059 18.0475 -0.2 - vertex 24.386 17.3783 -0.2 - vertex 24.5483 17.3222 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.166 17.4223 -0.2 - vertex 24.6059 18.0475 -0.2 - vertex 24.2049 18.1437 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.6059 18.0475 -0.2 - vertex 24.166 17.4223 -0.2 - vertex 24.386 17.3783 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.7039 18.207 -0.2 - vertex 24.166 17.4223 -0.2 - vertex 24.2049 18.1437 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.7039 18.207 -0.2 - vertex 23.5226 17.4791 -0.2 - vertex 24.166 17.4223 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.0891 18.2417 -0.2 - vertex 23.5226 17.4791 -0.2 - vertex 23.7039 18.207 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.0891 18.2417 -0.2 - vertex 22.5588 17.5015 -0.2 - vertex 23.5226 17.4791 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.3468 18.2522 -0.2 - vertex 22.5588 17.5015 -0.2 - vertex 23.0891 18.2417 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.5679 18.2611 -0.2 - vertex 22.5588 17.5015 -0.2 - vertex 22.3468 18.2522 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.5679 18.2611 -0.2 - vertex 21.0506 17.5236 -0.2 - vertex 22.5588 17.5015 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9709 18.304 -0.2 - vertex 21.0506 17.5236 -0.2 - vertex 21.5679 18.2611 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.7319 18.3459 -0.2 - vertex 21.0506 17.5236 -0.2 - vertex 20.9709 18.304 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2276 17.5562 -0.2 - vertex 20.7319 18.3459 -0.2 - vertex 20.5281 18.4055 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0333 17.6179 -0.2 - vertex 20.5281 18.4055 -0.2 - vertex 20.3561 18.486 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.7319 18.3459 -0.2 - vertex 20.2276 17.5562 -0.2 - vertex 21.0506 17.5236 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.6934 17.9694 -0.2 - vertex 20.3561 18.486 -0.2 - vertex 20.2124 18.5903 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.5281 18.4055 -0.2 - vertex 20.1284 17.5777 -0.2 - vertex 20.2276 17.5562 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5469 18.2611 -0.2 - vertex 20.2124 18.5903 -0.2 - vertex 20.0935 18.7216 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.5281 18.4055 -0.2 - vertex 20.0333 17.6179 -0.2 - vertex 20.1284 17.5777 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4153 18.6317 -0.2 - vertex 20.0935 18.7216 -0.2 - vertex 19.9962 18.8829 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.3561 18.486 -0.2 - vertex 19.9424 17.6771 -0.2 - vertex 20.0333 17.6179 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4153 18.6317 -0.2 - vertex 19.9962 18.8829 -0.2 - vertex 19.9169 19.0772 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.3561 18.486 -0.2 - vertex 19.8554 17.7553 -0.2 - vertex 19.9424 17.6771 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.2984 19.082 -0.2 - vertex 19.9169 19.0772 -0.2 - vertex 19.8522 19.3078 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.1956 19.6132 -0.2 - vertex 19.8522 19.3078 -0.2 - vertex 19.753 19.8896 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.3561 18.486 -0.2 - vertex 19.6934 17.9694 -0.2 - vertex 19.8554 17.7553 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.1065 20.2262 -0.2 - vertex 19.753 19.8896 -0.2 - vertex 19.6713 20.6529 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.0081 20.8787 -0.2 - vertex 19.6713 20.6529 -0.2 - vertex 19.58 21.4118 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0935 18.7216 -0.2 - vertex 19.4153 18.6317 -0.2 - vertex 19.5469 18.2611 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 18.892 21.4494 -0.2 - vertex 19.58 21.4118 -0.2 - vertex 19.5238 21.6908 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.892 21.4494 -0.2 - vertex 19.5238 21.6908 -0.2 - vertex 19.4538 21.9215 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2124 18.5903 -0.2 - vertex 19.5469 18.2611 -0.2 - vertex 19.6934 17.9694 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.7726 21.8767 -0.2 - vertex 19.4538 21.9215 -0.2 - vertex 19.3646 22.1178 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.9169 19.0772 -0.2 - vertex 19.2984 19.082 -0.2 - vertex 19.4153 18.6317 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.7726 21.8767 -0.2 - vertex 19.3646 22.1178 -0.2 - vertex 19.2511 22.2936 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.8522 19.3078 -0.2 - vertex 19.1956 19.6132 -0.2 - vertex 19.2984 19.082 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.7163 22.0174 -0.2 - vertex 19.2511 22.2936 -0.2 - vertex 19.108 22.463 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.753 19.8896 -0.2 - vertex 19.1065 20.2262 -0.2 - vertex 19.1956 19.6132 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.6713 20.6529 -0.2 - vertex 19.0081 20.8787 -0.2 - vertex 19.1065 20.2262 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.6646 22.0992 -0.2 - vertex 19.108 22.463 -0.2 - vertex 18.9302 22.6398 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.58 21.4118 -0.2 - vertex 18.892 21.4494 -0.2 - vertex 19.0081 20.8787 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4538 21.9215 -0.2 - vertex 18.7726 21.8767 -0.2 - vertex 18.892 21.4494 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.2511 22.2936 -0.2 - vertex 18.7163 22.0174 -0.2 - vertex 18.7726 21.8767 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.108 22.463 -0.2 - vertex 18.6646 22.0992 -0.2 - vertex 18.7163 22.0174 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4732 22.2317 -0.2 - vertex 18.9302 22.6398 -0.2 - vertex 18.6454 22.8797 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.9302 22.6398 -0.2 - vertex 18.4732 22.2317 -0.2 - vertex 18.6646 22.0992 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.127 22.4141 -0.2 - vertex 18.6454 22.8797 -0.2 - vertex 18.318 23.1114 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.6454 22.8797 -0.2 - vertex 18.127 22.4141 -0.2 - vertex 18.4732 22.2317 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.6752 22.6222 -0.2 - vertex 18.318 23.1114 -0.2 - vertex 17.9883 23.3086 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.6752 22.6222 -0.2 - vertex 17.9883 23.3086 -0.2 - vertex 17.6969 23.4449 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.318 23.1114 -0.2 - vertex 17.6752 22.6222 -0.2 - vertex 18.127 22.4141 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.6969 23.4449 -0.2 - vertex 17.1667 22.8321 -0.2 - vertex 17.6752 22.6222 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.2809 23.9862 -0.2 - vertex 17.1667 22.8321 -0.2 - vertex 17.6969 23.4449 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.2809 23.9862 -0.2 - vertex 15.5173 23.4995 -0.2 - vertex 17.1667 22.8321 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.1328 24.4531 -0.2 - vertex 15.5173 23.4995 -0.2 - vertex 16.2809 23.9862 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.0281 24.1527 -0.2 - vertex 15.1328 24.4531 -0.2 - vertex 14.2197 24.8651 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.1328 24.4531 -0.2 - vertex 14.0281 24.1527 -0.2 - vertex 15.5173 23.4995 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.2197 24.8651 -0.2 - vertex 13.7923 24.2655 -0.2 - vertex 14.0281 24.1527 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.2197 24.8651 -0.2 - vertex 13.5553 24.3991 -0.2 - vertex 13.7923 24.2655 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.5086 25.2416 -0.2 - vertex 13.5553 24.3991 -0.2 - vertex 14.2197 24.8651 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.085 24.7212 -0.2 - vertex 13.5086 25.2416 -0.2 - vertex 13.2184 25.4225 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.5086 25.2416 -0.2 - vertex 13.085 24.7212 -0.2 - vertex 13.5553 24.3991 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.6316 25.1032 -0.2 - vertex 13.2184 25.4225 -0.2 - vertex 12.9664 25.6018 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.6316 25.1032 -0.2 - vertex 12.9664 25.6018 -0.2 - vertex 12.7484 25.782 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.2184 25.4225 -0.2 - vertex 12.6316 25.1032 -0.2 - vertex 13.085 24.7212 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.2092 25.5292 -0.2 - vertex 12.7484 25.782 -0.2 - vertex 12.5603 25.9653 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.2092 25.5292 -0.2 - vertex 12.5603 25.9653 -0.2 - vertex 12.3979 26.1543 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.8324 25.9834 -0.2 - vertex 12.3979 26.1543 -0.2 - vertex 12.2572 26.3514 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.7484 25.782 -0.2 - vertex 12.2092 25.5292 -0.2 - vertex 12.6316 25.1032 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.8324 25.9834 -0.2 - vertex 12.2572 26.3514 -0.2 - vertex 12.1339 26.5589 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5154 26.4501 -0.2 - vertex 12.1339 26.5589 -0.2 - vertex 12.0241 26.7794 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.3839 26.6832 -0.2 - vertex 12.0241 26.7794 -0.2 - vertex 11.903 27.1234 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3979 26.1543 -0.2 - vertex 11.8324 25.9834 -0.2 - vertex 12.2092 25.5292 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.1835 27.139 -0.2 - vertex 11.903 27.1234 -0.2 - vertex 11.8169 27.5343 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.0734 27.5937 -0.2 - vertex 11.8169 27.5343 -0.2 - vertex 11.7656 27.9858 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.0419 28.1143 -0.2 - vertex 11.7656 27.9858 -0.2 - vertex 11.7492 28.4518 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.2437 29.4873 -0.2 - vertex 11.9082 29.6745 -0.2 - vertex 11.4096 29.9696 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.9082 29.6745 -0.2 - vertex 11.2437 29.4873 -0.2 - vertex 11.8205 29.3224 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.7675 28.9061 -0.2 - vertex 11.1213 28.9486 -0.2 - vertex 11.7492 28.4518 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.8205 29.3224 -0.2 - vertex 11.2437 29.4873 -0.2 - vertex 11.7675 28.9061 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.1213 28.9486 -0.2 - vertex 11.7675 28.9061 -0.2 - vertex 11.2437 29.4873 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.0528 28.3898 -0.2 - vertex 11.7492 28.4518 -0.2 - vertex 11.1213 28.9486 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.1339 26.5589 -0.2 - vertex 11.5154 26.4501 -0.2 - vertex 11.8324 25.9834 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.0419 28.1143 -0.2 - vertex 11.7492 28.4518 -0.2 - vertex 11.0528 28.3898 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.0241 26.7794 -0.2 - vertex 11.3839 26.6832 -0.2 - vertex 11.5154 26.4501 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.7656 27.9858 -0.2 - vertex 11.0419 28.1143 -0.2 - vertex 11.0484 27.8474 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.903 27.1234 -0.2 - vertex 11.2726 26.9135 -0.2 - vertex 11.3839 26.6832 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.7656 27.9858 -0.2 - vertex 11.0484 27.8474 -0.2 - vertex 11.0734 27.5937 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.903 27.1234 -0.2 - vertex 11.1835 27.139 -0.2 - vertex 11.2726 26.9135 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.8169 27.5343 -0.2 - vertex 11.1184 27.3577 -0.2 - vertex 11.1835 27.139 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.8169 27.5343 -0.2 - vertex 11.0734 27.5937 -0.2 - vertex 11.1184 27.3577 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.5155 0.168137 -0.2 - vertex 21.1355 -0.658014 -0.2 - vertex 21.1316 -0.233279 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.8646 0.230347 -0.2 - vertex 21.1316 -0.233279 -0.2 - vertex 21.099 0.0745682 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9772 0.235111 -0.2 - vertex 21.099 0.0745682 -0.2 - vertex 21.0726 0.170561 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9772 0.235111 -0.2 - vertex 21.0726 0.170561 -0.2 - vertex 21.0399 0.220413 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.1316 -0.233279 -0.2 - vertex 20.8646 0.230347 -0.2 - vertex 20.5155 0.168137 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.1355 -0.658014 -0.2 - vertex 20.5155 0.168137 -0.2 - vertex 20.0432 0.0451876 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.099 0.0745682 -0.2 - vertex 20.9772 0.235111 -0.2 - vertex 20.8646 0.230347 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.1355 -0.658014 -0.2 - vertex 20.0432 0.0451876 -0.2 - vertex 21.1085 -1.15452 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.4982 -0.127099 -0.2 - vertex 21.1085 -1.15452 -0.2 - vertex 20.0432 0.0451876 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.1085 -1.15452 -0.2 - vertex 19.4982 -0.127099 -0.2 - vertex 21.0399 -1.71534 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0399 -1.71534 -0.2 - vertex 19.4982 -0.127099 -0.2 - vertex 20.9878 -1.96317 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 18.7502 -0.369046 -0.2 - vertex 20.9878 -1.96317 -0.2 - vertex 19.4982 -0.127099 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9878 -1.96317 -0.2 - vertex 18.7502 -0.369046 -0.2 - vertex 20.9199 -2.19366 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9199 -2.19366 -0.2 - vertex 18.7502 -0.369046 -0.2 - vertex 20.8331 -2.41014 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.8331 -2.41014 -0.2 - vertex 18.7502 -0.369046 -0.2 - vertex 20.7245 -2.61588 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.7245 -2.61588 -0.2 - vertex 18.7502 -0.369046 -0.2 - vertex 20.591 -2.8142 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.591 -2.8142 -0.2 - vertex 18.7502 -0.369046 -0.2 - vertex 20.4297 -3.0084 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.4297 -3.0084 -0.2 - vertex 18.7502 -0.369046 -0.2 - vertex 20.2374 -3.20177 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2374 -3.20177 -0.2 - vertex 18.7502 -0.369046 -0.2 - vertex 20.0112 -3.39762 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 18.4876 -0.435405 -0.2 - vertex 20.0112 -3.39762 -0.2 - vertex 18.7502 -0.369046 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0112 -3.39762 -0.2 - vertex 18.4876 -0.435405 -0.2 - vertex 19.4451 -3.80993 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 18.2791 -0.466914 -0.2 - vertex 19.4451 -3.80993 -0.2 - vertex 18.4876 -0.435405 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.1098 -0.464739 -0.2 - vertex 19.4451 -3.80993 -0.2 - vertex 18.2791 -0.466914 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4451 -3.80993 -0.2 - vertex 18.1098 -0.464739 -0.2 - vertex 18.7073 -4.27174 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.9646 -0.430052 -0.2 - vertex 18.7073 -4.27174 -0.2 - vertex 18.1098 -0.464739 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.7736 -4.80944 -0.2 - vertex 17.9646 -0.430052 -0.2 - vertex 17.8284 -0.36402 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.9646 -0.430052 -0.2 - vertex 17.7736 -4.80944 -0.2 - vertex 18.7073 -4.27174 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.3217 -2.5049 -0.2 - vertex 17.8284 -0.36402 -0.2 - vertex 17.6862 -0.267812 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.2572 -2.23644 -0.2 - vertex 17.6862 -0.267812 -0.2 - vertex 17.4918 -0.0873203 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.1524 -1.94488 -0.2 - vertex 17.4918 -0.0873203 -0.2 - vertex 17.2889 0.169637 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.008 -1.63155 -0.2 - vertex 17.2889 0.169637 -0.2 - vertex 17.0802 0.495742 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.8249 -1.29782 -0.2 - vertex 17.0802 0.495742 -0.2 - vertex 16.8681 0.883681 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.604 -0.945011 -0.2 - vertex 16.8681 0.883681 -0.2 - vertex 16.6551 1.32614 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.3463 -0.574481 -0.2 - vertex 16.6551 1.32614 -0.2 - vertex 16.4437 1.81579 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.6862 -0.267812 -0.2 - vertex 14.2572 -2.23644 -0.2 - vertex 14.3217 -2.5049 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.7237 0.214368 -0.2 - vertex 16.4437 1.81579 -0.2 - vertex 16.2363 2.34533 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3607 0.629996 -0.2 - vertex 16.2363 2.34533 -0.2 - vertex 16.0356 2.90743 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5355 1.49693 -0.2 - vertex 16.0356 2.90743 -0.2 - vertex 15.6639 4.10009 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.8284 -0.36402 -0.2 - vertex 14.3217 -2.5049 -0.2 - vertex 14.3448 -2.7489 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5355 1.49693 -0.2 - vertex 15.6639 4.10009 -0.2 - vertex 15.498 4.716 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.5842 2.40247 -0.2 - vertex 15.498 4.716 -0.2 - vertex 15.3486 5.33522 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.5842 2.40247 -0.2 - vertex 15.3486 5.33522 -0.2 - vertex 15.2183 5.95043 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.61741 3.25086 -0.2 - vertex 15.2183 5.95043 -0.2 - vertex 15.1095 6.5543 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.29624 3.50894 -0.2 - vertex 15.1095 6.5543 -0.2 - vertex 15.0249 7.13954 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 14.3256 -2.96711 -0.2 - vertex 17.7736 -4.80944 -0.2 - vertex 14.3448 -2.7489 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.14614 3.60373 -0.2 - vertex 15.0249 7.13954 -0.2 - vertex 14.9668 7.69881 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.19732 4.25764 -0.2 - vertex 14.9668 7.69881 -0.2 - vertex 14.9212 8.45633 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0942 9.33737 -0.2 - vertex 8.99158 15.8746 -0.2 - vertex 15.0092 9.15168 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.7736 -4.80944 -0.2 - vertex 14.3256 -2.96711 -0.2 - vertex 16.3254 -5.59514 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 14.1768 -3.32005 -0.2 - vertex 16.3254 -5.59514 -0.2 - vertex 14.2634 -3.15818 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 14.2634 -3.15818 -0.2 - vertex 16.3254 -5.59514 -0.2 - vertex 14.3256 -2.96711 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.8284 -0.36402 -0.2 - vertex 14.3448 -2.7489 -0.2 - vertex 17.7736 -4.80944 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.4918 -0.0873203 -0.2 - vertex 14.1524 -1.94488 -0.2 - vertex 14.2572 -2.23644 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.2889 0.169637 -0.2 - vertex 14.008 -1.63155 -0.2 - vertex 14.1524 -1.94488 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.4375 16.5104 -0.2 - vertex 14.6028 17.0277 -0.2 - vertex 14.0017 17.4864 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.0802 0.495742 -0.2 - vertex 13.8249 -1.29782 -0.2 - vertex 14.008 -1.63155 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.8681 0.883681 -0.2 - vertex 13.604 -0.945011 -0.2 - vertex 13.8249 -1.29782 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.4375 16.5104 -0.2 - vertex 14.0017 17.4864 -0.2 - vertex 13.3813 18.0182 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.6551 1.32614 -0.2 - vertex 13.3463 -0.574481 -0.2 - vertex 13.604 -0.945011 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.4437 1.81579 -0.2 - vertex 13.0525 -0.187573 -0.2 - vertex 13.3463 -0.574481 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.4437 1.81579 -0.2 - vertex 12.7237 0.214368 -0.2 - vertex 13.0525 -0.187573 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.4375 16.5104 -0.2 - vertex 13.3813 18.0182 -0.2 - vertex 12.71 18.6425 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.2363 2.34533 -0.2 - vertex 12.3607 0.629996 -0.2 - vertex 12.7237 0.214368 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.4375 16.5104 -0.2 - vertex 12.71 18.6425 -0.2 - vertex 12.1494 19.1886 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.77546 17.1908 -0.2 - vertex 12.1494 19.1886 -0.2 - vertex 11.6914 19.6646 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 8.87708 15.8492 -0.2 - vertex 15.0092 9.15168 -0.2 - vertex 8.99158 15.8746 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.09841 17.8163 -0.2 - vertex 11.6914 19.6646 -0.2 - vertex 11.3113 20.1069 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.09841 17.8163 -0.2 - vertex 11.3113 20.1069 -0.2 - vertex 10.9846 20.5521 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.31493 18.4459 -0.2 - vertex 10.9846 20.5521 -0.2 - vertex 10.6869 21.0368 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.0356 2.90743 -0.2 - vertex 11.5355 1.49693 -0.2 - vertex 12.3607 0.629996 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.498 4.716 -0.2 - vertex 10.5842 2.40247 -0.2 - vertex 11.5355 1.49693 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.9444 18.7161 -0.2 - vertex 10.6869 21.0368 -0.2 - vertex 10.3935 21.5973 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.36805 19.075 -0.2 - vertex 10.3935 21.5973 -0.2 - vertex 10.0801 22.2703 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.1494 19.1886 -0.2 - vertex 9.77546 17.1908 -0.2 - vertex 10.4375 16.5104 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.21113 19.1268 -0.2 - vertex 10.0801 22.2703 -0.2 - vertex 9.72206 23.0922 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.6914 19.6646 -0.2 - vertex 9.46246 17.4938 -0.2 - vertex 9.77546 17.1908 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.21113 19.1268 -0.2 - vertex 9.72206 23.0922 -0.2 - vertex 9.38213 23.8626 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.6914 19.6646 -0.2 - vertex 9.09841 17.8163 -0.2 - vertex 9.46246 17.4938 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.76329 26.0408 -0.2 - vertex 9.38213 23.8626 -0.2 - vertex 9.08206 24.476 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.12606 25.9588 -0.2 - vertex 9.08206 24.476 -0.2 - vertex 8.80411 24.9522 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.55919 25.8755 -0.2 - vertex 8.80411 24.9522 -0.2 - vertex 8.6679 25.145 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.55919 25.8755 -0.2 - vertex 8.6679 25.145 -0.2 - vertex 8.53058 25.3107 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.55919 25.8755 -0.2 - vertex 8.53058 25.3107 -0.2 - vertex 8.38993 25.4519 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.9846 20.5521 -0.2 - vertex 8.31493 18.4459 -0.2 - vertex 9.09841 17.8163 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.92584 25.7528 -0.2 - vertex 8.38993 25.4519 -0.2 - vertex 8.24373 25.571 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.92584 25.7528 -0.2 - vertex 8.24373 25.571 -0.2 - vertex 8.08977 25.6705 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.6869 21.0368 -0.2 - vertex 7.9444 18.7161 -0.2 - vertex 8.31493 18.4459 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.38993 25.4519 -0.2 - vertex 7.92584 25.7528 -0.2 - vertex 7.55919 25.8755 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.3935 21.5973 -0.2 - vertex 7.62063 18.9319 -0.2 - vertex 7.9444 18.7161 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.80411 24.9522 -0.2 - vertex 7.55919 25.8755 -0.2 - vertex 7.12606 25.9588 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.3935 21.5973 -0.2 - vertex 7.36805 19.075 -0.2 - vertex 7.62063 18.9319 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.0801 22.2703 -0.2 - vertex 7.21113 19.1268 -0.2 - vertex 7.36805 19.075 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.76329 26.0408 -0.2 - vertex 9.08206 24.476 -0.2 - vertex 7.12606 25.9588 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.38213 23.8626 -0.2 - vertex 6.76329 26.0408 -0.2 - vertex 7.21113 19.1268 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.21113 19.1268 -0.2 - vertex 6.76329 26.0408 -0.2 - vertex 7.15267 19.0966 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.41393 26.1795 -0.2 - vertex 7.15267 19.0966 -0.2 - vertex 6.76329 26.0408 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.07308 26.3793 -0.2 - vertex 7.15267 19.0966 -0.2 - vertex 6.41393 26.1795 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.816408 27.0884 -0.2 - vertex 7.15267 19.0966 -0.2 - vertex 6.07308 26.3793 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 1.92323 12.5289 -0.2 - vertex 7.1242 19.0144 -0.2 - vertex 1.90284 12.6291 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 0.734953 27.0776 -0.2 - vertex 7.15267 19.0966 -0.2 - vertex 0.816408 27.0884 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.870515 27.1101 -0.2 - vertex 6.07308 26.3793 -0.2 - vertex 5.73586 26.6445 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.870515 27.1101 -0.2 - vertex 5.73586 26.6445 -0.2 - vertex 5.39739 26.9794 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 6.22936 5.32709 -0.2 - vertex 7.1242 19.0144 -0.2 - vertex 1.92323 12.5289 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 0.870515 27.1101 -0.2 - vertex 5.39739 26.9794 -0.2 - vertex 5.05276 27.3884 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.908598 27.1645 -0.2 - vertex 5.05276 27.3884 -0.2 - vertex 4.69711 27.8759 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.944126 27.2693 -0.2 - vertex 4.69711 27.8759 -0.2 - vertex 4.32553 28.4461 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.1242 19.0144 -0.2 - vertex 6.22936 5.32709 -0.2 - vertex 7.07462 4.9138 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.04514 28.0688 -0.2 - vertex 4.32553 28.4461 -0.2 - vertex 4.09087 28.8303 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.04514 28.0688 -0.2 - vertex 4.09087 28.8303 -0.2 - vertex 3.91157 29.1502 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.0601 28.6106 -0.2 - vertex 3.91157 29.1502 -0.2 - vertex 3.78021 29.4348 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.07949 29.2543 -0.2 - vertex 3.78021 29.4348 -0.2 - vertex 3.68937 29.7129 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.13903 29.8907 -0.2 - vertex 3.68937 29.7129 -0.2 - vertex 3.63162 30.0135 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.24074 30.5277 -0.2 - vertex 3.63162 30.0135 -0.2 - vertex 3.59957 30.3654 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.91748 12.4352 -0.2 - vertex 6.22936 5.32709 -0.2 - vertex 1.92323 12.5289 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.38662 31.173 -0.2 - vertex 3.59957 30.3654 -0.2 - vertex 3.58282 31.3388 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 14.0741 -3.47638 -0.2 - vertex 16.3254 -5.59514 -0.2 - vertex 14.1768 -3.32005 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.3254 -5.59514 -0.2 - vertex 14.0741 -3.47638 -0.2 - vertex 15.6549 -5.93433 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 13.8248 -3.7697 -0.2 - vertex 15.6549 -5.93433 -0.2 - vertex 14.0741 -3.47638 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.6549 -5.93433 -0.2 - vertex 13.8248 -3.7697 -0.2 - vertex 15.0129 -6.23993 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 13.5249 -4.03275 -0.2 - vertex 15.0129 -6.23993 -0.2 - vertex 13.8248 -3.7697 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0129 -6.23993 -0.2 - vertex 13.5249 -4.03275 -0.2 - vertex 14.3941 -6.51356 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 13.1837 -4.26011 -0.2 - vertex 14.3941 -6.51356 -0.2 - vertex 13.5249 -4.03275 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.3941 -6.51356 -0.2 - vertex 13.1837 -4.26011 -0.2 - vertex 13.793 -6.75686 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.8106 -4.44636 -0.2 - vertex 13.793 -6.75686 -0.2 - vertex 13.1837 -4.26011 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.793 -6.75686 -0.2 - vertex 12.8106 -4.44636 -0.2 - vertex 13.2041 -6.97145 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.4149 -4.5861 -0.2 - vertex 13.2041 -6.97145 -0.2 - vertex 12.8106 -4.44636 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.2041 -6.97145 -0.2 - vertex 12.4149 -4.5861 -0.2 - vertex 12.6221 -7.15898 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.006 -4.67391 -0.2 - vertex 12.6221 -7.15898 -0.2 - vertex 12.4149 -4.5861 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.6221 -7.15898 -0.2 - vertex 12.006 -4.67391 -0.2 - vertex 12.0414 -7.32107 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.5931 -4.70438 -0.2 - vertex 12.0414 -7.32107 -0.2 - vertex 12.006 -4.67391 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5931 -4.70438 -0.2 - vertex 11.4568 -7.45935 -0.2 - vertex 12.0414 -7.32107 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.26 -4.69402 -0.2 - vertex 11.4568 -7.45935 -0.2 - vertex 11.5931 -4.70438 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.9319 -4.66264 -0.2 - vertex 11.4568 -7.45935 -0.2 - vertex 11.26 -4.69402 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.9319 -4.66264 -0.2 - vertex 10.8627 -7.57545 -0.2 - vertex 11.4568 -7.45935 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.608 -4.6098 -0.2 - vertex 10.8627 -7.57545 -0.2 - vertex 10.9319 -4.66264 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.2538 -7.67101 -0.2 - vertex 10.608 -4.6098 -0.2 - vertex 10.2875 -4.53506 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.608 -4.6098 -0.2 - vertex 10.2538 -7.67101 -0.2 - vertex 10.8627 -7.57545 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.62459 -7.74765 -0.2 - vertex 10.2875 -4.53506 -0.2 - vertex 9.96977 -4.43796 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.809 -5.75259 -0.2 - vertex 9.96977 -4.43796 -0.2 - vertex 9.65389 -4.31807 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.2875 -4.53506 -0.2 - vertex 9.62459 -7.74765 -0.2 - vertex 10.2538 -7.67101 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.809 -5.75259 -0.2 - vertex 9.65389 -4.31807 -0.2 - vertex 9.33912 -4.17495 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.809 -5.75259 -0.2 - vertex 9.33912 -4.17495 -0.2 - vertex 9.02468 -4.00814 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.96977 -4.43796 -0.2 - vertex 7.809 -5.75259 -0.2 - vertex 9.62459 -7.74765 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.809 -5.75259 -0.2 - vertex 9.02468 -4.00814 -0.2 - vertex 8.70978 -3.81721 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.04277 -4.97268 -0.2 - vertex 8.70978 -3.81721 -0.2 - vertex 8.39365 -3.60171 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.04277 -4.97268 -0.2 - vertex 8.39365 -3.60171 -0.2 - vertex 8.0755 -3.36119 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.62459 -7.74765 -0.2 - vertex 7.809 -5.75259 -0.2 - vertex 8.96966 -7.80701 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.809 -5.75259 -0.2 - vertex 7.56097 -7.88041 -0.2 - vertex 8.96966 -7.80701 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 7.2241 -5.88439 -0.2 - vertex 7.56097 -7.88041 -0.2 - vertex 7.809 -5.75259 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 6.87672 -5.95074 -0.2 - vertex 7.56097 -7.88041 -0.2 - vertex 7.2241 -5.88439 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 6.53505 -5.98957 -0.2 - vertex 7.56097 -7.88041 -0.2 - vertex 6.87672 -5.95074 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.04455 -7.91255 -0.2 - vertex 6.53505 -5.98957 -0.2 - vertex 6.18777 -5.99984 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.53505 -5.98957 -0.2 - vertex 6.04455 -7.91255 -0.2 - vertex 7.56097 -7.88041 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.82356 -5.98052 -0.2 - vertex 6.04455 -7.91255 -0.2 - vertex 6.18777 -5.99984 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.82356 -5.98052 -0.2 - vertex 5.49083 -7.9071 -0.2 - vertex 6.04455 -7.91255 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.4311 -5.93055 -0.2 - vertex 5.49083 -7.9071 -0.2 - vertex 5.82356 -5.98052 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.4311 -5.93055 -0.2 - vertex 5.0434 -7.88498 -0.2 - vertex 5.49083 -7.9071 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.99906 -5.84891 -0.2 - vertex 5.0434 -7.88498 -0.2 - vertex 5.4311 -5.93055 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.99906 -5.84891 -0.2 - vertex 4.67971 -7.84446 -0.2 - vertex 5.0434 -7.88498 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.11342 -7.70123 -0.2 - vertex 4.99906 -5.84891 -0.2 - vertex 4.51611 -5.73457 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.99906 -5.84891 -0.2 - vertex 4.37723 -7.78379 -0.2 - vertex 4.67971 -7.84446 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.99906 -5.84891 -0.2 - vertex 4.11342 -7.70123 -0.2 - vertex 4.37723 -7.78379 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.40104 -7.34622 -0.2 - vertex 4.51611 -5.73457 -0.2 - vertex 3.97093 -5.58648 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.51611 -5.73457 -0.2 - vertex 3.86574 -7.59505 -0.2 - vertex 4.11342 -7.70123 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.51611 -5.73457 -0.2 - vertex 3.40104 -7.34622 -0.2 - vertex 3.86574 -7.59505 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.71562 -6.94693 -0.2 - vertex 3.97093 -5.58648 -0.2 - vertex 3.25174 -5.37115 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.97093 -5.58648 -0.2 - vertex 2.71562 -6.94693 -0.2 - vertex 3.40104 -7.34622 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.534 -5.13555 -0.2 - vertex 2.71562 -6.94693 -0.2 - vertex 3.25174 -5.37115 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.05193 -5.91722 -0.2 - vertex 2.534 -5.13555 -0.2 - vertex 1.81816 -4.87986 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.05193 -5.91722 -0.2 - vertex 1.81816 -4.87986 -0.2 - vertex 1.10471 -4.60426 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.534 -5.13555 -0.2 - vertex 1.05193 -5.91722 -0.2 - vertex 2.71562 -6.94693 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.394112 -4.30895 -0.2 - vertex 1.05193 -5.91722 -0.2 - vertex 1.10471 -4.60426 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.694871 -4.82613 -0.2 - vertex 0.394112 -4.30895 -0.2 - vertex -0.313177 -3.99411 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.394112 -4.30895 -0.2 - vertex -0.694871 -4.82613 -0.2 - vertex 1.05193 -5.91722 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.01669 -3.65993 -0.2 - vertex -0.694871 -4.82613 -0.2 - vertex -0.313177 -3.99411 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.47177 -3.7788 -0.2 - vertex -1.01669 -3.65993 -0.2 - vertex -1.71595 -3.30659 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.47177 -3.7788 -0.2 - vertex -1.71595 -3.30659 -0.2 - vertex -2.32857 -3.00041 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.01669 -3.65993 -0.2 - vertex -2.47177 -3.7788 -0.2 - vertex -0.694871 -4.82613 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.32857 -3.00041 -0.2 - vertex -2.8551 -3.51984 -0.2 - vertex -2.47177 -3.7788 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.87688 -2.74967 -0.2 - vertex -2.8551 -3.51984 -0.2 - vertex -2.32857 -3.00041 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.87688 -2.74967 -0.2 - vertex -3.18232 -3.26618 -0.2 - vertex -2.8551 -3.51984 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.44099 -3.03042 -0.2 - vertex -2.87688 -2.74967 -0.2 - vertex -3.301 -2.58026 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.87688 -2.74967 -0.2 - vertex -3.44099 -3.03042 -0.2 - vertex -3.18232 -3.26618 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.61865 -2.82513 -0.2 - vertex -3.301 -2.58026 -0.2 - vertex -3.54104 -2.51804 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.301 -2.58026 -0.2 - vertex -3.61865 -2.82513 -0.2 - vertex -3.44099 -3.03042 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 -0.2 - vertex -3.54104 -2.51804 -0.2 - vertex -3.62666 -2.52788 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70601 -2.60189 -0.2 - vertex -3.62666 -2.52788 -0.2 - vertex -3.68113 -2.55635 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.54104 -2.51804 -0.2 - vertex -3.70285 -2.66292 -0.2 - vertex -3.61865 -2.82513 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.62666 -2.52788 -0.2 - vertex -3.70601 -2.60189 -0.2 - vertex -3.70285 -2.66292 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.5419 27.5737 -0.2 - vertex -21.2799 26.5937 -0.2 - vertex -21.2563 26.5576 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.7979 27.6578 -0.2 - vertex -21.3473 26.6332 -0.2 - vertex -21.2799 26.5937 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5951 26.7172 -0.2 - vertex -21.1001 27.7294 -0.2 - vertex -21.4599 27.7917 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.1001 27.7294 -0.2 - vertex -21.5951 26.7172 -0.2 - vertex -21.3473 26.6332 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.4599 27.7917 -0.2 - vertex -21.9618 26.7994 -0.2 - vertex -21.5951 26.7172 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.3975 27.9007 -0.2 - vertex -21.9618 26.7994 -0.2 - vertex -21.4599 27.7917 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.3975 27.9007 -0.2 - vertex -22.4095 26.8695 -0.2 - vertex -21.9618 26.7994 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.3975 27.9007 -0.2 - vertex -22.8078 26.9423 -0.2 - vertex -22.4095 26.8695 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.1232 27.9594 -0.2 - vertex -22.8078 26.9423 -0.2 - vertex -22.3975 27.9007 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.1232 27.9594 -0.2 - vertex -23.1972 27.0531 -0.2 - vertex -22.8078 26.9423 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.1232 27.9594 -0.2 - vertex -23.56 27.1917 -0.2 - vertex -23.1972 27.0531 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.7335 27.9892 -0.2 - vertex -23.56 27.1917 -0.2 - vertex -23.1232 27.9594 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.7335 27.9892 -0.2 - vertex -23.8785 27.3484 -0.2 - vertex -23.56 27.1917 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.7335 27.9892 -0.2 - vertex -24.1346 27.513 -0.2 - vertex -23.8785 27.3484 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.1643 27.9885 -0.2 - vertex -24.1346 27.513 -0.2 - vertex -23.7335 27.9892 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.3632 27.7532 -0.2 - vertex -24.1643 27.9885 -0.2 - vertex -24.2923 27.9761 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.1643 27.9885 -0.2 - vertex -24.3107 27.6757 -0.2 - vertex -24.1346 27.513 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.3858 27.8943 -0.2 - vertex -24.2923 27.9761 -0.2 - vertex -24.3515 27.9554 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.1643 27.9885 -0.2 - vertex -24.3632 27.7532 -0.2 - vertex -24.3107 27.6757 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.2923 27.9761 -0.2 - vertex -24.3858 27.8943 -0.2 - vertex -24.3889 27.8265 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.2923 27.9761 -0.2 - vertex -24.3889 27.8265 -0.2 - vertex -24.3632 27.7532 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.89877 27.2865 -0.2 - vertex -10.5394 24.4322 -0.2 - vertex -10.5349 24.4109 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.2816 27.5955 -0.2 - vertex -10.6591 24.5009 -0.2 - vertex -10.5394 24.4322 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.2816 27.5955 -0.2 - vertex -10.9077 24.5958 -0.2 - vertex -10.6591 24.5009 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.2816 27.5955 -0.2 - vertex -11.2625 24.7069 -0.2 - vertex -10.9077 24.5958 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.5342 27.7352 -0.2 - vertex -11.2625 24.7069 -0.2 - vertex -10.2816 27.5955 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.5342 27.7352 -0.2 - vertex -11.7825 24.8213 -0.2 - vertex -11.2625 24.7069 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.5342 27.7352 -0.2 - vertex -12.4277 24.907 -0.2 - vertex -11.7825 24.8213 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.6053 27.816 -0.2 - vertex -12.4277 24.907 -0.2 - vertex -11.5342 27.7352 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.6053 27.816 -0.2 - vertex -13.1566 24.9634 -0.2 - vertex -12.4277 24.907 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.5445 27.8374 -0.2 - vertex -13.1566 24.9634 -0.2 - vertex -12.6053 27.816 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.5445 27.8374 -0.2 - vertex -13.9275 24.99 -0.2 - vertex -13.1566 24.9634 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -14.4014 27.7989 -0.2 - vertex -13.9275 24.99 -0.2 - vertex -13.5445 27.8374 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.4014 27.7989 -0.2 - vertex -14.6988 24.986 -0.2 - vertex -13.9275 24.99 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -15.2259 27.7001 -0.2 - vertex -14.6988 24.986 -0.2 - vertex -14.4014 27.7989 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.2259 27.7001 -0.2 - vertex -15.4289 24.9511 -0.2 - vertex -14.6988 24.986 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.0674 27.5405 -0.2 - vertex -15.4289 24.9511 -0.2 - vertex -15.2259 27.7001 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.0674 27.5405 -0.2 - vertex -16.0762 24.8844 -0.2 - vertex -15.4289 24.9511 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.9758 27.3196 -0.2 - vertex -16.0762 24.8844 -0.2 - vertex -16.0674 27.5405 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.0762 24.8844 -0.2 - vertex -16.9758 27.3196 -0.2 - vertex -16.599 24.7853 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9758 27.3196 -0.2 - vertex -17.1707 24.6702 -0.2 - vertex -16.599 24.7853 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9758 27.3196 -0.2 - vertex -18.0818 24.5233 -0.2 - vertex -17.1707 24.6702 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -19.3233 26.703 -0.2 - vertex -18.0818 24.5233 -0.2 - vertex -16.9758 27.3196 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.0818 24.5233 -0.2 - vertex -19.3233 26.703 -0.2 - vertex -19.207 24.3637 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.2669 26.4994 -0.2 - vertex -19.3233 26.703 -0.2 - vertex -19.9368 27.2141 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.2563 26.5576 -0.2 - vertex -19.9368 27.2141 -0.2 - vertex -20.1227 27.3549 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.2563 26.5576 -0.2 - vertex -20.1227 27.3549 -0.2 - vertex -20.3206 27.4738 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.2997 26.4466 -0.2 - vertex -19.3233 26.703 -0.2 - vertex -21.2669 26.4994 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.2563 26.5576 -0.2 - vertex -20.3206 27.4738 -0.2 - vertex -20.5419 27.5737 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.2799 26.5937 -0.2 - vertex -20.5419 27.5737 -0.2 - vertex -20.7979 27.6578 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.3473 26.6332 -0.2 - vertex -20.7979 27.6578 -0.2 - vertex -21.1001 27.7294 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -19.9368 27.2141 -0.2 - vertex -21.2563 26.5576 -0.2 - vertex -21.2669 26.4994 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -19.3233 26.703 -0.2 - vertex -20.4207 24.2101 -0.2 - vertex -19.207 24.3637 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -19.3233 26.703 -0.2 - vertex -21.2997 26.4466 -0.2 - vertex -20.4207 24.2101 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -21.3558 26.3992 -0.2 - vertex -20.4207 24.2101 -0.2 - vertex -21.2997 26.4466 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -21.4368 26.3569 -0.2 - vertex -20.4207 24.2101 -0.2 - vertex -21.3558 26.3992 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -21.6785 26.2874 -0.2 - vertex -20.4207 24.2101 -0.2 - vertex -21.4368 26.3569 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -22.0356 26.2369 -0.2 - vertex -20.4207 24.2101 -0.2 - vertex -21.6785 26.2874 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.3692 23.8604 -0.2 - vertex -22.0356 26.2369 -0.2 - vertex -22.5186 26.2045 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.3692 23.8604 -0.2 - vertex -22.5186 26.2045 -0.2 - vertex -23.1385 26.1891 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.0356 26.2369 -0.2 - vertex -23.3692 23.8604 -0.2 - vertex -20.4207 24.2101 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.6523 24.0122 -0.2 - vertex -23.3692 23.8604 -0.2 - vertex -23.1385 26.1891 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.3692 23.8604 -0.2 - vertex -24.6523 24.0122 -0.2 - vertex -24.1455 19.0472 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.8316 26.205 -0.2 - vertex -24.6523 24.0122 -0.2 - vertex -23.1385 26.1891 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.8316 26.205 -0.2 - vertex -26.0107 24.2804 -0.2 - vertex -24.6523 24.0122 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.3751 26.2567 -0.2 - vertex -26.0107 24.2804 -0.2 - vertex -24.8316 26.205 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.3751 26.2567 -0.2 - vertex -26.5818 24.4056 -0.2 - vertex -26.0107 24.2804 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.1227 24.5501 -0.2 - vertex -26.3751 26.2567 -0.2 - vertex -26.9353 26.3003 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.3751 26.2567 -0.2 - vertex -27.1227 24.5501 -0.2 - vertex -26.5818 24.4056 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.636 24.7152 -0.2 - vertex -26.9353 26.3003 -0.2 - vertex -27.4097 26.3653 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.9353 26.3003 -0.2 - vertex -27.636 24.7152 -0.2 - vertex -27.1227 24.5501 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1248 24.9019 -0.2 - vertex -27.4097 26.3653 -0.2 - vertex -27.8395 26.4592 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.4097 26.3653 -0.2 - vertex -28.1248 24.9019 -0.2 - vertex -27.636 24.7152 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.5919 25.1115 -0.2 - vertex -27.8395 26.4592 -0.2 - vertex -28.2663 26.5892 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.8395 26.4592 -0.2 - vertex -28.5919 25.1115 -0.2 - vertex -28.1248 24.9019 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.0402 25.3453 -0.2 - vertex -28.2663 26.5892 -0.2 - vertex -28.7314 26.7626 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2663 26.5892 -0.2 - vertex -29.0402 25.3453 -0.2 - vertex -28.5919 25.1115 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.4725 25.6043 -0.2 - vertex -28.7314 26.7626 -0.2 - vertex -29.2762 26.9865 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.7314 26.7626 -0.2 - vertex -29.4725 25.6043 -0.2 - vertex -29.0402 25.3453 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.2762 26.9865 -0.2 - vertex -29.8918 25.8898 -0.2 - vertex -29.4725 25.6043 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.0875 27.3102 -0.2 - vertex -29.8918 25.8898 -0.2 - vertex -29.2762 26.9865 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.0875 27.3102 -0.2 - vertex -30.6514 26.471 -0.2 - vertex -29.8918 25.8898 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.9143 26.7038 -0.2 - vertex -30.0875 27.3102 -0.2 - vertex -30.6543 27.4912 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.1043 26.9038 -0.2 - vertex -30.6543 27.4912 -0.2 - vertex -30.8579 27.5312 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.0875 27.3102 -0.2 - vertex -30.9143 26.7038 -0.2 - vertex -30.6514 26.471 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2248 27.0754 -0.2 - vertex -30.8579 27.5312 -0.2 - vertex -31.0145 27.539 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.6543 27.4912 -0.2 - vertex -31.1043 26.9038 -0.2 - vertex -30.9143 26.7038 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.272 27.3506 -0.2 - vertex -31.0145 27.539 -0.2 - vertex -31.1289 27.5158 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.272 27.3506 -0.2 - vertex -31.1289 27.5158 -0.2 - vertex -31.2059 27.4629 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.8579 27.5312 -0.2 - vertex -31.2248 27.0754 -0.2 - vertex -31.1043 26.9038 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.0145 27.539 -0.2 - vertex -31.272 27.3506 -0.2 - vertex -31.2795 27.2229 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.0145 27.539 -0.2 - vertex -31.2795 27.2229 -0.2 - vertex -31.2248 27.0754 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.22936 5.32709 -0.2 - vertex 1.91748 12.4352 -0.2 - vertex 5.27855 5.76024 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.32553 28.4461 -0.2 - vertex 1.00441 27.6053 -0.2 - vertex 0.944126 27.2693 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.60924 32.0876 -0.2 - vertex 1.57871 31.8344 -0.2 - vertex 3.58282 31.3388 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.69711 27.8759 -0.2 - vertex 0.944126 27.2693 -0.2 - vertex 0.908598 27.1645 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.38662 31.173 -0.2 - vertex 3.58282 31.3388 -0.2 - vertex 1.57871 31.8344 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.1242 19.0144 -0.2 - vertex 1.85843 12.7398 -0.2 - vertex 1.90284 12.6291 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.59957 30.3654 -0.2 - vertex 1.38662 31.173 -0.2 - vertex 1.24074 30.5277 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.32553 28.4461 -0.2 - vertex 1.04514 28.0688 -0.2 - vertex 1.00441 27.6053 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.63162 30.0135 -0.2 - vertex 1.24074 30.5277 -0.2 - vertex 1.13903 29.8907 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.68937 29.7129 -0.2 - vertex 1.13903 29.8907 -0.2 - vertex 1.07949 29.2543 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.78021 29.4348 -0.2 - vertex 1.07949 29.2543 -0.2 - vertex 1.0601 28.6106 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.91157 29.1502 -0.2 - vertex 1.0601 28.6106 -0.2 - vertex 1.04514 28.0688 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.05276 27.3884 -0.2 - vertex 0.908598 27.1645 -0.2 - vertex 0.870515 27.1101 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.1242 19.0144 -0.2 - vertex 1.7147 12.9716 -0.2 - vertex 1.85843 12.7398 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.07308 26.3793 -0.2 - vertex 0.870515 27.1101 -0.2 - vertex 0.816408 27.0884 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.1242 19.0144 -0.2 - vertex 1.51175 13.1874 -0.2 - vertex 1.7147 12.9716 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.1242 19.0144 -0.2 - vertex 1.25015 13.3869 -0.2 - vertex 1.51175 13.1874 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.1242 19.0144 -0.2 - vertex 0.930489 13.5702 -0.2 - vertex 1.25015 13.3869 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.15267 19.0966 -0.2 - vertex 0.734953 27.0776 -0.2 - vertex 7.1242 19.0144 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.371032 14.021 -0.2 - vertex 7.1242 19.0144 -0.2 - vertex 0.734953 27.0776 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.1242 19.0144 -0.2 - vertex 0.55335 13.737 -0.2 - vertex 0.930489 13.5702 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.917111 14.138 -0.2 - vertex 0.734953 27.0776 -0.2 - vertex 0.505992 27.0868 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.51834 14.2381 -0.2 - vertex 0.505992 27.0868 -0.2 - vertex 0.215611 27.1342 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.1242 19.0144 -0.2 - vertex 0.119316 13.8873 -0.2 - vertex 0.55335 13.737 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.17413 14.3212 -0.2 - vertex 0.215611 27.1342 -0.2 - vertex -0.104203 27.2162 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.1242 19.0144 -0.2 - vertex -0.371032 14.021 -0.2 - vertex 0.119316 13.8873 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.8839 14.3873 -0.2 - vertex -0.104203 27.2162 -0.2 - vertex -0.438314 27.347 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -6.54439 27.3597 -0.2 - vertex -0.438314 27.347 -0.2 - vertex -0.7749 27.5359 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.734953 27.0776 -0.2 - vertex -0.917111 14.138 -0.2 - vertex -0.371032 14.021 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.54439 27.3597 -0.2 - vertex -0.7749 27.5359 -0.2 - vertex -1.11256 27.7809 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.44763 27.4571 -0.2 - vertex -1.11256 27.7809 -0.2 - vertex -1.44988 28.0795 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.505992 27.0868 -0.2 - vertex -1.51834 14.2381 -0.2 - vertex -0.917111 14.138 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.44763 27.4571 -0.2 - vertex -1.44988 28.0795 -0.2 - vertex -1.78547 28.4297 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.37156 27.6173 -0.2 - vertex -1.78547 28.4297 -0.2 - vertex -2.11792 28.8291 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.215611 27.1342 -0.2 - vertex -2.17413 14.3212 -0.2 - vertex -1.51834 14.2381 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.31368 27.8729 -0.2 - vertex -2.11792 28.8291 -0.2 - vertex -2.44583 29.2754 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.27149 28.2565 -0.2 - vertex -2.44583 29.2754 -0.2 - vertex -2.7678 29.7664 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.11256 27.7809 -0.2 - vertex -6.44763 27.4571 -0.2 - vertex -6.54439 27.3597 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.24249 28.8007 -0.2 - vertex -2.7678 29.7664 -0.2 - vertex -3.08241 30.2998 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.22417 29.538 -0.2 - vertex -3.08241 30.2998 -0.2 - vertex -3.38828 30.8734 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.438314 27.347 -0.2 - vertex -6.54439 27.3597 -0.2 - vertex -3.64708 14.4362 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.22417 29.538 -0.2 - vertex -3.38828 30.8734 -0.2 - vertex -3.68399 31.485 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -6.20957 31.7226 -0.2 - vertex -3.68399 31.485 -0.2 - vertex -3.96814 32.1322 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.20957 31.7226 -0.2 - vertex -3.96814 32.1322 -0.2 - vertex -4.23933 32.8128 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.78547 28.4297 -0.2 - vertex -6.37156 27.6173 -0.2 - vertex -6.44763 27.4571 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -6.19415 33.3563 -0.2 - vertex -4.23933 32.8128 -0.2 - vertex -4.49616 33.5245 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.19415 33.3563 -0.2 - vertex -4.49616 33.5245 -0.2 - vertex -4.73722 34.2652 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -6.15766 34.7516 -0.2 - vertex -4.73722 34.2652 -0.2 - vertex -4.96111 35.0324 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.15766 34.7516 -0.2 - vertex -4.96111 35.0324 -0.2 - vertex -5.11886 35.5644 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -6.10555 35.7605 -0.2 - vertex -5.11886 35.5644 -0.2 - vertex -5.26884 35.9859 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.7678 29.7664 -0.2 - vertex -6.24249 28.8007 -0.2 - vertex -6.27149 28.2565 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -6.07534 36.0738 -0.2 - vertex -5.26884 35.9859 -0.2 - vertex -5.41174 36.2975 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -5.92579 36.4611 -0.2 - vertex -5.41174 36.2975 -0.2 - vertex -5.54821 36.5001 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -5.86569 36.5344 -0.2 - vertex -5.54821 36.5001 -0.2 - vertex -5.61425 36.5608 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -5.80457 36.5812 -0.2 - vertex -5.61425 36.5608 -0.2 - vertex -5.67893 36.5944 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.80457 36.5812 -0.2 - vertex -5.67893 36.5944 -0.2 - vertex -5.74234 36.6012 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.61425 36.5608 -0.2 - vertex -5.80457 36.5812 -0.2 - vertex -5.86569 36.5344 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.54821 36.5001 -0.2 - vertex -5.86569 36.5344 -0.2 - vertex -5.92579 36.4611 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.41174 36.2975 -0.2 - vertex -5.92579 36.4611 -0.2 - vertex -6.04327 36.2349 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.41174 36.2975 -0.2 - vertex -6.04327 36.2349 -0.2 - vertex -6.07534 36.0738 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.26884 35.9859 -0.2 - vertex -6.07534 36.0738 -0.2 - vertex -6.10555 35.7605 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.11886 35.5644 -0.2 - vertex -6.10555 35.7605 -0.2 - vertex -6.15766 34.7516 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.73722 34.2652 -0.2 - vertex -6.15766 34.7516 -0.2 - vertex -6.19415 33.3563 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.23933 32.8128 -0.2 - vertex -6.19415 33.3563 -0.2 - vertex -6.20957 31.7226 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.68399 31.485 -0.2 - vertex -6.20957 31.7226 -0.2 - vertex -6.22417 29.538 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.08241 30.2998 -0.2 - vertex -6.22417 29.538 -0.2 - vertex -6.24249 28.8007 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.44583 29.2754 -0.2 - vertex -6.27149 28.2565 -0.2 - vertex -6.31368 27.8729 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.11792 28.8291 -0.2 - vertex -6.31368 27.8729 -0.2 - vertex -6.37156 27.6173 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.104203 27.2162 -0.2 - vertex -2.8839 14.3873 -0.2 - vertex -2.17413 14.3212 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.438314 27.347 -0.2 - vertex -3.64708 14.4362 -0.2 - vertex -2.8839 14.3873 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -6.65192 27.3056 -0.2 - vertex -3.64708 14.4362 -0.2 - vertex -6.54439 27.3597 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.64708 14.4362 -0.2 - vertex -6.65192 27.3056 -0.2 - vertex -4.46307 14.4678 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -10.904 19.9248 -0.2 - vertex -4.46307 14.4678 -0.2 - vertex -6.65192 27.3056 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.46307 14.4678 -0.2 - vertex -10.904 19.9248 -0.2 - vertex -5.33129 14.482 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.904 19.9248 -0.2 - vertex -6.65192 27.3056 -0.2 - vertex -6.80178 27.2682 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.5349 24.4109 -0.2 - vertex -6.80178 27.2682 -0.2 - vertex -6.99768 27.2475 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.33129 14.482 -0.2 - vertex -10.904 19.9248 -0.2 - vertex -6.25117 14.4787 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.5349 24.4109 -0.2 - vertex -6.99768 27.2475 -0.2 - vertex -7.24334 27.2437 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.5349 24.4109 -0.2 - vertex -7.24334 27.2437 -0.2 - vertex -7.89877 27.2865 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.5394 24.4322 -0.2 - vertex -7.89877 27.2865 -0.2 - vertex -8.79778 27.3973 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.80178 27.2682 -0.2 - vertex -10.5349 24.4109 -0.2 - vertex -10.904 19.9248 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.25117 14.4787 -0.2 - vertex -10.9261 19.832 -0.2 - vertex -7.22211 14.4578 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.5394 24.4322 -0.2 - vertex -8.79778 27.3973 -0.2 - vertex -10.2816 27.5955 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -10.9261 19.832 -0.2 - vertex -6.25117 14.4787 -0.2 - vertex -10.904 19.9248 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.0035 20.0644 -0.2 - vertex -10.5349 24.4109 -0.2 - vertex -10.5711 24.4 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -10.9948 19.7221 -0.2 - vertex -7.22211 14.4578 -0.2 - vertex -10.9261 19.832 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.22211 14.4578 -0.2 - vertex -10.9948 19.7221 -0.2 - vertex -9.25643 14.3812 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.5349 24.4109 -0.2 - vertex -10.9294 20.0018 -0.2 - vertex -10.904 19.9248 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.5349 24.4109 -0.2 - vertex -11.0035 20.0644 -0.2 - vertex -10.9294 20.0018 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.5711 24.4 -0.2 - vertex -11.1271 20.114 -0.2 - vertex -11.0035 20.0644 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.5711 24.4 -0.2 - vertex -11.3013 20.1521 -0.2 - vertex -11.1271 20.114 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.5711 24.4 -0.2 - vertex -11.5271 20.1801 -0.2 - vertex -11.3013 20.1521 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.5711 24.4 -0.2 - vertex -12.1376 20.2112 -0.2 - vertex -11.5271 20.1801 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -14.1612 23.8467 -0.2 - vertex -12.1376 20.2112 -0.2 - vertex -10.5711 24.4 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.1376 20.2112 -0.2 - vertex -14.1612 23.8467 -0.2 - vertex -12.9665 20.2187 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.9665 20.2187 -0.2 - vertex -14.1612 23.8467 -0.2 - vertex -13.9037 20.2008 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.1612 23.8467 -0.2 - vertex -14.8461 20.153 -0.2 - vertex -13.9037 20.2008 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.0412 23.3999 -0.2 - vertex -14.8461 20.153 -0.2 - vertex -14.1612 23.8467 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.8461 20.153 -0.2 - vertex -17.0412 23.3999 -0.2 - vertex -15.684 20.0825 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.684 20.0825 -0.2 - vertex -17.0412 23.3999 -0.2 - vertex -16.3079 19.9967 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.0412 23.3999 -0.2 - vertex -17.2235 19.8332 -0.2 - vertex -16.3079 19.9967 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -19.3158 23.0662 -0.2 - vertex -17.2235 19.8332 -0.2 - vertex -17.0412 23.3999 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.2235 19.8332 -0.2 - vertex -19.3158 23.0662 -0.2 - vertex -18.1791 19.6811 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -19.3158 23.0662 -0.2 - vertex -20.1671 19.4139 -0.2 - vertex -18.1791 19.6811 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.7318 22.8633 -0.2 - vertex -20.1671 19.4139 -0.2 - vertex -19.3158 23.0662 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -21.5474 22.7309 -0.2 - vertex -20.1671 19.4139 -0.2 - vertex -20.7318 22.8633 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.1849 19.2007 -0.2 - vertex -21.5474 22.7309 -0.2 - vertex -21.6404 22.7266 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.1849 19.2007 -0.2 - vertex -21.6404 22.7266 -0.2 - vertex -21.755 22.7463 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.1849 19.2007 -0.2 - vertex -21.755 22.7463 -0.2 - vertex -22.0315 22.8497 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5474 22.7309 -0.2 - vertex -22.1849 19.2007 -0.2 - vertex -20.1671 19.4139 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.3422 23.0246 -0.2 - vertex -22.1849 19.2007 -0.2 - vertex -22.0315 22.8497 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.1455 19.0472 -0.2 - vertex -22.3422 23.0246 -0.2 - vertex -22.6524 23.2546 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.1455 19.0472 -0.2 - vertex -22.6524 23.2546 -0.2 - vertex -23.3692 23.8604 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.3422 23.0246 -0.2 - vertex -24.1455 19.0472 -0.2 - vertex -22.1849 19.2007 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.10332 38.557 -0.2 - vertex 5.26494 38.4452 -0.2 - vertex 5.23504 38.5484 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.26494 38.4452 -0.2 - vertex 5.01738 38.4749 -0.2 - vertex 5.25596 38.2865 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.10332 38.557 -0.2 - vertex 5.23504 38.5484 -0.2 - vertex 5.20457 38.5758 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.10332 38.557 -0.2 - vertex 5.20457 38.5758 -0.2 - vertex 5.16325 38.5852 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.26494 38.4452 -0.2 - vertex 5.10332 38.557 -0.2 - vertex 5.01738 38.4749 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.25596 38.2865 -0.2 - vertex 5.01738 38.4749 -0.2 - vertex 5.21112 38.083 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.77727 38.1658 -0.2 - vertex 5.21112 38.083 -0.2 - vertex 5.01738 38.4749 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.21112 38.083 -0.2 - vertex 4.77727 38.1658 -0.2 - vertex 5.13345 37.8458 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.13345 37.8458 -0.2 - vertex 4.77727 38.1658 -0.2 - vertex 5.02596 37.5856 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.46246 37.6912 -0.2 - vertex 5.02596 37.5856 -0.2 - vertex 4.77727 38.1658 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.02596 37.5856 -0.2 - vertex 4.46246 37.6912 -0.2 - vertex 4.89167 37.3134 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.89167 37.3134 -0.2 - vertex 4.46246 37.6912 -0.2 - vertex 4.73361 37.0399 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.09252 37.0842 -0.2 - vertex 4.73361 37.0399 -0.2 - vertex 4.46246 37.6912 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.73361 37.0399 -0.2 - vertex 4.09252 37.0842 -0.2 - vertex 4.62814 36.8484 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.62814 36.8484 -0.2 - vertex 4.09252 37.0842 -0.2 - vertex 4.52293 36.6141 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.68699 36.3778 -0.2 - vertex 4.52293 36.6141 -0.2 - vertex 4.09252 37.0842 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.52293 36.6141 -0.2 - vertex 3.68699 36.3778 -0.2 - vertex 4.31688 36.0346 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.26543 35.6052 -0.2 - vertex 4.31688 36.0346 -0.2 - vertex 3.68699 36.3778 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.31688 36.0346 -0.2 - vertex 3.26543 35.6052 -0.2 - vertex 4.1227 35.3375 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.1227 35.3375 -0.2 - vertex 3.26543 35.6052 -0.2 - vertex 3.94762 34.5584 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 2.84738 34.7996 -0.2 - vertex 3.94762 34.5584 -0.2 - vertex 3.26543 35.6052 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.94762 34.5584 -0.2 - vertex 2.84738 34.7996 -0.2 - vertex 3.79886 33.7332 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 2.4524 33.9939 -0.2 - vertex 3.79886 33.7332 -0.2 - vertex 2.84738 34.7996 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.79886 33.7332 -0.2 - vertex 2.4524 33.9939 -0.2 - vertex 3.68366 32.8976 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 2.10958 33.2371 -0.2 - vertex 3.68366 32.8976 -0.2 - vertex 2.4524 33.9939 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.68366 32.8976 -0.2 - vertex 2.10958 33.2371 -0.2 - vertex 3.60924 32.0876 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.81903 32.5199 -0.2 - vertex 3.60924 32.0876 -0.2 - vertex 2.10958 33.2371 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.27855 5.76024 -0.2 - vertex 1.91748 12.4352 -0.2 - vertex 4.285 6.1855 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.57871 31.8344 -0.2 - vertex 3.60924 32.0876 -0.2 - vertex 1.81903 32.5199 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.88346 12.344 -0.2 - vertex 4.285 6.1855 -0.2 - vertex 1.91748 12.4352 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.285 6.1855 -0.2 - vertex 1.88346 12.344 -0.2 - vertex 3.31149 6.57517 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.81906 12.2515 -0.2 - vertex 3.31149 6.57517 -0.2 - vertex 1.88346 12.344 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.72214 12.1537 -0.2 - vertex 3.31149 6.57517 -0.2 - vertex 1.81906 12.2515 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.31149 6.57517 -0.2 - vertex 1.72214 12.1537 -0.2 - vertex 2.42084 6.9015 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.42228 11.926 -0.2 - vertex 2.42084 6.9015 -0.2 - vertex 1.72214 12.1537 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.42084 6.9015 -0.2 - vertex 1.42228 11.926 -0.2 - vertex 1.67583 7.13679 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 0.986004 11.656 -0.2 - vertex 1.67583 7.13679 -0.2 - vertex 1.42228 11.926 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.67583 7.13679 -0.2 - vertex 0.986004 11.656 -0.2 - vertex 1.30727 7.25861 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.986004 11.656 -0.2 - vertex 0.855811 7.43981 -0.2 - vertex 1.30727 7.25861 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 0.546849 11.4454 -0.2 - vertex 0.855811 7.43981 -0.2 - vertex 0.986004 11.656 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.23691 7.94665 -0.2 - vertex 0.546849 11.4454 -0.2 - vertex 0.0942225 11.293 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.546849 11.4454 -0.2 - vertex -0.23691 7.94665 -0.2 - vertex 0.855811 7.43981 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -0.382462 11.1972 -0.2 - vertex -0.23691 7.94665 -0.2 - vertex 0.0942225 11.293 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.48458 8.58988 -0.2 - vertex -0.382462 11.1972 -0.2 - vertex -0.893798 11.1566 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.48458 8.58988 -0.2 - vertex -0.893798 11.1566 -0.2 - vertex -1.45038 11.1697 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.382462 11.1972 -0.2 - vertex -1.48458 8.58988 -0.2 - vertex -0.23691 7.94665 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.76946 9.30203 -0.2 - vertex -1.45038 11.1697 -0.2 - vertex -2.06279 11.235 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.76946 9.30203 -0.2 - vertex -2.06279 11.235 -0.2 - vertex -2.74162 11.3511 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.45038 11.1697 -0.2 - vertex -2.76946 9.30203 -0.2 - vertex -1.48458 8.58988 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.97378 10.0157 -0.2 - vertex -2.74162 11.3511 -0.2 - vertex -3.43924 11.4799 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.74162 11.3511 -0.2 - vertex -3.97378 10.0157 -0.2 - vertex -2.76946 9.30203 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.06319 11.5774 -0.2 - vertex -3.97378 10.0157 -0.2 - vertex -3.43924 11.4799 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.9798 10.6633 -0.2 - vertex -4.06319 11.5774 -0.2 - vertex -4.60751 11.6434 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.06319 11.5774 -0.2 - vertex -4.9798 10.6633 -0.2 - vertex -3.97378 10.0157 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.06624 11.6776 -0.2 - vertex -4.9798 10.6633 -0.2 - vertex -4.60751 11.6434 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.06624 11.6776 -0.2 - vertex -5.37165 10.9414 -0.2 - vertex -4.9798 10.6633 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.4334 11.6797 -0.2 - vertex -5.37165 10.9414 -0.2 - vertex -5.06624 11.6776 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.4334 11.6797 -0.2 - vertex -5.66976 11.1776 -0.2 - vertex -5.37165 10.9414 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -5.70304 11.6495 -0.2 - vertex -5.66976 11.1776 -0.2 - vertex -5.4334 11.6797 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.85942 11.3636 -0.2 - vertex -5.70304 11.6495 -0.2 - vertex -5.79943 11.6221 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.70304 11.6495 -0.2 - vertex -5.85942 11.3636 -0.2 - vertex -5.66976 11.1776 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -5.8692 11.5867 -0.2 - vertex -5.85942 11.3636 -0.2 - vertex -5.79943 11.6221 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.8692 11.5867 -0.2 - vertex -5.90899 11.4352 -0.2 - vertex -5.85942 11.3636 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -5.91161 11.5429 -0.2 - vertex -5.90899 11.4352 -0.2 - vertex -5.8692 11.5867 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.90899 11.4352 -0.2 - vertex -5.91161 11.5429 -0.2 - vertex -5.92592 11.491 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.51759 -4.36865 -0.2 - vertex 8.0755 -3.36119 -0.2 - vertex 7.75455 -3.09522 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.2523 -4.01644 -0.2 - vertex 7.75455 -3.09522 -0.2 - vertex 7.10115 -2.48513 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.70978 -3.81721 -0.2 - vertex 7.04277 -4.97268 -0.2 - vertex 7.809 -5.75259 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.0755 -3.36119 -0.2 - vertex 6.78219 -4.68956 -0.2 - vertex 7.04277 -4.97268 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.0755 -3.36119 -0.2 - vertex 6.51759 -4.36865 -0.2 - vertex 6.78219 -4.68956 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.48552 -2.8367 -0.2 - vertex 7.10115 -2.48513 -0.2 - vertex 6.42718 -1.76788 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.75455 -3.09522 -0.2 - vertex 6.2523 -4.01644 -0.2 - vertex 6.51759 -4.36865 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.10115 -2.48513 -0.2 - vertex 5.98964 -3.63939 -0.2 - vertex 6.2523 -4.01644 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.03179 -2.01239 -0.2 - vertex 6.42718 -1.76788 -0.2 - vertex 5.79491 -1.04264 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.10115 -2.48513 -0.2 - vertex 5.48552 -2.8367 -0.2 - vertex 5.98964 -3.63939 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.65505 -1.21825 -0.2 - vertex 5.79491 -1.04264 -0.2 - vertex 5.24358 -0.384283 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.42718 -1.76788 -0.2 - vertex 5.03179 -2.01239 -0.2 - vertex 5.48552 -2.8367 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.38188 -0.506111 -0.2 - vertex 5.24358 -0.384283 -0.2 - vertex 4.83246 0.134689 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.79491 -1.04264 -0.2 - vertex 4.65505 -1.21825 -0.2 - vertex 5.03179 -2.01239 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.23886 0.0722368 -0.2 - vertex 4.83246 0.134689 -0.2 - vertex 4.62083 0.441773 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.24358 -0.384283 -0.2 - vertex 4.50386 -0.848697 -0.2 - vertex 4.65505 -1.21825 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.25257 0.464986 -0.2 - vertex 4.62083 0.441773 -0.2 - vertex 4.49221 0.674515 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.33872 0.684191 -0.2 - vertex 4.49221 0.674515 -0.2 - vertex 4.44662 0.733548 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.3737 0.738144 -0.2 - vertex 4.44662 0.733548 -0.2 - vertex 4.40839 0.754677 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.24358 -0.384283 -0.2 - vertex 4.38188 -0.506111 -0.2 - vertex 4.50386 -0.848697 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.44662 0.733548 -0.2 - vertex 4.3737 0.738144 -0.2 - vertex 4.33872 0.684191 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.49221 0.674515 -0.2 - vertex 4.33872 0.684191 -0.2 - vertex 4.25257 0.464986 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.83246 0.134689 -0.2 - vertex 4.29244 -0.196974 -0.2 - vertex 4.38188 -0.506111 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.62083 0.441773 -0.2 - vertex 4.25257 0.464986 -0.2 - vertex 4.22446 0.295049 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.83246 0.134689 -0.2 - vertex 4.23886 0.0722368 -0.2 - vertex 4.29244 -0.196974 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.62083 0.441773 -0.2 - vertex 4.22446 0.295049 -0.2 - vertex 4.23886 0.0722368 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0092 9.15168 -0.2 - vertex 8.87708 15.8492 -0.2 - vertex 14.9543 8.95485 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2183 5.95043 -0.2 - vertex 9.61741 3.25086 -0.2 - vertex 10.5842 2.40247 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.1095 6.5543 -0.2 - vertex 9.29624 3.50894 -0.2 - vertex 9.61741 3.25086 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.07462 4.9138 -0.2 - vertex 14.9543 8.95485 -0.2 - vertex 8.87708 15.8492 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0249 7.13954 -0.2 - vertex 9.14614 3.60373 -0.2 - vertex 9.29624 3.50894 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9668 7.69881 -0.2 - vertex 8.19732 4.25764 -0.2 - vertex 8.81858 3.79581 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9543 8.95485 -0.2 - vertex 7.07462 4.9138 -0.2 - vertex 14.9262 8.72903 -0.2 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 7.75154 4.54807 -0.2 - vertex 14.9262 8.72903 -0.2 - vertex 7.07462 4.9138 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.07462 4.9138 -0.2 - vertex 8.87708 15.8492 -0.2 - vertex 8.83337 15.875 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.14614 3.60373 -0.2 - vertex 8.81858 3.79581 -0.2 - vertex 9.03464 3.65533 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.07462 4.9138 -0.2 - vertex 8.83337 15.875 -0.2 - vertex 8.76553 15.9481 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.07462 4.9138 -0.2 - vertex 8.76553 15.9481 -0.2 - vertex 8.57086 16.213 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9668 7.69881 -0.2 - vertex 8.81858 3.79581 -0.2 - vertex 9.14614 3.60373 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.07462 4.9138 -0.2 - vertex 8.57086 16.213 -0.2 - vertex 8.03973 17.0592 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9212 8.45633 -0.2 - vertex 8.00725 4.39171 -0.2 - vertex 8.19732 4.25764 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9212 8.45633 -0.2 - vertex 7.75154 4.54807 -0.2 - vertex 8.00725 4.39171 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.07462 4.9138 -0.2 - vertex 8.03973 17.0592 -0.2 - vertex 7.49889 18.0241 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.07462 4.9138 -0.2 - vertex 7.49889 18.0241 -0.2 - vertex 7.29207 18.4374 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.07462 4.9138 -0.2 - vertex 7.29207 18.4374 -0.2 - vertex 7.16351 18.7442 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.07462 4.9138 -0.2 - vertex 7.16351 18.7442 -0.2 - vertex 7.1273 18.8927 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9262 8.72903 -0.2 - vertex 7.75154 4.54807 -0.2 - vertex 14.9212 8.45633 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.07462 4.9138 -0.2 - vertex 7.1273 18.8927 -0.2 - vertex 7.1242 19.0144 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.1091 19.5935 -0.2 - vertex -9.25643 14.3812 -0.2 - vertex -10.9948 19.7221 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.4702 19.2748 -0.2 - vertex -9.25643 14.3812 -0.2 - vertex -11.1091 19.5935 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.25643 14.3812 -0.2 - vertex -11.4702 19.2748 -0.2 - vertex -9.98725 14.3241 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -12.0016 18.8648 -0.2 - vertex -9.98725 14.3241 -0.2 - vertex -11.4702 19.2748 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.98725 14.3241 -0.2 - vertex -12.0016 18.8648 -0.2 - vertex -10.6249 14.238 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.6249 14.238 -0.2 - vertex -12.0016 18.8648 -0.2 - vertex -11.2428 14.1101 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.8225 17.5152 -0.2 - vertex -11.2428 14.1101 -0.2 - vertex -12.0016 18.8648 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.2428 14.1101 -0.2 - vertex -13.8225 17.5152 -0.2 - vertex -11.9142 13.9281 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.9142 13.9281 -0.2 - vertex -13.8225 17.5152 -0.2 - vertex -12.7125 13.6795 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -14.4648 17.0612 -0.2 - vertex -12.7125 13.6795 -0.2 - vertex -13.8225 17.5152 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -14.9972 16.7116 -0.2 - vertex -12.7125 13.6795 -0.2 - vertex -14.4648 17.0612 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.7125 13.6795 -0.2 - vertex -14.9972 16.7116 -0.2 - vertex -13.7109 13.3517 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -15.4716 16.4339 -0.2 - vertex -13.7109 13.3517 -0.2 - vertex -14.9972 16.7116 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.7109 13.3517 -0.2 - vertex -15.4716 16.4339 -0.2 - vertex -14.949 12.9624 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -15.9397 16.1961 -0.2 - vertex -14.949 12.9624 -0.2 - vertex -15.4716 16.4339 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.4531 15.9659 -0.2 - vertex -14.949 12.9624 -0.2 - vertex -15.9397 16.1961 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.949 12.9624 -0.2 - vertex -16.4531 15.9659 -0.2 - vertex -16.0795 12.6436 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.0637 15.711 -0.2 - vertex -16.0795 12.6436 -0.2 - vertex -16.4531 15.9659 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.0795 12.6436 -0.2 - vertex -17.0637 15.711 -0.2 - vertex -16.9775 12.4282 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -18.4061 15.1884 -0.2 - vertex -16.9775 12.4282 -0.2 - vertex -17.0637 15.711 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9775 12.4282 -0.2 - vertex -18.4061 15.1884 -0.2 - vertex -17.3003 12.3696 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.3003 12.3696 -0.2 - vertex -18.4061 15.1884 -0.2 - vertex -17.5181 12.3491 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.5181 12.3491 -0.2 - vertex -18.4061 15.1884 -0.2 - vertex -17.9556 12.3221 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.4061 15.1884 -0.2 - vertex -18.5728 12.2484 -0.2 - vertex -17.9556 12.3221 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -19.7213 14.7364 -0.2 - vertex -18.5728 12.2484 -0.2 - vertex -18.4061 15.1884 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5728 12.2484 -0.2 - vertex -19.7213 14.7364 -0.2 - vertex -19.2876 12.1394 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -19.7213 14.7364 -0.2 - vertex -20.0181 12.0063 -0.2 - vertex -19.2876 12.1394 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -21.0167 14.3533 -0.2 - vertex -20.0181 12.0063 -0.2 - vertex -19.7213 14.7364 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.0181 12.0063 -0.2 - vertex -21.0167 14.3533 -0.2 - vertex -20.4772 11.9313 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.0167 14.3533 -0.2 - vertex -21.0446 11.8651 -0.2 - vertex -20.4772 11.9313 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -22.3001 14.0374 -0.2 - vertex -21.0446 11.8651 -0.2 - vertex -21.0167 14.3533 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.3001 14.0374 -0.2 - vertex -22.4311 11.7593 -0.2 - vertex -21.0446 11.8651 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -23.579 13.787 -0.2 - vertex -22.4311 11.7593 -0.2 - vertex -22.3001 14.0374 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.579 13.787 -0.2 - vertex -24.031 11.6901 -0.2 - vertex -22.4311 11.7593 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.8613 13.6003 -0.2 - vertex -24.031 11.6901 -0.2 - vertex -23.579 13.787 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.8613 13.6003 -0.2 - vertex -25.698 11.6586 -0.2 - vertex -24.031 11.6901 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -26.1544 13.4758 -0.2 - vertex -25.698 11.6586 -0.2 - vertex -24.8613 13.6003 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.1544 13.4758 -0.2 - vertex -27.2855 11.6658 -0.2 - vertex -25.698 11.6586 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.4661 13.4117 -0.2 - vertex -27.2855 11.6658 -0.2 - vertex -26.1544 13.4758 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.4661 13.4117 -0.2 - vertex -28.647 11.7129 -0.2 - vertex -27.2855 11.6658 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -29.0548 13.353 -0.2 - vertex -28.647 11.7129 -0.2 - vertex -27.4661 13.4117 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.0548 13.353 -0.2 - vertex -29.1973 11.7518 -0.2 - vertex -28.647 11.7129 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -29.5683 13.309 -0.2 - vertex -29.1973 11.7518 -0.2 - vertex -29.0548 13.353 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.5683 13.309 -0.2 - vertex -29.6362 11.801 -0.2 - vertex -29.1973 11.7518 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3556 12.4664 -0.2 - vertex -29.5683 13.309 -0.2 - vertex -29.9294 13.2465 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.5683 13.309 -0.2 - vertex -30.2975 12.2549 -0.2 - vertex -29.6362 11.801 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.6362 11.801 -0.2 - vertex -30.2975 12.2549 -0.2 - vertex -29.9453 11.8607 -0.2 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -30.2115 12.0683 -0.2 - vertex -29.9453 11.8607 -0.2 - vertex -30.2975 12.2549 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.377 12.6783 -0.2 - vertex -29.9294 13.2465 -0.2 - vertex -30.1646 13.1588 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9453 11.8607 -0.2 - vertex -30.2115 12.0683 -0.2 - vertex -30.0456 11.8946 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3621 12.8813 -0.2 - vertex -30.1646 13.1588 -0.2 - vertex -30.2432 13.1034 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.0456 11.8946 -0.2 - vertex -30.2115 12.0683 -0.2 - vertex -30.1065 11.9311 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3387 12.9655 -0.2 - vertex -30.2432 13.1034 -0.2 - vertex -30.3001 13.0393 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.2432 13.1034 -0.2 - vertex -30.3387 12.9655 -0.2 - vertex -30.3621 12.8813 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.5683 13.309 -0.2 - vertex -30.3556 12.4664 -0.2 - vertex -30.2975 12.2549 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.1646 13.1588 -0.2 - vertex -30.3621 12.8813 -0.2 - vertex -30.377 12.6783 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9294 13.2465 -0.2 - vertex -30.377 12.6783 -0.2 - vertex -30.3556 12.4664 -0.2 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -26.053 23.8437 -0.2 - vertex -24.1455 19.0472 -0.2 - vertex -24.6523 24.0122 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.1455 19.0472 -0.2 - vertex -26.053 23.8437 -0.2 - vertex -25.9619 18.9589 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.3394 21.9725 -0.2 - vertex -26.053 23.8437 -0.2 - vertex -26.7338 23.7794 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.053 23.8437 -0.2 - vertex -28.3394 21.9725 -0.2 - vertex -25.9619 18.9589 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.3394 21.9725 -0.2 - vertex -26.7338 23.7794 -0.2 - vertex -27.3569 23.7586 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.9619 18.9589 -0.2 - vertex -28.3394 21.9725 -0.2 - vertex -26.7887 18.9409 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.3394 21.9725 -0.2 - vertex -27.3569 23.7586 -0.2 - vertex -27.9279 23.7822 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.7887 18.9409 -0.2 - vertex -28.3394 21.9725 -0.2 - vertex -27.5469 18.9414 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.5469 18.9414 -0.2 - vertex -28.3394 21.9725 -0.2 - vertex -28.2256 18.9609 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.0186 22.3563 -0.2 - vertex -27.9279 23.7822 -0.2 - vertex -28.4524 23.8513 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.4321 22.5993 -0.2 - vertex -28.4524 23.8513 -0.2 - vertex -28.9359 23.9669 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.9279 23.7822 -0.2 - vertex -29.0186 22.3563 -0.2 - vertex -28.3394 21.9725 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.7937 22.8325 -0.2 - vertex -28.9359 23.9669 -0.2 - vertex -29.384 24.13 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.4524 23.8513 -0.2 - vertex -29.4321 22.5993 -0.2 - vertex -29.0186 22.3563 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.9359 23.9669 -0.2 - vertex -29.7937 22.8325 -0.2 - vertex -29.4321 22.5993 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3761 23.2826 -0.2 - vertex -29.384 24.13 -0.2 - vertex -29.8023 24.3416 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.384 24.13 -0.2 - vertex -30.1071 23.0591 -0.2 - vertex -29.7937 22.8325 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.7957 23.7338 -0.2 - vertex -29.8023 24.3416 -0.2 - vertex -30.1964 24.6027 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.384 24.13 -0.2 - vertex -30.3761 23.2826 -0.2 - vertex -30.1071 23.0591 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.0826 24.213 -0.2 - vertex -30.1964 24.6027 -0.2 - vertex -30.5308 24.8328 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.8023 24.3416 -0.2 - vertex -30.6044 23.5064 -0.2 - vertex -30.3761 23.2826 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.8023 24.3416 -0.2 - vertex -30.7957 23.7338 -0.2 - vertex -30.6044 23.5064 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2103 24.5339 -0.2 - vertex -30.5308 24.8328 -0.2 - vertex -30.8055 24.9813 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.1964 24.6027 -0.2 - vertex -30.9539 23.9682 -0.2 - vertex -30.7957 23.7338 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2656 24.779 -0.2 - vertex -30.8055 24.9813 -0.2 - vertex -31.0185 25.0493 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.1964 24.6027 -0.2 - vertex -31.0826 24.213 -0.2 - vertex -30.9539 23.9682 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2668 24.8727 -0.2 - vertex -31.0185 25.0493 -0.2 - vertex -31.1012 25.0533 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2507 24.9472 -0.2 - vertex -31.1012 25.0533 -0.2 - vertex -31.1676 25.0376 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.5308 24.8328 -0.2 - vertex -31.2103 24.5339 -0.2 - vertex -31.0826 24.213 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2507 24.9472 -0.2 - vertex -31.1676 25.0376 -0.2 - vertex -31.2175 25.0021 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.1012 25.0533 -0.2 - vertex -31.2507 24.9472 -0.2 - vertex -31.2668 24.8727 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.8055 24.9813 -0.2 - vertex -31.2656 24.779 -0.2 - vertex -31.2103 24.5339 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.0185 25.0493 -0.2 - vertex -31.2668 24.8727 -0.2 - vertex -31.2656 24.779 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.3394 21.9725 -0.2 - vertex -28.8137 19.0002 -0.2 - vertex -28.2256 18.9609 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.3394 21.9725 -0.2 - vertex -29.3006 19.0599 -0.2 - vertex -28.8137 19.0002 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.3394 21.9725 -0.2 - vertex -29.6752 19.1409 -0.2 - vertex -29.3006 19.0599 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.0859 22.0525 -0.2 - vertex -29.6752 19.1409 -0.2 - vertex -28.3394 21.9725 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.5811 19.4165 -0.2 - vertex -30.0859 22.0525 -0.2 - vertex -30.5728 22.0884 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.0859 22.0525 -0.2 - vertex -30.5811 19.4165 -0.2 - vertex -29.6752 19.1409 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.4466 19.7034 -0.2 - vertex -30.5728 22.0884 -0.2 - vertex -31.074 22.1513 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.5728 22.0884 -0.2 - vertex -31.4466 19.7034 -0.2 - vertex -30.5811 19.4165 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.271 20.0012 -0.2 - vertex -31.074 22.1513 -0.2 - vertex -31.5861 22.2399 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.271 20.0012 -0.2 - vertex -31.5861 22.2399 -0.2 - vertex -32.1061 22.3529 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.074 22.1513 -0.2 - vertex -32.271 20.0012 -0.2 - vertex -31.4466 19.7034 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.0533 20.3093 -0.2 - vertex -32.1061 22.3529 -0.2 - vertex -32.6306 22.489 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.1061 22.3529 -0.2 - vertex -33.0533 20.3093 -0.2 - vertex -32.271 20.0012 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.7926 20.6272 -0.2 - vertex -32.6306 22.489 -0.2 - vertex -33.1564 22.6469 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.4881 20.9542 -0.2 - vertex -33.1564 22.6469 -0.2 - vertex -33.6803 22.8253 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.6306 22.489 -0.2 - vertex -33.7926 20.6272 -0.2 - vertex -33.0533 20.3093 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.4881 20.9542 -0.2 - vertex -33.6803 22.8253 -0.2 - vertex -34.199 23.023 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.1564 22.6469 -0.2 - vertex -34.4881 20.9542 -0.2 - vertex -33.7926 20.6272 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.1386 21.2899 -0.2 - vertex -34.199 23.023 -0.2 - vertex -34.7094 23.2385 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.199 23.023 -0.2 - vertex -35.1386 21.2899 -0.2 - vertex -34.4881 20.9542 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.7435 21.6336 -0.2 - vertex -34.7094 23.2385 -0.2 - vertex -35.2082 23.4707 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.3017 21.985 -0.2 - vertex -35.2082 23.4707 -0.2 - vertex -35.6921 23.7183 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.7094 23.2385 -0.2 - vertex -35.7435 21.6336 -0.2 - vertex -35.1386 21.2899 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.8124 22.3433 -0.2 - vertex -35.6921 23.7183 -0.2 - vertex -36.1579 23.9798 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.2082 23.4707 -0.2 - vertex -36.3017 21.985 -0.2 - vertex -35.7435 21.6336 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.2746 22.7082 -0.2 - vertex -36.1579 23.9798 -0.2 - vertex -36.6025 24.2541 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.6921 23.7183 -0.2 - vertex -36.8124 22.3433 -0.2 - vertex -36.3017 21.985 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.6874 23.0789 -0.2 - vertex -36.6025 24.2541 -0.2 - vertex -37.0225 24.5398 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.1579 23.9798 -0.2 - vertex -37.2746 22.7082 -0.2 - vertex -36.8124 22.3433 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.3611 23.836 -0.2 - vertex -37.0225 24.5398 -0.2 - vertex -37.4147 24.8357 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.6025 24.2541 -0.2 - vertex -37.6874 23.0789 -0.2 - vertex -37.2746 22.7082 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.6203 24.2212 -0.2 - vertex -37.4147 24.8357 -0.2 - vertex -37.776 25.1404 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.0225 24.5398 -0.2 - vertex -38.0499 23.455 -0.2 - vertex -37.6874 23.0789 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.8265 24.6102 -0.2 - vertex -37.776 25.1404 -0.2 - vertex -38.2113 25.5018 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.0225 24.5398 -0.2 - vertex -38.3611 23.836 -0.2 - vertex -38.0499 23.455 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.0227 25.0923 -0.2 - vertex -38.2113 25.5018 -0.2 - vertex -38.5664 25.7376 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.4147 24.8357 -0.2 - vertex -38.6203 24.2212 -0.2 - vertex -38.3611 23.836 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.1186 25.4589 -0.2 - vertex -38.5664 25.7376 -0.2 - vertex -38.7129 25.8089 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.776 25.1404 -0.2 - vertex -38.8265 24.6102 -0.2 - vertex -38.6203 24.2212 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.13 25.5984 -0.2 - vertex -38.7129 25.8089 -0.2 - vertex -38.8381 25.8495 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.1175 25.7085 -0.2 - vertex -38.8381 25.8495 -0.2 - vertex -38.9416 25.8595 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.2113 25.5018 -0.2 - vertex -39.0227 25.0923 -0.2 - vertex -38.8265 24.6102 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.0817 25.7888 -0.2 - vertex -38.9416 25.8595 -0.2 - vertex -39.0229 25.8392 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.9416 25.8595 -0.2 - vertex -39.0817 25.7888 -0.2 - vertex -39.1175 25.7085 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.8381 25.8495 -0.2 - vertex -39.1175 25.7085 -0.2 - vertex -39.13 25.5984 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.5664 25.7376 -0.2 - vertex -39.1186 25.4589 -0.2 - vertex -39.0227 25.0923 -0.2 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.7129 25.8089 -0.2 - vertex -39.13 25.5984 -0.2 - vertex -39.1186 25.4589 -0.2 - endloop - endfacet - facet normal -0.668491 -0.74372 0 - outer loop - vertex 5.20457 38.5758 -0.2 - vertex 5.23504 38.5484 0 - vertex 5.20457 38.5758 0 - endloop - endfacet - facet normal -0.668491 -0.74372 -0 - outer loop - vertex 5.23504 38.5484 0 - vertex 5.20457 38.5758 -0.2 - vertex 5.23504 38.5484 -0.2 - endloop - endfacet - facet normal -0.96052 -0.278211 0 - outer loop - vertex 5.26494 38.4452 -0.2 - vertex 5.23504 38.5484 0 - vertex 5.23504 38.5484 -0.2 - endloop - endfacet - facet normal -0.96052 -0.278211 0 - outer loop - vertex 5.23504 38.5484 0 - vertex 5.26494 38.4452 -0.2 - vertex 5.26494 38.4452 0 - endloop - endfacet - facet normal -0.998404 0.0564745 0 - outer loop - vertex 5.25596 38.2865 -0.2 - vertex 5.26494 38.4452 0 - vertex 5.26494 38.4452 -0.2 - endloop - endfacet - facet normal -0.998404 0.0564745 0 - outer loop - vertex 5.26494 38.4452 0 - vertex 5.25596 38.2865 -0.2 - vertex 5.25596 38.2865 0 - endloop - endfacet - facet normal -0.976561 0.215243 0 - outer loop - vertex 5.21112 38.083 -0.2 - vertex 5.25596 38.2865 0 - vertex 5.25596 38.2865 -0.2 - endloop - endfacet - facet normal -0.976561 0.215243 0 - outer loop - vertex 5.25596 38.2865 0 - vertex 5.21112 38.083 -0.2 - vertex 5.21112 38.083 0 - endloop - endfacet - facet normal -0.950355 0.311168 0 - outer loop - vertex 5.13345 37.8458 -0.2 - vertex 5.21112 38.083 0 - vertex 5.21112 38.083 -0.2 - endloop - endfacet - facet normal -0.950355 0.311168 0 - outer loop - vertex 5.21112 38.083 0 - vertex 5.13345 37.8458 -0.2 - vertex 5.13345 37.8458 0 - endloop - endfacet - facet normal -0.924228 0.381841 0 - outer loop - vertex 5.02596 37.5856 -0.2 - vertex 5.13345 37.8458 0 - vertex 5.13345 37.8458 -0.2 - endloop - endfacet - facet normal -0.924228 0.381841 0 - outer loop - vertex 5.13345 37.8458 0 - vertex 5.02596 37.5856 -0.2 - vertex 5.02596 37.5856 0 - endloop - endfacet - facet normal -0.896839 0.442358 0 - outer loop - vertex 4.89167 37.3134 -0.2 - vertex 5.02596 37.5856 0 - vertex 5.02596 37.5856 -0.2 - endloop - endfacet - facet normal -0.896839 0.442358 0 - outer loop - vertex 5.02596 37.5856 0 - vertex 4.89167 37.3134 -0.2 - vertex 4.89167 37.3134 0 - endloop - endfacet - facet normal -0.865785 0.500416 0 - outer loop - vertex 4.73361 37.0399 -0.2 - vertex 4.89167 37.3134 0 - vertex 4.89167 37.3134 -0.2 - endloop - endfacet - facet normal -0.865785 0.500416 0 - outer loop - vertex 4.89167 37.3134 0 - vertex 4.73361 37.0399 -0.2 - vertex 4.73361 37.0399 0 - endloop - endfacet - facet normal -0.875928 0.482442 0 - outer loop - vertex 4.62814 36.8484 -0.2 - vertex 4.73361 37.0399 0 - vertex 4.73361 37.0399 -0.2 - endloop - endfacet - facet normal -0.875928 0.482442 0 - outer loop - vertex 4.73361 37.0399 0 - vertex 4.62814 36.8484 -0.2 - vertex 4.62814 36.8484 0 - endloop - endfacet - facet normal -0.912281 0.409566 0 - outer loop - vertex 4.52293 36.6141 -0.2 - vertex 4.62814 36.8484 0 - vertex 4.62814 36.8484 -0.2 - endloop - endfacet - facet normal -0.912281 0.409566 0 - outer loop - vertex 4.62814 36.8484 0 - vertex 4.52293 36.6141 -0.2 - vertex 4.52293 36.6141 0 - endloop - endfacet - facet normal -0.942197 0.335061 0 - outer loop - vertex 4.31688 36.0346 -0.2 - vertex 4.52293 36.6141 0 - vertex 4.52293 36.6141 -0.2 - endloop - endfacet - facet normal -0.942197 0.335061 0 - outer loop - vertex 4.52293 36.6141 0 - vertex 4.31688 36.0346 -0.2 - vertex 4.31688 36.0346 0 - endloop - endfacet - facet normal -0.963331 0.268317 0 - outer loop - vertex 4.1227 35.3375 -0.2 - vertex 4.31688 36.0346 0 - vertex 4.31688 36.0346 -0.2 - endloop - endfacet - facet normal -0.963331 0.268317 0 - outer loop - vertex 4.31688 36.0346 0 - vertex 4.1227 35.3375 -0.2 - vertex 4.1227 35.3375 0 - endloop - endfacet - facet normal -0.975667 0.219257 0 - outer loop - vertex 3.94762 34.5584 -0.2 - vertex 4.1227 35.3375 0 - vertex 4.1227 35.3375 -0.2 - endloop - endfacet - facet normal -0.975667 0.219257 0 - outer loop - vertex 4.1227 35.3375 0 - vertex 3.94762 34.5584 -0.2 - vertex 3.94762 34.5584 0 - endloop - endfacet - facet normal -0.984138 0.177404 0 - outer loop - vertex 3.79886 33.7332 -0.2 - vertex 3.94762 34.5584 0 - vertex 3.94762 34.5584 -0.2 - endloop - endfacet - facet normal -0.984138 0.177404 0 - outer loop - vertex 3.94762 34.5584 0 - vertex 3.79886 33.7332 -0.2 - vertex 3.79886 33.7332 0 - endloop - endfacet - facet normal -0.990628 0.136587 0 - outer loop - vertex 3.68366 32.8976 -0.2 - vertex 3.79886 33.7332 0 - vertex 3.79886 33.7332 -0.2 - endloop - endfacet - facet normal -0.990628 0.136587 0 - outer loop - vertex 3.79886 33.7332 0 - vertex 3.68366 32.8976 -0.2 - vertex 3.68366 32.8976 0 - endloop - endfacet - facet normal -0.995806 0.0914898 0 - outer loop - vertex 3.60924 32.0876 -0.2 - vertex 3.68366 32.8976 0 - vertex 3.68366 32.8976 -0.2 - endloop - endfacet - facet normal -0.995806 0.0914898 0 - outer loop - vertex 3.68366 32.8976 0 - vertex 3.60924 32.0876 -0.2 - vertex 3.60924 32.0876 0 - endloop - endfacet - facet normal -0.999378 0.0352546 0 - outer loop - vertex 3.58282 31.3388 -0.2 - vertex 3.60924 32.0876 0 - vertex 3.60924 32.0876 -0.2 - endloop - endfacet - facet normal -0.999378 0.0352546 0 - outer loop - vertex 3.60924 32.0876 0 - vertex 3.58282 31.3388 -0.2 - vertex 3.58282 31.3388 0 - endloop - endfacet - facet normal -0.999852 -0.0171991 0 - outer loop - vertex 3.59957 30.3654 -0.2 - vertex 3.58282 31.3388 0 - vertex 3.58282 31.3388 -0.2 - endloop - endfacet - facet normal -0.999852 -0.0171991 0 - outer loop - vertex 3.58282 31.3388 0 - vertex 3.59957 30.3654 -0.2 - vertex 3.59957 30.3654 0 - endloop - endfacet - facet normal -0.995876 -0.0907198 0 - outer loop - vertex 3.63162 30.0135 -0.2 - vertex 3.59957 30.3654 0 - vertex 3.59957 30.3654 -0.2 - endloop - endfacet - facet normal -0.995876 -0.0907198 0 - outer loop - vertex 3.59957 30.3654 0 - vertex 3.63162 30.0135 -0.2 - vertex 3.63162 30.0135 0 - endloop - endfacet - facet normal -0.982044 -0.188652 0 - outer loop - vertex 3.68937 29.7129 -0.2 - vertex 3.63162 30.0135 0 - vertex 3.63162 30.0135 -0.2 - endloop - endfacet - facet normal -0.982044 -0.188652 0 - outer loop - vertex 3.63162 30.0135 0 - vertex 3.68937 29.7129 -0.2 - vertex 3.68937 29.7129 0 - endloop - endfacet - facet normal -0.950581 -0.310477 0 - outer loop - vertex 3.78021 29.4348 -0.2 - vertex 3.68937 29.7129 0 - vertex 3.68937 29.7129 -0.2 - endloop - endfacet - facet normal -0.950581 -0.310477 0 - outer loop - vertex 3.68937 29.7129 0 - vertex 3.78021 29.4348 -0.2 - vertex 3.78021 29.4348 0 - endloop - endfacet - facet normal -0.907937 -0.419107 0 - outer loop - vertex 3.91157 29.1502 -0.2 - vertex 3.78021 29.4348 0 - vertex 3.78021 29.4348 -0.2 - endloop - endfacet - facet normal -0.907937 -0.419107 0 - outer loop - vertex 3.78021 29.4348 0 - vertex 3.91157 29.1502 -0.2 - vertex 3.91157 29.1502 0 - endloop - endfacet - facet normal -0.872337 -0.488905 0 - outer loop - vertex 4.09087 28.8303 -0.2 - vertex 3.91157 29.1502 0 - vertex 3.91157 29.1502 -0.2 - endloop - endfacet - facet normal -0.872337 -0.488905 0 - outer loop - vertex 3.91157 29.1502 0 - vertex 4.09087 28.8303 -0.2 - vertex 4.09087 28.8303 0 - endloop - endfacet - facet normal -0.853386 -0.52128 0 - outer loop - vertex 4.32553 28.4461 -0.2 - vertex 4.09087 28.8303 0 - vertex 4.09087 28.8303 -0.2 - endloop - endfacet - facet normal -0.853386 -0.52128 0 - outer loop - vertex 4.09087 28.8303 0 - vertex 4.32553 28.4461 -0.2 - vertex 4.32553 28.4461 0 - endloop - endfacet - facet normal -0.837817 -0.545951 0 - outer loop - vertex 4.69711 27.8759 -0.2 - vertex 4.32553 28.4461 0 - vertex 4.32553 28.4461 -0.2 - endloop - endfacet - facet normal -0.837817 -0.545951 0 - outer loop - vertex 4.32553 28.4461 0 - vertex 4.69711 27.8759 -0.2 - vertex 4.69711 27.8759 0 - endloop - endfacet - facet normal -0.807831 -0.589415 0 - outer loop - vertex 5.05276 27.3884 -0.2 - vertex 4.69711 27.8759 0 - vertex 4.69711 27.8759 -0.2 - endloop - endfacet - facet normal -0.807831 -0.589415 0 - outer loop - vertex 4.69711 27.8759 0 - vertex 5.05276 27.3884 -0.2 - vertex 5.05276 27.3884 0 - endloop - endfacet - facet normal -0.764742 -0.644337 0 - outer loop - vertex 5.39739 26.9794 -0.2 - vertex 5.05276 27.3884 0 - vertex 5.05276 27.3884 -0.2 - endloop - endfacet - facet normal -0.764742 -0.644337 0 - outer loop - vertex 5.05276 27.3884 0 - vertex 5.39739 26.9794 -0.2 - vertex 5.39739 26.9794 0 - endloop - endfacet - facet normal -0.703379 -0.710815 0 - outer loop - vertex 5.39739 26.9794 -0.2 - vertex 5.73586 26.6445 0 - vertex 5.39739 26.9794 0 - endloop - endfacet - facet normal -0.703379 -0.710815 -0 - outer loop - vertex 5.73586 26.6445 0 - vertex 5.39739 26.9794 -0.2 - vertex 5.73586 26.6445 -0.2 - endloop - endfacet - facet normal -0.618154 -0.786057 0 - outer loop - vertex 5.73586 26.6445 -0.2 - vertex 6.07308 26.3793 0 - vertex 5.73586 26.6445 0 - endloop - endfacet - facet normal -0.618154 -0.786057 -0 - outer loop - vertex 6.07308 26.3793 0 - vertex 5.73586 26.6445 -0.2 - vertex 6.07308 26.3793 -0.2 - endloop - endfacet - facet normal -0.505671 -0.862726 0 - outer loop - vertex 6.07308 26.3793 -0.2 - vertex 6.41393 26.1795 0 - vertex 6.07308 26.3793 0 - endloop - endfacet - facet normal -0.505671 -0.862726 -0 - outer loop - vertex 6.41393 26.1795 0 - vertex 6.07308 26.3793 -0.2 - vertex 6.41393 26.1795 -0.2 - endloop - endfacet - facet normal -0.369033 -0.929416 0 - outer loop - vertex 6.41393 26.1795 -0.2 - vertex 6.76329 26.0408 0 - vertex 6.41393 26.1795 0 - endloop - endfacet - facet normal -0.369033 -0.929416 -0 - outer loop - vertex 6.76329 26.0408 0 - vertex 6.41393 26.1795 -0.2 - vertex 6.76329 26.0408 -0.2 - endloop - endfacet - facet normal -0.220456 -0.975397 0 - outer loop - vertex 6.76329 26.0408 -0.2 - vertex 7.12606 25.9588 0 - vertex 6.76329 26.0408 0 - endloop - endfacet - facet normal -0.220456 -0.975397 -0 - outer loop - vertex 7.12606 25.9588 0 - vertex 6.76329 26.0408 -0.2 - vertex 7.12606 25.9588 -0.2 - endloop - endfacet - facet normal -0.188841 -0.982008 0 - outer loop - vertex 7.12606 25.9588 -0.2 - vertex 7.55919 25.8755 0 - vertex 7.12606 25.9588 0 - endloop - endfacet - facet normal -0.188841 -0.982008 -0 - outer loop - vertex 7.55919 25.8755 0 - vertex 7.12606 25.9588 -0.2 - vertex 7.55919 25.8755 -0.2 - endloop - endfacet - facet normal -0.317419 -0.948285 0 - outer loop - vertex 7.55919 25.8755 -0.2 - vertex 7.92584 25.7528 0 - vertex 7.55919 25.8755 0 - endloop - endfacet - facet normal -0.317419 -0.948285 -0 - outer loop - vertex 7.92584 25.7528 0 - vertex 7.55919 25.8755 -0.2 - vertex 7.92584 25.7528 -0.2 - endloop - endfacet - facet normal -0.448547 -0.893759 0 - outer loop - vertex 7.92584 25.7528 -0.2 - vertex 8.08977 25.6705 0 - vertex 7.92584 25.7528 0 - endloop - endfacet - facet normal -0.448547 -0.893759 -0 - outer loop - vertex 8.08977 25.6705 0 - vertex 7.92584 25.7528 -0.2 - vertex 8.08977 25.6705 -0.2 - endloop - endfacet - facet normal -0.542679 -0.83994 0 - outer loop - vertex 8.08977 25.6705 -0.2 - vertex 8.24373 25.571 0 - vertex 8.08977 25.6705 0 - endloop - endfacet - facet normal -0.542679 -0.83994 -0 - outer loop - vertex 8.24373 25.571 0 - vertex 8.08977 25.6705 -0.2 - vertex 8.24373 25.571 -0.2 - endloop - endfacet - facet normal -0.63165 -0.775254 0 - outer loop - vertex 8.24373 25.571 -0.2 - vertex 8.38993 25.4519 0 - vertex 8.24373 25.571 0 - endloop - endfacet - facet normal -0.63165 -0.775254 -0 - outer loop - vertex 8.38993 25.4519 0 - vertex 8.24373 25.571 -0.2 - vertex 8.38993 25.4519 -0.2 - endloop - endfacet - facet normal -0.708493 -0.705718 0 - outer loop - vertex 8.53058 25.3107 -0.2 - vertex 8.38993 25.4519 0 - vertex 8.38993 25.4519 -0.2 - endloop - endfacet - facet normal -0.708493 -0.705718 0 - outer loop - vertex 8.38993 25.4519 0 - vertex 8.53058 25.3107 -0.2 - vertex 8.53058 25.3107 0 - endloop - endfacet - facet normal -0.770043 -0.637991 0 - outer loop - vertex 8.6679 25.145 -0.2 - vertex 8.53058 25.3107 0 - vertex 8.53058 25.3107 -0.2 - endloop - endfacet - facet normal -0.770043 -0.637991 0 - outer loop - vertex 8.53058 25.3107 0 - vertex 8.6679 25.145 -0.2 - vertex 8.6679 25.145 0 - endloop - endfacet - facet normal -0.816637 -0.577152 0 - outer loop - vertex 8.80411 24.9522 -0.2 - vertex 8.6679 25.145 0 - vertex 8.6679 25.145 -0.2 - endloop - endfacet - facet normal -0.816637 -0.577152 0 - outer loop - vertex 8.6679 25.145 0 - vertex 8.80411 24.9522 -0.2 - vertex 8.80411 24.9522 0 - endloop - endfacet - facet normal -0.863652 -0.504088 0 - outer loop - vertex 9.08206 24.476 -0.2 - vertex 8.80411 24.9522 0 - vertex 8.80411 24.9522 -0.2 - endloop - endfacet - facet normal -0.863652 -0.504088 0 - outer loop - vertex 8.80411 24.9522 0 - vertex 9.08206 24.476 -0.2 - vertex 9.08206 24.476 0 - endloop - endfacet - facet normal -0.8983 -0.439382 0 - outer loop - vertex 9.38213 23.8626 -0.2 - vertex 9.08206 24.476 0 - vertex 9.08206 24.476 -0.2 - endloop - endfacet - facet normal -0.8983 -0.439382 0 - outer loop - vertex 9.08206 24.476 0 - vertex 9.38213 23.8626 -0.2 - vertex 9.38213 23.8626 0 - endloop - endfacet - facet normal -0.914889 -0.403706 0 - outer loop - vertex 9.72206 23.0922 -0.2 - vertex 9.38213 23.8626 0 - vertex 9.38213 23.8626 -0.2 - endloop - endfacet - facet normal -0.914889 -0.403706 0 - outer loop - vertex 9.38213 23.8626 0 - vertex 9.72206 23.0922 -0.2 - vertex 9.72206 23.0922 0 - endloop - endfacet - facet normal -0.916786 -0.399379 0 - outer loop - vertex 10.0801 22.2703 -0.2 - vertex 9.72206 23.0922 0 - vertex 9.72206 23.0922 -0.2 - endloop - endfacet - facet normal -0.916786 -0.399379 0 - outer loop - vertex 9.72206 23.0922 0 - vertex 10.0801 22.2703 -0.2 - vertex 10.0801 22.2703 0 - endloop - endfacet - facet normal -0.906506 -0.422192 0 - outer loop - vertex 10.3935 21.5973 -0.2 - vertex 10.0801 22.2703 0 - vertex 10.0801 22.2703 -0.2 - endloop - endfacet - facet normal -0.906506 -0.422192 0 - outer loop - vertex 10.0801 22.2703 0 - vertex 10.3935 21.5973 -0.2 - vertex 10.3935 21.5973 0 - endloop - endfacet - facet normal -0.886025 -0.463638 0 - outer loop - vertex 10.6869 21.0368 -0.2 - vertex 10.3935 21.5973 0 - vertex 10.3935 21.5973 -0.2 - endloop - endfacet - facet normal -0.886025 -0.463638 0 - outer loop - vertex 10.3935 21.5973 0 - vertex 10.6869 21.0368 -0.2 - vertex 10.6869 21.0368 0 - endloop - endfacet - facet normal -0.852053 -0.523456 0 - outer loop - vertex 10.9846 20.5521 -0.2 - vertex 10.6869 21.0368 0 - vertex 10.6869 21.0368 -0.2 - endloop - endfacet - facet normal -0.852053 -0.523456 0 - outer loop - vertex 10.6869 21.0368 0 - vertex 10.9846 20.5521 -0.2 - vertex 10.9846 20.5521 0 - endloop - endfacet - facet normal -0.806267 -0.591552 0 - outer loop - vertex 11.3113 20.1069 -0.2 - vertex 10.9846 20.5521 0 - vertex 10.9846 20.5521 -0.2 - endloop - endfacet - facet normal -0.806267 -0.591552 0 - outer loop - vertex 10.9846 20.5521 0 - vertex 11.3113 20.1069 -0.2 - vertex 11.3113 20.1069 0 - endloop - endfacet - facet normal -0.758443 -0.65174 0 - outer loop - vertex 11.6914 19.6646 -0.2 - vertex 11.3113 20.1069 0 - vertex 11.3113 20.1069 -0.2 - endloop - endfacet - facet normal -0.758443 -0.65174 0 - outer loop - vertex 11.3113 20.1069 0 - vertex 11.6914 19.6646 -0.2 - vertex 11.6914 19.6646 0 - endloop - endfacet - facet normal -0.720518 -0.693437 0 - outer loop - vertex 12.1494 19.1886 -0.2 - vertex 11.6914 19.6646 0 - vertex 11.6914 19.6646 -0.2 - endloop - endfacet - facet normal -0.720518 -0.693437 0 - outer loop - vertex 11.6914 19.6646 0 - vertex 12.1494 19.1886 -0.2 - vertex 12.1494 19.1886 0 - endloop - endfacet - facet normal -0.697808 -0.716285 0 - outer loop - vertex 12.1494 19.1886 -0.2 - vertex 12.71 18.6425 0 - vertex 12.1494 19.1886 0 - endloop - endfacet - facet normal -0.697808 -0.716285 -0 - outer loop - vertex 12.71 18.6425 0 - vertex 12.1494 19.1886 -0.2 - vertex 12.71 18.6425 -0.2 - endloop - endfacet - facet normal -0.680991 -0.732292 0 - outer loop - vertex 12.71 18.6425 -0.2 - vertex 13.3813 18.0182 0 - vertex 12.71 18.6425 0 - endloop - endfacet - facet normal -0.680991 -0.732292 -0 - outer loop - vertex 13.3813 18.0182 0 - vertex 12.71 18.6425 -0.2 - vertex 13.3813 18.0182 -0.2 - endloop - endfacet - facet normal -0.650845 -0.759211 0 - outer loop - vertex 13.3813 18.0182 -0.2 - vertex 14.0017 17.4864 0 - vertex 13.3813 18.0182 0 - endloop - endfacet - facet normal -0.650845 -0.759211 -0 - outer loop - vertex 14.0017 17.4864 0 - vertex 13.3813 18.0182 -0.2 - vertex 14.0017 17.4864 -0.2 - endloop - endfacet - facet normal -0.606609 -0.795001 0 - outer loop - vertex 14.0017 17.4864 -0.2 - vertex 14.6028 17.0277 0 - vertex 14.0017 17.4864 0 - endloop - endfacet - facet normal -0.606609 -0.795001 -0 - outer loop - vertex 14.6028 17.0277 0 - vertex 14.0017 17.4864 -0.2 - vertex 14.6028 17.0277 -0.2 - endloop - endfacet - facet normal -0.550734 -0.834681 0 - outer loop - vertex 14.6028 17.0277 -0.2 - vertex 15.2162 16.623 0 - vertex 14.6028 17.0277 0 - endloop - endfacet - facet normal -0.550734 -0.834681 -0 - outer loop - vertex 15.2162 16.623 0 - vertex 14.6028 17.0277 -0.2 - vertex 15.2162 16.623 -0.2 - endloop - endfacet - facet normal -0.490625 -0.871371 0 - outer loop - vertex 15.2162 16.623 -0.2 - vertex 15.8738 16.2527 0 - vertex 15.2162 16.623 0 - endloop - endfacet - facet normal -0.490625 -0.871371 -0 - outer loop - vertex 15.8738 16.2527 0 - vertex 15.2162 16.623 -0.2 - vertex 15.8738 16.2527 -0.2 - endloop - endfacet - facet normal -0.435747 -0.900069 0 - outer loop - vertex 15.8738 16.2527 -0.2 - vertex 16.6072 15.8977 0 - vertex 15.8738 16.2527 0 - endloop - endfacet - facet normal -0.435747 -0.900069 -0 - outer loop - vertex 16.6072 15.8977 0 - vertex 15.8738 16.2527 -0.2 - vertex 16.6072 15.8977 -0.2 - endloop - endfacet - facet normal -0.392812 -0.919619 0 - outer loop - vertex 16.6072 15.8977 -0.2 - vertex 17.448 15.5385 0 - vertex 16.6072 15.8977 0 - endloop - endfacet - facet normal -0.392812 -0.919619 -0 - outer loop - vertex 17.448 15.5385 0 - vertex 16.6072 15.8977 -0.2 - vertex 17.448 15.5385 -0.2 - endloop - endfacet - facet normal -0.36368 -0.931524 0 - outer loop - vertex 17.448 15.5385 -0.2 - vertex 18.4281 15.1559 0 - vertex 17.448 15.5385 0 - endloop - endfacet - facet normal -0.36368 -0.931524 -0 - outer loop - vertex 18.4281 15.1559 0 - vertex 17.448 15.5385 -0.2 - vertex 18.4281 15.1559 -0.2 - endloop - endfacet - facet normal -0.343445 -0.939173 0 - outer loop - vertex 18.4281 15.1559 -0.2 - vertex 19.4469 14.7833 0 - vertex 18.4281 15.1559 0 - endloop - endfacet - facet normal -0.343445 -0.939173 -0 - outer loop - vertex 19.4469 14.7833 0 - vertex 18.4281 15.1559 -0.2 - vertex 19.4469 14.7833 -0.2 - endloop - endfacet - facet normal -0.28492 -0.958551 0 - outer loop - vertex 19.4469 14.7833 -0.2 - vertex 19.7955 14.6797 0 - vertex 19.4469 14.7833 0 - endloop - endfacet - facet normal -0.28492 -0.958551 -0 - outer loop - vertex 19.7955 14.6797 0 - vertex 19.4469 14.7833 -0.2 - vertex 19.7955 14.6797 -0.2 - endloop - endfacet - facet normal -0.184649 -0.982804 0 - outer loop - vertex 19.7955 14.6797 -0.2 - vertex 20.0785 14.6265 0 - vertex 19.7955 14.6797 0 - endloop - endfacet - facet normal -0.184649 -0.982804 -0 - outer loop - vertex 20.0785 14.6265 0 - vertex 19.7955 14.6797 -0.2 - vertex 20.0785 14.6265 -0.2 - endloop - endfacet - facet normal -0.024894 -0.99969 0 - outer loop - vertex 20.0785 14.6265 -0.2 - vertex 20.327 14.6203 0 - vertex 20.0785 14.6265 0 - endloop - endfacet - facet normal -0.024894 -0.99969 -0 - outer loop - vertex 20.327 14.6203 0 - vertex 20.0785 14.6265 -0.2 - vertex 20.327 14.6203 -0.2 - endloop - endfacet - facet normal 0.150471 -0.988614 0 - outer loop - vertex 20.327 14.6203 -0.2 - vertex 20.5722 14.6577 0 - vertex 20.327 14.6203 0 - endloop - endfacet - facet normal 0.150471 -0.988614 0 - outer loop - vertex 20.5722 14.6577 0 - vertex 20.327 14.6203 -0.2 - vertex 20.5722 14.6577 -0.2 - endloop - endfacet - facet normal 0.272592 -0.96213 0 - outer loop - vertex 20.5722 14.6577 -0.2 - vertex 20.8452 14.735 0 - vertex 20.5722 14.6577 0 - endloop - endfacet - facet normal 0.272592 -0.96213 0 - outer loop - vertex 20.8452 14.735 0 - vertex 20.5722 14.6577 -0.2 - vertex 20.8452 14.735 -0.2 - endloop - endfacet - facet normal 0.32454 -0.945872 0 - outer loop - vertex 20.8452 14.735 -0.2 - vertex 21.1771 14.8489 0 - vertex 20.8452 14.735 0 - endloop - endfacet - facet normal 0.32454 -0.945872 0 - outer loop - vertex 21.1771 14.8489 0 - vertex 20.8452 14.735 -0.2 - vertex 21.1771 14.8489 -0.2 - endloop - endfacet - facet normal 0.357547 -0.933895 0 - outer loop - vertex 21.1771 14.8489 -0.2 - vertex 21.6737 15.039 0 - vertex 21.1771 14.8489 0 - endloop - endfacet - facet normal 0.357547 -0.933895 0 - outer loop - vertex 21.6737 15.039 0 - vertex 21.1771 14.8489 -0.2 - vertex 21.6737 15.039 -0.2 - endloop - endfacet - facet normal 0.392507 -0.919749 0 - outer loop - vertex 21.6737 15.039 -0.2 - vertex 22.2336 15.278 0 - vertex 21.6737 15.039 0 - endloop - endfacet - facet normal 0.392507 -0.919749 0 - outer loop - vertex 22.2336 15.278 0 - vertex 21.6737 15.039 -0.2 - vertex 22.2336 15.278 -0.2 - endloop - endfacet - facet normal 0.427814 -0.903867 0 - outer loop - vertex 22.2336 15.278 -0.2 - vertex 23.3919 15.8262 0 - vertex 22.2336 15.278 0 - endloop - endfacet - facet normal 0.427814 -0.903867 0 - outer loop - vertex 23.3919 15.8262 0 - vertex 22.2336 15.278 -0.2 - vertex 23.3919 15.8262 -0.2 - endloop - endfacet - facet normal 0.460603 -0.887606 0 - outer loop - vertex 23.3919 15.8262 -0.2 - vertex 23.9148 16.0975 0 - vertex 23.3919 15.8262 0 - endloop - endfacet - facet normal 0.460603 -0.887606 0 - outer loop - vertex 23.9148 16.0975 0 - vertex 23.3919 15.8262 -0.2 - vertex 23.9148 16.0975 -0.2 - endloop - endfacet - facet normal 0.489467 -0.872022 0 - outer loop - vertex 23.9148 16.0975 -0.2 - vertex 24.3498 16.3417 0 - vertex 23.9148 16.0975 0 - endloop - endfacet - facet normal 0.489467 -0.872022 0 - outer loop - vertex 24.3498 16.3417 0 - vertex 23.9148 16.0975 -0.2 - vertex 24.3498 16.3417 -0.2 - endloop - endfacet - facet normal 0.539107 -0.842237 0 - outer loop - vertex 24.3498 16.3417 -0.2 - vertex 24.659 16.5397 0 - vertex 24.3498 16.3417 0 - endloop - endfacet - facet normal 0.539107 -0.842237 0 - outer loop - vertex 24.659 16.5397 0 - vertex 24.3498 16.3417 -0.2 - vertex 24.659 16.5397 -0.2 - endloop - endfacet - facet normal 0.620549 -0.784168 0 - outer loop - vertex 24.659 16.5397 -0.2 - vertex 24.7548 16.6154 0 - vertex 24.659 16.5397 0 - endloop - endfacet - facet normal 0.620549 -0.784168 0 - outer loop - vertex 24.7548 16.6154 0 - vertex 24.659 16.5397 -0.2 - vertex 24.7548 16.6154 -0.2 - endloop - endfacet - facet normal 0.751376 -0.659874 0 - outer loop - vertex 24.7548 16.6154 0 - vertex 24.8049 16.6725 -0.2 - vertex 24.8049 16.6725 0 - endloop - endfacet - facet normal 0.751376 -0.659874 0 - outer loop - vertex 24.8049 16.6725 -0.2 - vertex 24.7548 16.6154 0 - vertex 24.7548 16.6154 -0.2 - endloop - endfacet - facet normal 0.968195 -0.250195 0 - outer loop - vertex 24.8049 16.6725 0 - vertex 24.8294 16.7672 -0.2 - vertex 24.8294 16.7672 0 - endloop - endfacet - facet normal 0.968195 -0.250195 0 - outer loop - vertex 24.8294 16.7672 -0.2 - vertex 24.8049 16.6725 0 - vertex 24.8049 16.6725 -0.2 - endloop - endfacet - facet normal 0.998807 0.0488365 0 - outer loop - vertex 24.8294 16.7672 0 - vertex 24.8232 16.8925 -0.2 - vertex 24.8232 16.8925 0 - endloop - endfacet - facet normal 0.998807 0.0488365 0 - outer loop - vertex 24.8232 16.8925 -0.2 - vertex 24.8294 16.7672 0 - vertex 24.8294 16.7672 -0.2 - endloop - endfacet - facet normal 0.971162 0.23842 0 - outer loop - vertex 24.8232 16.8925 0 - vertex 24.789 17.0321 -0.2 - vertex 24.789 17.0321 0 - endloop - endfacet - facet normal 0.971162 0.23842 0 - outer loop - vertex 24.789 17.0321 -0.2 - vertex 24.8232 16.8925 0 - vertex 24.8232 16.8925 -0.2 - endloop - endfacet - facet normal 0.916748 0.399467 0 - outer loop - vertex 24.789 17.0321 0 - vertex 24.7291 17.1695 -0.2 - vertex 24.7291 17.1695 0 - endloop - endfacet - facet normal 0.916748 0.399467 0 - outer loop - vertex 24.7291 17.1695 -0.2 - vertex 24.789 17.0321 0 - vertex 24.789 17.0321 -0.2 - endloop - endfacet - facet normal 0.771083 0.636734 0 - outer loop - vertex 24.7291 17.1695 0 - vertex 24.6602 17.253 -0.2 - vertex 24.6602 17.253 0 - endloop - endfacet - facet normal 0.771083 0.636734 0 - outer loop - vertex 24.6602 17.253 -0.2 - vertex 24.7291 17.1695 0 - vertex 24.7291 17.1695 -0.2 - endloop - endfacet - facet normal 0.526106 0.850419 -0 - outer loop - vertex 24.6602 17.253 -0.2 - vertex 24.5483 17.3222 0 - vertex 24.6602 17.253 0 - endloop - endfacet - facet normal 0.526106 0.850419 0 - outer loop - vertex 24.5483 17.3222 0 - vertex 24.6602 17.253 -0.2 - vertex 24.5483 17.3222 -0.2 - endloop - endfacet - facet normal 0.326655 0.945144 -0 - outer loop - vertex 24.5483 17.3222 -0.2 - vertex 24.386 17.3783 0 - vertex 24.5483 17.3222 0 - endloop - endfacet - facet normal 0.326655 0.945144 0 - outer loop - vertex 24.386 17.3783 0 - vertex 24.5483 17.3222 -0.2 - vertex 24.386 17.3783 -0.2 - endloop - endfacet - facet normal 0.19643 0.980518 -0 - outer loop - vertex 24.386 17.3783 -0.2 - vertex 24.166 17.4223 0 - vertex 24.386 17.3783 0 - endloop - endfacet - facet normal 0.19643 0.980518 0 - outer loop - vertex 24.166 17.4223 0 - vertex 24.386 17.3783 -0.2 - vertex 24.166 17.4223 -0.2 - endloop - endfacet - facet normal 0.0878721 0.996132 -0 - outer loop - vertex 24.166 17.4223 -0.2 - vertex 23.5226 17.4791 0 - vertex 24.166 17.4223 0 - endloop - endfacet - facet normal 0.0878721 0.996132 0 - outer loop - vertex 23.5226 17.4791 0 - vertex 24.166 17.4223 -0.2 - vertex 23.5226 17.4791 -0.2 - endloop - endfacet - facet normal 0.0232768 0.999729 -0 - outer loop - vertex 23.5226 17.4791 -0.2 - vertex 22.5588 17.5015 0 - vertex 23.5226 17.4791 0 - endloop - endfacet - facet normal 0.0232768 0.999729 0 - outer loop - vertex 22.5588 17.5015 0 - vertex 23.5226 17.4791 -0.2 - vertex 22.5588 17.5015 -0.2 - endloop - endfacet - facet normal 0.0146144 0.999893 -0 - outer loop - vertex 22.5588 17.5015 -0.2 - vertex 21.0506 17.5236 0 - vertex 22.5588 17.5015 0 - endloop - endfacet - facet normal 0.0146144 0.999893 0 - outer loop - vertex 21.0506 17.5236 0 - vertex 22.5588 17.5015 -0.2 - vertex 21.0506 17.5236 -0.2 - endloop - endfacet - facet normal 0.0395978 0.999216 -0 - outer loop - vertex 21.0506 17.5236 -0.2 - vertex 20.2276 17.5562 0 - vertex 21.0506 17.5236 0 - endloop - endfacet - facet normal 0.0395978 0.999216 0 - outer loop - vertex 20.2276 17.5562 0 - vertex 21.0506 17.5236 -0.2 - vertex 20.2276 17.5562 -0.2 - endloop - endfacet - facet normal 0.211618 0.977352 -0 - outer loop - vertex 20.2276 17.5562 -0.2 - vertex 20.1284 17.5777 0 - vertex 20.2276 17.5562 0 - endloop - endfacet - facet normal 0.211618 0.977352 0 - outer loop - vertex 20.1284 17.5777 0 - vertex 20.2276 17.5562 -0.2 - vertex 20.1284 17.5777 -0.2 - endloop - endfacet - facet normal 0.390006 0.920812 -0 - outer loop - vertex 20.1284 17.5777 -0.2 - vertex 20.0333 17.6179 0 - vertex 20.1284 17.5777 0 - endloop - endfacet - facet normal 0.390006 0.920812 0 - outer loop - vertex 20.0333 17.6179 0 - vertex 20.1284 17.5777 -0.2 - vertex 20.0333 17.6179 -0.2 - endloop - endfacet - facet normal 0.545234 0.838284 -0 - outer loop - vertex 20.0333 17.6179 -0.2 - vertex 19.9424 17.6771 0 - vertex 20.0333 17.6179 0 - endloop - endfacet - facet normal 0.545234 0.838284 0 - outer loop - vertex 19.9424 17.6771 0 - vertex 20.0333 17.6179 -0.2 - vertex 19.9424 17.6771 -0.2 - endloop - endfacet - facet normal 0.668778 0.743462 -0 - outer loop - vertex 19.9424 17.6771 -0.2 - vertex 19.8554 17.7553 0 - vertex 19.9424 17.6771 0 - endloop - endfacet - facet normal 0.668778 0.743462 0 - outer loop - vertex 19.8554 17.7553 0 - vertex 19.9424 17.6771 -0.2 - vertex 19.8554 17.7553 -0.2 - endloop - endfacet - facet normal 0.797362 0.603501 0 - outer loop - vertex 19.8554 17.7553 0 - vertex 19.6934 17.9694 -0.2 - vertex 19.6934 17.9694 0 - endloop - endfacet - facet normal 0.797362 0.603501 0 - outer loop - vertex 19.6934 17.9694 -0.2 - vertex 19.8554 17.7553 0 - vertex 19.8554 17.7553 -0.2 - endloop - endfacet - facet normal 0.893603 0.448858 0 - outer loop - vertex 19.6934 17.9694 0 - vertex 19.5469 18.2611 -0.2 - vertex 19.5469 18.2611 0 - endloop - endfacet - facet normal 0.893603 0.448858 0 - outer loop - vertex 19.5469 18.2611 -0.2 - vertex 19.6934 17.9694 0 - vertex 19.6934 17.9694 -0.2 - endloop - endfacet - facet normal 0.942385 0.33453 0 - outer loop - vertex 19.5469 18.2611 0 - vertex 19.4153 18.6317 -0.2 - vertex 19.4153 18.6317 0 - endloop - endfacet - facet normal 0.942385 0.33453 0 - outer loop - vertex 19.4153 18.6317 -0.2 - vertex 19.5469 18.2611 0 - vertex 19.5469 18.2611 -0.2 - endloop - endfacet - facet normal 0.967894 0.251357 0 - outer loop - vertex 19.4153 18.6317 0 - vertex 19.2984 19.082 -0.2 - vertex 19.2984 19.082 0 - endloop - endfacet - facet normal 0.967894 0.251357 0 - outer loop - vertex 19.2984 19.082 -0.2 - vertex 19.4153 18.6317 0 - vertex 19.4153 18.6317 -0.2 - endloop - endfacet - facet normal 0.981784 0.190002 0 - outer loop - vertex 19.2984 19.082 0 - vertex 19.1956 19.6132 -0.2 - vertex 19.1956 19.6132 0 - endloop - endfacet - facet normal 0.981784 0.190002 0 - outer loop - vertex 19.1956 19.6132 -0.2 - vertex 19.2984 19.082 0 - vertex 19.2984 19.082 -0.2 - endloop - endfacet - facet normal 0.989607 0.143797 0 - outer loop - vertex 19.1956 19.6132 0 - vertex 19.1065 20.2262 -0.2 - vertex 19.1065 20.2262 0 - endloop - endfacet - facet normal 0.989607 0.143797 0 - outer loop - vertex 19.1065 20.2262 -0.2 - vertex 19.1956 19.6132 0 - vertex 19.1956 19.6132 -0.2 - endloop - endfacet - facet normal 0.988819 0.149121 0 - outer loop - vertex 19.1065 20.2262 0 - vertex 19.0081 20.8787 -0.2 - vertex 19.0081 20.8787 0 - endloop - endfacet - facet normal 0.988819 0.149121 0 - outer loop - vertex 19.0081 20.8787 -0.2 - vertex 19.1065 20.2262 0 - vertex 19.1065 20.2262 -0.2 - endloop - endfacet - facet normal 0.979919 0.199398 0 - outer loop - vertex 19.0081 20.8787 0 - vertex 18.892 21.4494 -0.2 - vertex 18.892 21.4494 0 - endloop - endfacet - facet normal 0.979919 0.199398 0 - outer loop - vertex 18.892 21.4494 -0.2 - vertex 19.0081 20.8787 0 - vertex 19.0081 20.8787 -0.2 - endloop - endfacet - facet normal 0.963148 0.268972 0 - outer loop - vertex 18.892 21.4494 0 - vertex 18.7726 21.8767 -0.2 - vertex 18.7726 21.8767 0 - endloop - endfacet - facet normal 0.963148 0.268972 0 - outer loop - vertex 18.7726 21.8767 -0.2 - vertex 18.892 21.4494 0 - vertex 18.892 21.4494 -0.2 - endloop - endfacet - facet normal 0.928333 0.371749 0 - outer loop - vertex 18.7726 21.8767 0 - vertex 18.7163 22.0174 -0.2 - vertex 18.7163 22.0174 0 - endloop - endfacet - facet normal 0.928333 0.371749 0 - outer loop - vertex 18.7163 22.0174 -0.2 - vertex 18.7726 21.8767 0 - vertex 18.7726 21.8767 -0.2 - endloop - endfacet - facet normal 0.845312 0.534273 0 - outer loop - vertex 18.7163 22.0174 0 - vertex 18.6646 22.0992 -0.2 - vertex 18.6646 22.0992 0 - endloop - endfacet - facet normal 0.845312 0.534273 0 - outer loop - vertex 18.6646 22.0992 -0.2 - vertex 18.7163 22.0174 0 - vertex 18.7163 22.0174 -0.2 - endloop - endfacet - facet normal 0.569342 0.822101 -0 - outer loop - vertex 18.6646 22.0992 -0.2 - vertex 18.4732 22.2317 0 - vertex 18.6646 22.0992 0 - endloop - endfacet - facet normal 0.569342 0.822101 0 - outer loop - vertex 18.4732 22.2317 0 - vertex 18.6646 22.0992 -0.2 - vertex 18.4732 22.2317 -0.2 - endloop - endfacet - facet normal 0.466042 0.884763 -0 - outer loop - vertex 18.4732 22.2317 -0.2 - vertex 18.127 22.4141 0 - vertex 18.4732 22.2317 0 - endloop - endfacet - facet normal 0.466042 0.884763 0 - outer loop - vertex 18.127 22.4141 0 - vertex 18.4732 22.2317 -0.2 - vertex 18.127 22.4141 -0.2 - endloop - endfacet - facet normal 0.418359 0.908282 -0 - outer loop - vertex 18.127 22.4141 -0.2 - vertex 17.6752 22.6222 0 - vertex 18.127 22.4141 0 - endloop - endfacet - facet normal 0.418359 0.908282 0 - outer loop - vertex 17.6752 22.6222 0 - vertex 18.127 22.4141 -0.2 - vertex 17.6752 22.6222 -0.2 - endloop - endfacet - facet normal 0.381566 0.924342 -0 - outer loop - vertex 17.6752 22.6222 -0.2 - vertex 17.1667 22.8321 0 - vertex 17.6752 22.6222 0 - endloop - endfacet - facet normal 0.381566 0.924342 0 - outer loop - vertex 17.1667 22.8321 0 - vertex 17.6752 22.6222 -0.2 - vertex 17.1667 22.8321 -0.2 + vertex 17.155 22.8321 0 + vertex 18.6529 22.0992 -3 + vertex 17.155 22.8321 -3 endloop endfacet facet normal 0.375086 0.92699 -0 outer loop - vertex 17.1667 22.8321 -0.2 - vertex 15.5173 23.4995 0 - vertex 17.1667 22.8321 0 + vertex 17.155 22.8321 -3 + vertex 15.5055 23.4995 0 + vertex 17.155 22.8321 0 endloop endfacet facet normal 0.375086 0.92699 0 outer loop - vertex 15.5173 23.4995 0 - vertex 17.1667 22.8321 -0.2 - vertex 15.5173 23.4995 -0.2 + vertex 15.5055 23.4995 0 + vertex 17.155 22.8321 -3 + vertex 15.5055 23.4995 -3 endloop endfacet facet normal 0.401684 0.915778 -0 outer loop - vertex 15.5173 23.4995 -0.2 - vertex 14.0281 24.1527 0 - vertex 15.5173 23.4995 0 + vertex 15.5055 23.4995 -3 + vertex 14.0164 24.1527 0 + vertex 15.5055 23.4995 0 endloop endfacet facet normal 0.401684 0.915778 0 outer loop - vertex 14.0281 24.1527 0 - vertex 15.5173 23.4995 -0.2 - vertex 14.0281 24.1527 -0.2 + vertex 14.0164 24.1527 0 + vertex 15.5055 23.4995 -3 + vertex 14.0164 24.1527 -3 endloop endfacet - facet normal 0.431504 0.902111 -0 + facet normal 0.516309 0.856402 -0 outer loop - vertex 14.0281 24.1527 -0.2 - vertex 13.7923 24.2655 0 - vertex 14.0281 24.1527 0 + vertex 14.0164 24.1527 -3 + vertex 13.0733 24.7212 0 + vertex 14.0164 24.1527 0 endloop endfacet - facet normal 0.431504 0.902111 0 + facet normal 0.516309 0.856402 0 outer loop - vertex 13.7923 24.2655 0 - vertex 14.0281 24.1527 -0.2 - vertex 13.7923 24.2655 -0.2 + vertex 13.0733 24.7212 0 + vertex 14.0164 24.1527 -3 + vertex 13.0733 24.7212 -3 endloop endfacet - facet normal 0.491302 0.870989 -0 + facet normal 0.678054 0.735012 -0 outer loop - vertex 13.7923 24.2655 -0.2 - vertex 13.5553 24.3991 0 - vertex 13.7923 24.2655 0 + vertex 13.0733 24.7212 -3 + vertex 12.1975 25.5292 0 + vertex 13.0733 24.7212 0 endloop endfacet - facet normal 0.491302 0.870989 0 + facet normal 0.678054 0.735012 0 outer loop - vertex 13.5553 24.3991 0 - vertex 13.7923 24.2655 -0.2 - vertex 13.5553 24.3991 -0.2 + vertex 12.1975 25.5292 0 + vertex 13.0733 24.7212 -3 + vertex 12.1975 25.5292 -3 endloop endfacet - facet normal 0.565064 0.825047 -0 + facet normal 0.798708 0.601719 0 outer loop - vertex 13.5553 24.3991 -0.2 - vertex 13.085 24.7212 0 - vertex 13.5553 24.3991 0 + vertex 12.1975 25.5292 0 + vertex 11.5037 26.4501 -3 + vertex 11.5037 26.4501 0 endloop endfacet - facet normal 0.565064 0.825047 0 + facet normal 0.798708 0.601719 0 outer loop - vertex 13.085 24.7212 0 - vertex 13.5553 24.3991 -0.2 - vertex 13.085 24.7212 -0.2 + vertex 11.5037 26.4501 -3 + vertex 12.1975 25.5292 0 + vertex 12.1975 25.5292 -3 endloop endfacet - facet normal 0.644201 0.764857 -0 + facet normal 0.916155 0.400824 0 outer loop - vertex 13.085 24.7212 -0.2 - vertex 12.6316 25.1032 0 - vertex 13.085 24.7212 0 + vertex 11.5037 26.4501 0 + vertex 11.1066 27.3577 -3 + vertex 11.1066 27.3577 0 endloop endfacet - facet normal 0.644201 0.764857 0 + facet normal 0.916155 0.400824 0 outer loop - vertex 12.6316 25.1032 0 - vertex 13.085 24.7212 -0.2 - vertex 12.6316 25.1032 -0.2 + vertex 11.1066 27.3577 -3 + vertex 11.5037 26.4501 0 + vertex 11.5037 26.4501 -3 endloop endfacet - facet normal 0.710157 0.704043 0 + facet normal 0.997988 0.0634007 0 outer loop - vertex 12.6316 25.1032 0 - vertex 12.2092 25.5292 -0.2 - vertex 12.2092 25.5292 0 + vertex 11.1066 27.3577 0 + vertex 11.0411 28.3898 -3 + vertex 11.0411 28.3898 0 endloop endfacet - facet normal 0.710157 0.704043 0 + facet normal 0.997988 0.0634007 0 outer loop - vertex 12.2092 25.5292 -0.2 - vertex 12.6316 25.1032 0 - vertex 12.6316 25.1032 -0.2 + vertex 11.0411 28.3898 -3 + vertex 11.1066 27.3577 0 + vertex 11.1066 27.3577 -3 endloop endfacet - facet normal 0.769647 0.63847 0 + facet normal 0.985212 -0.171342 0 outer loop - vertex 12.2092 25.5292 0 - vertex 11.8324 25.9834 -0.2 - vertex 11.8324 25.9834 0 + vertex 11.0411 28.3898 0 + vertex 11.2319 29.4873 -3 + vertex 11.2319 29.4873 0 endloop endfacet - facet normal 0.769647 0.63847 0 + facet normal 0.985212 -0.171342 0 outer loop - vertex 11.8324 25.9834 -0.2 - vertex 12.2092 25.5292 0 - vertex 12.2092 25.5292 -0.2 + vertex 11.2319 29.4873 -3 + vertex 11.0411 28.3898 0 + vertex 11.0411 28.3898 -3 endloop endfacet - facet normal 0.827234 0.561857 0 + facet normal 0.92237 -0.386308 0 outer loop - vertex 11.8324 25.9834 0 - vertex 11.5154 26.4501 -0.2 - vertex 11.5154 26.4501 0 + vertex 11.2319 29.4873 0 + vertex 11.5971 30.3591 -3 + vertex 11.5971 30.3591 0 endloop endfacet - facet normal 0.827234 0.561857 0 + facet normal 0.92237 -0.386308 0 outer loop - vertex 11.5154 26.4501 -0.2 - vertex 11.8324 25.9834 0 - vertex 11.8324 25.9834 -0.2 + vertex 11.5971 30.3591 -3 + vertex 11.2319 29.4873 0 + vertex 11.2319 29.4873 -3 endloop endfacet - facet normal 0.870844 0.491559 0 + facet normal 0.613523 -0.789677 0 outer loop - vertex 11.5154 26.4501 0 - vertex 11.3839 26.6832 -0.2 - vertex 11.3839 26.6832 0 + vertex 11.5971 30.3591 -3 + vertex 12.0544 30.7144 0 + vertex 11.5971 30.3591 0 endloop endfacet - facet normal 0.870844 0.491559 0 + facet normal 0.613523 -0.789677 0 outer loop - vertex 11.3839 26.6832 -0.2 - vertex 11.5154 26.4501 0 - vertex 11.5154 26.4501 -0.2 + vertex 12.0544 30.7144 0 + vertex 11.5971 30.3591 -3 + vertex 12.0544 30.7144 -3 endloop endfacet - facet normal 0.900452 0.434955 0 + facet normal -0.632498 -0.774562 0 outer loop - vertex 11.3839 26.6832 0 - vertex 11.2726 26.9135 -0.2 - vertex 11.2726 26.9135 0 + vertex 12.0544 30.7144 -3 + vertex 12.2907 30.5214 0 + vertex 12.0544 30.7144 0 endloop endfacet - facet normal 0.900452 0.434955 0 + facet normal -0.632498 -0.774562 -0 outer loop - vertex 11.2726 26.9135 -0.2 - vertex 11.3839 26.6832 0 - vertex 11.3839 26.6832 -0.2 + vertex 12.2907 30.5214 0 + vertex 12.0544 30.7144 -3 + vertex 12.2907 30.5214 -3 endloop endfacet - facet normal 0.930028 0.367488 0 + facet normal -0.906769 0.421628 0 outer loop - vertex 11.2726 26.9135 0 - vertex 11.1835 27.139 -0.2 - vertex 11.1835 27.139 0 + vertex 12.0187 29.9363 -3 + vertex 12.2907 30.5214 0 + vertex 12.2907 30.5214 -3 endloop endfacet - facet normal 0.930028 0.367488 0 + facet normal -0.906769 0.421628 0 outer loop - vertex 11.1835 27.139 -0.2 - vertex 11.2726 26.9135 0 - vertex 11.2726 26.9135 -0.2 + vertex 12.2907 30.5214 0 + vertex 12.0187 29.9363 -3 + vertex 12.0187 29.9363 0 endloop endfacet - facet normal 0.958361 0.28556 0 + facet normal -0.946212 0.323547 0 outer loop - vertex 11.1835 27.139 0 - vertex 11.1184 27.3577 -0.2 - vertex 11.1184 27.3577 0 + vertex 11.8088 29.3224 -3 + vertex 12.0187 29.9363 0 + vertex 12.0187 29.9363 -3 endloop endfacet - facet normal 0.958361 0.28556 0 + facet normal -0.946212 0.323547 0 outer loop - vertex 11.1184 27.3577 -0.2 - vertex 11.1835 27.139 0 - vertex 11.1835 27.139 -0.2 + vertex 12.0187 29.9363 0 + vertex 11.8088 29.3224 -3 + vertex 11.8088 29.3224 0 endloop endfacet - facet normal 0.982358 0.187011 0 + facet normal -0.996661 0.0816499 0 outer loop - vertex 11.1184 27.3577 0 - vertex 11.0734 27.5937 -0.2 - vertex 11.0734 27.5937 0 + vertex 11.7374 28.4518 -3 + vertex 11.8088 29.3224 0 + vertex 11.8088 29.3224 -3 endloop endfacet - facet normal 0.982358 0.187011 0 + facet normal -0.996661 0.0816499 0 outer loop - vertex 11.0734 27.5937 -0.2 - vertex 11.1184 27.3577 0 - vertex 11.1184 27.3577 -0.2 + vertex 11.8088 29.3224 0 + vertex 11.7374 28.4518 -3 + vertex 11.7374 28.4518 0 endloop endfacet - facet normal 0.995162 0.0982451 0 + facet normal -0.997288 -0.0735994 0 outer loop - vertex 11.0734 27.5937 0 - vertex 11.0484 27.8474 -0.2 - vertex 11.0484 27.8474 0 + vertex 11.8052 27.5343 -3 + vertex 11.7374 28.4518 0 + vertex 11.7374 28.4518 -3 endloop endfacet - facet normal 0.995162 0.0982451 0 + facet normal -0.997288 -0.0735994 0 outer loop - vertex 11.0484 27.8474 -0.2 - vertex 11.0734 27.5937 0 - vertex 11.0734 27.5937 -0.2 + vertex 11.7374 28.4518 0 + vertex 11.8052 27.5343 -3 + vertex 11.8052 27.5343 0 endloop endfacet - facet normal 0.999708 0.0241697 0 + facet normal -0.964338 -0.264675 0 outer loop - vertex 11.0484 27.8474 0 - vertex 11.0419 28.1143 -0.2 - vertex 11.0419 28.1143 0 + vertex 12.0123 26.7794 -3 + vertex 11.8052 27.5343 0 + vertex 11.8052 27.5343 -3 endloop endfacet - facet normal 0.999708 0.0241697 0 + facet normal -0.964338 -0.264675 0 outer loop - vertex 11.0419 28.1143 -0.2 - vertex 11.0484 27.8474 0 - vertex 11.0484 27.8474 -0.2 + vertex 11.8052 27.5343 0 + vertex 12.0123 26.7794 -3 + vertex 12.0123 26.7794 0 endloop endfacet - facet normal 0.999225 -0.0393733 0 + facet normal -0.835126 -0.550059 0 outer loop - vertex 11.0419 28.1143 0 - vertex 11.0528 28.3898 -0.2 - vertex 11.0528 28.3898 0 + vertex 12.5486 25.9653 -3 + vertex 12.0123 26.7794 0 + vertex 12.0123 26.7794 -3 endloop endfacet - facet normal 0.999225 -0.0393733 0 + facet normal -0.835126 -0.550059 0 outer loop - vertex 11.0528 28.3898 -0.2 - vertex 11.0419 28.1143 0 - vertex 11.0419 28.1143 -0.2 + vertex 12.0123 26.7794 0 + vertex 12.5486 25.9653 -3 + vertex 12.5486 25.9653 0 endloop endfacet - facet normal 0.992566 -0.121707 0 + facet normal -0.606684 -0.794943 0 outer loop - vertex 11.0528 28.3898 0 - vertex 11.1213 28.9486 -0.2 - vertex 11.1213 28.9486 0 + vertex 12.5486 25.9653 -3 + vertex 13.4969 25.2416 0 + vertex 12.5486 25.9653 0 endloop endfacet - facet normal 0.992566 -0.121707 0 + facet normal -0.606684 -0.794943 -0 outer loop - vertex 11.1213 28.9486 -0.2 - vertex 11.0528 28.3898 0 - vertex 11.0528 28.3898 -0.2 + vertex 13.4969 25.2416 0 + vertex 12.5486 25.9653 -3 + vertex 13.4969 25.2416 -3 endloop endfacet - facet normal 0.975165 -0.221479 0 + facet normal -0.436683 -0.899615 0 outer loop - vertex 11.1213 28.9486 0 - vertex 11.2437 29.4873 -0.2 - vertex 11.2437 29.4873 0 + vertex 13.4969 25.2416 -3 + vertex 15.1211 24.4531 0 + vertex 13.4969 25.2416 0 endloop endfacet - facet normal 0.975165 -0.221479 0 + facet normal -0.436683 -0.899615 -0 outer loop - vertex 11.2437 29.4873 -0.2 - vertex 11.1213 28.9486 0 - vertex 11.1213 28.9486 -0.2 + vertex 15.1211 24.4531 0 + vertex 13.4969 25.2416 -3 + vertex 15.1211 24.4531 -3 endloop endfacet - facet normal 0.94561 -0.325304 0 + facet normal -0.365946 -0.930636 0 outer loop - vertex 11.2437 29.4873 0 - vertex 11.4096 29.9696 -0.2 - vertex 11.4096 29.9696 0 + vertex 15.1211 24.4531 -3 + vertex 17.6852 23.4449 0 + vertex 15.1211 24.4531 0 endloop endfacet - facet normal 0.94561 -0.325304 0 + facet normal -0.365946 -0.930636 -0 outer loop - vertex 11.4096 29.9696 -0.2 - vertex 11.2437 29.4873 0 - vertex 11.2437 29.4873 -0.2 + vertex 17.6852 23.4449 0 + vertex 15.1211 24.4531 -3 + vertex 17.6852 23.4449 -3 endloop endfacet - facet normal 0.908293 -0.418334 0 + facet normal -0.54663 -0.837374 0 outer loop - vertex 11.4096 29.9696 0 - vertex 11.5057 30.1782 -0.2 - vertex 11.5057 30.1782 0 + vertex 17.6852 23.4449 -3 + vertex 18.9185 22.6398 0 + vertex 17.6852 23.4449 0 endloop endfacet - facet normal 0.908293 -0.418334 0 + facet normal -0.54663 -0.837374 -0 outer loop - vertex 11.5057 30.1782 -0.2 - vertex 11.4096 29.9696 0 - vertex 11.4096 29.9696 -0.2 + vertex 18.9185 22.6398 0 + vertex 17.6852 23.4449 -3 + vertex 18.9185 22.6398 -3 endloop endfacet - facet normal 0.868734 -0.495279 0 + facet normal -0.808126 -0.58901 0 outer loop - vertex 11.5057 30.1782 0 - vertex 11.6088 30.3591 -0.2 - vertex 11.6088 30.3591 0 + vertex 19.4421 21.9215 -3 + vertex 18.9185 22.6398 0 + vertex 18.9185 22.6398 -3 endloop endfacet - facet normal 0.868734 -0.495279 0 + facet normal -0.808126 -0.58901 0 outer loop - vertex 11.6088 30.3591 -0.2 - vertex 11.5057 30.1782 0 - vertex 11.5057 30.1782 -0.2 + vertex 18.9185 22.6398 0 + vertex 19.4421 21.9215 -3 + vertex 19.4421 21.9215 0 endloop endfacet - facet normal 0.806643 -0.59104 0 + facet normal -0.985617 -0.168992 0 outer loop - vertex 11.6088 30.3591 0 - vertex 11.7177 30.5077 -0.2 - vertex 11.7177 30.5077 0 + vertex 19.6596 20.6529 -3 + vertex 19.4421 21.9215 0 + vertex 19.4421 21.9215 -3 endloop endfacet - facet normal 0.806643 -0.59104 0 + facet normal -0.985617 -0.168992 0 outer loop - vertex 11.7177 30.5077 -0.2 - vertex 11.6088 30.3591 0 - vertex 11.6088 30.3591 -0.2 + vertex 19.4421 21.9215 0 + vertex 19.6596 20.6529 -3 + vertex 19.6596 20.6529 0 endloop endfacet - facet normal 0.702105 -0.712073 0 + facet normal -0.991076 -0.133297 0 outer loop - vertex 11.7177 30.5077 -0.2 - vertex 11.8311 30.6195 0 - vertex 11.7177 30.5077 0 + vertex 19.8405 19.3078 -3 + vertex 19.6596 20.6529 0 + vertex 19.6596 20.6529 -3 endloop endfacet - facet normal 0.702105 -0.712073 0 + facet normal -0.991076 -0.133297 0 outer loop - vertex 11.8311 30.6195 0 - vertex 11.7177 30.5077 -0.2 - vertex 11.8311 30.6195 -0.2 + vertex 19.6596 20.6529 0 + vertex 19.8405 19.3078 -3 + vertex 19.8405 19.3078 0 endloop endfacet - facet normal 0.51702 -0.855973 0 + facet normal -0.89371 -0.448645 0 outer loop - vertex 11.8311 30.6195 -0.2 - vertex 11.9476 30.6899 0 - vertex 11.8311 30.6195 0 + vertex 20.2006 18.5903 -3 + vertex 19.8405 19.3078 0 + vertex 19.8405 19.3078 -3 endloop endfacet - facet normal 0.51702 -0.855973 0 + facet normal -0.89371 -0.448645 0 outer loop - vertex 11.9476 30.6899 0 - vertex 11.8311 30.6195 -0.2 - vertex 11.9476 30.6899 -0.2 + vertex 19.8405 19.3078 0 + vertex 20.2006 18.5903 -3 + vertex 20.2006 18.5903 0 endloop endfacet - facet normal 0.202357 -0.979312 0 + facet normal -0.353154 -0.935565 0 outer loop - vertex 11.9476 30.6899 -0.2 - vertex 12.0661 30.7144 0 - vertex 11.9476 30.6899 0 + vertex 20.2006 18.5903 -3 + vertex 20.9591 18.304 0 + vertex 20.2006 18.5903 0 endloop endfacet - facet normal 0.202357 -0.979312 0 + facet normal -0.353154 -0.935565 -0 outer loop - vertex 12.0661 30.7144 0 - vertex 11.9476 30.6899 -0.2 - vertex 12.0661 30.7144 -0.2 + vertex 20.9591 18.304 0 + vertex 20.2006 18.5903 -3 + vertex 20.9591 18.304 -3 endloop endfacet - facet normal -0.111663 -0.993746 0 + facet normal -0.0375868 -0.999293 0 outer loop - vertex 12.0661 30.7144 -0.2 - vertex 12.1728 30.7024 0 - vertex 12.0661 30.7144 0 + vertex 20.9591 18.304 -3 + vertex 22.335 18.2522 0 + vertex 20.9591 18.304 0 endloop endfacet - facet normal -0.111663 -0.993746 -0 + facet normal -0.0375868 -0.999293 -0 outer loop - vertex 12.1728 30.7024 0 - vertex 12.0661 30.7144 -0.2 - vertex 12.1728 30.7024 -0.2 + vertex 22.335 18.2522 0 + vertex 20.9591 18.304 -3 + vertex 22.335 18.2522 -3 endloop endfacet - facet normal -0.43355 -0.90113 0 + facet normal -0.0902677 -0.995918 0 outer loop - vertex 12.1728 30.7024 -0.2 - vertex 12.2478 30.6663 0 - vertex 12.1728 30.7024 0 + vertex 22.335 18.2522 -3 + vertex 24.5942 18.0475 0 + vertex 22.335 18.2522 0 endloop endfacet - facet normal -0.43355 -0.90113 -0 + facet normal -0.0902677 -0.995918 -0 outer loop - vertex 12.2478 30.6663 0 - vertex 12.1728 30.7024 -0.2 - vertex 12.2478 30.6663 -0.2 + vertex 24.5942 18.0475 0 + vertex 22.335 18.2522 -3 + vertex 24.5942 18.0475 -3 endloop endfacet - facet normal -0.812799 -0.582545 0 + facet normal -0.485131 -0.874442 0 outer loop - vertex 12.291 30.606 -0.2 - vertex 12.2478 30.6663 0 - vertex 12.2478 30.6663 -0.2 + vertex 24.5942 18.0475 -3 + vertex 25.1513 17.7384 0 + vertex 24.5942 18.0475 0 endloop endfacet - facet normal -0.812799 -0.582545 0 + facet normal -0.485131 -0.874442 -0 outer loop - vertex 12.2478 30.6663 0 - vertex 12.291 30.606 -0.2 - vertex 12.291 30.606 0 + vertex 25.1513 17.7384 0 + vertex 24.5942 18.0475 -3 + vertex 25.1513 17.7384 -3 endloop endfacet - facet normal -0.990983 -0.133984 0 + facet normal -0.837387 -0.54661 0 outer loop - vertex 12.3025 30.5214 -0.2 - vertex 12.291 30.606 0 - vertex 12.291 30.606 -0.2 + vertex 25.4738 17.2443 -3 + vertex 25.1513 17.7384 0 + vertex 25.1513 17.7384 -3 endloop endfacet - facet normal -0.990983 -0.133984 0 + facet normal -0.837387 -0.54661 0 outer loop - vertex 12.291 30.606 0 - vertex 12.3025 30.5214 -0.2 - vertex 12.3025 30.5214 0 + vertex 25.1513 17.7384 0 + vertex 25.4738 17.2443 -3 + vertex 25.4738 17.2443 0 endloop endfacet - facet normal -0.983093 0.183105 0 + facet normal -0.875441 -0.483325 0 outer loop - vertex 12.2821 30.4122 -0.2 - vertex 12.3025 30.5214 0 - vertex 12.3025 30.5214 -0.2 + vertex 25.704 16.8274 -3 + vertex 25.4738 17.2443 0 + vertex 25.4738 17.2443 -3 endloop endfacet - facet normal -0.983093 0.183105 0 + facet normal -0.875441 -0.483325 0 outer loop - vertex 12.3025 30.5214 0 - vertex 12.2821 30.4122 -0.2 - vertex 12.2821 30.4122 0 + vertex 25.4738 17.2443 0 + vertex 25.704 16.8274 -3 + vertex 25.704 16.8274 0 endloop endfacet - facet normal -0.931822 0.362917 0 + facet normal -0.34429 -0.938863 0 outer loop - vertex 12.23 30.2784 -0.2 - vertex 12.2821 30.4122 0 - vertex 12.2821 30.4122 -0.2 + vertex 25.704 16.8274 -3 + vertex 25.8979 16.7563 0 + vertex 25.704 16.8274 0 endloop endfacet - facet normal -0.931822 0.362917 0 + facet normal -0.34429 -0.938863 -0 outer loop - vertex 12.2821 30.4122 0 - vertex 12.23 30.2784 -0.2 - vertex 12.23 30.2784 0 + vertex 25.8979 16.7563 0 + vertex 25.704 16.8274 -3 + vertex 25.8979 16.7563 -3 endloop endfacet - facet normal -0.863735 0.503946 0 + facet normal 0.976922 -0.213594 0 outer loop - vertex 12.0304 29.9363 -0.2 - vertex 12.23 30.2784 0 - vertex 12.23 30.2784 -0.2 + vertex 25.8979 16.7563 0 + vertex 26.0816 17.5963 -3 + vertex 26.0816 17.5963 0 endloop endfacet - facet normal -0.863735 0.503946 0 + facet normal 0.976922 -0.213594 0 outer loop - vertex 12.23 30.2784 0 - vertex 12.0304 29.9363 -0.2 - vertex 12.0304 29.9363 0 + vertex 26.0816 17.5963 -3 + vertex 25.8979 16.7563 0 + vertex 25.8979 16.7563 -3 endloop endfacet - facet normal -0.874405 0.485196 0 + facet normal 0.991357 0.131195 0 outer loop - vertex 11.965 29.8184 -0.2 - vertex 12.0304 29.9363 0 - vertex 12.0304 29.9363 -0.2 + vertex 26.0816 17.5963 0 + vertex 25.9892 18.2943 -3 + vertex 25.9892 18.2943 0 endloop endfacet - facet normal -0.874405 0.485196 0 + facet normal 0.991357 0.131195 0 outer loop - vertex 12.0304 29.9363 0 - vertex 11.965 29.8184 -0.2 - vertex 11.965 29.8184 0 + vertex 25.9892 18.2943 -3 + vertex 26.0816 17.5963 0 + vertex 26.0816 17.5963 -3 endloop endfacet - facet normal -0.930071 0.367381 0 + facet normal 0.907716 0.419585 0 outer loop - vertex 11.9082 29.6745 -0.2 - vertex 11.965 29.8184 0 - vertex 11.965 29.8184 -0.2 + vertex 25.9892 18.2943 0 + vertex 25.7331 18.8483 -3 + vertex 25.7331 18.8483 0 endloop endfacet - facet normal -0.930071 0.367381 0 + facet normal 0.907716 0.419585 0 outer loop - vertex 11.965 29.8184 0 - vertex 11.9082 29.6745 -0.2 - vertex 11.9082 29.6745 0 + vertex 25.7331 18.8483 -3 + vertex 25.9892 18.2943 0 + vertex 25.9892 18.2943 -3 endloop endfacet - facet normal -0.970384 0.241567 0 + facet normal 0.685144 0.728407 -0 outer loop - vertex 11.8205 29.3224 -0.2 - vertex 11.9082 29.6745 0 - vertex 11.9082 29.6745 -0.2 + vertex 25.7331 18.8483 -3 + vertex 25.3447 19.2137 0 + vertex 25.7331 18.8483 0 endloop endfacet - facet normal -0.970384 0.241567 0 + facet normal 0.685144 0.728407 0 outer loop - vertex 11.9082 29.6745 0 - vertex 11.8205 29.3224 -0.2 - vertex 11.8205 29.3224 0 + vertex 25.3447 19.2137 0 + vertex 25.7331 18.8483 -3 + vertex 25.3447 19.2137 -3 endloop endfacet - facet normal -0.99199 0.126319 0 + facet normal 0.260028 0.965601 -0 outer loop - vertex 11.7675 28.9061 -0.2 - vertex 11.8205 29.3224 0 - vertex 11.8205 29.3224 -0.2 + vertex 25.3447 19.2137 -3 + vertex 24.8554 19.3454 0 + vertex 25.3447 19.2137 0 endloop endfacet - facet normal -0.99199 0.126319 0 + facet normal 0.260028 0.965601 0 outer loop - vertex 11.8205 29.3224 0 - vertex 11.7675 28.9061 -0.2 - vertex 11.7675 28.9061 0 + vertex 24.8554 19.3454 0 + vertex 25.3447 19.2137 -3 + vertex 24.8554 19.3454 -3 endloop endfacet - facet normal -0.999189 0.0402694 0 + facet normal 0.225805 0.974172 -0 outer loop - vertex 11.7492 28.4518 -0.2 - vertex 11.7675 28.9061 0 - vertex 11.7675 28.9061 -0.2 + vertex 24.8554 19.3454 -3 + vertex 23.3909 19.6849 0 + vertex 24.8554 19.3454 0 endloop endfacet - facet normal -0.999189 0.0402694 0 + facet normal 0.225805 0.974172 0 outer loop - vertex 11.7675 28.9061 0 - vertex 11.7492 28.4518 -0.2 - vertex 11.7492 28.4518 0 + vertex 23.3909 19.6849 0 + vertex 24.8554 19.3454 -3 + vertex 23.3909 19.6849 -3 endloop endfacet - facet normal -0.999377 -0.0352801 0 + facet normal 0.432873 0.901455 -0 outer loop - vertex 11.7656 27.9858 -0.2 - vertex 11.7492 28.4518 0 - vertex 11.7492 28.4518 -0.2 + vertex 23.3909 19.6849 -3 + vertex 22.6368 20.047 0 + vertex 23.3909 19.6849 0 endloop endfacet - facet normal -0.999377 -0.0352801 0 + facet normal 0.432873 0.901455 0 outer loop - vertex 11.7492 28.4518 0 - vertex 11.7656 27.9858 -0.2 - vertex 11.7656 27.9858 0 + vertex 22.6368 20.047 0 + vertex 23.3909 19.6849 -3 + vertex 22.6368 20.047 -3 endloop endfacet - facet normal -0.993617 -0.112806 0 + facet normal 0.698531 0.71558 -0 outer loop - vertex 11.8169 27.5343 -0.2 - vertex 11.7656 27.9858 0 - vertex 11.7656 27.9858 -0.2 + vertex 22.6368 20.047 -3 + vertex 22.0911 20.5797 0 + vertex 22.6368 20.047 0 endloop endfacet - facet normal -0.993617 -0.112806 0 + facet normal 0.698531 0.71558 0 outer loop - vertex 11.7656 27.9858 0 - vertex 11.8169 27.5343 -0.2 - vertex 11.8169 27.5343 0 + vertex 22.0911 20.5797 0 + vertex 22.6368 20.047 -3 + vertex 22.0911 20.5797 -3 endloop endfacet - facet normal -0.978727 -0.205168 0 + facet normal 0.897086 0.441856 0 outer loop - vertex 11.903 27.1234 -0.2 - vertex 11.8169 27.5343 0 - vertex 11.8169 27.5343 -0.2 + vertex 22.0911 20.5797 0 + vertex 21.7245 21.3239 -3 + vertex 21.7245 21.3239 0 endloop endfacet - facet normal -0.978727 -0.205168 0 + facet normal 0.897086 0.441856 0 outer loop - vertex 11.8169 27.5343 0 - vertex 11.903 27.1234 -0.2 - vertex 11.903 27.1234 0 + vertex 21.7245 21.3239 -3 + vertex 22.0911 20.5797 0 + vertex 22.0911 20.5797 -3 endloop endfacet - facet normal -0.943297 -0.331951 0 + facet normal 0.977198 0.212332 0 outer loop - vertex 12.0241 26.7794 -0.2 - vertex 11.903 27.1234 0 - vertex 11.903 27.1234 -0.2 + vertex 21.7245 21.3239 0 + vertex 21.508 22.3204 -3 + vertex 21.508 22.3204 0 endloop endfacet - facet normal -0.943297 -0.331951 0 + facet normal 0.977198 0.212332 0 outer loop - vertex 11.903 27.1234 0 - vertex 12.0241 26.7794 -0.2 - vertex 12.0241 26.7794 0 + vertex 21.508 22.3204 -3 + vertex 21.7245 21.3239 0 + vertex 21.7245 21.3239 -3 endloop endfacet - facet normal -0.895057 -0.445953 0 + facet normal 0.966755 0.255705 0 outer loop - vertex 12.1339 26.5589 -0.2 - vertex 12.0241 26.7794 0 - vertex 12.0241 26.7794 -0.2 + vertex 21.508 22.3204 0 + vertex 21.2518 23.2891 -3 + vertex 21.2518 23.2891 0 endloop endfacet - facet normal -0.895057 -0.445953 0 + facet normal 0.966755 0.255705 0 outer loop - vertex 12.0241 26.7794 0 - vertex 12.1339 26.5589 -0.2 - vertex 12.1339 26.5589 0 + vertex 21.2518 23.2891 -3 + vertex 21.508 22.3204 0 + vertex 21.508 22.3204 -3 endloop endfacet - facet normal -0.859859 -0.510531 0 + facet normal 0.849732 0.527214 0 outer loop - vertex 12.2572 26.3514 -0.2 - vertex 12.1339 26.5589 0 - vertex 12.1339 26.5589 -0.2 + vertex 21.2518 23.2891 0 + vertex 20.762 24.0784 -3 + vertex 20.762 24.0784 0 endloop endfacet - facet normal -0.859859 -0.510531 0 + facet normal 0.849732 0.527214 0 outer loop - vertex 12.1339 26.5589 0 - vertex 12.2572 26.3514 -0.2 - vertex 12.2572 26.3514 0 + vertex 20.762 24.0784 -3 + vertex 21.2518 23.2891 0 + vertex 21.2518 23.2891 -3 endloop endfacet - facet normal -0.813765 -0.581194 0 + facet normal 0.645661 0.763624 -0 outer loop - vertex 12.3979 26.1543 -0.2 - vertex 12.2572 26.3514 0 - vertex 12.2572 26.3514 -0.2 + vertex 20.762 24.0784 -3 + vertex 20.0338 24.6942 0 + vertex 20.762 24.0784 0 endloop endfacet - facet normal -0.813765 -0.581194 0 + facet normal 0.645661 0.763624 0 outer loop - vertex 12.2572 26.3514 0 - vertex 12.3979 26.1543 -0.2 - vertex 12.3979 26.1543 0 + vertex 20.0338 24.6942 0 + vertex 20.762 24.0784 -3 + vertex 20.0338 24.6942 -3 endloop endfacet - facet normal -0.758497 -0.651676 0 + facet normal 0.418642 0.908151 -0 outer loop - vertex 12.5603 25.9653 -0.2 - vertex 12.3979 26.1543 0 - vertex 12.3979 26.1543 -0.2 + vertex 20.0338 24.6942 -3 + vertex 19.062 25.1422 0 + vertex 20.0338 24.6942 0 endloop endfacet - facet normal -0.758497 -0.651676 0 + facet normal 0.418642 0.908151 0 outer loop - vertex 12.3979 26.1543 0 - vertex 12.5603 25.9653 -0.2 - vertex 12.5603 25.9653 0 + vertex 19.062 25.1422 0 + vertex 20.0338 24.6942 -3 + vertex 19.062 25.1422 -3 endloop endfacet - facet normal -0.697934 -0.716162 0 + facet normal 0.419948 0.907548 -0 outer loop - vertex 12.5603 25.9653 -0.2 - vertex 12.7484 25.782 0 - vertex 12.5603 25.9653 0 + vertex 19.062 25.1422 -3 + vertex 17.2513 25.98 0 + vertex 19.062 25.1422 0 endloop endfacet - facet normal -0.697934 -0.716162 -0 + facet normal 0.419948 0.907548 0 outer loop - vertex 12.7484 25.782 0 - vertex 12.5603 25.9653 -0.2 - vertex 12.7484 25.782 -0.2 + vertex 17.2513 25.98 0 + vertex 19.062 25.1422 -3 + vertex 17.2513 25.98 -3 endloop endfacet - facet normal -0.636928 -0.770923 0 + facet normal 0.649834 0.760076 -0 outer loop - vertex 12.7484 25.782 -0.2 - vertex 12.9664 25.6018 0 - vertex 12.7484 25.782 0 + vertex 17.2513 25.98 -3 + vertex 15.7223 27.2873 0 + vertex 17.2513 25.98 0 endloop endfacet - facet normal -0.636928 -0.770923 -0 + facet normal 0.649834 0.760076 0 outer loop - vertex 12.9664 25.6018 0 - vertex 12.7484 25.782 -0.2 - vertex 12.9664 25.6018 -0.2 + vertex 15.7223 27.2873 0 + vertex 17.2513 25.98 -3 + vertex 15.7223 27.2873 -3 endloop endfacet - facet normal -0.579754 -0.814791 0 + facet normal 0.802285 0.596942 0 outer loop - vertex 12.9664 25.6018 -0.2 - vertex 13.2184 25.4225 0 - vertex 12.9664 25.6018 0 + vertex 15.7223 27.2873 0 + vertex 15.122 28.0941 -3 + vertex 15.122 28.0941 0 endloop endfacet - facet normal -0.579754 -0.814791 -0 + facet normal 0.802285 0.596942 0 outer loop - vertex 13.2184 25.4225 0 - vertex 12.9664 25.6018 -0.2 - vertex 13.2184 25.4225 -0.2 + vertex 15.122 28.0941 -3 + vertex 15.7223 27.2873 0 + vertex 15.7223 27.2873 -3 endloop endfacet - facet normal -0.529164 -0.84852 0 + facet normal 0.997794 0.066389 0 outer loop - vertex 13.2184 25.4225 -0.2 - vertex 13.5086 25.2416 0 - vertex 13.2184 25.4225 0 + vertex 15.122 28.0941 0 + vertex 15.0577 29.0611 -3 + vertex 15.0577 29.0611 0 endloop endfacet - facet normal -0.529164 -0.84852 -0 + facet normal 0.997794 0.066389 0 outer loop - vertex 13.5086 25.2416 0 - vertex 13.2184 25.4225 -0.2 - vertex 13.5086 25.2416 -0.2 + vertex 15.0577 29.0611 -3 + vertex 15.122 28.0941 0 + vertex 15.122 28.0941 -3 endloop endfacet - facet normal -0.467835 -0.883816 0 + facet normal 0.991125 -0.132935 0 outer loop - vertex 13.5086 25.2416 -0.2 - vertex 14.2197 24.8651 0 - vertex 13.5086 25.2416 0 + vertex 15.0577 29.0611 0 + vertex 15.1584 29.8123 -3 + vertex 15.1584 29.8123 0 endloop endfacet - facet normal -0.467835 -0.883816 -0 + facet normal 0.991125 -0.132935 0 outer loop - vertex 14.2197 24.8651 0 - vertex 13.5086 25.2416 -0.2 - vertex 14.2197 24.8651 -0.2 + vertex 15.1584 29.8123 -3 + vertex 15.0577 29.0611 0 + vertex 15.0577 29.0611 -3 endloop endfacet - facet normal -0.411276 -0.911511 0 + facet normal 0.868998 -0.494816 0 outer loop - vertex 14.2197 24.8651 -0.2 - vertex 15.1328 24.4531 0 - vertex 14.2197 24.8651 0 + vertex 15.1584 29.8123 0 + vertex 15.3134 30.0845 -3 + vertex 15.3134 30.0845 0 endloop endfacet - facet normal -0.411276 -0.911511 -0 + facet normal 0.868998 -0.494816 0 outer loop - vertex 15.1328 24.4531 0 - vertex 14.2197 24.8651 -0.2 - vertex 15.1328 24.4531 -0.2 + vertex 15.3134 30.0845 -3 + vertex 15.1584 29.8123 0 + vertex 15.1584 29.8123 -3 endloop endfacet - facet normal -0.376758 -0.926312 0 + facet normal -0.793235 -0.608916 0 outer loop - vertex 15.1328 24.4531 -0.2 - vertex 16.2809 23.9862 0 - vertex 15.1328 24.4531 0 + vertex 15.4783 29.8698 -3 + vertex 15.3134 30.0845 0 + vertex 15.3134 30.0845 -3 endloop endfacet - facet normal -0.376758 -0.926312 -0 + facet normal -0.793235 -0.608916 0 outer loop - vertex 16.2809 23.9862 0 - vertex 15.1328 24.4531 -0.2 - vertex 16.2809 23.9862 -0.2 + vertex 15.3134 30.0845 0 + vertex 15.4783 29.8698 -3 + vertex 15.4783 29.8698 0 endloop endfacet - facet normal -0.357069 -0.934078 0 + facet normal -0.983592 -0.18041 0 outer loop - vertex 16.2809 23.9862 -0.2 - vertex 17.6969 23.4449 0 - vertex 16.2809 23.9862 0 + vertex 15.6084 29.1601 -3 + vertex 15.4783 29.8698 0 + vertex 15.4783 29.8698 -3 endloop endfacet - facet normal -0.357069 -0.934078 -0 + facet normal -0.983592 -0.18041 0 outer loop - vertex 17.6969 23.4449 0 - vertex 16.2809 23.9862 -0.2 - vertex 17.6969 23.4449 -0.2 + vertex 15.4783 29.8698 0 + vertex 15.6084 29.1601 -3 + vertex 15.6084 29.1601 0 endloop endfacet - facet normal -0.423576 -0.90586 0 + facet normal -0.973498 -0.228694 0 outer loop - vertex 17.6969 23.4449 -0.2 - vertex 17.9883 23.3086 0 - vertex 17.6969 23.4449 0 + vertex 15.808 28.3106 -3 + vertex 15.6084 29.1601 0 + vertex 15.6084 29.1601 -3 endloop endfacet - facet normal -0.423576 -0.90586 -0 + facet normal -0.973498 -0.228694 0 outer loop - vertex 17.9883 23.3086 0 - vertex 17.6969 23.4449 -0.2 - vertex 17.9883 23.3086 -0.2 + vertex 15.6084 29.1601 0 + vertex 15.808 28.3106 -3 + vertex 15.808 28.3106 0 endloop endfacet - facet normal -0.513377 -0.858163 0 + facet normal -0.833811 -0.55205 0 outer loop - vertex 17.9883 23.3086 -0.2 - vertex 18.318 23.1114 0 - vertex 17.9883 23.3086 0 + vertex 16.2688 27.6146 -3 + vertex 15.808 28.3106 0 + vertex 15.808 28.3106 -3 endloop endfacet - facet normal -0.513377 -0.858163 -0 + facet normal -0.833811 -0.55205 0 outer loop - vertex 18.318 23.1114 0 - vertex 17.9883 23.3086 -0.2 - vertex 18.318 23.1114 -0.2 + vertex 15.808 28.3106 0 + vertex 16.2688 27.6146 -3 + vertex 16.2688 27.6146 0 endloop endfacet - facet normal -0.57768 -0.816263 0 + facet normal -0.616484 -0.787368 0 outer loop - vertex 18.318 23.1114 -0.2 - vertex 18.6454 22.8797 0 - vertex 18.318 23.1114 0 + vertex 16.2688 27.6146 -3 + vertex 17.0772 26.9817 0 + vertex 16.2688 27.6146 0 endloop endfacet - facet normal -0.57768 -0.816263 -0 + facet normal -0.616484 -0.787368 -0 outer loop - vertex 18.6454 22.8797 0 - vertex 18.318 23.1114 -0.2 - vertex 18.6454 22.8797 -0.2 + vertex 17.0772 26.9817 0 + vertex 16.2688 27.6146 -3 + vertex 17.0772 26.9817 -3 endloop endfacet - facet normal -0.644197 -0.76486 0 + facet normal -0.469274 -0.883053 0 outer loop - vertex 18.6454 22.8797 -0.2 - vertex 18.9302 22.6398 0 - vertex 18.6454 22.8797 0 + vertex 17.0772 26.9817 -3 + vertex 18.3193 26.3216 0 + vertex 17.0772 26.9817 0 endloop endfacet - facet normal -0.644197 -0.76486 -0 + facet normal -0.469274 -0.883053 -0 outer loop - vertex 18.9302 22.6398 0 - vertex 18.6454 22.8797 -0.2 - vertex 18.9302 22.6398 -0.2 + vertex 18.3193 26.3216 0 + vertex 17.0772 26.9817 -3 + vertex 18.3193 26.3216 -3 endloop endfacet - facet normal -0.705164 -0.709044 0 + facet normal -0.453671 -0.891169 0 outer loop - vertex 18.9302 22.6398 -0.2 - vertex 19.108 22.463 0 - vertex 18.9302 22.6398 0 + vertex 18.3193 26.3216 -3 + vertex 20.1819 25.3734 0 + vertex 18.3193 26.3216 0 endloop endfacet - facet normal -0.705164 -0.709044 -0 + facet normal -0.453671 -0.891169 -0 outer loop - vertex 19.108 22.463 0 - vertex 18.9302 22.6398 -0.2 - vertex 19.108 22.463 -0.2 + vertex 20.1819 25.3734 0 + vertex 18.3193 26.3216 -3 + vertex 20.1819 25.3734 -3 endloop endfacet - facet normal -0.763943 -0.645283 0 + facet normal -0.592966 -0.805227 0 outer loop - vertex 19.2511 22.2936 -0.2 - vertex 19.108 22.463 0 - vertex 19.108 22.463 -0.2 + vertex 20.1819 25.3734 -3 + vertex 21.2755 24.568 0 + vertex 20.1819 25.3734 0 endloop endfacet - facet normal -0.763943 -0.645283 0 + facet normal -0.592966 -0.805227 -0 outer loop - vertex 19.108 22.463 0 - vertex 19.2511 22.2936 -0.2 - vertex 19.2511 22.2936 0 + vertex 21.2755 24.568 0 + vertex 20.1819 25.3734 -3 + vertex 21.2755 24.568 -3 endloop endfacet - facet normal -0.840155 -0.542346 0 + facet normal -0.85116 -0.524906 0 outer loop - vertex 19.3646 22.1178 -0.2 - vertex 19.2511 22.2936 0 - vertex 19.2511 22.2936 -0.2 + vertex 21.8319 23.6658 -3 + vertex 21.2755 24.568 0 + vertex 21.2755 24.568 -3 endloop endfacet - facet normal -0.840155 -0.542346 0 + facet normal -0.85116 -0.524906 0 outer loop - vertex 19.2511 22.2936 0 - vertex 19.3646 22.1178 -0.2 - vertex 19.3646 22.1178 0 + vertex 21.2755 24.568 0 + vertex 21.8319 23.6658 -3 + vertex 21.8319 23.6658 0 endloop endfacet - facet normal -0.910423 -0.413678 0 + facet normal -0.980126 -0.198375 0 outer loop - vertex 19.4538 21.9215 -0.2 - vertex 19.3646 22.1178 0 - vertex 19.3646 22.1178 -0.2 + vertex 22.0827 22.427 -3 + vertex 21.8319 23.6658 0 + vertex 21.8319 23.6658 -3 endloop endfacet - facet normal -0.910423 -0.413678 0 + facet normal -0.980126 -0.198375 0 outer loop - vertex 19.3646 22.1178 0 - vertex 19.4538 21.9215 -0.2 - vertex 19.4538 21.9215 0 + vertex 21.8319 23.6658 0 + vertex 22.0827 22.427 -3 + vertex 22.0827 22.427 0 endloop endfacet - facet normal -0.956843 -0.290607 0 + facet normal -0.975671 -0.219241 0 outer loop - vertex 19.5238 21.6908 -0.2 - vertex 19.4538 21.9215 0 - vertex 19.4538 21.9215 -0.2 + vertex 22.2698 21.5943 -3 + vertex 22.0827 22.427 0 + vertex 22.0827 22.427 -3 endloop endfacet - facet normal -0.956843 -0.290607 0 + facet normal -0.975671 -0.219241 0 outer loop - vertex 19.4538 21.9215 0 - vertex 19.5238 21.6908 -0.2 - vertex 19.5238 21.6908 0 + vertex 22.0827 22.427 0 + vertex 22.2698 21.5943 -3 + vertex 22.2698 21.5943 0 endloop endfacet - facet normal -0.980355 -0.19724 0 + facet normal -0.867972 -0.496613 0 outer loop - vertex 19.58 21.4118 -0.2 - vertex 19.5238 21.6908 0 - vertex 19.5238 21.6908 -0.2 + vertex 22.6169 20.9877 -3 + vertex 22.2698 21.5943 0 + vertex 22.2698 21.5943 -3 endloop endfacet - facet normal -0.980355 -0.19724 0 + facet normal -0.867972 -0.496613 0 outer loop - vertex 19.5238 21.6908 0 - vertex 19.58 21.4118 -0.2 - vertex 19.58 21.4118 0 + vertex 22.2698 21.5943 0 + vertex 22.6169 20.9877 -3 + vertex 22.6169 20.9877 0 endloop endfacet - facet normal -0.992839 -0.119457 0 + facet normal -0.60611 -0.795381 0 outer loop - vertex 19.6713 20.6529 -0.2 - vertex 19.58 21.4118 0 - vertex 19.58 21.4118 -0.2 + vertex 22.6169 20.9877 -3 + vertex 23.1387 20.59 0 + vertex 22.6169 20.9877 0 endloop endfacet - facet normal -0.992839 -0.119457 0 + facet normal -0.60611 -0.795381 -0 outer loop - vertex 19.58 21.4118 0 - vertex 19.6713 20.6529 -0.2 - vertex 19.6713 20.6529 0 + vertex 23.1387 20.59 0 + vertex 22.6169 20.9877 -3 + vertex 23.1387 20.59 -3 endloop endfacet - facet normal -0.994314 -0.106485 0 + facet normal -0.277742 -0.960656 0 outer loop - vertex 19.753 19.8896 -0.2 - vertex 19.6713 20.6529 0 - vertex 19.6713 20.6529 -0.2 + vertex 23.1387 20.59 -3 + vertex 23.8499 20.3844 0 + vertex 23.1387 20.59 0 endloop endfacet - facet normal -0.994314 -0.106485 0 + facet normal -0.277742 -0.960656 -0 outer loop - vertex 19.6713 20.6529 0 - vertex 19.753 19.8896 -0.2 - vertex 19.753 19.8896 0 + vertex 23.8499 20.3844 0 + vertex 23.1387 20.59 -3 + vertex 23.8499 20.3844 -3 endloop endfacet - facet normal -0.985782 -0.168027 0 + facet normal -0.253903 -0.96723 0 outer loop - vertex 19.8522 19.3078 -0.2 - vertex 19.753 19.8896 0 - vertex 19.753 19.8896 -0.2 + vertex 23.8499 20.3844 -3 + vertex 25.0752 20.0627 0 + vertex 23.8499 20.3844 0 endloop endfacet - facet normal -0.985782 -0.168027 0 + facet normal -0.253903 -0.96723 -0 outer loop - vertex 19.753 19.8896 0 - vertex 19.8522 19.3078 -0.2 - vertex 19.8522 19.3078 0 + vertex 25.0752 20.0627 0 + vertex 23.8499 20.3844 -3 + vertex 25.0752 20.0627 -3 endloop endfacet - facet normal -0.962825 -0.270127 0 + facet normal -0.555295 -0.831654 0 outer loop - vertex 19.9169 19.0772 -0.2 - vertex 19.8522 19.3078 0 - vertex 19.8522 19.3078 -0.2 + vertex 25.0752 20.0627 -3 + vertex 25.9424 19.4837 0 + vertex 25.0752 20.0627 0 endloop endfacet - facet normal -0.962825 -0.270127 0 + facet normal -0.555295 -0.831654 -0 outer loop - vertex 19.8522 19.3078 0 - vertex 19.9169 19.0772 -0.2 - vertex 19.9169 19.0772 0 + vertex 25.9424 19.4837 0 + vertex 25.0752 20.0627 -3 + vertex 25.9424 19.4837 -3 endloop endfacet - facet normal -0.925898 -0.377775 0 + facet normal -0.850459 -0.526041 0 outer loop - vertex 19.9962 18.8829 -0.2 - vertex 19.9169 19.0772 0 - vertex 19.9169 19.0772 -0.2 + vertex 26.4742 18.624 -3 + vertex 25.9424 19.4837 0 + vertex 25.9424 19.4837 -3 endloop endfacet - facet normal -0.925898 -0.377775 0 + facet normal -0.850459 -0.526041 0 outer loop - vertex 19.9169 19.0772 0 - vertex 19.9962 18.8829 -0.2 - vertex 19.9962 18.8829 0 + vertex 25.9424 19.4837 0 + vertex 26.4742 18.624 -3 + vertex 26.4742 18.624 0 endloop endfacet - facet normal -0.85612 -0.516776 0 + facet normal -0.982731 -0.185042 0 outer loop - vertex 20.0935 18.7216 -0.2 - vertex 19.9962 18.8829 0 - vertex 19.9962 18.8829 -0.2 + vertex 26.6933 17.4601 -3 + vertex 26.4742 18.624 0 + vertex 26.4742 18.624 -3 endloop endfacet - facet normal -0.85612 -0.516776 0 + facet normal -0.982731 -0.185042 0 outer loop - vertex 19.9962 18.8829 0 - vertex 20.0935 18.7216 -0.2 - vertex 20.0935 18.7216 0 + vertex 26.4742 18.624 0 + vertex 26.6933 17.4601 -3 + vertex 26.6933 17.4601 0 endloop endfacet - facet normal -0.741357 -0.67111 0 + facet normal -0.95811 -0.286401 0 outer loop - vertex 20.2124 18.5903 -0.2 - vertex 20.0935 18.7216 0 - vertex 20.0935 18.7216 -0.2 + vertex 27.1755 15.8473 -3 + vertex 26.6933 17.4601 0 + vertex 26.6933 17.4601 -3 endloop endfacet - facet normal -0.741357 -0.67111 0 + facet normal -0.95811 -0.286401 0 outer loop - vertex 20.0935 18.7216 0 - vertex 20.2124 18.5903 -0.2 - vertex 20.2124 18.5903 0 + vertex 26.6933 17.4601 0 + vertex 27.1755 15.8473 -3 + vertex 27.1755 15.8473 0 endloop endfacet - facet normal -0.587422 -0.809281 0 + facet normal -0.948381 -0.317134 0 outer loop - vertex 20.2124 18.5903 -0.2 - vertex 20.3561 18.486 0 - vertex 20.2124 18.5903 0 + vertex 27.5422 14.7505 -3 + vertex 27.1755 15.8473 0 + vertex 27.1755 15.8473 -3 endloop endfacet - facet normal -0.587422 -0.809281 -0 + facet normal -0.948381 -0.317134 0 outer loop - vertex 20.3561 18.486 0 - vertex 20.2124 18.5903 -0.2 - vertex 20.3561 18.486 -0.2 + vertex 27.1755 15.8473 0 + vertex 27.5422 14.7505 -3 + vertex 27.5422 14.7505 0 endloop endfacet - facet normal -0.423563 -0.905867 0 + facet normal -0.999642 -0.0267694 0 outer loop - vertex 20.3561 18.486 -0.2 - vertex 20.5281 18.4055 0 - vertex 20.3561 18.486 0 + vertex 27.6094 12.2412 -3 + vertex 27.5422 14.7505 0 + vertex 27.5422 14.7505 -3 endloop endfacet - facet normal -0.423563 -0.905867 -0 + facet normal -0.999642 -0.0267694 0 outer loop - vertex 20.5281 18.4055 0 - vertex 20.3561 18.486 -0.2 - vertex 20.5281 18.4055 -0.2 + vertex 27.5422 14.7505 0 + vertex 27.6094 12.2412 -3 + vertex 27.6094 12.2412 0 endloop endfacet - facet normal -0.280888 -0.95974 0 + facet normal -0.999486 0.0320667 0 outer loop - vertex 20.5281 18.4055 -0.2 - vertex 20.7319 18.3459 0 - vertex 20.5281 18.4055 0 + vertex 27.528 9.70386 -3 + vertex 27.6094 12.2412 0 + vertex 27.6094 12.2412 -3 endloop endfacet - facet normal -0.280888 -0.95974 -0 + facet normal -0.999486 0.0320667 0 outer loop - vertex 20.7319 18.3459 0 - vertex 20.5281 18.4055 -0.2 - vertex 20.7319 18.3459 -0.2 + vertex 27.6094 12.2412 0 + vertex 27.528 9.70386 -3 + vertex 27.528 9.70386 0 endloop endfacet - facet normal -0.172751 -0.984966 0 + facet normal -0.981091 0.193547 0 outer loop - vertex 20.7319 18.3459 -0.2 - vertex 20.9709 18.304 0 - vertex 20.7319 18.3459 0 + vertex 27.209 8.08714 -3 + vertex 27.528 9.70386 0 + vertex 27.528 9.70386 -3 endloop endfacet - facet normal -0.172751 -0.984966 -0 + facet normal -0.981091 0.193547 0 outer loop - vertex 20.9709 18.304 0 - vertex 20.7319 18.3459 -0.2 - vertex 20.9709 18.304 -0.2 + vertex 27.528 9.70386 0 + vertex 27.209 8.08714 -3 + vertex 27.209 8.08714 0 endloop endfacet - facet normal -0.0716809 -0.997428 0 + facet normal -0.980935 0.194337 0 outer loop - vertex 20.9709 18.304 -0.2 - vertex 21.5679 18.2611 0 - vertex 20.9709 18.304 0 + vertex 26.8985 6.51977 -3 + vertex 27.209 8.08714 0 + vertex 27.209 8.08714 -3 endloop endfacet - facet normal -0.0716809 -0.997428 -0 + facet normal -0.980935 0.194337 0 outer loop - vertex 21.5679 18.2611 0 - vertex 20.9709 18.304 -0.2 - vertex 21.5679 18.2611 -0.2 + vertex 27.209 8.08714 0 + vertex 26.8985 6.51977 -3 + vertex 26.8985 6.51977 0 endloop endfacet - facet normal -0.0113554 -0.999936 0 + facet normal -0.999971 -0.00756314 0 outer loop - vertex 21.5679 18.2611 -0.2 - vertex 22.3468 18.2522 0 - vertex 21.5679 18.2611 0 + vertex 26.9177 3.98634 -3 + vertex 26.8985 6.51977 0 + vertex 26.8985 6.51977 -3 endloop endfacet - facet normal -0.0113554 -0.999936 -0 + facet normal -0.999971 -0.00756314 0 outer loop - vertex 22.3468 18.2522 0 - vertex 21.5679 18.2611 -0.2 - vertex 22.3468 18.2522 -0.2 + vertex 26.8985 6.51977 0 + vertex 26.9177 3.98634 -3 + vertex 26.9177 3.98634 0 endloop endfacet - facet normal -0.0142554 -0.999898 0 + facet normal -0.999812 -0.0193848 0 outer loop - vertex 22.3468 18.2522 -0.2 - vertex 23.0891 18.2417 0 - vertex 22.3468 18.2522 0 + vertex 26.953 2.16551 -3 + vertex 26.9177 3.98634 0 + vertex 26.9177 3.98634 -3 endloop endfacet - facet normal -0.0142554 -0.999898 -0 + facet normal -0.999812 -0.0193848 0 outer loop - vertex 23.0891 18.2417 0 - vertex 22.3468 18.2522 -0.2 - vertex 23.0891 18.2417 -0.2 + vertex 26.9177 3.98634 0 + vertex 26.953 2.16551 -3 + vertex 26.953 2.16551 0 endloop endfacet - facet normal -0.0563557 -0.998411 0 + facet normal -0.99253 0.121998 0 outer loop - vertex 23.0891 18.2417 -0.2 - vertex 23.7039 18.207 0 - vertex 23.0891 18.2417 0 + vertex 26.8464 1.29842 -3 + vertex 26.953 2.16551 0 + vertex 26.953 2.16551 -3 endloop endfacet - facet normal -0.0563557 -0.998411 -0 + facet normal -0.99253 0.121998 0 outer loop - vertex 23.7039 18.207 0 - vertex 23.0891 18.2417 -0.2 - vertex 23.7039 18.207 -0.2 + vertex 26.953 2.16551 0 + vertex 26.8464 1.29842 -3 + vertex 26.8464 1.29842 0 endloop endfacet - facet normal -0.125256 -0.992124 0 + facet normal -0.673406 0.739273 0 outer loop - vertex 23.7039 18.207 -0.2 - vertex 24.2049 18.1437 0 - vertex 23.7039 18.207 0 + vertex 26.8464 1.29842 -3 + vertex 26.7235 1.18648 0 + vertex 26.8464 1.29842 0 endloop endfacet - facet normal -0.125256 -0.992124 -0 + facet normal -0.673406 0.739273 0 outer loop - vertex 24.2049 18.1437 0 - vertex 23.7039 18.207 -0.2 - vertex 24.2049 18.1437 -0.2 + vertex 26.7235 1.18648 0 + vertex 26.8464 1.29842 -3 + vertex 26.7235 1.18648 -3 endloop endfacet - facet normal -0.233347 -0.972393 0 + facet normal 0.423462 0.905914 -0 outer loop - vertex 24.2049 18.1437 -0.2 - vertex 24.6059 18.0475 0 - vertex 24.2049 18.1437 0 + vertex 26.7235 1.18648 -3 + vertex 26.5455 1.2697 0 + vertex 26.7235 1.18648 0 endloop endfacet - facet normal -0.233347 -0.972393 -0 + facet normal 0.423462 0.905914 0 outer loop - vertex 24.6059 18.0475 0 - vertex 24.2049 18.1437 -0.2 - vertex 24.6059 18.0475 -0.2 + vertex 26.5455 1.2697 0 + vertex 26.7235 1.18648 -3 + vertex 26.5455 1.2697 -3 endloop endfacet - facet normal -0.390765 -0.920491 0 + facet normal 0.785068 0.61941 0 outer loop - vertex 24.6059 18.0475 -0.2 - vertex 24.9207 17.9138 0 - vertex 24.6059 18.0475 0 + vertex 26.5455 1.2697 0 + vertex 25.9977 1.96397 -3 + vertex 25.9977 1.96397 0 endloop endfacet - facet normal -0.390765 -0.920491 -0 + facet normal 0.785068 0.61941 0 outer loop - vertex 24.9207 17.9138 0 - vertex 24.6059 18.0475 -0.2 - vertex 24.9207 17.9138 -0.2 + vertex 25.9977 1.96397 -3 + vertex 26.5455 1.2697 0 + vertex 26.5455 1.2697 -3 endloop endfacet - facet normal -0.536417 -0.843953 0 + facet normal 0.724168 0.689624 0 outer loop - vertex 24.9207 17.9138 -0.2 - vertex 25.0501 17.8316 0 - vertex 24.9207 17.9138 0 + vertex 25.9977 1.96397 0 + vertex 25.3153 2.68052 -3 + vertex 25.3153 2.68052 0 endloop endfacet - facet normal -0.536417 -0.843953 -0 + facet normal 0.724168 0.689624 0 outer loop - vertex 25.0501 17.8316 0 - vertex 24.9207 17.9138 -0.2 - vertex 25.0501 17.8316 -0.2 + vertex 25.3153 2.68052 -3 + vertex 25.9977 1.96397 0 + vertex 25.9977 1.96397 -3 endloop endfacet - facet normal -0.636483 -0.77129 0 + facet normal -0.00319409 0.999995 0 outer loop - vertex 25.0501 17.8316 -0.2 - vertex 25.163 17.7384 0 - vertex 25.0501 17.8316 0 + vertex 25.3153 2.68052 -3 + vertex 25.0347 2.67962 0 + vertex 25.3153 2.68052 0 endloop endfacet - facet normal -0.636483 -0.77129 -0 + facet normal -0.00319409 0.999995 0 outer loop - vertex 25.163 17.7384 0 - vertex 25.0501 17.8316 -0.2 - vertex 25.163 17.7384 -0.2 + vertex 25.0347 2.67962 0 + vertex 25.3153 2.68052 -3 + vertex 25.0347 2.67962 -3 endloop endfacet - facet normal -0.729305 -0.684189 0 + facet normal -0.620982 0.783825 0 outer loop - vertex 25.2614 17.6336 -0.2 - vertex 25.163 17.7384 0 - vertex 25.163 17.7384 -0.2 + vertex 25.0347 2.67962 -3 + vertex 24.7523 2.4559 0 + vertex 25.0347 2.67962 0 endloop endfacet - facet normal -0.729305 -0.684189 0 + facet normal -0.620982 0.783825 0 outer loop - vertex 25.163 17.7384 0 - vertex 25.2614 17.6336 -0.2 - vertex 25.2614 17.6336 0 + vertex 24.7523 2.4559 0 + vertex 25.0347 2.67962 -3 + vertex 24.7523 2.4559 -3 endloop endfacet - facet normal -0.807579 -0.589759 0 + facet normal -0.356176 0.934419 0 outer loop - vertex 25.3467 17.5167 -0.2 - vertex 25.2614 17.6336 0 - vertex 25.2614 17.6336 -0.2 + vertex 24.7523 2.4559 -3 + vertex 23.9858 2.16372 0 + vertex 24.7523 2.4559 0 endloop endfacet - facet normal -0.807579 -0.589759 0 + facet normal -0.356176 0.934419 0 outer loop - vertex 25.2614 17.6336 0 - vertex 25.3467 17.5167 -0.2 - vertex 25.3467 17.5167 0 + vertex 23.9858 2.16372 0 + vertex 24.7523 2.4559 -3 + vertex 23.9858 2.16372 -3 endloop endfacet - facet normal -0.890947 -0.454107 0 + facet normal -0.21204 0.977261 0 outer loop - vertex 25.4856 17.2443 -0.2 - vertex 25.3467 17.5167 0 - vertex 25.3467 17.5167 -0.2 + vertex 23.9858 2.16372 -3 + vertex 23.1222 1.97635 0 + vertex 23.9858 2.16372 0 endloop endfacet - facet normal -0.890947 -0.454107 0 + facet normal -0.21204 0.977261 0 outer loop - vertex 25.3467 17.5167 0 - vertex 25.4856 17.2443 -0.2 - vertex 25.4856 17.2443 0 + vertex 23.1222 1.97635 0 + vertex 23.9858 2.16372 -3 + vertex 23.1222 1.97635 -3 endloop endfacet - facet normal -0.905796 -0.423714 0 + facet normal 0.0237086 0.999719 -0 outer loop - vertex 25.6037 16.9917 -0.2 - vertex 25.4856 17.2443 0 - vertex 25.4856 17.2443 -0.2 + vertex 23.1222 1.97635 -3 + vertex 22.8505 1.9828 0 + vertex 23.1222 1.97635 0 endloop endfacet - facet normal -0.905796 -0.423714 0 + facet normal 0.0237086 0.999719 0 outer loop - vertex 25.4856 17.2443 0 - vertex 25.6037 16.9917 -0.2 - vertex 25.6037 16.9917 0 + vertex 22.8505 1.9828 0 + vertex 23.1222 1.97635 -3 + vertex 22.8505 1.9828 -3 endloop endfacet - facet normal -0.826293 -0.563241 0 + facet normal 0.97535 0.220664 0 outer loop - vertex 25.7157 16.8274 -0.2 - vertex 25.6037 16.9917 0 - vertex 25.6037 16.9917 -0.2 + vertex 22.8505 1.9828 0 + vertex 22.7784 2.30129 -3 + vertex 22.7784 2.30129 0 endloop endfacet - facet normal -0.826293 -0.563241 0 + facet normal 0.97535 0.220664 0 outer loop - vertex 25.6037 16.9917 0 - vertex 25.7157 16.8274 -0.2 - vertex 25.7157 16.8274 0 + vertex 22.7784 2.30129 -3 + vertex 22.8505 1.9828 0 + vertex 22.8505 1.9828 -3 endloop endfacet - facet normal -0.603414 -0.797428 0 + facet normal 0.936019 -0.35195 0 outer loop - vertex 25.7157 16.8274 -0.2 - vertex 25.8187 16.7495 0 - vertex 25.7157 16.8274 0 + vertex 22.7784 2.30129 0 + vertex 23.2082 3.44442 -3 + vertex 23.2082 3.44442 0 endloop endfacet - facet normal -0.603414 -0.797428 -0 + facet normal 0.936019 -0.35195 0 outer loop - vertex 25.8187 16.7495 0 - vertex 25.7157 16.8274 -0.2 - vertex 25.8187 16.7495 -0.2 + vertex 23.2082 3.44442 -3 + vertex 22.7784 2.30129 0 + vertex 22.7784 2.30129 -3 endloop endfacet - facet normal -0.148413 -0.988925 0 + facet normal 0.913236 -0.40743 0 outer loop - vertex 25.8187 16.7495 -0.2 - vertex 25.8659 16.7424 0 - vertex 25.8187 16.7495 0 + vertex 23.2082 3.44442 0 + vertex 23.5377 4.18291 -3 + vertex 23.5377 4.18291 0 endloop endfacet - facet normal -0.148413 -0.988925 -0 + facet normal 0.913236 -0.40743 0 outer loop - vertex 25.8659 16.7424 0 - vertex 25.8187 16.7495 -0.2 - vertex 25.8659 16.7424 -0.2 + vertex 23.5377 4.18291 -3 + vertex 23.2082 3.44442 0 + vertex 23.2082 3.44442 -3 endloop endfacet - facet normal 0.302537 -0.953138 0 + facet normal 0.997125 -0.0757773 0 outer loop - vertex 25.8659 16.7424 -0.2 - vertex 25.9096 16.7563 0 - vertex 25.8659 16.7424 0 + vertex 23.5377 4.18291 0 + vertex 23.5966 4.95794 -3 + vertex 23.5966 4.95794 0 endloop endfacet - facet normal 0.302537 -0.953138 0 + facet normal 0.997125 -0.0757773 0 outer loop - vertex 25.9096 16.7563 0 - vertex 25.8659 16.7424 -0.2 - vertex 25.9096 16.7563 -0.2 + vertex 23.5966 4.95794 -3 + vertex 23.5377 4.18291 0 + vertex 23.5377 4.18291 -3 endloop endfacet - facet normal 0.763836 -0.645411 0 + facet normal 0.969407 0.245457 0 outer loop - vertex 25.9096 16.7563 0 - vertex 25.9855 16.8461 -0.2 - vertex 25.9855 16.8461 0 + vertex 23.5966 4.95794 0 + vertex 23.3811 5.8089 -3 + vertex 23.3811 5.8089 0 endloop endfacet - facet normal 0.763836 -0.645411 0 + facet normal 0.969407 0.245457 0 outer loop - vertex 25.9855 16.8461 -0.2 - vertex 25.9096 16.7563 0 - vertex 25.9096 16.7563 -0.2 + vertex 23.3811 5.8089 -3 + vertex 23.5966 4.95794 0 + vertex 23.5966 4.95794 -3 endloop endfacet - facet normal 0.947245 -0.320511 0 + facet normal 0.890531 0.454923 0 outer loop - vertex 25.9855 16.8461 0 - vertex 26.0434 17.0172 -0.2 - vertex 26.0434 17.0172 0 + vertex 23.3811 5.8089 0 + vertex 22.8875 6.77518 -3 + vertex 22.8875 6.77518 0 endloop endfacet - facet normal 0.947245 -0.320511 0 + facet normal 0.890531 0.454923 0 outer loop - vertex 26.0434 17.0172 -0.2 - vertex 25.9855 16.8461 0 - vertex 25.9855 16.8461 -0.2 + vertex 22.8875 6.77518 -3 + vertex 23.3811 5.8089 0 + vertex 23.3811 5.8089 -3 endloop endfacet - facet normal 0.989326 -0.145716 0 + facet normal 0.77704 0.629451 0 outer loop - vertex 26.0434 17.0172 0 - vertex 26.0803 17.2678 -0.2 - vertex 26.0803 17.2678 0 + vertex 22.8875 6.77518 0 + vertex 21.7142 8.22365 -3 + vertex 21.7142 8.22365 0 endloop endfacet - facet normal 0.989326 -0.145716 0 + facet normal 0.77704 0.629451 0 outer loop - vertex 26.0803 17.2678 -0.2 - vertex 26.0434 17.0172 0 - vertex 26.0434 17.0172 -0.2 + vertex 21.7142 8.22365 -3 + vertex 22.8875 6.77518 0 + vertex 22.8875 6.77518 -3 endloop endfacet - facet normal 0.999222 -0.0394472 0 + facet normal 0.585146 0.810928 -0 outer loop - vertex 26.0803 17.2678 0 - vertex 26.0933 17.5963 -0.2 - vertex 26.0933 17.5963 0 + vertex 21.7142 8.22365 -3 + vertex 19.7157 9.66569 0 + vertex 21.7142 8.22365 0 endloop endfacet - facet normal 0.999222 -0.0394472 0 + facet normal 0.585146 0.810928 0 outer loop - vertex 26.0933 17.5963 -0.2 - vertex 26.0803 17.2678 0 - vertex 26.0803 17.2678 -0.2 + vertex 19.7157 9.66569 0 + vertex 21.7142 8.22365 -3 + vertex 19.7157 9.66569 -3 endloop endfacet - facet normal 0.99788 0.0650754 0 + facet normal 0.415721 0.909492 -0 outer loop - vertex 26.0933 17.5963 0 - vertex 26.0696 17.9605 -0.2 - vertex 26.0696 17.9605 0 + vertex 19.7157 9.66569 -3 + vertex 18.6847 10.137 0 + vertex 19.7157 9.66569 0 endloop endfacet - facet normal 0.99788 0.0650754 0 + facet normal 0.415721 0.909492 0 outer loop - vertex 26.0696 17.9605 -0.2 - vertex 26.0933 17.5963 0 - vertex 26.0933 17.5963 -0.2 + vertex 18.6847 10.137 0 + vertex 19.7157 9.66569 -3 + vertex 18.6847 10.137 -3 endloop endfacet - facet normal 0.979516 0.201364 0 + facet normal 0.146348 0.989233 -0 outer loop - vertex 26.0696 17.9605 0 - vertex 26.0009 18.2942 -0.2 - vertex 26.0009 18.2942 0 + vertex 18.6847 10.137 -3 + vertex 17.337 10.3363 0 + vertex 18.6847 10.137 0 endloop endfacet - facet normal 0.979516 0.201364 0 + facet normal 0.146348 0.989233 0 outer loop - vertex 26.0009 18.2942 -0.2 - vertex 26.0696 17.9605 0 - vertex 26.0696 17.9605 -0.2 + vertex 17.337 10.3363 0 + vertex 18.6847 10.137 -3 + vertex 17.337 10.3363 -3 endloop endfacet - facet normal 0.938515 0.345238 0 + facet normal -0.00363232 0.999993 0 outer loop - vertex 26.0009 18.2942 0 - vertex 25.8914 18.5921 -0.2 - vertex 25.8914 18.5921 0 + vertex 17.337 10.3363 -3 + vertex 15.9933 10.3315 0 + vertex 17.337 10.3363 0 endloop endfacet - facet normal 0.938515 0.345238 0 + facet normal -0.00363232 0.999993 0 outer loop - vertex 25.8914 18.5921 -0.2 - vertex 26.0009 18.2942 0 - vertex 26.0009 18.2942 -0.2 + vertex 15.9933 10.3315 0 + vertex 17.337 10.3363 -3 + vertex 15.9933 10.3315 -3 endloop endfacet - facet normal 0.86805 0.496476 0 + facet normal -0.520358 0.853948 0 outer loop - vertex 25.8914 18.5921 0 - vertex 25.7448 18.8483 -0.2 - vertex 25.7448 18.8483 0 + vertex 15.9933 10.3315 -3 + vertex 15.6762 10.1383 0 + vertex 15.9933 10.3315 0 endloop endfacet - facet normal 0.86805 0.496476 0 + facet normal -0.520358 0.853948 0 outer loop - vertex 25.7448 18.8483 -0.2 - vertex 25.8914 18.5921 0 - vertex 25.8914 18.5921 -0.2 + vertex 15.6762 10.1383 0 + vertex 15.9933 10.3315 -3 + vertex 15.6762 10.1383 -3 endloop endfacet - facet normal 0.758477 0.651699 0 + facet normal -0.775154 0.631772 0 outer loop - vertex 25.7448 18.8483 0 - vertex 25.5652 19.0574 -0.2 - vertex 25.5652 19.0574 0 + vertex 15.3572 9.74689 -3 + vertex 15.6762 10.1383 0 + vertex 15.6762 10.1383 -3 endloop endfacet - facet normal 0.758477 0.651699 0 + facet normal -0.775154 0.631772 0 outer loop - vertex 25.5652 19.0574 -0.2 - vertex 25.7448 18.8483 0 - vertex 25.7448 18.8483 -0.2 + vertex 15.6762 10.1383 0 + vertex 15.3572 9.74689 -3 + vertex 15.3572 9.74689 0 endloop endfacet - facet normal 0.599251 0.800561 -0 + facet normal -0.885944 0.463791 0 outer loop - vertex 25.5652 19.0574 -0.2 - vertex 25.3564 19.2137 0 - vertex 25.5652 19.0574 0 + vertex 14.9426 8.95486 -3 + vertex 15.3572 9.74689 0 + vertex 15.3572 9.74689 -3 endloop endfacet - facet normal 0.599251 0.800561 0 + facet normal -0.885944 0.463791 0 outer loop - vertex 25.3564 19.2137 0 - vertex 25.5652 19.0574 -0.2 - vertex 25.3564 19.2137 -0.2 + vertex 15.3572 9.74689 0 + vertex 14.9426 8.95486 -3 + vertex 14.9426 8.95486 0 endloop endfacet - facet normal 0.385907 0.922538 -0 + facet normal -0.999951 -0.00991933 0 outer loop - vertex 25.3564 19.2137 -0.2 - vertex 25.1224 19.3115 0 - vertex 25.3564 19.2137 0 + vertex 14.9551 7.69881 -3 + vertex 14.9426 8.95486 0 + vertex 14.9426 8.95486 -3 endloop endfacet - facet normal 0.385907 0.922538 0 + facet normal -0.999951 -0.00991933 0 outer loop - vertex 25.1224 19.3115 0 - vertex 25.3564 19.2137 -0.2 - vertex 25.1224 19.3115 -0.2 + vertex 14.9426 8.95486 0 + vertex 14.9551 7.69881 -3 + vertex 14.9551 7.69881 0 endloop endfacet - facet normal 0.197951 0.980212 -0 + facet normal -0.987205 -0.159458 0 outer loop - vertex 25.1224 19.3115 -0.2 - vertex 24.9972 19.3368 0 - vertex 25.1224 19.3115 0 + vertex 15.3368 5.33522 -3 + vertex 14.9551 7.69881 0 + vertex 14.9551 7.69881 -3 endloop endfacet - facet normal 0.197951 0.980212 0 + facet normal -0.987205 -0.159458 0 outer loop - vertex 24.9972 19.3368 0 - vertex 25.1224 19.3115 -0.2 - vertex 24.9972 19.3368 -0.2 + vertex 14.9551 7.69881 0 + vertex 15.3368 5.33522 -3 + vertex 15.3368 5.33522 0 endloop endfacet - facet normal 0.0658711 0.997828 -0 + facet normal -0.962213 -0.272299 0 outer loop - vertex 24.9972 19.3368 -0.2 - vertex 24.8672 19.3454 0 - vertex 24.9972 19.3368 0 + vertex 16.0239 2.90744 -3 + vertex 15.3368 5.33522 0 + vertex 15.3368 5.33522 -3 endloop endfacet - facet normal 0.0658711 0.997828 0 + facet normal -0.962213 -0.272299 0 outer loop - vertex 24.8672 19.3454 0 - vertex 24.9972 19.3368 -0.2 - vertex 24.8672 19.3454 -0.2 + vertex 15.3368 5.33522 0 + vertex 16.0239 2.90744 -3 + vertex 16.0239 2.90744 0 endloop endfacet - facet normal 0.104566 0.994518 -0 + facet normal -0.924811 -0.380427 0 outer loop - vertex 24.8672 19.3454 -0.2 - vertex 24.6124 19.3722 0 - vertex 24.8672 19.3454 0 + vertex 16.8564 0.883682 -3 + vertex 16.0239 2.90744 0 + vertex 16.0239 2.90744 -3 endloop endfacet - facet normal 0.104566 0.994518 0 + facet normal -0.924811 -0.380427 0 outer loop - vertex 24.6124 19.3722 0 - vertex 24.8672 19.3454 -0.2 - vertex 24.6124 19.3722 -0.2 + vertex 16.0239 2.90744 0 + vertex 16.8564 0.883682 -3 + vertex 16.8564 0.883682 0 endloop endfacet - facet normal 0.198003 0.980201 -0 + facet normal -0.815204 -0.579174 0 outer loop - vertex 24.6124 19.3722 -0.2 - vertex 24.2514 19.4451 0 - vertex 24.6124 19.3722 0 + vertex 17.6745 -0.267811 -3 + vertex 16.8564 0.883682 0 + vertex 16.8564 0.883682 -3 endloop endfacet - facet normal 0.198003 0.980201 0 + facet normal -0.815204 -0.579174 0 outer loop - vertex 24.2514 19.4451 0 - vertex 24.6124 19.3722 -0.2 - vertex 24.2514 19.4451 -0.2 + vertex 16.8564 0.883682 0 + vertex 17.6745 -0.267811 -3 + vertex 17.6745 -0.267811 0 endloop endfacet - facet normal 0.249312 0.968423 -0 + facet normal -0.318326 -0.947981 0 outer loop - vertex 24.2514 19.4451 -0.2 - vertex 23.8321 19.5531 0 - vertex 24.2514 19.4451 0 + vertex 17.6745 -0.267811 -3 + vertex 18.2674 -0.466912 0 + vertex 17.6745 -0.267811 0 endloop endfacet - facet normal 0.249312 0.968423 0 + facet normal -0.318326 -0.947981 -0 outer loop - vertex 23.8321 19.5531 0 - vertex 24.2514 19.4451 -0.2 - vertex 23.8321 19.5531 -0.2 + vertex 18.2674 -0.466912 0 + vertex 17.6745 -0.267811 -3 + vertex 18.2674 -0.466912 -3 endloop endfacet - facet normal 0.293412 0.955986 -0 + facet normal 0.268508 -0.963277 0 outer loop - vertex 23.8321 19.5531 -0.2 - vertex 23.4027 19.6849 0 - vertex 23.8321 19.5531 0 + vertex 18.2674 -0.466912 -3 + vertex 19.4865 -0.127098 0 + vertex 18.2674 -0.466912 0 endloop endfacet - facet normal 0.293412 0.955986 0 + facet normal 0.268508 -0.963277 0 outer loop - vertex 23.4027 19.6849 0 - vertex 23.8321 19.5531 -0.2 - vertex 23.4027 19.6849 -0.2 + vertex 19.4865 -0.127098 0 + vertex 18.2674 -0.466912 -3 + vertex 19.4865 -0.127098 -3 endloop endfacet - facet normal 0.372015 0.928227 -0 + facet normal 0.219889 -0.975525 0 outer loop - vertex 23.4027 19.6849 -0.2 - vertex 22.9977 19.8472 0 - vertex 23.4027 19.6849 0 + vertex 19.4865 -0.127098 -3 + vertex 21.0282 0.220415 0 + vertex 19.4865 -0.127098 0 endloop endfacet - facet normal 0.372015 0.928227 0 + facet normal 0.219889 -0.975525 0 outer loop - vertex 22.9977 19.8472 0 - vertex 23.4027 19.6849 -0.2 - vertex 22.9977 19.8472 -0.2 + vertex 21.0282 0.220415 0 + vertex 19.4865 -0.127098 -3 + vertex 21.0282 0.220415 -3 endloop endfacet - facet normal 0.496703 0.86792 -0 + facet normal -0.998758 -0.0498338 0 outer loop - vertex 22.9977 19.8472 -0.2 - vertex 22.6486 20.047 0 - vertex 22.9977 19.8472 0 + vertex 21.0968 -1.15452 -3 + vertex 21.0282 0.220415 0 + vertex 21.0282 0.220415 -3 endloop endfacet - facet normal 0.496703 0.86792 0 + facet normal -0.998758 -0.0498338 0 outer loop - vertex 22.6486 20.047 0 - vertex 22.9977 19.8472 -0.2 - vertex 22.6486 20.047 -0.2 + vertex 21.0282 0.220415 0 + vertex 21.0968 -1.15452 -3 + vertex 21.0968 -1.15452 0 endloop endfacet - facet normal 0.63232 0.774707 -0 + facet normal -0.983918 0.178619 0 outer loop - vertex 22.6486 20.047 -0.2 - vertex 22.3515 20.2895 0 - vertex 22.6486 20.047 0 + vertex 20.9081 -2.19366 -3 + vertex 21.0968 -1.15452 0 + vertex 21.0968 -1.15452 -3 endloop endfacet - facet normal 0.63232 0.774707 0 + facet normal -0.983918 0.178619 0 outer loop - vertex 22.3515 20.2895 0 - vertex 22.6486 20.047 -0.2 - vertex 22.3515 20.2895 -0.2 + vertex 21.0968 -1.15452 0 + vertex 20.9081 -2.19366 -3 + vertex 20.9081 -2.19366 0 endloop endfacet - facet normal 0.72955 0.683927 0 + facet normal -0.856849 0.515568 0 outer loop - vertex 22.3515 20.2895 0 - vertex 22.2213 20.4283 -0.2 - vertex 22.2213 20.4283 0 + vertex 20.4179 -3.0084 -3 + vertex 20.9081 -2.19366 0 + vertex 20.9081 -2.19366 -3 endloop endfacet - facet normal 0.72955 0.683927 0 + facet normal -0.856849 0.515568 0 outer loop - vertex 22.2213 20.4283 -0.2 - vertex 22.3515 20.2895 0 - vertex 22.3515 20.2895 -0.2 + vertex 20.9081 -2.19366 0 + vertex 20.4179 -3.0084 -3 + vertex 20.4179 -3.0084 0 endloop endfacet - facet normal 0.787511 0.616301 0 + facet normal -0.631353 0.775495 0 outer loop - vertex 22.2213 20.4283 0 - vertex 22.1028 20.5797 -0.2 - vertex 22.1028 20.5797 0 + vertex 20.4179 -3.0084 -3 + vertex 19.4334 -3.80993 0 + vertex 20.4179 -3.0084 0 endloop endfacet - facet normal 0.787511 0.616301 0 + facet normal -0.631353 0.775495 0 outer loop - vertex 22.1028 20.5797 -0.2 - vertex 22.2213 20.4283 0 - vertex 22.2213 20.4283 -0.2 + vertex 19.4334 -3.80993 0 + vertex 20.4179 -3.0084 -3 + vertex 19.4334 -3.80993 -3 endloop endfacet - facet normal 0.859714 0.510776 0 + facet normal -0.513213 0.858261 0 outer loop - vertex 22.1028 20.5797 0 - vertex 21.8989 20.9229 -0.2 - vertex 21.8989 20.9229 0 + vertex 19.4334 -3.80993 -3 + vertex 17.7619 -4.80944 0 + vertex 19.4334 -3.80993 0 endloop endfacet - facet normal 0.859714 0.510776 0 + facet normal -0.513213 0.858261 0 outer loop - vertex 21.8989 20.9229 -0.2 - vertex 22.1028 20.5797 0 - vertex 22.1028 20.5797 -0.2 + vertex 17.7619 -4.80944 0 + vertex 19.4334 -3.80993 -3 + vertex 17.7619 -4.80944 -3 endloop endfacet - facet normal 0.926661 0.375897 0 + facet normal -0.460069 0.887883 0 outer loop - vertex 21.8989 20.9229 0 - vertex 21.7362 21.3239 -0.2 - vertex 21.7362 21.3239 0 + vertex 17.7619 -4.80944 -3 + vertex 15.0012 -6.23992 0 + vertex 17.7619 -4.80944 0 endloop endfacet - facet normal 0.926661 0.375897 0 + facet normal -0.460069 0.887883 0 outer loop - vertex 21.7362 21.3239 -0.2 - vertex 21.8989 20.9229 0 - vertex 21.8989 20.9229 -0.2 + vertex 15.0012 -6.23992 0 + vertex 17.7619 -4.80944 -3 + vertex 15.0012 -6.23992 -3 endloop endfacet - facet normal 0.965497 0.260414 0 + facet normal -0.358805 0.933413 0 outer loop - vertex 21.7362 21.3239 0 - vertex 21.6111 21.7881 -0.2 - vertex 21.6111 21.7881 0 + vertex 15.0012 -6.23992 -3 + vertex 12.6103 -7.15898 0 + vertex 15.0012 -6.23992 0 endloop endfacet - facet normal 0.965497 0.260414 0 + facet normal -0.358805 0.933413 0 outer loop - vertex 21.6111 21.7881 -0.2 - vertex 21.7362 21.3239 0 - vertex 21.7362 21.3239 -0.2 + vertex 12.6103 -7.15898 0 + vertex 15.0012 -6.23992 -3 + vertex 12.6103 -7.15898 -3 endloop endfacet - facet normal 0.985599 0.169101 0 + facet normal -0.211321 0.977417 0 outer loop - vertex 21.6111 21.7881 0 - vertex 21.5197 22.3204 -0.2 - vertex 21.5197 22.3204 0 + vertex 12.6103 -7.15898 -3 + vertex 10.2421 -7.67101 0 + vertex 12.6103 -7.15898 0 endloop endfacet - facet normal 0.985599 0.169101 0 + facet normal -0.211321 0.977417 0 outer loop - vertex 21.5197 22.3204 -0.2 - vertex 21.6111 21.7881 0 - vertex 21.6111 21.7881 -0.2 + vertex 10.2421 -7.67101 0 + vertex 12.6103 -7.15898 -3 + vertex 10.2421 -7.67101 -3 endloop endfacet - facet normal 0.981389 0.192031 0 + facet normal -0.0775281 0.99699 0 outer loop - vertex 21.5197 22.3204 0 - vertex 21.4205 22.8275 -0.2 - vertex 21.4205 22.8275 0 + vertex 10.2421 -7.67101 -3 + vertex 7.54923 -7.88041 0 + vertex 10.2421 -7.67101 0 endloop endfacet - facet normal 0.981389 0.192031 0 + facet normal -0.0775281 0.99699 0 outer loop - vertex 21.4205 22.8275 -0.2 - vertex 21.5197 22.3204 0 - vertex 21.5197 22.3204 -0.2 + vertex 7.54923 -7.88041 0 + vertex 10.2421 -7.67101 -3 + vertex 7.54923 -7.88041 -3 endloop endfacet - facet normal 0.957484 0.288485 0 + facet normal -0.00181695 0.999998 0 outer loop - vertex 21.4205 22.8275 0 - vertex 21.3493 23.064 -0.2 - vertex 21.3493 23.064 0 + vertex 7.54923 -7.88041 -3 + vertex 5.03167 -7.88498 0 + vertex 7.54923 -7.88041 0 endloop endfacet - facet normal 0.957484 0.288485 0 + facet normal -0.00181695 0.999998 0 outer loop - vertex 21.3493 23.064 -0.2 - vertex 21.4205 22.8275 0 - vertex 21.4205 22.8275 -0.2 + vertex 5.03167 -7.88498 0 + vertex 7.54923 -7.88041 -3 + vertex 5.03167 -7.88498 -3 endloop endfacet - facet normal 0.934507 0.355946 0 + facet normal 0.239055 0.971006 -0 outer loop - vertex 21.3493 23.064 0 - vertex 21.2635 23.2891 -0.2 - vertex 21.2635 23.2891 0 + vertex 5.03167 -7.88498 -3 + vertex 3.854 -7.59505 0 + vertex 5.03167 -7.88498 0 endloop endfacet - facet normal 0.934507 0.355946 0 + facet normal 0.239055 0.971006 0 outer loop - vertex 21.2635 23.2891 -0.2 - vertex 21.3493 23.064 0 - vertex 21.3493 23.064 -0.2 + vertex 3.854 -7.59505 0 + vertex 5.03167 -7.88498 -3 + vertex 3.854 -7.59505 -3 endloop endfacet - facet normal 0.905346 0.424674 0 + facet normal 0.512147 0.858898 -0 outer loop - vertex 21.2635 23.2891 0 - vertex 21.1632 23.503 -0.2 - vertex 21.1632 23.503 0 + vertex 3.854 -7.59505 -3 + vertex 1.04019 -5.91722 0 + vertex 3.854 -7.59505 0 endloop endfacet - facet normal 0.905346 0.424674 0 + facet normal 0.512147 0.858898 0 outer loop - vertex 21.1632 23.503 -0.2 - vertex 21.2635 23.2891 0 - vertex 21.2635 23.2891 -0.2 + vertex 1.04019 -5.91722 0 + vertex 3.854 -7.59505 -3 + vertex 1.04019 -5.91722 -3 endloop endfacet - facet normal 0.869841 0.493332 0 + facet normal 0.520307 0.85398 -0 outer loop - vertex 21.1632 23.503 0 - vertex 21.0482 23.7058 -0.2 - vertex 21.0482 23.7058 0 + vertex 1.04019 -5.91722 -3 + vertex -2.05653 -4.03047 0 + vertex 1.04019 -5.91722 0 endloop endfacet - facet normal 0.869841 0.493332 0 + facet normal 0.520307 0.85398 0 outer loop - vertex 21.0482 23.7058 -0.2 - vertex 21.1632 23.503 0 - vertex 21.1632 23.503 -0.2 + vertex -2.05653 -4.03047 0 + vertex 1.04019 -5.91722 -3 + vertex -2.05653 -4.03047 -3 endloop endfacet - facet normal 0.828197 0.560437 0 + facet normal 0.582306 0.812969 -0 outer loop - vertex 21.0482 23.7058 0 - vertex 20.9184 23.8976 -0.2 - vertex 20.9184 23.8976 0 + vertex -2.05653 -4.03047 -3 + vertex -3.45272 -3.03042 0 + vertex -2.05653 -4.03047 0 endloop endfacet - facet normal 0.828197 0.560437 0 + facet normal 0.582306 0.812969 0 outer loop - vertex 20.9184 23.8976 -0.2 - vertex 21.0482 23.7058 0 - vertex 21.0482 23.7058 -0.2 + vertex -3.45272 -3.03042 0 + vertex -2.05653 -4.03047 -3 + vertex -3.45272 -3.03042 -3 endloop endfacet - facet normal 0.781014 0.624513 0 + facet normal 0.814407 0.580294 0 outer loop - vertex 20.9184 23.8976 0 - vertex 20.7738 24.0784 -0.2 - vertex 20.7738 24.0784 0 + vertex -3.45272 -3.03042 0 + vertex -3.71458 -2.66291 -3 + vertex -3.71458 -2.66291 0 endloop endfacet - facet normal 0.781014 0.624513 0 + facet normal 0.814407 0.580294 0 outer loop - vertex 20.7738 24.0784 -0.2 - vertex 20.9184 23.8976 0 - vertex 20.9184 23.8976 -0.2 + vertex -3.71458 -2.66291 -3 + vertex -3.45272 -3.03042 0 + vertex -3.45272 -3.03042 -3 endloop endfacet - facet normal 0.729218 0.684281 0 + facet normal 0.667074 -0.744991 0 outer loop - vertex 20.7738 24.0784 0 - vertex 20.6143 24.2484 -0.2 - vertex 20.6143 24.2484 0 + vertex -3.71458 -2.66291 -3 + vertex -3.55278 -2.51803 0 + vertex -3.71458 -2.66291 0 endloop endfacet - facet normal 0.729218 0.684281 0 + facet normal 0.667074 -0.744991 0 outer loop - vertex 20.6143 24.2484 -0.2 - vertex 20.7738 24.0784 0 - vertex 20.7738 24.0784 -0.2 + vertex -3.55278 -2.51803 0 + vertex -3.71458 -2.66291 -3 + vertex -3.55278 -2.51803 -3 endloop endfacet - facet normal 0.674059 0.738677 -0 + facet normal -0.396625 -0.917981 0 outer loop - vertex 20.6143 24.2484 -0.2 - vertex 20.4398 24.4076 0 - vertex 20.6143 24.2484 0 + vertex -3.55278 -2.51803 -3 + vertex -1.72768 -3.30659 0 + vertex -3.55278 -2.51803 0 endloop endfacet - facet normal 0.674059 0.738677 0 + facet normal -0.396625 -0.917981 -0 outer loop - vertex 20.4398 24.4076 0 - vertex 20.6143 24.2484 -0.2 - vertex 20.4398 24.4076 -0.2 + vertex -1.72768 -3.30659 0 + vertex -3.55278 -2.51803 -3 + vertex -1.72768 -3.30659 -3 endloop endfacet - facet normal 0.616853 0.787078 -0 + facet normal -0.417951 -0.90847 0 outer loop - vertex 20.4398 24.4076 -0.2 - vertex 20.2502 24.5562 0 - vertex 20.4398 24.4076 0 + vertex -1.72768 -3.30659 -3 + vertex 1.09298 -4.60426 0 + vertex -1.72768 -3.30659 0 endloop endfacet - facet normal 0.616853 0.787078 0 + facet normal -0.417951 -0.90847 -0 outer loop - vertex 20.2502 24.5562 0 - vertex 20.4398 24.4076 -0.2 - vertex 20.2502 24.5562 -0.2 + vertex 1.09298 -4.60426 0 + vertex -1.72768 -3.30659 -3 + vertex 1.09298 -4.60426 -3 endloop endfacet - facet normal 0.558944 0.829206 -0 + facet normal -0.324179 -0.945996 0 outer loop - vertex 20.2502 24.5562 -0.2 - vertex 20.0455 24.6942 0 - vertex 20.2502 24.5562 0 + vertex 1.09298 -4.60426 -3 + vertex 3.9592 -5.58648 0 + vertex 1.09298 -4.60426 0 endloop endfacet - facet normal 0.558944 0.829206 0 + facet normal -0.324179 -0.945996 -0 outer loop - vertex 20.0455 24.6942 0 - vertex 20.2502 24.5562 -0.2 - vertex 20.0455 24.6942 -0.2 + vertex 3.9592 -5.58648 0 + vertex 1.09298 -4.60426 -3 + vertex 3.9592 -5.58648 -3 endloop endfacet - facet normal 0.473385 0.880855 -0 + facet normal -0.208038 -0.978121 0 outer loop - vertex 20.0455 24.6942 -0.2 - vertex 19.5904 24.9388 0 - vertex 20.0455 24.6942 0 + vertex 3.9592 -5.58648 -3 + vertex 5.81183 -5.98051 0 + vertex 3.9592 -5.58648 0 endloop endfacet - facet normal 0.473385 0.880855 0 + facet normal -0.208038 -0.978121 -0 outer loop - vertex 19.5904 24.9388 0 - vertex 20.0455 24.6942 -0.2 - vertex 19.5904 24.9388 -0.2 + vertex 5.81183 -5.98051 0 + vertex 3.9592 -5.58648 -3 + vertex 5.81183 -5.98051 -3 endloop endfacet - facet normal 0.366293 0.930499 -0 + facet normal 0.0684734 -0.997653 0 outer loop - vertex 19.5904 24.9388 -0.2 - vertex 19.0737 25.1422 0 - vertex 19.5904 24.9388 0 + vertex 5.81183 -5.98051 -3 + vertex 7.21237 -5.88439 0 + vertex 5.81183 -5.98051 0 endloop endfacet - facet normal 0.366293 0.930499 0 + facet normal 0.0684734 -0.997653 0 outer loop - vertex 19.0737 25.1422 0 - vertex 19.5904 24.9388 -0.2 - vertex 19.0737 25.1422 -0.2 + vertex 7.21237 -5.88439 0 + vertex 5.81183 -5.98051 -3 + vertex 7.21237 -5.88439 -3 endloop endfacet - facet normal 0.339314 0.940673 -0 + facet normal 0.219818 -0.975541 0 outer loop - vertex 19.0737 25.1422 -0.2 - vertex 18.5685 25.3244 0 - vertex 19.0737 25.1422 0 + vertex 7.21237 -5.88439 -3 + vertex 7.79727 -5.75259 0 + vertex 7.21237 -5.88439 0 endloop endfacet - facet normal 0.339314 0.940673 0 + facet normal 0.219818 -0.975541 0 outer loop - vertex 18.5685 25.3244 0 - vertex 19.0737 25.1422 -0.2 - vertex 18.5685 25.3244 -0.2 - endloop - endfacet - facet normal 0.390266 0.920702 -0 - outer loop - vertex 18.5685 25.3244 -0.2 - vertex 18.1033 25.5216 0 - vertex 18.5685 25.3244 0 - endloop - endfacet - facet normal 0.390266 0.920702 0 - outer loop - vertex 18.1033 25.5216 0 - vertex 18.5685 25.3244 -0.2 - vertex 18.1033 25.5216 -0.2 - endloop - endfacet - facet normal 0.448214 0.893926 -0 - outer loop - vertex 18.1033 25.5216 -0.2 - vertex 17.6707 25.7385 0 - vertex 18.1033 25.5216 0 - endloop - endfacet - facet normal 0.448214 0.893926 0 - outer loop - vertex 17.6707 25.7385 0 - vertex 18.1033 25.5216 -0.2 - vertex 17.6707 25.7385 -0.2 - endloop - endfacet - facet normal 0.509711 0.860346 -0 - outer loop - vertex 17.6707 25.7385 -0.2 - vertex 17.2631 25.98 0 - vertex 17.6707 25.7385 0 - endloop - endfacet - facet normal 0.509711 0.860346 0 - outer loop - vertex 17.2631 25.98 0 - vertex 17.6707 25.7385 -0.2 - vertex 17.2631 25.98 -0.2 - endloop - endfacet - facet normal 0.570375 0.821384 -0 - outer loop - vertex 17.2631 25.98 -0.2 - vertex 16.873 26.2508 0 - vertex 17.2631 25.98 0 - endloop - endfacet - facet normal 0.570375 0.821384 0 - outer loop - vertex 16.873 26.2508 0 - vertex 17.2631 25.98 -0.2 - vertex 16.873 26.2508 -0.2 - endloop - endfacet - facet normal 0.626027 0.779801 -0 - outer loop - vertex 16.873 26.2508 -0.2 - vertex 16.4932 26.5558 0 - vertex 16.873 26.2508 0 - endloop - endfacet - facet normal 0.626027 0.779801 0 - outer loop - vertex 16.4932 26.5558 0 - vertex 16.873 26.2508 -0.2 - vertex 16.4932 26.5558 -0.2 - endloop - endfacet - facet normal 0.673725 0.738983 -0 - outer loop - vertex 16.4932 26.5558 -0.2 - vertex 16.116 26.8997 0 - vertex 16.4932 26.5558 0 - endloop - endfacet - facet normal 0.673725 0.738983 0 - outer loop - vertex 16.116 26.8997 0 - vertex 16.4932 26.5558 -0.2 - vertex 16.116 26.8997 -0.2 - endloop - endfacet - facet normal 0.71226 0.701916 0 - outer loop - vertex 16.116 26.8997 0 - vertex 15.734 27.2872 -0.2 - vertex 15.734 27.2872 0 - endloop - endfacet - facet normal 0.71226 0.701916 0 - outer loop - vertex 15.734 27.2872 -0.2 - vertex 16.116 26.8997 0 - vertex 16.116 26.8997 -0.2 - endloop - endfacet - facet normal 0.751608 0.65961 0 - outer loop - vertex 15.734 27.2872 0 - vertex 15.344 27.7317 -0.2 - vertex 15.344 27.7317 0 - endloop - endfacet - facet normal 0.751608 0.65961 0 - outer loop - vertex 15.344 27.7317 -0.2 - vertex 15.734 27.2872 0 - vertex 15.734 27.2872 -0.2 - endloop - endfacet - facet normal 0.827441 0.561552 0 - outer loop - vertex 15.344 27.7317 0 - vertex 15.2193 27.9155 -0.2 - vertex 15.2193 27.9155 0 - endloop - endfacet - facet normal 0.827441 0.561552 0 - outer loop - vertex 15.2193 27.9155 -0.2 - vertex 15.344 27.7317 0 - vertex 15.344 27.7317 -0.2 - endloop - endfacet - facet normal 0.901872 0.432003 0 - outer loop - vertex 15.2193 27.9155 0 - vertex 15.1337 28.0941 -0.2 - vertex 15.1337 28.0941 0 - endloop - endfacet - facet normal 0.901872 0.432003 0 - outer loop - vertex 15.1337 28.0941 -0.2 - vertex 15.2193 27.9155 0 - vertex 15.2193 27.9155 -0.2 - endloop - endfacet - facet normal 0.963972 0.266005 0 - outer loop - vertex 15.1337 28.0941 0 - vertex 15.0817 28.2827 -0.2 - vertex 15.0817 28.2827 0 - endloop - endfacet - facet normal 0.963972 0.266005 0 - outer loop - vertex 15.0817 28.2827 -0.2 - vertex 15.1337 28.0941 0 - vertex 15.1337 28.0941 -0.2 - endloop - endfacet - facet normal 0.993628 0.112714 0 - outer loop - vertex 15.0817 28.2827 0 - vertex 15.0574 28.4965 -0.2 - vertex 15.0574 28.4965 0 - endloop - endfacet - facet normal 0.993628 0.112714 0 - outer loop - vertex 15.0574 28.4965 -0.2 - vertex 15.0817 28.2827 0 - vertex 15.0817 28.2827 -0.2 - endloop - endfacet - facet normal 0.999963 0.00862244 0 - outer loop - vertex 15.0574 28.4965 0 - vertex 15.0552 28.7509 -0.2 - vertex 15.0552 28.7509 0 - endloop - endfacet - facet normal 0.999963 0.00862244 0 - outer loop - vertex 15.0552 28.7509 -0.2 - vertex 15.0574 28.4965 0 - vertex 15.0574 28.4965 -0.2 - endloop - endfacet - facet normal 0.99896 -0.0455854 0 - outer loop - vertex 15.0552 28.7509 0 - vertex 15.0694 29.0611 -0.2 - vertex 15.0694 29.0611 0 - endloop - endfacet - facet normal 0.99896 -0.0455854 0 - outer loop - vertex 15.0694 29.0611 -0.2 - vertex 15.0552 28.7509 0 - vertex 15.0552 28.7509 -0.2 - endloop - endfacet - facet normal 0.995626 -0.0934289 0 - outer loop - vertex 15.0694 29.0611 0 - vertex 15.1102 29.496 -0.2 - vertex 15.1102 29.496 0 - endloop - endfacet - facet normal 0.995626 -0.0934289 0 - outer loop - vertex 15.1102 29.496 -0.2 - vertex 15.0694 29.0611 0 - vertex 15.0694 29.0611 -0.2 - endloop - endfacet - facet normal 0.982507 -0.186226 0 - outer loop - vertex 15.1102 29.496 0 - vertex 15.1701 29.8123 -0.2 - vertex 15.1701 29.8123 0 - endloop - endfacet - facet normal 0.982507 -0.186226 0 - outer loop - vertex 15.1701 29.8123 -0.2 - vertex 15.1102 29.496 0 - vertex 15.1102 29.496 -0.2 - endloop - endfacet - facet normal 0.936612 -0.350368 0 - outer loop - vertex 15.1701 29.8123 0 - vertex 15.2437 30.0088 -0.2 - vertex 15.2437 30.0088 0 - endloop - endfacet - facet normal 0.936612 -0.350368 0 - outer loop - vertex 15.2437 30.0088 -0.2 - vertex 15.1701 29.8123 0 - vertex 15.1701 29.8123 -0.2 - endloop - endfacet - facet normal 0.797615 -0.603167 0 - outer loop - vertex 15.2437 30.0088 0 - vertex 15.2838 30.0618 -0.2 - vertex 15.2838 30.0618 0 - endloop - endfacet - facet normal 0.797615 -0.603167 0 - outer loop - vertex 15.2838 30.0618 -0.2 - vertex 15.2437 30.0088 0 - vertex 15.2437 30.0088 -0.2 - endloop - endfacet - facet normal 0.48104 -0.876698 0 - outer loop - vertex 15.2838 30.0618 -0.2 - vertex 15.3252 30.0845 0 - vertex 15.2838 30.0618 0 - endloop - endfacet - facet normal 0.48104 -0.876698 0 - outer loop - vertex 15.3252 30.0845 0 - vertex 15.2838 30.0618 -0.2 - vertex 15.3252 30.0845 -0.2 - endloop - endfacet - facet normal -0.180566 -0.983563 0 - outer loop - vertex 15.3252 30.0845 -0.2 - vertex 15.3672 30.0768 0 - vertex 15.3252 30.0845 0 - endloop - endfacet - facet normal -0.180566 -0.983563 -0 - outer loop - vertex 15.3672 30.0768 0 - vertex 15.3252 30.0845 -0.2 - vertex 15.3672 30.0768 -0.2 - endloop - endfacet - facet normal -0.674079 -0.738659 0 - outer loop - vertex 15.3672 30.0768 -0.2 - vertex 15.4091 30.0386 0 - vertex 15.3672 30.0768 0 - endloop - endfacet - facet normal -0.674079 -0.738659 -0 - outer loop - vertex 15.4091 30.0386 0 - vertex 15.3672 30.0768 -0.2 - vertex 15.4091 30.0386 -0.2 - endloop - endfacet - facet normal -0.901794 -0.432166 0 - outer loop - vertex 15.49 29.8698 -0.2 - vertex 15.4091 30.0386 0 - vertex 15.4091 30.0386 -0.2 - endloop - endfacet - facet normal -0.901794 -0.432166 0 - outer loop - vertex 15.4091 30.0386 0 - vertex 15.49 29.8698 -0.2 - vertex 15.49 29.8698 0 - endloop - endfacet - facet normal -0.970859 -0.239653 0 - outer loop - vertex 15.5622 29.5773 -0.2 - vertex 15.49 29.8698 0 - vertex 15.49 29.8698 -0.2 - endloop - endfacet - facet normal -0.970859 -0.239653 0 - outer loop - vertex 15.49 29.8698 0 - vertex 15.5622 29.5773 -0.2 - vertex 15.5622 29.5773 0 - endloop - endfacet - facet normal -0.990483 -0.137635 0 - outer loop - vertex 15.6202 29.1601 -0.2 - vertex 15.5622 29.5773 0 - vertex 15.5622 29.5773 -0.2 - endloop - endfacet - facet normal -0.990483 -0.137635 0 - outer loop - vertex 15.5622 29.5773 0 - vertex 15.6202 29.1601 -0.2 - vertex 15.6202 29.1601 0 - endloop - endfacet - facet normal -0.987242 -0.159229 0 - outer loop - vertex 15.6927 28.7106 -0.2 - vertex 15.6202 29.1601 0 - vertex 15.6202 29.1601 -0.2 - endloop - endfacet - facet normal -0.987242 -0.159229 0 - outer loop - vertex 15.6202 29.1601 0 - vertex 15.6927 28.7106 -0.2 - vertex 15.6927 28.7106 0 - endloop - endfacet - facet normal -0.964764 -0.263116 0 - outer loop - vertex 15.7487 28.5051 -0.2 - vertex 15.6927 28.7106 0 - vertex 15.6927 28.7106 -0.2 - endloop - endfacet - facet normal -0.964764 -0.263116 0 - outer loop - vertex 15.6927 28.7106 0 - vertex 15.7487 28.5051 -0.2 - vertex 15.7487 28.5051 0 - endloop - endfacet - facet normal -0.93932 -0.343042 0 - outer loop - vertex 15.8197 28.3106 -0.2 - vertex 15.7487 28.5051 0 - vertex 15.7487 28.5051 -0.2 - endloop - endfacet - facet normal -0.93932 -0.343042 0 - outer loop - vertex 15.7487 28.5051 0 - vertex 15.8197 28.3106 -0.2 - vertex 15.8197 28.3106 0 - endloop - endfacet - facet normal -0.904159 -0.427196 0 - outer loop - vertex 15.9071 28.1258 -0.2 - vertex 15.8197 28.3106 0 - vertex 15.8197 28.3106 -0.2 - endloop - endfacet - facet normal -0.904159 -0.427196 0 - outer loop - vertex 15.8197 28.3106 0 - vertex 15.9071 28.1258 -0.2 - vertex 15.9071 28.1258 0 - endloop - endfacet - facet normal -0.859613 -0.510945 0 - outer loop - vertex 16.0121 27.9491 -0.2 - vertex 15.9071 28.1258 0 - vertex 15.9071 28.1258 -0.2 - endloop - endfacet - facet normal -0.859613 -0.510945 0 - outer loop - vertex 15.9071 28.1258 0 - vertex 16.0121 27.9491 -0.2 - vertex 16.0121 27.9491 0 - endloop - endfacet - facet normal -0.807674 -0.589629 0 - outer loop - vertex 16.1362 27.7792 -0.2 - vertex 16.0121 27.9491 0 - vertex 16.0121 27.9491 -0.2 - endloop - endfacet - facet normal -0.807674 -0.589629 0 - outer loop - vertex 16.0121 27.9491 0 - vertex 16.1362 27.7792 -0.2 - vertex 16.1362 27.7792 0 - endloop - endfacet - facet normal -0.751613 -0.659605 0 - outer loop - vertex 16.2806 27.6146 -0.2 - vertex 16.1362 27.7792 0 - vertex 16.1362 27.7792 -0.2 - endloop - endfacet - facet normal -0.751613 -0.659605 0 - outer loop - vertex 16.1362 27.7792 0 - vertex 16.2806 27.6146 -0.2 - vertex 16.2806 27.6146 0 - endloop - endfacet - facet normal -0.695067 -0.718945 0 - outer loop - vertex 16.2806 27.6146 -0.2 - vertex 16.4467 27.454 0 - vertex 16.2806 27.6146 0 - endloop - endfacet - facet normal -0.695067 -0.718945 -0 - outer loop - vertex 16.4467 27.454 0 - vertex 16.2806 27.6146 -0.2 - vertex 16.4467 27.454 -0.2 - endloop - endfacet - facet normal -0.641168 -0.767401 0 - outer loop - vertex 16.4467 27.454 -0.2 - vertex 16.6359 27.2959 0 - vertex 16.4467 27.454 0 - endloop - endfacet - facet normal -0.641168 -0.767401 -0 - outer loop - vertex 16.6359 27.2959 0 - vertex 16.4467 27.454 -0.2 - vertex 16.6359 27.2959 -0.2 - endloop - endfacet - facet normal -0.569935 -0.82169 0 - outer loop - vertex 16.6359 27.2959 -0.2 - vertex 17.0889 26.9817 0 - vertex 16.6359 27.2959 0 - endloop - endfacet - facet normal -0.569935 -0.82169 -0 - outer loop - vertex 17.0889 26.9817 0 - vertex 16.6359 27.2959 -0.2 - vertex 17.0889 26.9817 -0.2 - endloop - endfacet - facet normal -0.496343 -0.868126 0 - outer loop - vertex 17.0889 26.9817 -0.2 - vertex 17.6504 26.6607 0 - vertex 17.0889 26.9817 0 - endloop - endfacet - facet normal -0.496343 -0.868126 -0 - outer loop - vertex 17.6504 26.6607 0 - vertex 17.0889 26.9817 -0.2 - vertex 17.6504 26.6607 -0.2 - endloop - endfacet - facet normal -0.4459 -0.895083 0 - outer loop - vertex 17.6504 26.6607 -0.2 - vertex 18.3311 26.3216 0 - vertex 17.6504 26.6607 0 - endloop - endfacet - facet normal -0.4459 -0.895083 -0 - outer loop - vertex 18.3311 26.3216 0 - vertex 17.6504 26.6607 -0.2 - vertex 18.3311 26.3216 -0.2 - endloop - endfacet - facet normal -0.437511 -0.899213 0 - outer loop - vertex 18.3311 26.3216 -0.2 - vertex 19.3729 25.8147 0 - vertex 18.3311 26.3216 0 - endloop - endfacet - facet normal -0.437511 -0.899213 -0 - outer loop - vertex 19.3729 25.8147 0 - vertex 18.3311 26.3216 -0.2 - vertex 19.3729 25.8147 -0.2 - endloop - endfacet - facet normal -0.473558 -0.880763 0 - outer loop - vertex 19.3729 25.8147 -0.2 - vertex 20.1936 25.3734 0 - vertex 19.3729 25.8147 0 - endloop - endfacet - facet normal -0.473558 -0.880763 -0 - outer loop - vertex 20.1936 25.3734 0 - vertex 19.3729 25.8147 -0.2 - vertex 20.1936 25.3734 -0.2 - endloop - endfacet - facet normal -0.521003 -0.853555 0 - outer loop - vertex 20.1936 25.3734 -0.2 - vertex 20.53 25.168 0 - vertex 20.1936 25.3734 0 - endloop - endfacet - facet normal -0.521003 -0.853555 -0 - outer loop - vertex 20.53 25.168 0 - vertex 20.1936 25.3734 -0.2 - vertex 20.53 25.168 -0.2 - endloop - endfacet - facet normal -0.565431 -0.824796 0 - outer loop - vertex 20.53 25.168 -0.2 - vertex 20.8221 24.9679 0 - vertex 20.53 25.168 0 - endloop - endfacet - facet normal -0.565431 -0.824796 -0 - outer loop - vertex 20.8221 24.9679 0 - vertex 20.53 25.168 -0.2 - vertex 20.8221 24.9679 -0.2 - endloop - endfacet - facet normal -0.620484 -0.784219 0 - outer loop - vertex 20.8221 24.9679 -0.2 - vertex 21.0733 24.7691 0 - vertex 20.8221 24.9679 0 - endloop - endfacet - facet normal -0.620484 -0.784219 -0 - outer loop - vertex 21.0733 24.7691 0 - vertex 20.8221 24.9679 -0.2 - vertex 21.0733 24.7691 -0.2 - endloop - endfacet - facet normal -0.684731 -0.728796 0 - outer loop - vertex 21.0733 24.7691 -0.2 - vertex 21.2873 24.568 0 - vertex 21.0733 24.7691 0 - endloop - endfacet - facet normal -0.684731 -0.728796 -0 - outer loop - vertex 21.2873 24.568 0 - vertex 21.0733 24.7691 -0.2 - vertex 21.2873 24.568 -0.2 - endloop - endfacet - facet normal -0.754027 -0.656843 0 - outer loop - vertex 21.4677 24.3609 -0.2 - vertex 21.2873 24.568 0 - vertex 21.2873 24.568 -0.2 - endloop - endfacet - facet normal -0.754027 -0.656843 0 - outer loop - vertex 21.2873 24.568 0 - vertex 21.4677 24.3609 -0.2 - vertex 21.4677 24.3609 0 - endloop - endfacet - facet normal -0.821674 -0.569958 0 - outer loop - vertex 21.6182 24.144 -0.2 - vertex 21.4677 24.3609 0 - vertex 21.4677 24.3609 -0.2 - endloop - endfacet - facet normal -0.821674 -0.569958 0 - outer loop - vertex 21.4677 24.3609 0 - vertex 21.6182 24.144 -0.2 - vertex 21.6182 24.144 0 - endloop - endfacet - facet normal -0.880428 -0.47418 0 - outer loop - vertex 21.7423 23.9135 -0.2 - vertex 21.6182 24.144 0 - vertex 21.6182 24.144 -0.2 - endloop - endfacet - facet normal -0.880428 -0.47418 0 - outer loop - vertex 21.6182 24.144 0 - vertex 21.7423 23.9135 -0.2 - vertex 21.7423 23.9135 0 - endloop - endfacet - facet normal -0.925485 -0.378785 0 - outer loop - vertex 21.8437 23.6658 -0.2 - vertex 21.7423 23.9135 0 - vertex 21.7423 23.9135 -0.2 - endloop - endfacet - facet normal -0.925485 -0.378785 0 - outer loop - vertex 21.7423 23.9135 0 - vertex 21.8437 23.6658 -0.2 - vertex 21.8437 23.6658 0 - endloop - endfacet - facet normal -0.956187 -0.292757 0 - outer loop - vertex 21.926 23.397 -0.2 - vertex 21.8437 23.6658 0 - vertex 21.8437 23.6658 -0.2 - endloop - endfacet - facet normal -0.956187 -0.292757 0 - outer loop - vertex 21.8437 23.6658 0 - vertex 21.926 23.397 -0.2 - vertex 21.926 23.397 0 - endloop - endfacet - facet normal -0.975069 -0.221901 0 - outer loop - vertex 21.9928 23.1034 -0.2 - vertex 21.926 23.397 0 - vertex 21.926 23.397 -0.2 - endloop - endfacet - facet normal -0.975069 -0.221901 0 - outer loop - vertex 21.926 23.397 0 - vertex 21.9928 23.1034 -0.2 - vertex 21.9928 23.1034 0 - endloop - endfacet - facet normal -0.988902 -0.14857 0 - outer loop - vertex 22.0944 22.427 -0.2 - vertex 21.9928 23.1034 0 - vertex 21.9928 23.1034 -0.2 - endloop - endfacet - facet normal -0.988902 -0.14857 0 - outer loop - vertex 21.9928 23.1034 0 - vertex 22.0944 22.427 -0.2 - vertex 22.0944 22.427 0 - endloop - endfacet - facet normal -0.986323 -0.164825 0 - outer loop - vertex 22.1689 21.9813 -0.2 - vertex 22.0944 22.427 0 - vertex 22.0944 22.427 -0.2 - endloop - endfacet - facet normal -0.986323 -0.164825 0 - outer loop - vertex 22.0944 22.427 0 - vertex 22.1689 21.9813 -0.2 - vertex 22.1689 21.9813 0 - endloop - endfacet - facet normal -0.960165 -0.279433 0 - outer loop - vertex 22.2815 21.5943 -0.2 - vertex 22.1689 21.9813 0 - vertex 22.1689 21.9813 -0.2 - endloop - endfacet - facet normal -0.960165 -0.279433 0 - outer loop - vertex 22.1689 21.9813 0 - vertex 22.2815 21.5943 -0.2 - vertex 22.2815 21.5943 0 - endloop - endfacet - facet normal -0.907871 -0.41925 0 - outer loop - vertex 22.4341 21.2638 -0.2 - vertex 22.2815 21.5943 0 - vertex 22.2815 21.5943 -0.2 - endloop - endfacet - facet normal -0.907871 -0.41925 0 - outer loop - vertex 22.2815 21.5943 0 - vertex 22.4341 21.2638 -0.2 - vertex 22.4341 21.2638 0 - endloop - endfacet - facet normal -0.817597 -0.575791 0 - outer loop - vertex 22.6286 20.9877 -0.2 - vertex 22.4341 21.2638 0 - vertex 22.4341 21.2638 -0.2 - endloop - endfacet - facet normal -0.817597 -0.575791 0 - outer loop - vertex 22.4341 21.2638 0 - vertex 22.6286 20.9877 -0.2 - vertex 22.6286 20.9877 0 - endloop - endfacet - facet normal -0.721714 -0.692192 0 - outer loop - vertex 22.7421 20.8693 -0.2 - vertex 22.6286 20.9877 0 - vertex 22.6286 20.9877 -0.2 - endloop - endfacet - facet normal -0.721714 -0.692192 0 - outer loop - vertex 22.6286 20.9877 0 - vertex 22.7421 20.8693 -0.2 - vertex 22.7421 20.8693 0 - endloop - endfacet - facet normal -0.646202 -0.763167 0 - outer loop - vertex 22.7421 20.8693 -0.2 - vertex 22.8668 20.7638 0 - vertex 22.7421 20.8693 0 - endloop - endfacet - facet normal -0.646202 -0.763167 -0 - outer loop - vertex 22.8668 20.7638 0 - vertex 22.7421 20.8693 -0.2 - vertex 22.8668 20.7638 -0.2 - endloop - endfacet - facet normal -0.522339 -0.852738 0 - outer loop - vertex 22.8668 20.7638 -0.2 - vertex 23.1504 20.59 0 - vertex 22.8668 20.7638 0 - endloop - endfacet - facet normal -0.522339 -0.852738 -0 - outer loop - vertex 23.1504 20.59 0 - vertex 22.8668 20.7638 -0.2 - vertex 23.1504 20.59 -0.2 - endloop - endfacet - facet normal -0.355133 -0.934816 0 - outer loop - vertex 23.1504 20.59 -0.2 - vertex 23.4814 20.4643 0 - vertex 23.1504 20.59 0 - endloop - endfacet - facet normal -0.355133 -0.934816 -0 - outer loop - vertex 23.4814 20.4643 0 - vertex 23.1504 20.59 -0.2 - vertex 23.4814 20.4643 -0.2 - endloop - endfacet - facet normal -0.205594 -0.978637 0 - outer loop - vertex 23.4814 20.4643 -0.2 - vertex 23.8617 20.3844 0 - vertex 23.4814 20.4643 0 - endloop - endfacet - facet normal -0.205594 -0.978637 -0 - outer loop - vertex 23.8617 20.3844 0 - vertex 23.4814 20.4643 -0.2 - vertex 23.8617 20.3844 -0.2 - endloop - endfacet - facet normal -0.166383 -0.986061 0 - outer loop - vertex 23.8617 20.3844 -0.2 - vertex 24.2028 20.3268 0 - vertex 23.8617 20.3844 0 - endloop - endfacet - facet normal -0.166383 -0.986061 -0 - outer loop - vertex 24.2028 20.3268 0 - vertex 23.8617 20.3844 -0.2 - vertex 24.2028 20.3268 -0.2 - endloop - endfacet - facet normal -0.222634 -0.974902 0 - outer loop - vertex 24.2028 20.3268 -0.2 - vertex 24.5205 20.2543 0 - vertex 24.2028 20.3268 0 - endloop - endfacet - facet normal -0.222634 -0.974902 -0 - outer loop - vertex 24.5205 20.2543 0 - vertex 24.2028 20.3268 -0.2 - vertex 24.5205 20.2543 -0.2 - endloop - endfacet - facet normal -0.285939 -0.958248 0 - outer loop - vertex 24.5205 20.2543 -0.2 - vertex 24.8151 20.1664 0 - vertex 24.5205 20.2543 0 - endloop - endfacet - facet normal -0.285939 -0.958248 -0 - outer loop - vertex 24.8151 20.1664 0 - vertex 24.5205 20.2543 -0.2 - vertex 24.8151 20.1664 -0.2 - endloop - endfacet - facet normal -0.356177 -0.934419 0 - outer loop - vertex 24.8151 20.1664 -0.2 - vertex 25.087 20.0627 0 - vertex 24.8151 20.1664 0 - endloop - endfacet - facet normal -0.356177 -0.934419 -0 - outer loop - vertex 25.087 20.0627 0 - vertex 24.8151 20.1664 -0.2 - vertex 25.087 20.0627 -0.2 - endloop - endfacet - facet normal -0.432613 -0.90158 0 - outer loop - vertex 25.087 20.0627 -0.2 - vertex 25.3364 19.943 0 - vertex 25.087 20.0627 0 - endloop - endfacet - facet normal -0.432613 -0.90158 -0 - outer loop - vertex 25.3364 19.943 0 - vertex 25.087 20.0627 -0.2 - vertex 25.3364 19.943 -0.2 - endloop - endfacet - facet normal -0.513641 -0.858005 0 - outer loop - vertex 25.3364 19.943 -0.2 - vertex 25.5639 19.8069 0 - vertex 25.3364 19.943 0 - endloop - endfacet - facet normal -0.513641 -0.858005 -0 - outer loop - vertex 25.5639 19.8069 0 - vertex 25.3364 19.943 -0.2 - vertex 25.5639 19.8069 -0.2 - endloop - endfacet - facet normal -0.59661 -0.802531 0 - outer loop - vertex 25.5639 19.8069 -0.2 - vertex 25.7697 19.6539 0 - vertex 25.5639 19.8069 0 - endloop - endfacet - facet normal -0.59661 -0.802531 -0 - outer loop - vertex 25.7697 19.6539 0 - vertex 25.5639 19.8069 -0.2 - vertex 25.7697 19.6539 -0.2 - endloop - endfacet - facet normal -0.678036 -0.735029 0 - outer loop - vertex 25.7697 19.6539 -0.2 - vertex 25.9541 19.4837 0 - vertex 25.7697 19.6539 0 - endloop - endfacet - facet normal -0.678036 -0.735029 -0 - outer loop - vertex 25.9541 19.4837 0 - vertex 25.7697 19.6539 -0.2 - vertex 25.9541 19.4837 -0.2 - endloop - endfacet - facet normal -0.75405 -0.656818 0 - outer loop - vertex 26.1176 19.296 -0.2 - vertex 25.9541 19.4837 0 - vertex 25.9541 19.4837 -0.2 - endloop - endfacet - facet normal -0.75405 -0.656818 0 - outer loop - vertex 25.9541 19.4837 0 - vertex 26.1176 19.296 -0.2 - vertex 26.1176 19.296 0 - endloop - endfacet - facet normal -0.821173 -0.570679 0 - outer loop - vertex 26.2605 19.0904 -0.2 - vertex 26.1176 19.296 0 - vertex 26.1176 19.296 -0.2 - endloop - endfacet - facet normal -0.821173 -0.570679 0 - outer loop - vertex 26.1176 19.296 0 - vertex 26.2605 19.0904 -0.2 - vertex 26.2605 19.0904 0 - endloop - endfacet - facet normal -0.877038 -0.480422 0 - outer loop - vertex 26.3832 18.8665 -0.2 - vertex 26.2605 19.0904 0 - vertex 26.2605 19.0904 -0.2 - endloop - endfacet - facet normal -0.877038 -0.480422 0 - outer loop - vertex 26.2605 19.0904 0 - vertex 26.3832 18.8665 -0.2 - vertex 26.3832 18.8665 0 - endloop - endfacet - facet normal -0.920777 -0.390089 0 - outer loop - vertex 26.4859 18.624 -0.2 - vertex 26.3832 18.8665 0 - vertex 26.3832 18.8665 -0.2 - endloop - endfacet - facet normal -0.920777 -0.390089 0 - outer loop - vertex 26.3832 18.8665 0 - vertex 26.4859 18.624 -0.2 - vertex 26.4859 18.624 0 - endloop - endfacet - facet normal -0.952936 -0.30317 0 - outer loop - vertex 26.5691 18.3624 -0.2 - vertex 26.4859 18.624 0 - vertex 26.4859 18.624 -0.2 - endloop - endfacet - facet normal -0.952936 -0.30317 0 - outer loop - vertex 26.4859 18.624 0 - vertex 26.5691 18.3624 -0.2 - vertex 26.5691 18.3624 0 - endloop - endfacet - facet normal -0.974998 -0.222215 0 - outer loop - vertex 26.6332 18.0815 -0.2 - vertex 26.5691 18.3624 0 - vertex 26.5691 18.3624 -0.2 - endloop - endfacet - facet normal -0.974998 -0.222215 0 - outer loop - vertex 26.5691 18.3624 0 - vertex 26.6332 18.0815 -0.2 - vertex 26.6332 18.0815 0 - endloop - endfacet - facet normal -0.98889 -0.148648 0 - outer loop - vertex 26.6784 17.7808 -0.2 - vertex 26.6332 18.0815 0 - vertex 26.6332 18.0815 -0.2 - endloop - endfacet - facet normal -0.98889 -0.148648 0 - outer loop - vertex 26.6332 18.0815 0 - vertex 26.6784 17.7808 -0.2 - vertex 26.6784 17.7808 0 - endloop - endfacet - facet normal -0.996548 -0.083019 0 - outer loop - vertex 26.7051 17.4601 -0.2 - vertex 26.6784 17.7808 0 - vertex 26.6784 17.7808 -0.2 - endloop - endfacet - facet normal -0.996548 -0.083019 0 - outer loop - vertex 26.6784 17.7808 0 - vertex 26.7051 17.4601 -0.2 - vertex 26.7051 17.4601 0 - endloop - endfacet - facet normal -0.991209 -0.132303 0 - outer loop - vertex 26.7571 17.0706 -0.2 - vertex 26.7051 17.4601 0 - vertex 26.7051 17.4601 -0.2 - endloop - endfacet - facet normal -0.991209 -0.132303 0 - outer loop - vertex 26.7051 17.4601 0 - vertex 26.7571 17.0706 -0.2 - vertex 26.7571 17.0706 0 - endloop - endfacet - facet normal -0.970274 -0.242008 0 - outer loop - vertex 26.8653 16.6367 -0.2 - vertex 26.7571 17.0706 0 - vertex 26.7571 17.0706 -0.2 - endloop - endfacet - facet normal -0.970274 -0.242008 0 - outer loop - vertex 26.7571 17.0706 0 - vertex 26.8653 16.6367 -0.2 - vertex 26.8653 16.6367 0 - endloop - endfacet - facet normal -0.944031 -0.329856 0 - outer loop - vertex 27.0139 16.2113 -0.2 - vertex 26.8653 16.6367 0 - vertex 26.8653 16.6367 -0.2 - endloop - endfacet - facet normal -0.944031 -0.329856 0 - outer loop - vertex 26.8653 16.6367 0 - vertex 27.0139 16.2113 -0.2 - vertex 27.0139 16.2113 0 - endloop - endfacet - facet normal -0.902944 -0.429757 0 - outer loop - vertex 27.1872 15.8473 -0.2 - vertex 27.0139 16.2113 0 - vertex 27.0139 16.2113 -0.2 - endloop - endfacet - facet normal -0.902944 -0.429757 0 - outer loop - vertex 27.0139 16.2113 0 - vertex 27.1872 15.8473 -0.2 - vertex 27.1872 15.8473 0 - endloop - endfacet - facet normal -0.882286 -0.470713 0 - outer loop - vertex 27.3198 15.5987 -0.2 - vertex 27.1872 15.8473 0 - vertex 27.1872 15.8473 -0.2 - endloop - endfacet - facet normal -0.882286 -0.470713 0 - outer loop - vertex 27.1872 15.8473 0 - vertex 27.3198 15.5987 -0.2 - vertex 27.3198 15.5987 0 - endloop - endfacet - facet normal -0.922173 -0.386777 0 - outer loop - vertex 27.4227 15.3534 -0.2 - vertex 27.3198 15.5987 0 - vertex 27.3198 15.5987 -0.2 - endloop - endfacet - facet normal -0.922173 -0.386777 0 - outer loop - vertex 27.3198 15.5987 0 - vertex 27.4227 15.3534 -0.2 - vertex 27.4227 15.3534 0 - endloop - endfacet - facet normal -0.962502 -0.271275 0 - outer loop - vertex 27.4995 15.0808 -0.2 - vertex 27.4227 15.3534 0 - vertex 27.4227 15.3534 -0.2 - endloop - endfacet - facet normal -0.962502 -0.271275 0 - outer loop - vertex 27.4227 15.3534 0 - vertex 27.4995 15.0808 -0.2 - vertex 27.4995 15.0808 0 - endloop - endfacet - facet normal -0.986697 -0.162567 0 - outer loop - vertex 27.5539 14.7505 -0.2 - vertex 27.4995 15.0808 0 - vertex 27.4995 15.0808 -0.2 - endloop - endfacet - facet normal -0.986697 -0.162567 0 - outer loop - vertex 27.4995 15.0808 0 - vertex 27.5539 14.7505 -0.2 - vertex 27.5539 14.7505 0 - endloop - endfacet - facet normal -0.996383 -0.0849723 0 - outer loop - vertex 27.5896 14.3319 -0.2 - vertex 27.5539 14.7505 0 - vertex 27.5539 14.7505 -0.2 - endloop - endfacet - facet normal -0.996383 -0.0849723 0 - outer loop - vertex 27.5539 14.7505 0 - vertex 27.5896 14.3319 -0.2 - vertex 27.5896 14.3319 0 - endloop - endfacet - facet normal -0.999262 -0.0383987 0 - outer loop - vertex 27.6103 13.7945 -0.2 - vertex 27.5896 14.3319 0 - vertex 27.5896 14.3319 -0.2 - endloop - endfacet - facet normal -0.999262 -0.0383987 0 - outer loop - vertex 27.5896 14.3319 0 - vertex 27.6103 13.7945 -0.2 - vertex 27.6103 13.7945 0 - endloop - endfacet - facet normal -0.999976 -0.0069841 0 - outer loop - vertex 27.6211 12.2412 -0.2 - vertex 27.6103 13.7945 0 - vertex 27.6103 13.7945 -0.2 - endloop - endfacet - facet normal -0.999976 -0.0069841 0 - outer loop - vertex 27.6103 13.7945 0 - vertex 27.6211 12.2412 -0.2 - vertex 27.6211 12.2412 0 - endloop - endfacet - facet normal -0.999918 0.0127851 0 - outer loop - vertex 27.6024 10.7775 -0.2 - vertex 27.6211 12.2412 0 - vertex 27.6211 12.2412 -0.2 - endloop - endfacet - facet normal -0.999918 0.0127851 0 - outer loop - vertex 27.6211 12.2412 0 - vertex 27.6024 10.7775 -0.2 - vertex 27.6024 10.7775 0 - endloop - endfacet - facet normal -0.999067 0.0431942 0 - outer loop - vertex 27.5775 10.2019 -0.2 - vertex 27.6024 10.7775 0 - vertex 27.6024 10.7775 -0.2 - endloop - endfacet - facet normal -0.999067 0.0431942 0 - outer loop - vertex 27.6024 10.7775 0 - vertex 27.5775 10.2019 -0.2 - vertex 27.5775 10.2019 0 - endloop - endfacet - facet normal -0.997132 0.0756876 0 - outer loop - vertex 27.5397 9.70386 -0.2 - vertex 27.5775 10.2019 0 - vertex 27.5775 10.2019 -0.2 - endloop - endfacet - facet normal -0.997132 0.0756876 0 - outer loop - vertex 27.5775 10.2019 0 - vertex 27.5397 9.70386 -0.2 - vertex 27.5397 9.70386 0 - endloop - endfacet - facet normal -0.992933 0.118678 0 - outer loop - vertex 27.4871 9.26334 -0.2 - vertex 27.5397 9.70386 0 - vertex 27.5397 9.70386 -0.2 - endloop - endfacet - facet normal -0.992933 0.118678 0 - outer loop - vertex 27.5397 9.70386 0 - vertex 27.4871 9.26334 -0.2 - vertex 27.4871 9.26334 0 - endloop - endfacet - facet normal -0.985483 0.169774 0 - outer loop - vertex 27.4176 8.86037 -0.2 - vertex 27.4871 9.26334 0 - vertex 27.4871 9.26334 -0.2 - endloop - endfacet - facet normal -0.985483 0.169774 0 - outer loop - vertex 27.4871 9.26334 0 - vertex 27.4176 8.86037 -0.2 - vertex 27.4176 8.86037 0 - endloop - endfacet - facet normal -0.974842 0.222899 0 - outer loop - vertex 27.3295 8.47496 -0.2 - vertex 27.4176 8.86037 0 - vertex 27.4176 8.86037 -0.2 - endloop - endfacet - facet normal -0.974842 0.222899 0 - outer loop - vertex 27.4176 8.86037 0 - vertex 27.3295 8.47496 -0.2 - vertex 27.3295 8.47496 0 - endloop - endfacet - facet normal -0.962864 0.269986 0 - outer loop - vertex 27.2208 8.08714 -0.2 - vertex 27.3295 8.47496 0 - vertex 27.3295 8.47496 -0.2 - endloop - endfacet - facet normal -0.962864 0.269986 0 - outer loop - vertex 27.3295 8.47496 0 - vertex 27.2208 8.08714 -0.2 - vertex 27.2208 8.08714 0 - endloop - endfacet - facet normal -0.961499 0.274809 0 - outer loop - vertex 27.1048 7.68143 -0.2 - vertex 27.2208 8.08714 0 - vertex 27.2208 8.08714 -0.2 - endloop - endfacet - facet normal -0.961499 0.274809 0 - outer loop - vertex 27.2208 8.08714 0 - vertex 27.1048 7.68143 -0.2 - vertex 27.1048 7.68143 0 - endloop - endfacet - facet normal -0.973193 0.229988 0 - outer loop - vertex 27.0158 7.30485 -0.2 - vertex 27.1048 7.68143 0 - vertex 27.1048 7.68143 -0.2 - endloop - endfacet - facet normal -0.973193 0.229988 0 - outer loop - vertex 27.1048 7.68143 0 - vertex 27.0158 7.30485 -0.2 - vertex 27.0158 7.30485 0 - endloop - endfacet - facet normal -0.985852 0.167619 0 - outer loop - vertex 26.9517 6.92758 -0.2 - vertex 27.0158 7.30485 0 - vertex 27.0158 7.30485 -0.2 - endloop - endfacet - facet normal -0.985852 0.167619 0 - outer loop - vertex 27.0158 7.30485 0 - vertex 26.9517 6.92758 -0.2 - vertex 26.9517 6.92758 0 - endloop - endfacet - facet normal -0.994881 0.101051 0 - outer loop - vertex 26.9103 6.51977 -0.2 - vertex 26.9517 6.92758 0 - vertex 26.9517 6.92758 -0.2 - endloop - endfacet - facet normal -0.994881 0.101051 0 - outer loop - vertex 26.9517 6.92758 0 - vertex 26.9103 6.51977 -0.2 - vertex 26.9103 6.51977 0 - endloop - endfacet - facet normal -0.999013 0.0444183 0 - outer loop - vertex 26.8894 6.05157 -0.2 - vertex 26.9103 6.51977 0 - vertex 26.9103 6.51977 -0.2 - endloop - endfacet - facet normal -0.999013 0.0444183 0 - outer loop - vertex 26.9103 6.51977 0 - vertex 26.8894 6.05157 -0.2 - vertex 26.8894 6.05157 0 - endloop - endfacet - facet normal -0.999991 0.00417733 0 - outer loop - vertex 26.8871 5.49316 -0.2 - vertex 26.8894 6.05157 0 - vertex 26.8894 6.05157 -0.2 - endloop - endfacet - facet normal -0.999991 0.00417733 0 - outer loop - vertex 26.8894 6.05157 0 - vertex 26.8871 5.49316 -0.2 - vertex 26.8871 5.49316 0 - endloop - endfacet - facet normal -0.999606 -0.0280683 0 - outer loop - vertex 26.9294 3.98634 -0.2 - vertex 26.8871 5.49316 0 - vertex 26.8871 5.49316 -0.2 - endloop - endfacet - facet normal -0.999606 -0.0280683 0 - outer loop - vertex 26.8871 5.49316 0 - vertex 26.9294 3.98634 -0.2 - vertex 26.9294 3.98634 0 - endloop - endfacet - facet normal -0.999521 -0.0309525 0 - outer loop - vertex 26.9615 2.94949 -0.2 - vertex 26.9294 3.98634 0 - vertex 26.9294 3.98634 -0.2 - endloop - endfacet - facet normal -0.999521 -0.0309525 0 - outer loop - vertex 26.9294 3.98634 0 - vertex 26.9615 2.94949 -0.2 - vertex 26.9615 2.94949 0 - endloop - endfacet - facet normal -0.999992 -0.00407505 0 - outer loop - vertex 26.9647 2.16551 -0.2 - vertex 26.9615 2.94949 0 - vertex 26.9615 2.94949 -0.2 - endloop - endfacet - facet normal -0.999992 -0.00407505 0 - outer loop - vertex 26.9615 2.94949 0 - vertex 26.9647 2.16551 -0.2 - vertex 26.9647 2.16551 0 - endloop - endfacet - facet normal -0.998255 0.0590558 0 - outer loop - vertex 26.9324 1.61996 -0.2 - vertex 26.9647 2.16551 0 - vertex 26.9647 2.16551 -0.2 - endloop - endfacet - facet normal -0.998255 0.0590558 0 - outer loop - vertex 26.9647 2.16551 0 - vertex 26.9324 1.61996 -0.2 - vertex 26.9324 1.61996 0 - endloop - endfacet - facet normal -0.986243 0.165303 0 - outer loop - vertex 26.901 1.43209 -0.2 - vertex 26.9324 1.61996 0 - vertex 26.9324 1.61996 -0.2 - endloop - endfacet - facet normal -0.986243 0.165303 0 - outer loop - vertex 26.9324 1.61996 0 - vertex 26.901 1.43209 -0.2 - vertex 26.901 1.43209 0 - endloop - endfacet - facet normal -0.952336 0.30505 0 - outer loop - vertex 26.8581 1.29842 -0.2 - vertex 26.901 1.43209 0 - vertex 26.901 1.43209 -0.2 - endloop - endfacet - facet normal -0.952336 0.30505 0 - outer loop - vertex 26.901 1.43209 0 - vertex 26.8581 1.29842 -0.2 - vertex 26.8581 1.29842 0 - endloop - endfacet - facet normal -0.828352 0.560208 0 - outer loop - vertex 26.8032 1.21715 -0.2 - vertex 26.8581 1.29842 0 - vertex 26.8581 1.29842 -0.2 - endloop - endfacet - facet normal -0.828352 0.560208 0 - outer loop - vertex 26.8581 1.29842 0 - vertex 26.8032 1.21715 -0.2 - vertex 26.8032 1.21715 0 - endloop - endfacet - facet normal -0.411544 0.91139 0 - outer loop - vertex 26.8032 1.21715 -0.2 - vertex 26.7352 1.18648 0 - vertex 26.8032 1.21715 0 - endloop - endfacet - facet normal -0.411544 0.91139 0 - outer loop - vertex 26.7352 1.18648 0 - vertex 26.8032 1.21715 -0.2 - vertex 26.7352 1.18648 -0.2 - endloop - endfacet - facet normal 0.216454 0.976293 -0 - outer loop - vertex 26.7352 1.18648 -0.2 - vertex 26.6535 1.20459 0 - vertex 26.7352 1.18648 0 - endloop - endfacet - facet normal 0.216454 0.976293 0 - outer loop - vertex 26.6535 1.20459 0 - vertex 26.7352 1.18648 -0.2 - vertex 26.6535 1.20459 -0.2 - endloop - endfacet - facet normal 0.559991 0.828498 -0 - outer loop - vertex 26.6535 1.20459 -0.2 - vertex 26.5572 1.2697 0 - vertex 26.6535 1.20459 0 - endloop - endfacet - facet normal 0.559991 0.828498 0 - outer loop - vertex 26.5572 1.2697 0 - vertex 26.6535 1.20459 -0.2 - vertex 26.5572 1.2697 -0.2 - endloop - endfacet - facet normal 0.702452 0.711731 -0 - outer loop - vertex 26.5572 1.2697 -0.2 - vertex 26.4455 1.37999 0 - vertex 26.5572 1.2697 0 - endloop - endfacet - facet normal 0.702452 0.711731 0 - outer loop - vertex 26.4455 1.37999 0 - vertex 26.5572 1.2697 -0.2 - vertex 26.4455 1.37999 -0.2 - endloop - endfacet - facet normal 0.76838 0.639993 0 - outer loop - vertex 26.4455 1.37999 0 - vertex 26.3175 1.53367 -0.2 - vertex 26.3175 1.53367 0 - endloop - endfacet - facet normal 0.76838 0.639993 0 - outer loop - vertex 26.3175 1.53367 -0.2 - vertex 26.4455 1.37999 0 - vertex 26.4455 1.37999 -0.2 - endloop - endfacet - facet normal 0.813139 0.58207 0 - outer loop - vertex 26.3175 1.53367 0 - vertex 26.0094 1.96397 -0.2 - vertex 26.0094 1.96397 0 - endloop - endfacet - facet normal 0.813139 0.58207 0 - outer loop - vertex 26.0094 1.96397 -0.2 - vertex 26.3175 1.53367 0 - vertex 26.3175 1.53367 -0.2 - endloop - endfacet - facet normal 0.812733 0.582636 0 - outer loop - vertex 26.0094 1.96397 0 - vertex 25.8138 2.23679 -0.2 - vertex 25.8138 2.23679 0 - endloop - endfacet - facet normal 0.812733 0.582636 0 - outer loop - vertex 25.8138 2.23679 -0.2 - vertex 26.0094 1.96397 0 - vertex 26.0094 1.96397 -0.2 - endloop - endfacet - facet normal 0.76488 0.644173 0 - outer loop - vertex 25.8138 2.23679 0 - vertex 25.6376 2.44612 -0.2 - vertex 25.6376 2.44612 0 - endloop - endfacet - facet normal 0.76488 0.644173 0 - outer loop - vertex 25.6376 2.44612 -0.2 - vertex 25.8138 2.23679 0 - vertex 25.8138 2.23679 -0.2 - endloop - endfacet - facet normal 0.675362 0.737487 -0 - outer loop - vertex 25.6376 2.44612 -0.2 - vertex 25.4766 2.59351 0 - vertex 25.6376 2.44612 0 - endloop - endfacet - facet normal 0.675362 0.737487 0 - outer loop - vertex 25.4766 2.59351 0 - vertex 25.6376 2.44612 -0.2 - vertex 25.4766 2.59351 -0.2 - endloop - endfacet - facet normal 0.502892 0.86435 -0 - outer loop - vertex 25.4766 2.59351 -0.2 - vertex 25.3271 2.68052 0 - vertex 25.4766 2.59351 0 - endloop - endfacet - facet normal 0.502892 0.86435 0 - outer loop - vertex 25.3271 2.68052 0 - vertex 25.4766 2.59351 -0.2 - vertex 25.3271 2.68052 -0.2 - endloop - endfacet - facet normal 0.194571 0.980889 -0 - outer loop - vertex 25.3271 2.68052 -0.2 - vertex 25.185 2.7087 0 - vertex 25.3271 2.68052 0 - endloop - endfacet - facet normal 0.194571 0.980889 0 - outer loop - vertex 25.185 2.7087 0 - vertex 25.3271 2.68052 -0.2 - vertex 25.185 2.7087 -0.2 - endloop - endfacet - facet normal -0.205381 0.978682 0 - outer loop - vertex 25.185 2.7087 -0.2 - vertex 25.0464 2.67962 0 - vertex 25.185 2.7087 0 - endloop - endfacet - facet normal -0.205381 0.978682 0 - outer loop - vertex 25.0464 2.67962 0 - vertex 25.185 2.7087 -0.2 - vertex 25.0464 2.67962 -0.2 - endloop - endfacet - facet normal -0.520731 0.853721 0 - outer loop - vertex 25.0464 2.67962 -0.2 - vertex 24.9074 2.59483 0 - vertex 25.0464 2.67962 0 - endloop - endfacet - facet normal -0.520731 0.853721 0 - outer loop - vertex 24.9074 2.59483 0 - vertex 25.0464 2.67962 -0.2 - vertex 24.9074 2.59483 -0.2 - endloop - endfacet - facet normal -0.695882 0.718157 0 - outer loop - vertex 24.9074 2.59483 -0.2 - vertex 24.764 2.4559 0 - vertex 24.9074 2.59483 0 - endloop - endfacet - facet normal -0.695882 0.718157 0 - outer loop - vertex 24.764 2.4559 0 - vertex 24.9074 2.59483 -0.2 - vertex 24.764 2.4559 -0.2 - endloop - endfacet - facet normal -0.621809 0.783169 0 - outer loop - vertex 24.764 2.4559 -0.2 - vertex 24.6285 2.34829 0 - vertex 24.764 2.4559 0 - endloop - endfacet - facet normal -0.621809 0.783169 0 - outer loop - vertex 24.6285 2.34829 0 - vertex 24.764 2.4559 -0.2 - vertex 24.6285 2.34829 -0.2 - endloop - endfacet - facet normal -0.432349 0.901706 0 - outer loop - vertex 24.6285 2.34829 -0.2 - vertex 24.4388 2.25734 0 - vertex 24.6285 2.34829 0 - endloop - endfacet - facet normal -0.432349 0.901706 0 - outer loop - vertex 24.4388 2.25734 0 - vertex 24.6285 2.34829 -0.2 - vertex 24.4388 2.25734 -0.2 - endloop - endfacet - facet normal -0.283745 0.9589 0 - outer loop - vertex 24.4388 2.25734 -0.2 - vertex 24.2201 2.19262 0 - vertex 24.4388 2.25734 0 - endloop - endfacet - facet normal -0.283745 0.9589 0 - outer loop - vertex 24.2201 2.19262 0 - vertex 24.4388 2.25734 -0.2 - vertex 24.2201 2.19262 -0.2 - endloop - endfacet - facet normal -0.128745 0.991678 0 - outer loop - vertex 24.2201 2.19262 -0.2 - vertex 23.9975 2.16372 0 - vertex 24.2201 2.19262 0 - endloop - endfacet - facet normal -0.128745 0.991678 0 - outer loop - vertex 23.9975 2.16372 0 - vertex 24.2201 2.19262 -0.2 - vertex 23.9975 2.16372 -0.2 - endloop - endfacet - facet normal -0.0892316 0.996011 0 - outer loop - vertex 23.9975 2.16372 -0.2 - vertex 23.7673 2.14309 0 - vertex 23.9975 2.16372 0 - endloop - endfacet - facet normal -0.0892316 0.996011 0 - outer loop - vertex 23.7673 2.14309 0 - vertex 23.9975 2.16372 -0.2 - vertex 23.7673 2.14309 -0.2 - endloop - endfacet - facet normal -0.173492 0.984835 0 - outer loop - vertex 23.7673 2.14309 -0.2 - vertex 23.5277 2.10089 0 - vertex 23.7673 2.14309 0 - endloop - endfacet - facet normal -0.173492 0.984835 0 - outer loop - vertex 23.5277 2.10089 0 - vertex 23.7673 2.14309 -0.2 - vertex 23.5277 2.10089 -0.2 - endloop - endfacet - facet normal -0.252811 0.967516 0 - outer loop - vertex 23.5277 2.10089 -0.2 - vertex 23.3072 2.04326 0 - vertex 23.5277 2.10089 0 - endloop - endfacet - facet normal -0.252811 0.967516 0 - outer loop - vertex 23.3072 2.04326 0 - vertex 23.5277 2.10089 -0.2 - vertex 23.3072 2.04326 -0.2 - endloop - endfacet - facet normal -0.360079 0.932922 0 - outer loop - vertex 23.3072 2.04326 -0.2 - vertex 23.0469 1.94283 0 - vertex 23.3072 2.04326 0 - endloop - endfacet - facet normal -0.360079 0.932922 0 - outer loop - vertex 23.0469 1.94283 0 - vertex 23.3072 2.04326 -0.2 - vertex 23.0469 1.94283 -0.2 - endloop - endfacet - facet normal -0.120091 0.992763 0 - outer loop - vertex 23.0469 1.94283 -0.2 - vertex 22.9727 1.93385 0 - vertex 23.0469 1.94283 0 - endloop - endfacet - facet normal -0.120091 0.992763 0 - outer loop - vertex 22.9727 1.93385 0 - vertex 23.0469 1.94283 -0.2 - vertex 22.9727 1.93385 -0.2 - endloop - endfacet - facet normal 0.220007 0.975498 -0 - outer loop - vertex 22.9727 1.93385 -0.2 - vertex 22.9112 1.94773 0 - vertex 22.9727 1.93385 0 - endloop - endfacet - facet normal 0.220007 0.975498 0 - outer loop - vertex 22.9112 1.94773 0 - vertex 22.9727 1.93385 -0.2 - vertex 22.9112 1.94773 -0.2 - endloop - endfacet - facet normal 0.582178 0.813061 -0 - outer loop - vertex 22.9112 1.94773 -0.2 - vertex 22.8622 1.9828 0 - vertex 22.9112 1.94773 0 - endloop - endfacet - facet normal 0.582178 0.813061 0 - outer loop - vertex 22.8622 1.9828 0 - vertex 22.9112 1.94773 -0.2 - vertex 22.8622 1.9828 -0.2 - endloop - endfacet - facet normal 0.831256 0.55589 0 - outer loop - vertex 22.8622 1.9828 0 - vertex 22.8257 2.03737 -0.2 - vertex 22.8257 2.03737 0 - endloop - endfacet - facet normal 0.831256 0.55589 0 - outer loop - vertex 22.8257 2.03737 -0.2 - vertex 22.8622 1.9828 0 - vertex 22.8622 1.9828 -0.2 - endloop - endfacet - facet normal 0.948775 0.315953 0 - outer loop - vertex 22.8257 2.03737 0 - vertex 22.8016 2.10976 -0.2 - vertex 22.8016 2.10976 0 - endloop - endfacet - facet normal 0.948775 0.315953 0 - outer loop - vertex 22.8016 2.10976 -0.2 - vertex 22.8257 2.03737 0 - vertex 22.8257 2.03737 -0.2 - endloop - endfacet - facet normal 0.998216 0.059713 0 - outer loop - vertex 22.8016 2.10976 0 - vertex 22.7901 2.30129 -0.2 - vertex 22.7901 2.30129 0 - endloop - endfacet - facet normal 0.998216 0.059713 0 - outer loop - vertex 22.7901 2.30129 -0.2 - vertex 22.8016 2.10976 0 - vertex 22.8016 2.10976 -0.2 - endloop - endfacet - facet normal 0.988638 -0.150314 0 - outer loop - vertex 22.7901 2.30129 0 - vertex 22.827 2.54396 -0.2 - vertex 22.827 2.54396 0 - endloop - endfacet - facet normal 0.988638 -0.150314 0 - outer loop - vertex 22.827 2.54396 -0.2 - vertex 22.7901 2.30129 0 - vertex 22.7901 2.30129 -0.2 - endloop - endfacet - facet normal 0.957496 -0.288446 0 - outer loop - vertex 22.827 2.54396 0 - vertex 22.9115 2.82433 -0.2 - vertex 22.9115 2.82433 0 - endloop - endfacet - facet normal 0.957496 -0.288446 0 - outer loop - vertex 22.9115 2.82433 -0.2 - vertex 22.827 2.54396 0 - vertex 22.827 2.54396 -0.2 - endloop - endfacet - facet normal 0.918399 -0.395656 0 - outer loop - vertex 22.9115 2.82433 0 - vertex 23.0427 3.12896 -0.2 - vertex 23.0427 3.12896 0 - endloop - endfacet - facet normal 0.918399 -0.395656 0 - outer loop - vertex 23.0427 3.12896 -0.2 - vertex 22.9115 2.82433 0 - vertex 22.9115 2.82433 -0.2 - endloop - endfacet - facet normal 0.87183 -0.489809 0 - outer loop - vertex 23.0427 3.12896 0 - vertex 23.22 3.44442 -0.2 - vertex 23.22 3.44442 0 - endloop - endfacet - facet normal 0.87183 -0.489809 0 - outer loop - vertex 23.22 3.44442 -0.2 - vertex 23.0427 3.12896 0 - vertex 23.0427 3.12896 -0.2 - endloop - endfacet - facet normal 0.879841 -0.475268 0 - outer loop - vertex 23.22 3.44442 0 - vertex 23.4183 3.81156 -0.2 - vertex 23.4183 3.81156 0 - endloop - endfacet - facet normal 0.879841 -0.475268 0 - outer loop - vertex 23.4183 3.81156 -0.2 - vertex 23.22 3.44442 0 - vertex 23.22 3.44442 -0.2 - endloop - endfacet - facet normal 0.942923 -0.33301 0 - outer loop - vertex 23.4183 3.81156 0 - vertex 23.5494 4.18291 -0.2 - vertex 23.5494 4.18291 0 - endloop - endfacet - facet normal 0.942923 -0.33301 0 - outer loop - vertex 23.5494 4.18291 -0.2 - vertex 23.4183 3.81156 0 - vertex 23.4183 3.81156 -0.2 - endloop - endfacet - facet normal 0.978031 -0.208457 0 - outer loop - vertex 23.5494 4.18291 0 - vertex 23.5897 4.3717 -0.2 - vertex 23.5897 4.3717 0 - endloop - endfacet - facet normal 0.978031 -0.208457 0 - outer loop - vertex 23.5897 4.3717 -0.2 - vertex 23.5494 4.18291 0 - vertex 23.5494 4.18291 -0.2 - endloop - endfacet - facet normal 0.992713 -0.120506 0 - outer loop - vertex 23.5897 4.3717 0 - vertex 23.6129 4.5634 -0.2 - vertex 23.6129 4.5634 0 - endloop - endfacet - facet normal 0.992713 -0.120506 0 - outer loop - vertex 23.6129 4.5634 -0.2 - vertex 23.5897 4.3717 0 - vertex 23.5897 4.3717 -0.2 - endloop - endfacet - facet normal 0.99949 -0.0319444 0 - outer loop - vertex 23.6129 4.5634 0 - vertex 23.6192 4.7586 -0.2 - vertex 23.6192 4.7586 0 - endloop - endfacet - facet normal 0.99949 -0.0319444 0 - outer loop - vertex 23.6192 4.7586 -0.2 - vertex 23.6129 4.5634 0 - vertex 23.6129 4.5634 -0.2 - endloop - endfacet - facet normal 0.998522 0.054345 0 - outer loop - vertex 23.6192 4.7586 0 - vertex 23.6083 4.95794 -0.2 - vertex 23.6083 4.95794 0 - endloop - endfacet - facet normal 0.998522 0.054345 0 - outer loop - vertex 23.6083 4.95794 -0.2 - vertex 23.6192 4.7586 0 - vertex 23.6192 4.7586 -0.2 - endloop - endfacet - facet normal 0.984692 0.174301 0 - outer loop - vertex 23.6083 4.95794 0 - vertex 23.5351 5.37146 -0.2 - vertex 23.5351 5.37146 0 - endloop - endfacet - facet normal 0.984692 0.174301 0 - outer loop - vertex 23.5351 5.37146 -0.2 - vertex 23.6083 4.95794 0 - vertex 23.6083 4.95794 -0.2 - endloop - endfacet - facet normal 0.95097 0.309282 0 - outer loop - vertex 23.5351 5.37146 0 - vertex 23.3929 5.8089 -0.2 - vertex 23.3929 5.8089 0 - endloop - endfacet - facet normal 0.95097 0.309282 0 - outer loop - vertex 23.3929 5.8089 -0.2 - vertex 23.5351 5.37146 0 - vertex 23.5351 5.37146 -0.2 - endloop - endfacet - facet normal 0.910464 0.413588 0 - outer loop - vertex 23.3929 5.8089 0 - vertex 23.1811 6.27516 -0.2 - vertex 23.1811 6.27516 0 - endloop - endfacet - facet normal 0.910464 0.413588 0 - outer loop - vertex 23.1811 6.27516 -0.2 - vertex 23.3929 5.8089 0 - vertex 23.3929 5.8089 -0.2 - endloop - endfacet - facet normal 0.871161 0.490997 0 - outer loop - vertex 23.1811 6.27516 0 - vertex 22.8992 6.77518 -0.2 - vertex 22.8992 6.77518 0 - endloop - endfacet - facet normal 0.871161 0.490997 0 - outer loop - vertex 22.8992 6.77518 -0.2 - vertex 23.1811 6.27516 0 - vertex 23.1811 6.27516 -0.2 - endloop - endfacet - facet normal 0.839072 0.54402 0 - outer loop - vertex 22.8992 6.77518 0 - vertex 22.6364 7.18064 -0.2 - vertex 22.6364 7.18064 0 - endloop - endfacet - facet normal 0.839072 0.54402 0 - outer loop - vertex 22.6364 7.18064 -0.2 - vertex 22.8992 6.77518 0 - vertex 22.8992 6.77518 -0.2 - endloop - endfacet - facet normal 0.802153 0.597118 0 - outer loop - vertex 22.6364 7.18064 0 - vertex 22.3621 7.54907 -0.2 - vertex 22.3621 7.54907 0 - endloop - endfacet - facet normal 0.802153 0.597118 0 - outer loop - vertex 22.3621 7.54907 -0.2 - vertex 22.6364 7.18064 0 - vertex 22.6364 7.18064 -0.2 - endloop - endfacet - facet normal 0.754344 0.65648 0 - outer loop - vertex 22.3621 7.54907 0 - vertex 22.0631 7.89267 -0.2 - vertex 22.0631 7.89267 0 - endloop - endfacet - facet normal 0.754344 0.65648 0 - outer loop - vertex 22.0631 7.89267 -0.2 - vertex 22.3621 7.54907 0 - vertex 22.3621 7.54907 -0.2 - endloop - endfacet - facet normal 0.700509 0.713644 -0 - outer loop - vertex 22.0631 7.89267 -0.2 - vertex 21.7259 8.22365 0 - vertex 22.0631 7.89267 0 - endloop - endfacet - facet normal 0.700509 0.713644 0 - outer loop - vertex 21.7259 8.22365 0 - vertex 22.0631 7.89267 -0.2 - vertex 21.7259 8.22365 -0.2 - endloop - endfacet - facet normal 0.647802 0.761808 -0 - outer loop - vertex 21.7259 8.22365 -0.2 - vertex 21.3371 8.55423 0 - vertex 21.7259 8.22365 0 - endloop - endfacet - facet normal 0.647802 0.761808 0 - outer loop - vertex 21.3371 8.55423 0 - vertex 21.7259 8.22365 -0.2 - vertex 21.3371 8.55423 -0.2 - endloop - endfacet - facet normal 0.602358 0.798226 -0 - outer loop - vertex 21.3371 8.55423 -0.2 - vertex 20.8834 8.89663 0 - vertex 21.3371 8.55423 0 - endloop - endfacet - facet normal 0.602358 0.798226 0 - outer loop - vertex 20.8834 8.89663 0 - vertex 21.3371 8.55423 -0.2 - vertex 20.8834 8.89663 -0.2 - endloop - endfacet - facet normal 0.567155 0.823611 -0 - outer loop - vertex 20.8834 8.89663 -0.2 - vertex 20.3513 9.26304 0 - vertex 20.8834 8.89663 0 - endloop - endfacet - facet normal 0.567155 0.823611 0 - outer loop - vertex 20.3513 9.26304 0 - vertex 20.8834 8.89663 -0.2 - vertex 20.3513 9.26304 -0.2 - endloop - endfacet - facet normal 0.542271 0.840203 -0 - outer loop - vertex 20.3513 9.26304 -0.2 - vertex 19.7274 9.66569 0 - vertex 20.3513 9.26304 0 - endloop - endfacet - facet normal 0.542271 0.840203 0 - outer loop - vertex 19.7274 9.66569 0 - vertex 20.3513 9.26304 -0.2 - vertex 19.7274 9.66569 -0.2 - endloop - endfacet - facet normal 0.509213 0.86064 -0 - outer loop - vertex 19.7274 9.66569 -0.2 - vertex 19.4723 9.81661 0 - vertex 19.7274 9.66569 0 - endloop - endfacet - facet normal 0.509213 0.86064 0 - outer loop - vertex 19.4723 9.81661 0 - vertex 19.7274 9.66569 -0.2 - vertex 19.4723 9.81661 -0.2 - endloop - endfacet - facet normal 0.451586 0.892227 -0 - outer loop - vertex 19.4723 9.81661 -0.2 - vertex 19.2206 9.94402 0 - vertex 19.4723 9.81661 0 - endloop - endfacet - facet normal 0.451586 0.892227 0 - outer loop - vertex 19.2206 9.94402 0 - vertex 19.4723 9.81661 -0.2 - vertex 19.2206 9.94402 -0.2 - endloop - endfacet - facet normal 0.382649 0.923894 -0 - outer loop - vertex 19.2206 9.94402 -0.2 - vertex 18.9645 10.0501 0 - vertex 19.2206 9.94402 0 - endloop - endfacet - facet normal 0.382649 0.923894 0 - outer loop - vertex 18.9645 10.0501 0 - vertex 19.2206 9.94402 -0.2 - vertex 18.9645 10.0501 -0.2 - endloop - endfacet - facet normal 0.308251 0.951305 -0 - outer loop - vertex 18.9645 10.0501 -0.2 - vertex 18.6964 10.137 0 - vertex 18.9645 10.0501 0 - endloop - endfacet - facet normal 0.308251 0.951305 0 - outer loop - vertex 18.6964 10.137 0 - vertex 18.9645 10.0501 -0.2 - vertex 18.6964 10.137 -0.2 - endloop - endfacet - facet normal 0.235891 0.971779 -0 - outer loop - vertex 18.6964 10.137 -0.2 - vertex 18.4085 10.2069 0 - vertex 18.6964 10.137 0 - endloop - endfacet - facet normal 0.235891 0.971779 0 - outer loop - vertex 18.4085 10.2069 0 - vertex 18.6964 10.137 -0.2 - vertex 18.4085 10.2069 -0.2 - endloop - endfacet - facet normal 0.172 0.985097 -0 - outer loop - vertex 18.4085 10.2069 -0.2 - vertex 18.093 10.2619 0 - vertex 18.4085 10.2069 0 - endloop - endfacet - facet normal 0.172 0.985097 0 - outer loop - vertex 18.093 10.2619 0 - vertex 18.4085 10.2069 -0.2 - vertex 18.093 10.2619 -0.2 - endloop - endfacet - facet normal 0.0994696 0.995041 -0 - outer loop - vertex 18.093 10.2619 -0.2 - vertex 17.3487 10.3363 0 - vertex 18.093 10.2619 0 - endloop - endfacet - facet normal 0.0994696 0.995041 0 - outer loop - vertex 17.3487 10.3363 0 - vertex 18.093 10.2619 -0.2 - vertex 17.3487 10.3363 -0.2 - endloop - endfacet - facet normal 0.0510048 0.998698 -0 - outer loop - vertex 17.3487 10.3363 -0.2 - vertex 16.499 10.3797 0 - vertex 17.3487 10.3363 0 - endloop - endfacet - facet normal 0.0510048 0.998698 0 - outer loop - vertex 16.499 10.3797 0 - vertex 17.3487 10.3363 -0.2 - vertex 16.499 10.3797 -0.2 - endloop - endfacet - facet normal -0.0333465 0.999444 0 - outer loop - vertex 16.499 10.3797 -0.2 - vertex 16.2187 10.3704 0 - vertex 16.499 10.3797 0 - endloop - endfacet - facet normal -0.0333465 0.999444 0 - outer loop - vertex 16.2187 10.3704 0 - vertex 16.499 10.3797 -0.2 - vertex 16.2187 10.3704 -0.2 - endloop - endfacet - facet normal -0.179208 0.983811 0 - outer loop - vertex 16.2187 10.3704 -0.2 - vertex 16.005 10.3315 0 - vertex 16.2187 10.3704 0 - endloop - endfacet - facet normal -0.179208 0.983811 0 - outer loop - vertex 16.005 10.3315 0 - vertex 16.2187 10.3704 -0.2 - vertex 16.005 10.3315 -0.2 - endloop - endfacet - facet normal -0.405411 0.914135 0 - outer loop - vertex 16.005 10.3315 -0.2 - vertex 15.8355 10.2563 0 - vertex 16.005 10.3315 0 - endloop - endfacet - facet normal -0.405411 0.914135 0 - outer loop - vertex 15.8355 10.2563 0 - vertex 16.005 10.3315 -0.2 - vertex 15.8355 10.2563 -0.2 - endloop - endfacet - facet normal -0.624597 0.780947 0 - outer loop - vertex 15.8355 10.2563 -0.2 - vertex 15.6879 10.1383 0 - vertex 15.8355 10.2563 0 - endloop - endfacet - facet normal -0.624597 0.780947 0 - outer loop - vertex 15.6879 10.1383 0 - vertex 15.8355 10.2563 -0.2 - vertex 15.6879 10.1383 -0.2 - endloop - endfacet - facet normal -0.749396 0.662122 0 - outer loop - vertex 15.5399 9.97068 -0.2 - vertex 15.6879 10.1383 0 - vertex 15.6879 10.1383 -0.2 - endloop - endfacet - facet normal -0.749396 0.662122 0 - outer loop - vertex 15.6879 10.1383 0 - vertex 15.5399 9.97068 -0.2 - vertex 15.5399 9.97068 0 - endloop - endfacet - facet normal -0.794739 0.606951 0 - outer loop - vertex 15.369 9.74689 -0.2 - vertex 15.5399 9.97068 0 - vertex 15.5399 9.97068 -0.2 - endloop - endfacet - facet normal -0.794739 0.606951 0 - outer loop - vertex 15.5399 9.97068 0 - vertex 15.369 9.74689 -0.2 - vertex 15.369 9.74689 0 - endloop - endfacet - facet normal -0.812079 0.583548 0 - outer loop - vertex 15.213 9.52982 -0.2 - vertex 15.369 9.74689 0 - vertex 15.369 9.74689 -0.2 - endloop - endfacet - facet normal -0.812079 0.583548 0 - outer loop - vertex 15.369 9.74689 0 - vertex 15.213 9.52982 -0.2 - vertex 15.213 9.52982 0 - endloop - endfacet - facet normal -0.851006 0.525156 0 - outer loop - vertex 15.0942 9.33737 -0.2 - vertex 15.213 9.52982 0 - vertex 15.213 9.52982 -0.2 - endloop - endfacet - facet normal -0.851006 0.525156 0 - outer loop - vertex 15.213 9.52982 0 - vertex 15.0942 9.33737 -0.2 - vertex 15.0942 9.33737 0 - endloop - endfacet - facet normal -0.909184 0.416395 0 - outer loop - vertex 15.0092 9.15168 -0.2 - vertex 15.0942 9.33737 0 - vertex 15.0942 9.33737 -0.2 - endloop - endfacet - facet normal -0.909184 0.416395 0 - outer loop - vertex 15.0942 9.33737 0 - vertex 15.0092 9.15168 -0.2 - vertex 15.0092 9.15168 0 - endloop - endfacet - facet normal -0.963304 0.268412 0 - outer loop - vertex 14.9543 8.95485 -0.2 - vertex 15.0092 9.15168 0 - vertex 15.0092 9.15168 -0.2 - endloop - endfacet - facet normal -0.963304 0.268412 0 - outer loop - vertex 15.0092 9.15168 0 - vertex 14.9543 8.95485 -0.2 - vertex 14.9543 8.95485 0 - endloop - endfacet - facet normal -0.99232 0.1237 0 - outer loop - vertex 14.9262 8.72903 -0.2 - vertex 14.9543 8.95485 0 - vertex 14.9543 8.95485 -0.2 - endloop - endfacet - facet normal -0.99232 0.1237 0 - outer loop - vertex 14.9543 8.95485 0 - vertex 14.9262 8.72903 -0.2 - vertex 14.9262 8.72903 0 - endloop - endfacet - facet normal -0.999834 0.0182102 0 - outer loop - vertex 14.9212 8.45633 -0.2 - vertex 14.9262 8.72903 0 - vertex 14.9262 8.72903 -0.2 - endloop - endfacet - facet normal -0.999834 0.0182102 0 - outer loop - vertex 14.9262 8.72903 0 - vertex 14.9212 8.45633 -0.2 - vertex 14.9212 8.45633 0 - endloop - endfacet - facet normal -0.998195 -0.0600559 0 - outer loop - vertex 14.9668 7.69881 -0.2 - vertex 14.9212 8.45633 0 - vertex 14.9212 8.45633 -0.2 - endloop - endfacet - facet normal -0.998195 -0.0600559 0 - outer loop - vertex 14.9212 8.45633 0 - vertex 14.9668 7.69881 -0.2 - vertex 14.9668 7.69881 0 - endloop - endfacet - facet normal -0.99465 -0.103302 0 - outer loop - vertex 15.0249 7.13954 -0.2 - vertex 14.9668 7.69881 0 - vertex 14.9668 7.69881 -0.2 - endloop - endfacet - facet normal -0.99465 -0.103302 0 - outer loop - vertex 14.9668 7.69881 0 - vertex 15.0249 7.13954 -0.2 - vertex 15.0249 7.13954 0 - endloop - endfacet - facet normal -0.989699 -0.143163 0 - outer loop - vertex 15.1095 6.5543 -0.2 - vertex 15.0249 7.13954 0 - vertex 15.0249 7.13954 -0.2 - endloop - endfacet - facet normal -0.989699 -0.143163 0 - outer loop - vertex 15.0249 7.13954 0 - vertex 15.1095 6.5543 -0.2 - vertex 15.1095 6.5543 0 - endloop - endfacet - facet normal -0.984174 -0.177204 0 - outer loop - vertex 15.2183 5.95043 -0.2 - vertex 15.1095 6.5543 0 - vertex 15.1095 6.5543 -0.2 - endloop - endfacet - facet normal -0.984174 -0.177204 0 - outer loop - vertex 15.1095 6.5543 0 - vertex 15.2183 5.95043 -0.2 - vertex 15.2183 5.95043 0 - endloop - endfacet - facet normal -0.978296 -0.207212 0 - outer loop - vertex 15.3486 5.33522 -0.2 - vertex 15.2183 5.95043 0 - vertex 15.2183 5.95043 -0.2 - endloop - endfacet - facet normal -0.978296 -0.207212 0 - outer loop - vertex 15.2183 5.95043 0 - vertex 15.3486 5.33522 -0.2 - vertex 15.3486 5.33522 0 - endloop - endfacet - facet normal -0.972111 -0.23452 0 - outer loop - vertex 15.498 4.716 -0.2 - vertex 15.3486 5.33522 0 - vertex 15.3486 5.33522 -0.2 - endloop - endfacet - facet normal -0.972111 -0.23452 0 - outer loop - vertex 15.3486 5.33522 0 - vertex 15.498 4.716 -0.2 - vertex 15.498 4.716 0 - endloop - endfacet - facet normal -0.965559 -0.260185 0 - outer loop - vertex 15.6639 4.10009 -0.2 - vertex 15.498 4.716 0 - vertex 15.498 4.716 -0.2 - endloop - endfacet - facet normal -0.965559 -0.260185 0 - outer loop - vertex 15.498 4.716 0 - vertex 15.6639 4.10009 -0.2 - vertex 15.6639 4.10009 0 - endloop - endfacet - facet normal -0.95471 -0.297537 0 - outer loop - vertex 16.0356 2.90743 -0.2 - vertex 15.6639 4.10009 0 - vertex 15.6639 4.10009 -0.2 - endloop - endfacet - facet normal -0.95471 -0.297537 0 - outer loop - vertex 15.6639 4.10009 0 - vertex 16.0356 2.90743 -0.2 - vertex 16.0356 2.90743 0 - endloop - endfacet - facet normal -0.941754 -0.336302 0 - outer loop - vertex 16.2363 2.34533 -0.2 - vertex 16.0356 2.90743 0 - vertex 16.0356 2.90743 -0.2 - endloop - endfacet - facet normal -0.941754 -0.336302 0 - outer loop - vertex 16.0356 2.90743 0 - vertex 16.2363 2.34533 -0.2 - vertex 16.2363 2.34533 0 - endloop - endfacet - facet normal -0.931176 -0.364571 0 - outer loop - vertex 16.4437 1.81579 -0.2 - vertex 16.2363 2.34533 0 - vertex 16.2363 2.34533 -0.2 - endloop - endfacet - facet normal -0.931176 -0.364571 0 - outer loop - vertex 16.2363 2.34533 0 - vertex 16.4437 1.81579 -0.2 - vertex 16.4437 1.81579 0 - endloop - endfacet - facet normal -0.91808 -0.396396 0 - outer loop - vertex 16.6551 1.32614 -0.2 - vertex 16.4437 1.81579 0 - vertex 16.4437 1.81579 -0.2 - endloop - endfacet - facet normal -0.91808 -0.396396 0 - outer loop - vertex 16.4437 1.81579 0 - vertex 16.6551 1.32614 -0.2 - vertex 16.6551 1.32614 0 - endloop - endfacet - facet normal -0.901015 -0.433787 0 - outer loop - vertex 16.8681 0.883681 -0.2 - vertex 16.6551 1.32614 0 - vertex 16.6551 1.32614 -0.2 - endloop - endfacet - facet normal -0.901015 -0.433787 0 - outer loop - vertex 16.6551 1.32614 0 - vertex 16.8681 0.883681 -0.2 - vertex 16.8681 0.883681 0 - endloop - endfacet - facet normal -0.877409 -0.479744 0 - outer loop - vertex 17.0802 0.495742 -0.2 - vertex 16.8681 0.883681 0 - vertex 16.8681 0.883681 -0.2 - endloop - endfacet - facet normal -0.877409 -0.479744 0 - outer loop - vertex 16.8681 0.883681 0 - vertex 17.0802 0.495742 -0.2 - vertex 17.0802 0.495742 0 - endloop - endfacet - facet normal -0.842258 -0.539075 0 - outer loop - vertex 17.2889 0.169637 -0.2 - vertex 17.0802 0.495742 0 - vertex 17.0802 0.495742 -0.2 - endloop - endfacet - facet normal -0.842258 -0.539075 0 - outer loop - vertex 17.0802 0.495742 0 - vertex 17.2889 0.169637 -0.2 - vertex 17.2889 0.169637 0 - endloop - endfacet - facet normal -0.784932 -0.619582 0 - outer loop - vertex 17.4918 -0.0873203 -0.2 - vertex 17.2889 0.169637 0 - vertex 17.2889 0.169637 -0.2 - endloop - endfacet - facet normal -0.784932 -0.619582 0 - outer loop - vertex 17.2889 0.169637 0 - vertex 17.4918 -0.0873203 -0.2 - vertex 17.4918 -0.0873203 0 - endloop - endfacet - facet normal -0.680344 -0.732893 0 - outer loop - vertex 17.4918 -0.0873203 -0.2 - vertex 17.6862 -0.267812 0 - vertex 17.4918 -0.0873203 0 - endloop - endfacet - facet normal -0.680344 -0.732893 -0 - outer loop - vertex 17.6862 -0.267812 0 - vertex 17.4918 -0.0873203 -0.2 - vertex 17.6862 -0.267812 -0.2 - endloop - endfacet - facet normal -0.560342 -0.828261 0 - outer loop - vertex 17.6862 -0.267812 -0.2 - vertex 17.8284 -0.36402 0 - vertex 17.6862 -0.267812 0 - endloop - endfacet - facet normal -0.560342 -0.828261 -0 - outer loop - vertex 17.8284 -0.36402 0 - vertex 17.6862 -0.267812 -0.2 - vertex 17.8284 -0.36402 -0.2 - endloop - endfacet - facet normal -0.436276 -0.899813 0 - outer loop - vertex 17.8284 -0.36402 -0.2 - vertex 17.9646 -0.430052 0 - vertex 17.8284 -0.36402 0 - endloop - endfacet - facet normal -0.436276 -0.899813 -0 - outer loop - vertex 17.9646 -0.430052 0 - vertex 17.8284 -0.36402 -0.2 - vertex 17.9646 -0.430052 -0.2 - endloop - endfacet - facet normal -0.23232 -0.972639 0 - outer loop - vertex 17.9646 -0.430052 -0.2 - vertex 18.1098 -0.464739 0 - vertex 17.9646 -0.430052 0 - endloop - endfacet - facet normal -0.23232 -0.972639 -0 - outer loop - vertex 18.1098 -0.464739 0 - vertex 17.9646 -0.430052 -0.2 - vertex 18.1098 -0.464739 -0.2 - endloop - endfacet - facet normal -0.0128436 -0.999918 0 - outer loop - vertex 18.1098 -0.464739 -0.2 - vertex 18.2791 -0.466914 0 - vertex 18.1098 -0.464739 0 - endloop - endfacet - facet normal -0.0128436 -0.999918 -0 - outer loop - vertex 18.2791 -0.466914 0 - vertex 18.1098 -0.464739 -0.2 - vertex 18.2791 -0.466914 -0.2 - endloop - endfacet - facet normal 0.149466 -0.988767 0 - outer loop - vertex 18.2791 -0.466914 -0.2 - vertex 18.4876 -0.435405 0 - vertex 18.2791 -0.466914 0 - endloop - endfacet - facet normal 0.149466 -0.988767 0 - outer loop - vertex 18.4876 -0.435405 0 - vertex 18.2791 -0.466914 -0.2 - vertex 18.4876 -0.435405 -0.2 - endloop - endfacet - facet normal 0.244974 -0.96953 0 - outer loop - vertex 18.4876 -0.435405 -0.2 - vertex 18.7502 -0.369046 0 - vertex 18.4876 -0.435405 0 - endloop - endfacet - facet normal 0.244974 -0.96953 0 - outer loop - vertex 18.7502 -0.369046 0 - vertex 18.4876 -0.435405 -0.2 - vertex 18.7502 -0.369046 -0.2 - endloop - endfacet - facet normal 0.307753 -0.951466 0 - outer loop - vertex 18.7502 -0.369046 -0.2 - vertex 19.4982 -0.127099 0 - vertex 18.7502 -0.369046 0 - endloop - endfacet - facet normal 0.307753 -0.951466 0 - outer loop - vertex 19.4982 -0.127099 0 - vertex 18.7502 -0.369046 -0.2 - vertex 19.4982 -0.127099 -0.2 - endloop - endfacet - facet normal 0.301432 -0.953488 0 - outer loop - vertex 19.4982 -0.127099 -0.2 - vertex 20.0432 0.0451876 0 - vertex 19.4982 -0.127099 0 - endloop - endfacet - facet normal 0.301432 -0.953488 0 - outer loop - vertex 20.0432 0.0451876 0 - vertex 19.4982 -0.127099 -0.2 - vertex 20.0432 0.0451876 -0.2 - endloop - endfacet - facet normal 0.251907 -0.967752 0 - outer loop - vertex 20.0432 0.0451876 -0.2 - vertex 20.5155 0.168137 0 - vertex 20.0432 0.0451876 0 - endloop - endfacet - facet normal 0.251907 -0.967752 0 - outer loop - vertex 20.5155 0.168137 0 - vertex 20.0432 0.0451876 -0.2 - vertex 20.5155 0.168137 -0.2 - endloop - endfacet - facet normal 0.175432 -0.984492 0 - outer loop - vertex 20.5155 0.168137 -0.2 - vertex 20.8646 0.230347 0 - vertex 20.5155 0.168137 0 - endloop - endfacet - facet normal 0.175432 -0.984492 0 - outer loop - vertex 20.8646 0.230347 0 - vertex 20.5155 0.168137 -0.2 - vertex 20.8646 0.230347 -0.2 - endloop - endfacet - facet normal 0.0422921 -0.999105 0 - outer loop - vertex 20.8646 0.230347 -0.2 - vertex 20.9772 0.235111 0 - vertex 20.8646 0.230347 0 - endloop - endfacet - facet normal 0.0422921 -0.999105 0 - outer loop - vertex 20.9772 0.235111 0 - vertex 20.8646 0.230347 -0.2 - vertex 20.9772 0.235111 -0.2 - endloop - endfacet - facet normal -0.228021 -0.973656 0 - outer loop - vertex 20.9772 0.235111 -0.2 - vertex 21.0399 0.220413 0 - vertex 20.9772 0.235111 0 - endloop - endfacet - facet normal -0.228021 -0.973656 -0 - outer loop - vertex 21.0399 0.220413 0 - vertex 20.9772 0.235111 -0.2 - vertex 21.0399 0.220413 -0.2 - endloop - endfacet - facet normal -0.836215 -0.548402 0 - outer loop - vertex 21.0726 0.170561 -0.2 - vertex 21.0399 0.220413 0 - vertex 21.0399 0.220413 -0.2 - endloop - endfacet - facet normal -0.836215 -0.548402 0 - outer loop - vertex 21.0399 0.220413 0 - vertex 21.0726 0.170561 -0.2 - vertex 21.0726 0.170561 0 - endloop - endfacet - facet normal -0.964289 -0.264852 0 - outer loop - vertex 21.099 0.0745682 -0.2 - vertex 21.0726 0.170561 0 - vertex 21.0726 0.170561 -0.2 - endloop - endfacet - facet normal -0.964289 -0.264852 0 - outer loop - vertex 21.0726 0.170561 0 - vertex 21.099 0.0745682 -0.2 - vertex 21.099 0.0745682 0 - endloop - endfacet - facet normal -0.994432 -0.105376 0 - outer loop - vertex 21.1316 -0.233279 -0.2 - vertex 21.099 0.0745682 0 - vertex 21.099 0.0745682 -0.2 - endloop - endfacet - facet normal -0.994432 -0.105376 0 - outer loop - vertex 21.099 0.0745682 0 - vertex 21.1316 -0.233279 -0.2 - vertex 21.1316 -0.233279 0 - endloop - endfacet - facet normal -0.999957 -0.00925488 0 - outer loop - vertex 21.1355 -0.658014 -0.2 - vertex 21.1316 -0.233279 0 - vertex 21.1316 -0.233279 -0.2 - endloop - endfacet - facet normal -0.999957 -0.00925488 0 - outer loop - vertex 21.1316 -0.233279 0 - vertex 21.1355 -0.658014 -0.2 - vertex 21.1355 -0.658014 0 - endloop - endfacet - facet normal -0.998524 0.0543158 0 - outer loop - vertex 21.1085 -1.15452 -0.2 - vertex 21.1355 -0.658014 0 - vertex 21.1355 -0.658014 -0.2 - endloop - endfacet - facet normal -0.998524 0.0543158 0 - outer loop - vertex 21.1355 -0.658014 0 - vertex 21.1085 -1.15452 -0.2 - vertex 21.1085 -1.15452 0 - endloop - endfacet - facet normal -0.992587 0.121535 0 - outer loop - vertex 21.0399 -1.71534 -0.2 - vertex 21.1085 -1.15452 0 - vertex 21.1085 -1.15452 -0.2 - endloop - endfacet - facet normal -0.992587 0.121535 0 - outer loop - vertex 21.1085 -1.15452 0 - vertex 21.0399 -1.71534 -0.2 - vertex 21.0399 -1.71534 0 - endloop - endfacet - facet normal -0.978633 0.205615 0 - outer loop - vertex 20.9878 -1.96317 -0.2 - vertex 21.0399 -1.71534 0 - vertex 21.0399 -1.71534 -0.2 - endloop - endfacet - facet normal -0.978633 0.205615 0 - outer loop - vertex 21.0399 -1.71534 0 - vertex 20.9878 -1.96317 -0.2 - vertex 20.9878 -1.96317 0 - endloop - endfacet - facet normal -0.959237 0.282603 0 - outer loop - vertex 20.9199 -2.19366 -0.2 - vertex 20.9878 -1.96317 0 - vertex 20.9878 -1.96317 -0.2 - endloop - endfacet - facet normal -0.959237 0.282603 0 - outer loop - vertex 20.9878 -1.96317 0 - vertex 20.9199 -2.19366 -0.2 - vertex 20.9199 -2.19366 0 - endloop - endfacet - facet normal -0.92823 0.372008 0 - outer loop - vertex 20.8331 -2.41014 -0.2 - vertex 20.9199 -2.19366 0 - vertex 20.9199 -2.19366 -0.2 - endloop - endfacet - facet normal -0.92823 0.372008 0 - outer loop - vertex 20.9199 -2.19366 0 - vertex 20.8331 -2.41014 -0.2 - vertex 20.8331 -2.41014 0 - endloop - endfacet - facet normal -0.884337 0.46685 0 - outer loop - vertex 20.7245 -2.61588 -0.2 - vertex 20.8331 -2.41014 0 - vertex 20.8331 -2.41014 -0.2 - endloop - endfacet - facet normal -0.884337 0.46685 0 - outer loop - vertex 20.8331 -2.41014 0 - vertex 20.7245 -2.61588 -0.2 - vertex 20.7245 -2.61588 0 - endloop - endfacet - facet normal -0.829583 0.558383 0 - outer loop - vertex 20.591 -2.8142 -0.2 - vertex 20.7245 -2.61588 0 - vertex 20.7245 -2.61588 -0.2 - endloop - endfacet - facet normal -0.829583 0.558383 0 - outer loop - vertex 20.7245 -2.61588 0 - vertex 20.591 -2.8142 -0.2 - vertex 20.591 -2.8142 0 - endloop - endfacet - facet normal -0.769117 0.639107 0 - outer loop - vertex 20.4297 -3.0084 -0.2 - vertex 20.591 -2.8142 0 - vertex 20.591 -2.8142 -0.2 - endloop - endfacet - facet normal -0.769117 0.639107 0 - outer loop - vertex 20.591 -2.8142 0 - vertex 20.4297 -3.0084 -0.2 - vertex 20.4297 -3.0084 0 - endloop - endfacet - facet normal -0.709135 0.705072 0 - outer loop - vertex 20.2374 -3.20177 -0.2 - vertex 20.4297 -3.0084 0 - vertex 20.4297 -3.0084 -0.2 - endloop - endfacet - facet normal -0.709135 0.705072 0 - outer loop - vertex 20.4297 -3.0084 0 - vertex 20.2374 -3.20177 -0.2 - vertex 20.2374 -3.20177 0 - endloop - endfacet - facet normal -0.654612 0.755965 0 - outer loop - vertex 20.2374 -3.20177 -0.2 - vertex 20.0112 -3.39762 0 - vertex 20.2374 -3.20177 0 - endloop - endfacet - facet normal -0.654612 0.755965 0 - outer loop - vertex 20.0112 -3.39762 0 - vertex 20.2374 -3.20177 -0.2 - vertex 20.0112 -3.39762 -0.2 - endloop - endfacet - facet normal -0.588742 0.808321 0 - outer loop - vertex 20.0112 -3.39762 -0.2 - vertex 19.4451 -3.80993 0 - vertex 20.0112 -3.39762 0 - endloop - endfacet - facet normal -0.588742 0.808321 0 - outer loop - vertex 19.4451 -3.80993 0 - vertex 20.0112 -3.39762 -0.2 - vertex 19.4451 -3.80993 -0.2 - endloop - endfacet - facet normal -0.530543 0.847658 0 - outer loop - vertex 19.4451 -3.80993 -0.2 - vertex 18.7073 -4.27174 0 - vertex 19.4451 -3.80993 0 - endloop - endfacet - facet normal -0.530543 0.847658 0 - outer loop - vertex 18.7073 -4.27174 0 - vertex 19.4451 -3.80993 -0.2 - vertex 18.7073 -4.27174 -0.2 - endloop - endfacet - facet normal -0.499058 0.866569 0 - outer loop - vertex 18.7073 -4.27174 -0.2 - vertex 17.7736 -4.80944 0 - vertex 18.7073 -4.27174 0 - endloop - endfacet - facet normal -0.499058 0.866569 0 - outer loop - vertex 17.7736 -4.80944 0 - vertex 18.7073 -4.27174 -0.2 - vertex 17.7736 -4.80944 -0.2 - endloop - endfacet - facet normal -0.476856 0.878981 0 - outer loop - vertex 17.7736 -4.80944 -0.2 - vertex 16.3254 -5.59514 0 - vertex 17.7736 -4.80944 0 - endloop - endfacet - facet normal -0.476856 0.878981 0 - outer loop - vertex 16.3254 -5.59514 0 - vertex 17.7736 -4.80944 -0.2 - vertex 16.3254 -5.59514 -0.2 - endloop - endfacet - facet normal -0.451418 0.892312 0 - outer loop - vertex 16.3254 -5.59514 -0.2 - vertex 15.6549 -5.93433 0 - vertex 16.3254 -5.59514 0 - endloop - endfacet - facet normal -0.451418 0.892312 0 - outer loop - vertex 15.6549 -5.93433 0 - vertex 16.3254 -5.59514 -0.2 - vertex 15.6549 -5.93433 -0.2 - endloop - endfacet - facet normal -0.429833 0.902908 0 - outer loop - vertex 15.6549 -5.93433 -0.2 - vertex 15.0129 -6.23993 0 - vertex 15.6549 -5.93433 0 - endloop - endfacet - facet normal -0.429833 0.902908 0 - outer loop - vertex 15.0129 -6.23993 0 - vertex 15.6549 -5.93433 -0.2 - vertex 15.0129 -6.23993 -0.2 - endloop - endfacet - facet normal -0.404408 0.914579 0 - outer loop - vertex 15.0129 -6.23993 -0.2 - vertex 14.3941 -6.51356 0 - vertex 15.0129 -6.23993 0 - endloop - endfacet - facet normal -0.404408 0.914579 0 - outer loop - vertex 14.3941 -6.51356 0 - vertex 15.0129 -6.23993 -0.2 - vertex 14.3941 -6.51356 -0.2 - endloop - endfacet - facet normal -0.375168 0.926957 0 - outer loop - vertex 14.3941 -6.51356 -0.2 - vertex 13.793 -6.75686 0 - vertex 14.3941 -6.51356 0 - endloop - endfacet - facet normal -0.375168 0.926957 0 - outer loop - vertex 13.793 -6.75686 0 - vertex 14.3941 -6.51356 -0.2 - vertex 13.793 -6.75686 -0.2 - endloop - endfacet - facet normal -0.342394 0.939557 0 - outer loop - vertex 13.793 -6.75686 -0.2 - vertex 13.2041 -6.97145 0 - vertex 13.793 -6.75686 0 - endloop - endfacet - facet normal -0.342394 0.939557 0 - outer loop - vertex 13.2041 -6.97145 0 - vertex 13.793 -6.75686 -0.2 - vertex 13.2041 -6.97145 -0.2 - endloop - endfacet - facet normal -0.306665 0.951818 0 - outer loop - vertex 13.2041 -6.97145 -0.2 - vertex 12.6221 -7.15898 0 - vertex 13.2041 -6.97145 0 - endloop - endfacet - facet normal -0.306665 0.951818 0 - outer loop - vertex 12.6221 -7.15898 0 - vertex 13.2041 -6.97145 -0.2 - vertex 12.6221 -7.15898 -0.2 - endloop - endfacet - facet normal -0.268881 0.963173 0 - outer loop - vertex 12.6221 -7.15898 -0.2 - vertex 12.0414 -7.32107 0 - vertex 12.6221 -7.15898 0 - endloop - endfacet - facet normal -0.268881 0.963173 0 - outer loop - vertex 12.0414 -7.32107 0 - vertex 12.6221 -7.15898 -0.2 - vertex 12.0414 -7.32107 -0.2 - endloop - endfacet - facet normal -0.230173 0.97315 0 - outer loop - vertex 12.0414 -7.32107 -0.2 - vertex 11.4568 -7.45935 0 - vertex 12.0414 -7.32107 0 - endloop - endfacet - facet normal -0.230173 0.97315 0 - outer loop - vertex 11.4568 -7.45935 0 - vertex 12.0414 -7.32107 -0.2 - vertex 11.4568 -7.45935 -0.2 - endloop - endfacet - facet normal -0.191808 0.981433 0 - outer loop - vertex 11.4568 -7.45935 -0.2 - vertex 10.8627 -7.57545 0 - vertex 11.4568 -7.45935 0 - endloop - endfacet - facet normal -0.191808 0.981433 0 - outer loop - vertex 10.8627 -7.57545 0 - vertex 11.4568 -7.45935 -0.2 - vertex 10.8627 -7.57545 -0.2 - endloop - endfacet - facet normal -0.155029 0.98791 0 - outer loop - vertex 10.8627 -7.57545 -0.2 - vertex 10.2538 -7.67101 0 - vertex 10.8627 -7.57545 0 - endloop - endfacet - facet normal -0.155029 0.98791 0 - outer loop - vertex 10.2538 -7.67101 0 - vertex 10.8627 -7.57545 -0.2 - vertex 10.2538 -7.67101 -0.2 - endloop - endfacet - facet normal -0.120913 0.992663 0 - outer loop - vertex 10.2538 -7.67101 -0.2 - vertex 9.62459 -7.74765 0 - vertex 10.2538 -7.67101 0 - endloop - endfacet - facet normal -0.120913 0.992663 0 - outer loop - vertex 9.62459 -7.74765 0 - vertex 10.2538 -7.67101 -0.2 - vertex 9.62459 -7.74765 -0.2 - endloop - endfacet - facet normal -0.0902671 0.995918 0 - outer loop - vertex 9.62459 -7.74765 -0.2 - vertex 8.96966 -7.80701 0 - vertex 9.62459 -7.74765 0 - endloop - endfacet - facet normal -0.0902671 0.995918 0 - outer loop - vertex 8.96966 -7.80701 0 - vertex 9.62459 -7.74765 -0.2 - vertex 8.96966 -7.80701 -0.2 - endloop - endfacet - facet normal -0.0520328 0.998645 0 - outer loop - vertex 8.96966 -7.80701 -0.2 - vertex 7.56097 -7.88041 0 - vertex 8.96966 -7.80701 0 - endloop - endfacet - facet normal -0.0520328 0.998645 0 - outer loop - vertex 7.56097 -7.88041 0 - vertex 8.96966 -7.80701 -0.2 - vertex 7.56097 -7.88041 -0.2 - endloop - endfacet - facet normal -0.0211888 0.999775 0 - outer loop - vertex 7.56097 -7.88041 -0.2 - vertex 6.04455 -7.91255 0 - vertex 7.56097 -7.88041 0 - endloop - endfacet - facet normal -0.0211888 0.999775 0 - outer loop - vertex 6.04455 -7.91255 0 - vertex 7.56097 -7.88041 -0.2 - vertex 6.04455 -7.91255 -0.2 - endloop - endfacet - facet normal 0.00984088 0.999952 -0 - outer loop - vertex 6.04455 -7.91255 -0.2 - vertex 5.49083 -7.9071 0 - vertex 6.04455 -7.91255 0 - endloop - endfacet - facet normal 0.00984088 0.999952 0 - outer loop - vertex 5.49083 -7.9071 0 - vertex 6.04455 -7.91255 -0.2 - vertex 5.49083 -7.9071 -0.2 - endloop - endfacet - facet normal 0.0493656 0.998781 -0 - outer loop - vertex 5.49083 -7.9071 -0.2 - vertex 5.0434 -7.88498 0 - vertex 5.49083 -7.9071 0 - endloop - endfacet - facet normal 0.0493656 0.998781 0 - outer loop - vertex 5.0434 -7.88498 0 - vertex 5.49083 -7.9071 -0.2 - vertex 5.0434 -7.88498 -0.2 - endloop - endfacet - facet normal 0.110735 0.99385 -0 - outer loop - vertex 5.0434 -7.88498 -0.2 - vertex 4.67971 -7.84446 0 - vertex 5.0434 -7.88498 0 - endloop - endfacet - facet normal 0.110735 0.99385 0 - outer loop - vertex 4.67971 -7.84446 0 - vertex 5.0434 -7.88498 -0.2 - vertex 4.67971 -7.84446 -0.2 - endloop - endfacet - facet normal 0.196653 0.980473 -0 - outer loop - vertex 4.67971 -7.84446 -0.2 - vertex 4.37723 -7.78379 0 - vertex 4.67971 -7.84446 0 - endloop - endfacet - facet normal 0.196653 0.980473 0 - outer loop - vertex 4.37723 -7.78379 0 - vertex 4.67971 -7.84446 -0.2 - vertex 4.37723 -7.78379 -0.2 - endloop - endfacet - facet normal 0.298658 0.95436 -0 - outer loop - vertex 4.37723 -7.78379 -0.2 - vertex 4.11342 -7.70123 0 - vertex 4.37723 -7.78379 0 - endloop - endfacet - facet normal 0.298658 0.95436 0 - outer loop - vertex 4.11342 -7.70123 0 - vertex 4.37723 -7.78379 -0.2 - vertex 4.11342 -7.70123 -0.2 - endloop - endfacet - facet normal 0.39403 0.919098 -0 - outer loop - vertex 4.11342 -7.70123 -0.2 - vertex 3.86574 -7.59505 0 - vertex 4.11342 -7.70123 0 - endloop - endfacet - facet normal 0.39403 0.919098 0 - outer loop - vertex 3.86574 -7.59505 0 - vertex 4.11342 -7.70123 -0.2 - vertex 3.86574 -7.59505 -0.2 - endloop - endfacet - facet normal 0.472054 0.88157 -0 - outer loop - vertex 3.86574 -7.59505 -0.2 - vertex 3.40104 -7.34622 0 - vertex 3.86574 -7.59505 0 - endloop - endfacet - facet normal 0.472054 0.88157 0 - outer loop - vertex 3.40104 -7.34622 0 - vertex 3.86574 -7.59505 -0.2 - vertex 3.40104 -7.34622 -0.2 - endloop - endfacet - facet normal 0.50336 0.864077 -0 - outer loop - vertex 3.40104 -7.34622 -0.2 - vertex 2.71562 -6.94693 0 - vertex 3.40104 -7.34622 0 - endloop - endfacet - facet normal 0.50336 0.864077 0 - outer loop - vertex 2.71562 -6.94693 0 - vertex 3.40104 -7.34622 -0.2 - vertex 2.71562 -6.94693 -0.2 - endloop - endfacet - facet normal 0.526285 0.850308 -0 - outer loop - vertex 2.71562 -6.94693 -0.2 - vertex 1.05193 -5.91722 0 - vertex 2.71562 -6.94693 0 - endloop - endfacet - facet normal 0.526285 0.850308 0 - outer loop - vertex 1.05193 -5.91722 0 - vertex 2.71562 -6.94693 -0.2 - vertex 1.05193 -5.91722 -0.2 - endloop - endfacet - facet normal 0.529768 0.848143 -0 - outer loop - vertex 1.05193 -5.91722 -0.2 - vertex -0.694871 -4.82613 0 - vertex 1.05193 -5.91722 0 - endloop - endfacet - facet normal 0.529768 0.848143 0 - outer loop - vertex -0.694871 -4.82613 0 - vertex 1.05193 -5.91722 -0.2 - vertex -0.694871 -4.82613 -0.2 - endloop - endfacet - facet normal 0.507777 0.861489 -0 - outer loop - vertex -0.694871 -4.82613 -0.2 - vertex -2.47177 -3.7788 0 - vertex -0.694871 -4.82613 0 - endloop - endfacet - facet normal 0.507777 0.861489 0 - outer loop - vertex -2.47177 -3.7788 0 - vertex -0.694871 -4.82613 -0.2 - vertex -2.47177 -3.7788 -0.2 - endloop - endfacet - facet normal 0.55979 0.828634 -0 - outer loop - vertex -2.47177 -3.7788 -0.2 - vertex -2.8551 -3.51984 0 - vertex -2.47177 -3.7788 0 - endloop - endfacet - facet normal 0.55979 0.828634 0 - outer loop - vertex -2.8551 -3.51984 0 - vertex -2.47177 -3.7788 -0.2 - vertex -2.8551 -3.51984 -0.2 - endloop - endfacet - facet normal 0.612658 0.790348 -0 - outer loop - vertex -2.8551 -3.51984 -0.2 - vertex -3.18232 -3.26618 0 - vertex -2.8551 -3.51984 0 - endloop - endfacet - facet normal 0.612658 0.790348 0 - outer loop - vertex -3.18232 -3.26618 0 - vertex -2.8551 -3.51984 -0.2 - vertex -3.18232 -3.26618 -0.2 - endloop - endfacet - facet normal 0.673628 0.73907 -0 - outer loop - vertex -3.18232 -3.26618 -0.2 - vertex -3.44099 -3.03042 0 - vertex -3.18232 -3.26618 0 - endloop - endfacet - facet normal 0.673628 0.73907 0 - outer loop - vertex -3.44099 -3.03042 0 - vertex -3.18232 -3.26618 -0.2 - vertex -3.44099 -3.03042 -0.2 - endloop - endfacet - facet normal 0.756151 0.654397 0 - outer loop - vertex -3.44099 -3.03042 0 - vertex -3.61865 -2.82513 -0.2 - vertex -3.61865 -2.82513 0 - endloop - endfacet - facet normal 0.756151 0.654397 0 - outer loop - vertex -3.61865 -2.82513 -0.2 - vertex -3.44099 -3.03042 0 - vertex -3.44099 -3.03042 -0.2 - endloop - endfacet - facet normal 0.887562 0.460688 0 - outer loop - vertex -3.61865 -2.82513 0 - vertex -3.70285 -2.66292 -0.2 - vertex -3.70285 -2.66292 0 - endloop - endfacet - facet normal 0.887562 0.460688 0 - outer loop - vertex -3.70285 -2.66292 -0.2 - vertex -3.61865 -2.82513 0 - vertex -3.61865 -2.82513 -0.2 - endloop - endfacet - facet normal 0.998663 0.0516973 0 - outer loop - vertex -3.70285 -2.66292 0 - vertex -3.70601 -2.60189 -0.2 - vertex -3.70601 -2.60189 0 - endloop - endfacet - facet normal 0.998663 0.0516973 0 - outer loop - vertex -3.70601 -2.60189 -0.2 - vertex -3.70285 -2.66292 0 - vertex -3.70285 -2.66292 -0.2 - endloop - endfacet - facet normal 0.877591 -0.479411 0 - outer loop - vertex -3.70601 -2.60189 0 - vertex -3.68113 -2.55635 -0.2 - vertex -3.68113 -2.55635 0 - endloop - endfacet - facet normal 0.877591 -0.479411 0 - outer loop - vertex -3.68113 -2.55635 -0.2 - vertex -3.70601 -2.60189 0 - vertex -3.70601 -2.60189 -0.2 - endloop - endfacet - facet normal 0.463305 -0.886199 0 - outer loop - vertex -3.68113 -2.55635 -0.2 - vertex -3.62666 -2.52788 0 - vertex -3.68113 -2.55635 0 - endloop - endfacet - facet normal 0.463305 -0.886199 0 - outer loop - vertex -3.62666 -2.52788 0 - vertex -3.68113 -2.55635 -0.2 - vertex -3.62666 -2.52788 -0.2 - endloop - endfacet - facet normal 0.114199 -0.993458 0 - outer loop - vertex -3.62666 -2.52788 -0.2 - vertex -3.54104 -2.51804 0 - vertex -3.62666 -2.52788 0 - endloop - endfacet - facet normal 0.114199 -0.993458 0 - outer loop - vertex -3.54104 -2.51804 0 - vertex -3.62666 -2.52788 -0.2 - vertex -3.54104 -2.51804 -0.2 - endloop - endfacet - facet normal -0.250917 -0.968009 0 - outer loop - vertex -3.54104 -2.51804 -0.2 - vertex -3.301 -2.58026 0 - vertex -3.54104 -2.51804 0 - endloop - endfacet - facet normal -0.250917 -0.968009 -0 - outer loop - vertex -3.301 -2.58026 0 - vertex -3.54104 -2.51804 -0.2 - vertex -3.301 -2.58026 -0.2 - endloop - endfacet - facet normal -0.37095 -0.928653 0 - outer loop - vertex -3.301 -2.58026 -0.2 - vertex -2.87688 -2.74967 0 - vertex -3.301 -2.58026 0 - endloop - endfacet - facet normal -0.37095 -0.928653 -0 - outer loop - vertex -2.87688 -2.74967 0 - vertex -3.301 -2.58026 -0.2 - vertex -2.87688 -2.74967 -0.2 - endloop - endfacet - facet normal -0.415868 -0.909425 0 - outer loop - vertex -2.87688 -2.74967 -0.2 - vertex -2.32857 -3.00041 0 - vertex -2.87688 -2.74967 0 - endloop - endfacet - facet normal -0.415868 -0.909425 -0 - outer loop - vertex -2.32857 -3.00041 0 - vertex -2.87688 -2.74967 -0.2 - vertex -2.32857 -3.00041 -0.2 - endloop - endfacet - facet normal -0.447064 -0.894502 0 - outer loop - vertex -2.32857 -3.00041 -0.2 - vertex -1.71595 -3.30659 0 - vertex -2.32857 -3.00041 0 - endloop - endfacet - facet normal -0.447064 -0.894502 -0 - outer loop - vertex -1.71595 -3.30659 0 - vertex -2.32857 -3.00041 -0.2 - vertex -1.71595 -3.30659 -0.2 - endloop - endfacet - facet normal -0.450995 -0.892526 0 - outer loop - vertex -1.71595 -3.30659 -0.2 - vertex -1.01669 -3.65993 0 - vertex -1.71595 -3.30659 0 - endloop - endfacet - facet normal -0.450995 -0.892526 -0 - outer loop - vertex -1.01669 -3.65993 0 - vertex -1.71595 -3.30659 -0.2 - vertex -1.01669 -3.65993 -0.2 - endloop - endfacet - facet normal -0.429074 -0.903269 0 - outer loop - vertex -1.01669 -3.65993 -0.2 - vertex -0.313177 -3.99411 0 - vertex -1.01669 -3.65993 0 - endloop - endfacet - facet normal -0.429074 -0.903269 -0 - outer loop - vertex -0.313177 -3.99411 0 - vertex -1.01669 -3.65993 -0.2 - vertex -0.313177 -3.99411 -0.2 - endloop - endfacet - facet normal -0.406667 -0.913576 0 - outer loop - vertex -0.313177 -3.99411 -0.2 - vertex 0.394112 -4.30895 0 - vertex -0.313177 -3.99411 0 - endloop - endfacet - facet normal -0.406667 -0.913576 -0 - outer loop - vertex 0.394112 -4.30895 0 - vertex -0.313177 -3.99411 -0.2 - vertex 0.394112 -4.30895 -0.2 - endloop - endfacet - facet normal -0.383759 -0.923433 0 - outer loop - vertex 0.394112 -4.30895 -0.2 - vertex 1.10471 -4.60426 0 - vertex 0.394112 -4.30895 0 - endloop - endfacet - facet normal -0.383759 -0.923433 -0 - outer loop - vertex 1.10471 -4.60426 0 - vertex 0.394112 -4.30895 -0.2 - vertex 1.10471 -4.60426 -0.2 - endloop - endfacet - facet normal -0.360336 -0.932823 0 - outer loop - vertex 1.10471 -4.60426 -0.2 - vertex 1.81816 -4.87986 0 - vertex 1.10471 -4.60426 0 - endloop - endfacet - facet normal -0.360336 -0.932823 -0 - outer loop - vertex 1.81816 -4.87986 0 - vertex 1.10471 -4.60426 -0.2 - vertex 1.81816 -4.87986 -0.2 - endloop - endfacet - facet normal -0.33638 -0.941726 0 - outer loop - vertex 1.81816 -4.87986 -0.2 - vertex 2.534 -5.13555 0 - vertex 1.81816 -4.87986 0 - endloop - endfacet - facet normal -0.33638 -0.941726 -0 - outer loop - vertex 2.534 -5.13555 0 - vertex 1.81816 -4.87986 -0.2 - vertex 2.534 -5.13555 -0.2 - endloop - endfacet - facet normal -0.311879 -0.950122 0 - outer loop - vertex 2.534 -5.13555 -0.2 - vertex 3.25174 -5.37115 0 - vertex 2.534 -5.13555 0 - endloop - endfacet - facet normal -0.311879 -0.950122 -0 - outer loop - vertex 3.25174 -5.37115 0 - vertex 2.534 -5.13555 -0.2 - vertex 3.25174 -5.37115 -0.2 - endloop - endfacet - facet normal -0.286817 -0.957985 0 - outer loop - vertex 3.25174 -5.37115 -0.2 - vertex 3.97093 -5.58648 0 - vertex 3.25174 -5.37115 0 - endloop - endfacet - facet normal -0.286817 -0.957985 -0 - outer loop - vertex 3.97093 -5.58648 0 - vertex 3.25174 -5.37115 -0.2 - vertex 3.97093 -5.58648 -0.2 - endloop - endfacet - facet normal -0.262141 -0.965029 0 - outer loop - vertex 3.97093 -5.58648 -0.2 - vertex 4.51611 -5.73457 0 - vertex 3.97093 -5.58648 0 - endloop - endfacet - facet normal -0.262141 -0.965029 -0 - outer loop - vertex 4.51611 -5.73457 0 - vertex 3.97093 -5.58648 -0.2 - vertex 4.51611 -5.73457 -0.2 - endloop - endfacet - facet normal -0.230397 -0.973097 0 - outer loop - vertex 4.51611 -5.73457 -0.2 - vertex 4.99906 -5.84891 0 - vertex 4.51611 -5.73457 0 - endloop - endfacet - facet normal -0.230397 -0.973097 -0 - outer loop - vertex 4.99906 -5.84891 0 - vertex 4.51611 -5.73457 -0.2 - vertex 4.99906 -5.84891 -0.2 - endloop - endfacet - facet normal -0.18567 -0.982612 0 - outer loop - vertex 4.99906 -5.84891 -0.2 - vertex 5.4311 -5.93055 0 - vertex 4.99906 -5.84891 0 - endloop - endfacet - facet normal -0.18567 -0.982612 -0 - outer loop - vertex 5.4311 -5.93055 0 - vertex 4.99906 -5.84891 -0.2 - vertex 5.4311 -5.93055 -0.2 - endloop - endfacet - facet normal -0.126289 -0.991994 0 - outer loop - vertex 5.4311 -5.93055 -0.2 - vertex 5.82356 -5.98052 0 - vertex 5.4311 -5.93055 0 - endloop - endfacet - facet normal -0.126289 -0.991994 -0 - outer loop - vertex 5.82356 -5.98052 0 - vertex 5.4311 -5.93055 -0.2 - vertex 5.82356 -5.98052 -0.2 - endloop - endfacet - facet normal -0.0529968 -0.998595 0 - outer loop - vertex 5.82356 -5.98052 -0.2 - vertex 6.18777 -5.99984 0 - vertex 5.82356 -5.98052 0 - endloop - endfacet - facet normal -0.0529968 -0.998595 -0 - outer loop - vertex 6.18777 -5.99984 0 - vertex 5.82356 -5.98052 -0.2 - vertex 6.18777 -5.99984 -0.2 - endloop - endfacet - facet normal 0.0295577 -0.999563 0 - outer loop - vertex 6.18777 -5.99984 -0.2 - vertex 6.53505 -5.98957 0 - vertex 6.18777 -5.99984 0 - endloop - endfacet - facet normal 0.0295577 -0.999563 0 - outer loop - vertex 6.53505 -5.98957 0 - vertex 6.18777 -5.99984 -0.2 - vertex 6.53505 -5.98957 -0.2 - endloop - endfacet - facet normal 0.112922 -0.993604 0 - outer loop - vertex 6.53505 -5.98957 -0.2 - vertex 6.87672 -5.95074 0 - vertex 6.53505 -5.98957 0 - endloop - endfacet - facet normal 0.112922 -0.993604 0 - outer loop - vertex 6.87672 -5.95074 0 - vertex 6.53505 -5.98957 -0.2 - vertex 6.87672 -5.95074 -0.2 - endloop - endfacet - facet normal 0.18762 -0.982242 0 - outer loop - vertex 6.87672 -5.95074 -0.2 - vertex 7.2241 -5.88439 0 - vertex 6.87672 -5.95074 0 - endloop - endfacet - facet normal 0.18762 -0.982242 0 - outer loop - vertex 7.2241 -5.88439 0 - vertex 6.87672 -5.95074 -0.2 - vertex 7.2241 -5.88439 -0.2 - endloop - endfacet - facet normal 0.21982 -0.975541 0 - outer loop - vertex 7.2241 -5.88439 -0.2 - vertex 7.809 -5.75259 0 - vertex 7.2241 -5.88439 0 - endloop - endfacet - facet normal 0.21982 -0.975541 0 - outer loop - vertex 7.809 -5.75259 0 - vertex 7.2241 -5.88439 -0.2 - vertex 7.809 -5.75259 -0.2 + vertex 7.79727 -5.75259 0 + vertex 7.21237 -5.88439 -3 + vertex 7.79727 -5.75259 -3 endloop endfacet facet normal 0.71334 0.700818 0 outer loop - vertex 7.809 -5.75259 0 - vertex 7.04277 -4.97268 -0.2 - vertex 7.04277 -4.97268 0 + vertex 7.79727 -5.75259 0 + vertex 7.03104 -4.97268 -3 + vertex 7.03104 -4.97268 0 endloop endfacet facet normal 0.71334 0.700818 0 outer loop - vertex 7.04277 -4.97268 -0.2 - vertex 7.809 -5.75259 0 - vertex 7.809 -5.75259 -0.2 + vertex 7.03104 -4.97268 -3 + vertex 7.79727 -5.75259 0 + vertex 7.79727 -5.75259 -3 endloop endfacet - facet normal 0.735784 0.677216 0 + facet normal 0.78473 0.619838 0 outer loop - vertex 7.04277 -4.97268 0 - vertex 6.78219 -4.68956 -0.2 - vertex 6.78219 -4.68956 0 + vertex 7.03104 -4.97268 0 + vertex 5.97791 -3.63939 -3 + vertex 5.97791 -3.63939 0 endloop endfacet - facet normal 0.735784 0.677216 0 + facet normal 0.78473 0.619838 0 outer loop - vertex 6.78219 -4.68956 -0.2 - vertex 7.04277 -4.97268 0 - vertex 7.04277 -4.97268 -0.2 + vertex 5.97791 -3.63939 -3 + vertex 7.03104 -4.97268 0 + vertex 7.03104 -4.97268 -3 endloop endfacet - facet normal 0.771549 0.636169 0 + facet normal 0.861751 0.507331 0 outer loop - vertex 6.78219 -4.68956 0 - vertex 6.51759 -4.36865 -0.2 - vertex 6.51759 -4.36865 0 + vertex 5.97791 -3.63939 0 + vertex 5.02006 -2.01238 -3 + vertex 5.02006 -2.01238 0 endloop endfacet - facet normal 0.771549 0.636169 0 + facet normal 0.861751 0.507331 0 outer loop - vertex 6.51759 -4.36865 -0.2 - vertex 6.78219 -4.68956 0 - vertex 6.78219 -4.68956 -0.2 + vertex 5.02006 -2.01238 -3 + vertex 5.97791 -3.63939 0 + vertex 5.97791 -3.63939 -3 endloop endfacet - facet normal 0.79877 0.601637 0 + facet normal 0.918179 0.396167 0 outer loop - vertex 6.51759 -4.36865 0 - vertex 6.2523 -4.01644 -0.2 - vertex 6.2523 -4.01644 0 + vertex 5.02006 -2.01238 0 + vertex 4.37015 -0.506109 -3 + vertex 4.37015 -0.506109 0 endloop endfacet - facet normal 0.79877 0.601637 0 + facet normal 0.918179 0.396167 0 outer loop - vertex 6.2523 -4.01644 -0.2 - vertex 6.51759 -4.36865 0 - vertex 6.51759 -4.36865 -0.2 + vertex 4.37015 -0.506109 -3 + vertex 5.02006 -2.01238 0 + vertex 5.02006 -2.01238 -3 endloop endfacet - facet normal 0.820534 0.571597 0 + facet normal 0.99125 0.131995 0 outer loop - vertex 6.2523 -4.01644 0 - vertex 5.98964 -3.63939 -0.2 - vertex 5.98964 -3.63939 0 + vertex 4.37015 -0.506109 0 + vertex 4.24084 0.464987 -3 + vertex 4.24084 0.464987 0 endloop endfacet - facet normal 0.820534 0.571597 0 + facet normal 0.99125 0.131995 0 outer loop - vertex 5.98964 -3.63939 -0.2 - vertex 6.2523 -4.01644 0 - vertex 6.2523 -4.01644 -0.2 + vertex 4.24084 0.464987 -3 + vertex 4.37015 -0.506109 0 + vertex 4.37015 -0.506109 -3 endloop endfacet - facet normal 0.846837 0.531853 0 + facet normal 0.880686 -0.473701 0 outer loop - vertex 5.98964 -3.63939 0 - vertex 5.48552 -2.8367 -0.2 - vertex 5.48552 -2.8367 0 + vertex 4.24084 0.464987 0 + vertex 4.39665 0.754678 -3 + vertex 4.39665 0.754678 0 endloop endfacet - facet normal 0.846837 0.531853 0 + facet normal 0.880686 -0.473701 0 outer loop - vertex 5.48552 -2.8367 -0.2 - vertex 5.98964 -3.63939 0 - vertex 5.98964 -3.63939 -0.2 + vertex 4.39665 0.754678 -3 + vertex 4.24084 0.464987 0 + vertex 4.24084 0.464987 -3 endloop endfacet - facet normal 0.876057 0.482207 0 + facet normal -0.827333 -0.561712 0 outer loop - vertex 5.48552 -2.8367 0 - vertex 5.03179 -2.01239 -0.2 - vertex 5.03179 -2.01239 0 + vertex 4.6091 0.441775 -3 + vertex 4.39665 0.754678 0 + vertex 4.39665 0.754678 -3 endloop endfacet - facet normal 0.876057 0.482207 0 + facet normal -0.827333 -0.561712 0 outer loop - vertex 5.03179 -2.01239 -0.2 - vertex 5.48552 -2.8367 0 - vertex 5.48552 -2.8367 -0.2 + vertex 4.39665 0.754678 0 + vertex 4.6091 0.441775 -3 + vertex 4.6091 0.441775 0 endloop endfacet - facet normal 0.903486 0.428618 0 + facet normal -0.774222 -0.632914 0 outer loop - vertex 5.03179 -2.01239 0 - vertex 4.65505 -1.21825 -0.2 - vertex 4.65505 -1.21825 0 + vertex 6.41545 -1.76788 -3 + vertex 4.6091 0.441775 0 + vertex 4.6091 0.441775 -3 endloop endfacet - facet normal 0.903486 0.428618 0 + facet normal -0.774222 -0.632914 0 outer loop - vertex 4.65505 -1.21825 -0.2 - vertex 5.03179 -2.01239 0 - vertex 5.03179 -2.01239 -0.2 + vertex 4.6091 0.441775 0 + vertex 6.41545 -1.76788 -3 + vertex 6.41545 -1.76788 0 endloop endfacet - facet normal 0.925537 0.378657 0 + facet normal -0.707099 -0.707114 0 outer loop - vertex 4.65505 -1.21825 0 - vertex 4.50386 -0.848697 -0.2 - vertex 4.50386 -0.848697 0 + vertex 6.41545 -1.76788 -3 + vertex 7.74282 -3.09522 0 + vertex 6.41545 -1.76788 0 endloop endfacet - facet normal 0.925537 0.378657 0 + facet normal -0.707099 -0.707114 -0 outer loop - vertex 4.50386 -0.848697 -0.2 - vertex 4.65505 -1.21825 0 - vertex 4.65505 -1.21825 -0.2 + vertex 7.74282 -3.09522 0 + vertex 6.41545 -1.76788 -3 + vertex 7.74282 -3.09522 -3 endloop endfacet - facet normal 0.942067 0.335426 0 + facet normal -0.583644 -0.812009 0 outer loop - vertex 4.50386 -0.848697 0 - vertex 4.38188 -0.506111 -0.2 - vertex 4.38188 -0.506111 0 + vertex 7.74282 -3.09522 -3 + vertex 9.01294 -4.00814 0 + vertex 7.74282 -3.09522 0 endloop endfacet - facet normal 0.942067 0.335426 0 + facet normal -0.583644 -0.812009 -0 outer loop - vertex 4.38188 -0.506111 -0.2 - vertex 4.50386 -0.848697 0 - vertex 4.50386 -0.848697 -0.2 + vertex 9.01294 -4.00814 0 + vertex 7.74282 -3.09522 -3 + vertex 9.01294 -4.00814 -3 endloop endfacet - facet normal 0.960602 0.277927 0 + facet normal -0.385065 -0.92289 0 outer loop - vertex 4.38188 -0.506111 0 - vertex 4.29244 -0.196974 -0.2 - vertex 4.29244 -0.196974 0 + vertex 9.01294 -4.00814 -3 + vertex 10.2758 -4.53506 0 + vertex 9.01294 -4.00814 0 endloop endfacet - facet normal 0.960602 0.277927 0 + facet normal -0.385065 -0.92289 -0 outer loop - vertex 4.29244 -0.196974 -0.2 - vertex 4.38188 -0.506111 0 - vertex 4.38188 -0.506111 -0.2 + vertex 10.2758 -4.53506 0 + vertex 9.01294 -4.00814 -3 + vertex 10.2758 -4.53506 -3 endloop endfacet - facet normal 0.980763 0.1952 0 + facet normal -0.128613 -0.991695 0 outer loop - vertex 4.29244 -0.196974 0 - vertex 4.23886 0.0722368 -0.2 - vertex 4.23886 0.0722368 0 + vertex 10.2758 -4.53506 -3 + vertex 11.5814 -4.70438 0 + vertex 10.2758 -4.53506 0 endloop endfacet - facet normal 0.980763 0.1952 0 + facet normal -0.128613 -0.991695 -0 outer loop - vertex 4.23886 0.0722368 -0.2 - vertex 4.29244 -0.196974 0 - vertex 4.29244 -0.196974 -0.2 + vertex 11.5814 -4.70438 0 + vertex 10.2758 -4.53506 -3 + vertex 11.5814 -4.70438 -3 endloop endfacet - facet normal 0.997919 0.0644811 0 + facet normal 0.142467 -0.9898 0 outer loop - vertex 4.23886 0.0722368 0 - vertex 4.22446 0.295049 -0.2 - vertex 4.22446 0.295049 0 + vertex 11.5814 -4.70438 -3 + vertex 12.4032 -4.58609 0 + vertex 11.5814 -4.70438 0 endloop endfacet - facet normal 0.997919 0.0644811 0 + facet normal 0.142467 -0.9898 0 outer loop - vertex 4.22446 0.295049 -0.2 - vertex 4.23886 0.0722368 0 - vertex 4.23886 0.0722368 -0.2 + vertex 12.4032 -4.58609 0 + vertex 11.5814 -4.70438 -3 + vertex 12.4032 -4.58609 -3 endloop endfacet - facet normal 0.986595 -0.163189 0 + facet normal 0.390375 -0.920656 0 outer loop - vertex 4.22446 0.295049 0 - vertex 4.25257 0.464986 -0.2 - vertex 4.25257 0.464986 0 + vertex 12.4032 -4.58609 -3 + vertex 13.172 -4.2601 0 + vertex 12.4032 -4.58609 0 endloop endfacet - facet normal 0.986595 -0.163189 0 + facet normal 0.390375 -0.920656 0 outer loop - vertex 4.25257 0.464986 -0.2 - vertex 4.22446 0.295049 0 - vertex 4.22446 0.295049 -0.2 + vertex 13.172 -4.2601 0 + vertex 12.4032 -4.58609 -3 + vertex 13.172 -4.2601 -3 endloop endfacet - facet normal 0.930706 -0.365767 0 + facet normal 0.607582 -0.794257 0 outer loop - vertex 4.25257 0.464986 0 - vertex 4.33872 0.684191 -0.2 - vertex 4.33872 0.684191 0 + vertex 13.172 -4.2601 -3 + vertex 13.8131 -3.7697 0 + vertex 13.172 -4.2601 0 endloop endfacet - facet normal 0.930706 -0.365767 0 + facet normal 0.607582 -0.794257 0 outer loop - vertex 4.33872 0.684191 -0.2 - vertex 4.25257 0.464986 0 - vertex 4.25257 0.464986 -0.2 + vertex 13.8131 -3.7697 0 + vertex 13.172 -4.2601 -3 + vertex 13.8131 -3.7697 -3 endloop endfacet - facet normal 0.83908 -0.544009 0 + facet normal 0.812619 -0.582795 0 outer loop - vertex 4.33872 0.684191 0 - vertex 4.3737 0.738144 -0.2 - vertex 4.3737 0.738144 0 + vertex 13.8131 -3.7697 0 + vertex 14.2516 -3.15818 -3 + vertex 14.2516 -3.15818 0 endloop endfacet - facet normal 0.83908 -0.544009 0 + facet normal 0.812619 -0.582795 0 outer loop - vertex 4.3737 0.738144 -0.2 - vertex 4.33872 0.684191 0 - vertex 4.33872 0.684191 -0.2 + vertex 14.2516 -3.15818 -3 + vertex 13.8131 -3.7697 0 + vertex 13.8131 -3.7697 -3 endloop endfacet - facet normal 0.430226 -0.902721 0 + facet normal 0.980799 -0.195021 0 outer loop - vertex 4.3737 0.738144 -0.2 - vertex 4.40839 0.754677 0 - vertex 4.3737 0.738144 0 + vertex 14.2516 -3.15818 0 + vertex 14.333 -2.7489 -3 + vertex 14.333 -2.7489 0 endloop endfacet - facet normal 0.430226 -0.902721 0 + facet normal 0.980799 -0.195021 0 outer loop - vertex 4.40839 0.754677 0 - vertex 4.3737 0.738144 -0.2 - vertex 4.40839 0.754677 -0.2 + vertex 14.333 -2.7489 -3 + vertex 14.2516 -3.15818 0 + vertex 14.2516 -3.15818 -3 endloop endfacet - facet normal -0.483736 -0.875214 0 + facet normal 0.98573 0.168336 0 outer loop - vertex 4.40839 0.754677 -0.2 - vertex 4.44662 0.733548 0 - vertex 4.40839 0.754677 0 + vertex 14.333 -2.7489 0 + vertex 14.2455 -2.23644 -3 + vertex 14.2455 -2.23644 0 endloop endfacet - facet normal -0.483736 -0.875214 -0 + facet normal 0.98573 0.168336 0 outer loop - vertex 4.44662 0.733548 0 - vertex 4.40839 0.754677 -0.2 - vertex 4.44662 0.733548 -0.2 + vertex 14.2455 -2.23644 -3 + vertex 14.333 -2.7489 0 + vertex 14.333 -2.7489 -3 endloop endfacet - facet normal -0.791399 -0.6113 0 + facet normal 0.892341 0.451362 0 outer loop - vertex 4.49221 0.674515 -0.2 - vertex 4.44662 0.733548 0 - vertex 4.44662 0.733548 -0.2 + vertex 14.2455 -2.23644 0 + vertex 13.5923 -0.94501 -3 + vertex 13.5923 -0.94501 0 endloop endfacet - facet normal -0.791399 -0.6113 0 + facet normal 0.892341 0.451362 0 outer loop - vertex 4.44662 0.733548 0 - vertex 4.49221 0.674515 -0.2 - vertex 4.49221 0.674515 0 + vertex 13.5923 -0.94501 -3 + vertex 14.2455 -2.23644 0 + vertex 14.2455 -2.23644 -3 endloop endfacet - facet normal -0.875249 -0.483672 0 + facet normal 0.784902 0.61962 0 outer loop - vertex 4.62083 0.441773 -0.2 - vertex 4.49221 0.674515 0 - vertex 4.49221 0.674515 -0.2 + vertex 13.5923 -0.94501 0 + vertex 12.3489 0.629998 -3 + vertex 12.3489 0.629998 0 endloop endfacet - facet normal -0.875249 -0.483672 0 + facet normal 0.784902 0.61962 0 outer loop - vertex 4.49221 0.674515 0 - vertex 4.62083 0.441773 -0.2 - vertex 4.62083 0.441773 0 + vertex 12.3489 0.629998 -3 + vertex 13.5923 -0.94501 0 + vertex 13.5923 -0.94501 -3 endloop endfacet - facet normal -0.8234 -0.567461 0 + facet normal 0.706306 0.707906 -0 outer loop - vertex 4.83246 0.134689 -0.2 - vertex 4.62083 0.441773 0 - vertex 4.62083 0.441773 -0.2 + vertex 12.3489 0.629998 -3 + vertex 10.5724 2.40247 0 + vertex 12.3489 0.629998 0 endloop endfacet - facet normal -0.8234 -0.567461 0 + facet normal 0.706306 0.707906 0 outer loop - vertex 4.62083 0.441773 0 - vertex 4.83246 0.134689 -0.2 - vertex 4.83246 0.134689 0 + vertex 10.5724 2.40247 0 + vertex 12.3489 0.629998 -3 + vertex 10.5724 2.40247 -3 endloop endfacet - facet normal -0.783851 -0.620949 0 + facet normal 0.641095 0.767462 -0 outer loop - vertex 5.24358 -0.384283 -0.2 - vertex 4.83246 0.134689 0 - vertex 4.83246 0.134689 -0.2 + vertex 10.5724 2.40247 -3 + vertex 9.13441 3.60373 0 + vertex 10.5724 2.40247 0 endloop endfacet - facet normal -0.783851 -0.620949 0 + facet normal 0.641095 0.767462 0 outer loop - vertex 4.83246 0.134689 0 - vertex 5.24358 -0.384283 -0.2 - vertex 5.24358 -0.384283 0 + vertex 9.13441 3.60373 0 + vertex 10.5724 2.40247 -3 + vertex 9.13441 3.60373 -3 endloop endfacet - facet normal -0.766673 -0.642037 0 + facet normal 0.56747 0.823394 -0 outer loop - vertex 5.79491 -1.04264 -0.2 - vertex 5.24358 -0.384283 0 - vertex 5.24358 -0.384283 -0.2 + vertex 9.13441 3.60373 -3 + vertex 8.18559 4.25764 0 + vertex 9.13441 3.60373 0 endloop endfacet - facet normal -0.766673 -0.642037 0 + facet normal 0.56747 0.823394 0 outer loop - vertex 5.24358 -0.384283 0 - vertex 5.79491 -1.04264 -0.2 - vertex 5.79491 -1.04264 0 + vertex 8.18559 4.25764 0 + vertex 9.13441 3.60373 -3 + vertex 8.18559 4.25764 -3 endloop endfacet - facet normal -0.753766 -0.657143 0 + facet normal 0.457713 0.8891 -0 outer loop - vertex 6.42718 -1.76788 -0.2 - vertex 5.79491 -1.04264 0 - vertex 5.79491 -1.04264 -0.2 + vertex 8.18559 4.25764 -3 + vertex 5.26682 5.76024 0 + vertex 8.18559 4.25764 0 endloop endfacet - facet normal -0.753766 -0.657143 0 + facet normal 0.457713 0.8891 0 outer loop - vertex 5.79491 -1.04264 0 - vertex 6.42718 -1.76788 -0.2 - vertex 6.42718 -1.76788 0 + vertex 5.26682 5.76024 0 + vertex 8.18559 4.25764 -3 + vertex 5.26682 5.76024 -3 endloop endfacet - facet normal -0.728754 -0.684775 0 + facet normal 0.356921 0.934135 -0 outer loop - vertex 7.10115 -2.48513 -0.2 - vertex 6.42718 -1.76788 0 - vertex 6.42718 -1.76788 -0.2 + vertex 5.26682 5.76024 -3 + vertex 1.66409 7.13679 0 + vertex 5.26682 5.76024 0 endloop endfacet - facet normal -0.728754 -0.684775 0 + facet normal 0.356921 0.934135 0 outer loop - vertex 6.42718 -1.76788 0 - vertex 7.10115 -2.48513 -0.2 - vertex 7.10115 -2.48513 0 + vertex 1.66409 7.13679 0 + vertex 5.26682 5.76024 -3 + vertex 1.66409 7.13679 -3 endloop endfacet - facet normal -0.682466 -0.730918 0 + facet normal 0.389896 0.920859 -0 outer loop - vertex 7.10115 -2.48513 -0.2 - vertex 7.75455 -3.09522 0 - vertex 7.10115 -2.48513 0 + vertex 1.66409 7.13679 -3 + vertex -0.248642 7.94666 0 + vertex 1.66409 7.13679 0 endloop endfacet - facet normal -0.682466 -0.730918 -0 + facet normal 0.389896 0.920859 0 outer loop - vertex 7.75455 -3.09522 0 - vertex 7.10115 -2.48513 -0.2 - vertex 7.75455 -3.09522 -0.2 + vertex -0.248642 7.94666 0 + vertex 1.66409 7.13679 -3 + vertex -0.248642 7.94666 -3 endloop endfacet - facet normal -0.638085 -0.769966 0 + facet normal 0.471857 0.881675 -0 outer loop - vertex 7.75455 -3.09522 -0.2 - vertex 8.0755 -3.36119 0 - vertex 7.75455 -3.09522 0 + vertex -0.248642 7.94666 -3 + vertex -2.78119 9.30203 0 + vertex -0.248642 7.94666 0 endloop endfacet - facet normal -0.638085 -0.769966 -0 + facet normal 0.471857 0.881675 0 outer loop - vertex 8.0755 -3.36119 0 - vertex 7.75455 -3.09522 -0.2 - vertex 8.0755 -3.36119 -0.2 + vertex -2.78119 9.30203 0 + vertex -0.248642 7.94666 -3 + vertex -2.78119 9.30203 -3 endloop endfacet - facet normal -0.60305 -0.797703 0 + facet normal 0.524404 0.851469 -0 outer loop - vertex 8.0755 -3.36119 -0.2 - vertex 8.39365 -3.60171 0 - vertex 8.0755 -3.36119 0 + vertex -2.78119 9.30203 -3 + vertex -4.99153 10.6633 0 + vertex -2.78119 9.30203 0 endloop endfacet - facet normal -0.60305 -0.797703 -0 + facet normal 0.524404 0.851469 0 outer loop - vertex 8.39365 -3.60171 0 - vertex 8.0755 -3.36119 -0.2 - vertex 8.39365 -3.60171 -0.2 + vertex -4.99153 10.6633 0 + vertex -2.78119 9.30203 -3 + vertex -4.99153 10.6633 -3 endloop endfacet - facet normal -0.563259 -0.826281 0 + facet normal 0.658419 0.752652 -0 outer loop - vertex 8.39365 -3.60171 -0.2 - vertex 8.70978 -3.81721 0 - vertex 8.39365 -3.60171 0 + vertex -4.99153 10.6633 -3 + vertex -5.93765 11.491 0 + vertex -4.99153 10.6633 0 endloop endfacet - facet normal -0.563259 -0.826281 -0 + facet normal 0.658419 0.752652 0 outer loop - vertex 8.70978 -3.81721 0 - vertex 8.39365 -3.60171 -0.2 - vertex 8.70978 -3.81721 -0.2 + vertex -5.93765 11.491 0 + vertex -4.99153 10.6633 -3 + vertex -5.93765 11.491 -3 endloop endfacet - facet normal -0.518472 -0.855094 0 + facet normal 0.579458 -0.815002 0 outer loop - vertex 8.70978 -3.81721 -0.2 - vertex 9.02468 -4.00814 0 - vertex 8.70978 -3.81721 0 + vertex -5.93765 11.491 -3 + vertex -5.71478 11.6495 0 + vertex -5.93765 11.491 0 endloop endfacet - facet normal -0.518472 -0.855094 -0 + facet normal 0.579458 -0.815002 0 outer loop - vertex 9.02468 -4.00814 0 - vertex 8.70978 -3.81721 -0.2 - vertex 9.02468 -4.00814 -0.2 + vertex -5.71478 11.6495 0 + vertex -5.93765 11.491 -3 + vertex -5.71478 11.6495 -3 endloop endfacet - facet normal -0.468624 -0.883398 0 + facet normal 0.0440908 -0.999028 0 outer loop - vertex 9.02468 -4.00814 -0.2 - vertex 9.33912 -4.17495 0 - vertex 9.02468 -4.00814 0 + vertex -5.71478 11.6495 -3 + vertex -5.07797 11.6776 0 + vertex -5.71478 11.6495 0 endloop endfacet - facet normal -0.468624 -0.883398 -0 + facet normal 0.0440908 -0.999028 0 outer loop - vertex 9.33912 -4.17495 0 - vertex 9.02468 -4.00814 -0.2 - vertex 9.33912 -4.17495 -0.2 + vertex -5.07797 11.6776 0 + vertex -5.71478 11.6495 -3 + vertex -5.07797 11.6776 -3 endloop endfacet - facet normal -0.413918 -0.910314 0 + facet normal -0.139075 -0.990282 0 outer loop - vertex 9.33912 -4.17495 -0.2 - vertex 9.65389 -4.31807 0 - vertex 9.33912 -4.17495 0 + vertex -5.07797 11.6776 -3 + vertex -2.75335 11.3511 0 + vertex -5.07797 11.6776 0 endloop endfacet - facet normal -0.413918 -0.910314 -0 + facet normal -0.139075 -0.990282 -0 outer loop - vertex 9.65389 -4.31807 0 - vertex 9.33912 -4.17495 -0.2 - vertex 9.65389 -4.31807 -0.2 + vertex -2.75335 11.3511 0 + vertex -5.07797 11.6776 -3 + vertex -2.75335 11.3511 -3 endloop endfacet - facet normal -0.354841 -0.934927 0 + facet normal -0.139152 -0.990271 0 outer loop - vertex 9.65389 -4.31807 -0.2 - vertex 9.96977 -4.43796 0 - vertex 9.65389 -4.31807 0 + vertex -2.75335 11.3511 -3 + vertex -1.46211 11.1697 0 + vertex -2.75335 11.3511 0 endloop endfacet - facet normal -0.354841 -0.934927 -0 + facet normal -0.139152 -0.990271 -0 outer loop - vertex 9.96977 -4.43796 0 - vertex 9.65389 -4.31807 -0.2 - vertex 9.96977 -4.43796 -0.2 + vertex -1.46211 11.1697 0 + vertex -2.75335 11.3511 -3 + vertex -1.46211 11.1697 -3 endloop endfacet - facet normal -0.292213 -0.956353 0 + facet normal 0.0257838 -0.999668 0 outer loop - vertex 9.96977 -4.43796 -0.2 - vertex 10.2875 -4.53506 0 - vertex 9.96977 -4.43796 0 + vertex -1.46211 11.1697 -3 + vertex -0.394194 11.1972 0 + vertex -1.46211 11.1697 0 endloop endfacet - facet normal -0.292213 -0.956353 -0 + facet normal 0.0257838 -0.999668 0 outer loop - vertex 10.2875 -4.53506 0 - vertex 9.96977 -4.43796 -0.2 - vertex 10.2875 -4.53506 -0.2 + vertex -0.394194 11.1972 0 + vertex -1.46211 11.1697 -3 + vertex -0.394194 11.1972 -3 endloop endfacet - facet normal -0.227161 -0.973857 0 + facet normal 0.258065 -0.966128 0 outer loop - vertex 10.2875 -4.53506 -0.2 - vertex 10.608 -4.6098 0 - vertex 10.2875 -4.53506 0 + vertex -0.394194 11.1972 -3 + vertex 0.535115 11.4454 0 + vertex -0.394194 11.1972 0 endloop endfacet - facet normal -0.227161 -0.973857 -0 + facet normal 0.258065 -0.966128 0 outer loop - vertex 10.608 -4.6098 0 - vertex 10.2875 -4.53506 -0.2 - vertex 10.608 -4.6098 -0.2 + vertex 0.535115 11.4454 0 + vertex -0.394194 11.1972 -3 + vertex 0.535115 11.4454 -3 endloop endfacet - facet normal -0.161011 -0.986953 0 + facet normal 0.481248 -0.876585 0 outer loop - vertex 10.608 -4.6098 -0.2 - vertex 10.9319 -4.66264 0 - vertex 10.608 -4.6098 0 + vertex 0.535115 11.4454 -3 + vertex 1.41055 11.926 0 + vertex 0.535115 11.4454 0 endloop endfacet - facet normal -0.161011 -0.986953 -0 + facet normal 0.481248 -0.876585 0 outer loop - vertex 10.9319 -4.66264 0 - vertex 10.608 -4.6098 -0.2 - vertex 10.9319 -4.66264 -0.2 + vertex 1.41055 11.926 0 + vertex 0.535115 11.4454 -3 + vertex 1.41055 11.926 -3 endloop endfacet - facet normal -0.0951962 -0.995459 0 + facet normal 0.671564 -0.740947 0 outer loop - vertex 10.9319 -4.66264 -0.2 - vertex 11.26 -4.69402 0 - vertex 10.9319 -4.66264 0 + vertex 1.41055 11.926 -3 + vertex 1.87173 12.344 0 + vertex 1.41055 11.926 0 endloop endfacet - facet normal -0.0951962 -0.995459 -0 + facet normal 0.671564 -0.740947 0 outer loop - vertex 11.26 -4.69402 0 - vertex 10.9319 -4.66264 -0.2 - vertex 11.26 -4.69402 -0.2 + vertex 1.87173 12.344 0 + vertex 1.41055 11.926 -3 + vertex 1.87173 12.344 -3 endloop endfacet - facet normal -0.0310839 -0.999517 0 + facet normal 0.998006 0.0631228 0 outer loop - vertex 11.26 -4.69402 -0.2 - vertex 11.5931 -4.70438 0 - vertex 11.26 -4.69402 0 + vertex 1.87173 12.344 0 + vertex 1.8467 12.7398 -3 + vertex 1.8467 12.7398 0 endloop endfacet - facet normal -0.0310839 -0.999517 -0 + facet normal 0.998006 0.0631228 0 outer loop - vertex 11.5931 -4.70438 0 - vertex 11.26 -4.69402 -0.2 - vertex 11.5931 -4.70438 -0.2 + vertex 1.8467 12.7398 -3 + vertex 1.87173 12.344 0 + vertex 1.87173 12.344 -3 endloop endfacet - facet normal 0.0736121 -0.997287 0 + facet normal 0.790564 0.612379 0 outer loop - vertex 11.5931 -4.70438 -0.2 - vertex 12.006 -4.67391 0 - vertex 11.5931 -4.70438 0 + vertex 1.8467 12.7398 0 + vertex 1.50002 13.1874 -3 + vertex 1.50002 13.1874 0 endloop endfacet - facet normal 0.0736121 -0.997287 0 + facet normal 0.790564 0.612379 0 outer loop - vertex 12.006 -4.67391 0 - vertex 11.5931 -4.70438 -0.2 - vertex 12.006 -4.67391 -0.2 + vertex 1.50002 13.1874 -3 + vertex 1.8467 12.7398 0 + vertex 1.8467 12.7398 -3 endloop endfacet - facet normal 0.209942 -0.977714 0 + facet normal 0.55001 0.835158 -0 outer loop - vertex 12.006 -4.67391 -0.2 - vertex 12.4149 -4.5861 0 - vertex 12.006 -4.67391 0 + vertex 1.50002 13.1874 -3 + vertex 0.918757 13.5702 0 + vertex 1.50002 13.1874 0 endloop endfacet - facet normal 0.209942 -0.977714 0 + facet normal 0.55001 0.835158 0 outer loop - vertex 12.4149 -4.5861 0 - vertex 12.006 -4.67391 -0.2 - vertex 12.4149 -4.5861 -0.2 + vertex 0.918757 13.5702 0 + vertex 1.50002 13.1874 -3 + vertex 0.918757 13.5702 -3 endloop endfacet - facet normal 0.332988 -0.942931 0 + facet normal 0.293762 0.955879 -0 outer loop - vertex 12.4149 -4.5861 -0.2 - vertex 12.8106 -4.44636 0 - vertex 12.4149 -4.5861 0 + vertex 0.918757 13.5702 -3 + vertex -0.928844 14.138 0 + vertex 0.918757 13.5702 0 endloop endfacet - facet normal 0.332988 -0.942931 0 + facet normal 0.293762 0.955879 0 outer loop - vertex 12.8106 -4.44636 0 - vertex 12.4149 -4.5861 -0.2 - vertex 12.8106 -4.44636 -0.2 + vertex -0.928844 14.138 0 + vertex 0.918757 13.5702 -3 + vertex -0.928844 14.138 -3 endloop endfacet - facet normal 0.44663 -0.894719 0 + facet normal 0.108589 0.994087 -0 outer loop - vertex 12.8106 -4.44636 -0.2 - vertex 13.1837 -4.26011 0 - vertex 12.8106 -4.44636 0 + vertex -0.928844 14.138 -3 + vertex -3.65881 14.4362 0 + vertex -0.928844 14.138 0 endloop endfacet - facet normal 0.44663 -0.894719 0 + facet normal 0.108589 0.994087 0 outer loop - vertex 13.1837 -4.26011 0 - vertex 12.8106 -4.44636 -0.2 - vertex 13.1837 -4.26011 -0.2 + vertex -3.65881 14.4362 0 + vertex -0.928844 14.138 -3 + vertex -3.65881 14.4362 -3 endloop endfacet - facet normal 0.554537 -0.832159 0 + facet normal 0.00602839 0.999982 -0 outer loop - vertex 13.1837 -4.26011 -0.2 - vertex 13.5249 -4.03275 0 - vertex 13.1837 -4.26011 0 + vertex -3.65881 14.4362 -3 + vertex -7.23385 14.4578 0 + vertex -3.65881 14.4362 0 endloop endfacet - facet normal 0.554537 -0.832159 0 + facet normal 0.00602839 0.999982 0 outer loop - vertex 13.5249 -4.03275 0 - vertex 13.1837 -4.26011 -0.2 - vertex 13.5249 -4.03275 -0.2 + vertex -7.23385 14.4578 0 + vertex -3.65881 14.4362 -3 + vertex -7.23385 14.4578 -3 endloop endfacet - facet normal 0.65941 -0.751784 0 + facet normal -0.0644585 0.99792 0 outer loop - vertex 13.5249 -4.03275 -0.2 - vertex 13.8248 -3.7697 0 - vertex 13.5249 -4.03275 0 + vertex -7.23385 14.4578 -3 + vertex -10.6367 14.238 0 + vertex -7.23385 14.4578 0 endloop endfacet - facet normal 0.65941 -0.751784 0 + facet normal -0.0644585 0.99792 0 outer loop - vertex 13.8248 -3.7697 0 - vertex 13.5249 -4.03275 -0.2 - vertex 13.8248 -3.7697 -0.2 + vertex -10.6367 14.238 0 + vertex -7.23385 14.4578 -3 + vertex -10.6367 14.238 -3 endloop endfacet - facet normal 0.762012 -0.647563 0 + facet normal -0.276015 0.961153 0 outer loop - vertex 13.8248 -3.7697 0 - vertex 14.0741 -3.47638 -0.2 - vertex 14.0741 -3.47638 0 + vertex -10.6367 14.238 -3 + vertex -13.7227 13.3517 0 + vertex -10.6367 14.238 0 endloop endfacet - facet normal 0.762012 -0.647563 0 + facet normal -0.276015 0.961153 0 outer loop - vertex 14.0741 -3.47638 -0.2 - vertex 13.8248 -3.7697 0 - vertex 13.8248 -3.7697 -0.2 + vertex -13.7227 13.3517 0 + vertex -10.6367 14.238 -3 + vertex -13.7227 13.3517 -3 endloop endfacet - facet normal 0.835702 -0.549183 0 + facet normal -0.25467 0.967028 0 outer loop - vertex 14.0741 -3.47638 0 - vertex 14.1768 -3.32005 -0.2 - vertex 14.1768 -3.32005 0 + vertex -13.7227 13.3517 -3 + vertex -17.5299 12.3491 0 + vertex -13.7227 13.3517 0 endloop endfacet - facet normal 0.835702 -0.549183 0 + facet normal -0.25467 0.967028 0 outer loop - vertex 14.1768 -3.32005 -0.2 - vertex 14.0741 -3.47638 0 - vertex 14.0741 -3.47638 -0.2 + vertex -17.5299 12.3491 0 + vertex -13.7227 13.3517 -3 + vertex -17.5299 12.3491 -3 endloop endfacet - facet normal 0.88181 -0.471605 0 + facet normal -0.135841 0.990731 0 outer loop - vertex 14.1768 -3.32005 0 - vertex 14.2634 -3.15818 -0.2 - vertex 14.2634 -3.15818 0 + vertex -17.5299 12.3491 -3 + vertex -20.0298 12.0063 0 + vertex -17.5299 12.3491 0 endloop endfacet - facet normal 0.88181 -0.471605 0 + facet normal -0.135841 0.990731 0 outer loop - vertex 14.2634 -3.15818 -0.2 - vertex 14.1768 -3.32005 0 - vertex 14.1768 -3.32005 -0.2 + vertex -20.0298 12.0063 0 + vertex -17.5299 12.3491 -3 + vertex -20.0298 12.0063 -3 endloop endfacet - facet normal 0.950814 -0.309764 0 + facet normal -0.101855 0.994799 0 outer loop - vertex 14.2634 -3.15818 0 - vertex 14.3256 -2.96711 -0.2 - vertex 14.3256 -2.96711 0 + vertex -20.0298 12.0063 -3 + vertex -22.4428 11.7593 0 + vertex -20.0298 12.0063 0 endloop endfacet - facet normal 0.950814 -0.309764 0 + facet normal -0.101855 0.994799 0 outer loop - vertex 14.3256 -2.96711 -0.2 - vertex 14.2634 -3.15818 0 - vertex 14.2634 -3.15818 -0.2 + vertex -22.4428 11.7593 0 + vertex -20.0298 12.0063 -3 + vertex -22.4428 11.7593 -3 endloop endfacet - facet normal 0.996178 -0.0873495 0 + facet normal -0.0308153 0.999525 0 outer loop - vertex 14.3256 -2.96711 0 - vertex 14.3448 -2.7489 -0.2 - vertex 14.3448 -2.7489 0 + vertex -22.4428 11.7593 -3 + vertex -25.7097 11.6586 0 + vertex -22.4428 11.7593 0 endloop endfacet - facet normal 0.996178 -0.0873495 0 + facet normal -0.0308153 0.999525 0 outer loop - vertex 14.3448 -2.7489 -0.2 - vertex 14.3256 -2.96711 0 - vertex 14.3256 -2.96711 -0.2 + vertex -25.7097 11.6586 0 + vertex -22.4428 11.7593 -3 + vertex -25.7097 11.6586 -3 endloop endfacet - facet normal 0.995552 0.0942095 0 + facet normal 0.0184303 0.99983 -0 outer loop - vertex 14.3448 -2.7489 0 - vertex 14.3217 -2.5049 -0.2 - vertex 14.3217 -2.5049 0 + vertex -25.7097 11.6586 -3 + vertex -28.6588 11.7129 0 + vertex -25.7097 11.6586 0 endloop endfacet - facet normal 0.995552 0.0942095 0 + facet normal 0.0184303 0.99983 0 outer loop - vertex 14.3217 -2.5049 -0.2 - vertex 14.3448 -2.7489 0 - vertex 14.3448 -2.7489 -0.2 + vertex -28.6588 11.7129 0 + vertex -25.7097 11.6586 -3 + vertex -28.6588 11.7129 -3 endloop endfacet - facet normal 0.972391 0.233358 0 + facet normal 0.147852 0.989009 -0 outer loop - vertex 14.3217 -2.5049 0 - vertex 14.2572 -2.23644 -0.2 - vertex 14.2572 -2.23644 0 + vertex -28.6588 11.7129 -3 + vertex -30.1182 11.9311 0 + vertex -28.6588 11.7129 0 endloop endfacet - facet normal 0.972391 0.233358 0 + facet normal 0.147852 0.989009 0 outer loop - vertex 14.2572 -2.23644 -0.2 - vertex 14.3217 -2.5049 0 - vertex 14.3217 -2.5049 -0.2 + vertex -30.1182 11.9311 0 + vertex -28.6588 11.7129 -3 + vertex -30.1182 11.9311 -3 endloop endfacet - facet normal 0.940985 0.338449 0 + facet normal 0.940295 0.34036 0 outer loop - vertex 14.2572 -2.23644 0 - vertex 14.1524 -1.94488 -0.2 - vertex 14.1524 -1.94488 0 + vertex -30.1182 11.9311 0 + vertex -30.3887 12.6783 -3 + vertex -30.3887 12.6783 0 endloop endfacet - facet normal 0.940985 0.338449 0 + facet normal 0.940295 0.34036 0 outer loop - vertex 14.1524 -1.94488 -0.2 - vertex 14.2572 -2.23644 0 - vertex 14.2572 -2.23644 -0.2 + vertex -30.3887 12.6783 -3 + vertex -30.1182 11.9311 0 + vertex -30.1182 11.9311 -3 endloop endfacet - facet normal 0.908169 0.418604 0 + facet normal 0.978074 -0.208259 0 outer loop - vertex 14.1524 -1.94488 0 - vertex 14.008 -1.63155 -0.2 - vertex 14.008 -1.63155 0 + vertex -30.3887 12.6783 0 + vertex -30.3118 13.0393 -3 + vertex -30.3118 13.0393 0 endloop endfacet - facet normal 0.908169 0.418604 0 + facet normal 0.978074 -0.208259 0 outer loop - vertex 14.008 -1.63155 -0.2 - vertex 14.1524 -1.94488 0 - vertex 14.1524 -1.94488 -0.2 + vertex -30.3118 13.0393 -3 + vertex -30.3887 12.6783 0 + vertex -30.3887 12.6783 -3 endloop endfacet - facet normal 0.876739 0.480967 0 + facet normal 0.488021 -0.872832 0 outer loop - vertex 14.008 -1.63155 0 - vertex 13.8249 -1.29782 -0.2 - vertex 13.8249 -1.29782 0 + vertex -30.3118 13.0393 -3 + vertex -29.9412 13.2465 0 + vertex -30.3118 13.0393 0 endloop endfacet - facet normal 0.876739 0.480967 0 + facet normal 0.488021 -0.872832 0 outer loop - vertex 13.8249 -1.29782 -0.2 - vertex 14.008 -1.63155 0 - vertex 14.008 -1.63155 -0.2 + vertex -29.9412 13.2465 0 + vertex -30.3118 13.0393 -3 + vertex -29.9412 13.2465 -3 endloop endfacet - facet normal 0.847618 0.530607 0 + facet normal 0.0669219 -0.997758 0 outer loop - vertex 13.8249 -1.29782 0 - vertex 13.604 -0.945011 -0.2 - vertex 13.604 -0.945011 0 + vertex -29.9412 13.2465 -3 + vertex -27.4778 13.4117 0 + vertex -29.9412 13.2465 0 endloop endfacet - facet normal 0.847618 0.530607 0 + facet normal 0.0669219 -0.997758 0 outer loop - vertex 13.604 -0.945011 -0.2 - vertex 13.8249 -1.29782 0 - vertex 13.8249 -1.29782 -0.2 + vertex -27.4778 13.4117 0 + vertex -29.9412 13.2465 -3 + vertex -27.4778 13.4117 -3 endloop endfacet - facet normal 0.820927 0.571033 0 + facet normal 0.0722192 -0.997389 0 outer loop - vertex 13.604 -0.945011 0 - vertex 13.3463 -0.574481 -0.2 - vertex 13.3463 -0.574481 0 + vertex -27.4778 13.4117 -3 + vertex -24.873 13.6003 0 + vertex -27.4778 13.4117 0 endloop endfacet - facet normal 0.820927 0.571033 0 + facet normal 0.0722192 -0.997389 0 outer loop - vertex 13.3463 -0.574481 -0.2 - vertex 13.604 -0.945011 0 - vertex 13.604 -0.945011 -0.2 + vertex -24.873 13.6003 0 + vertex -27.4778 13.4117 -3 + vertex -24.873 13.6003 -3 endloop endfacet - facet normal 0.796478 0.604667 0 + facet normal 0.168213 -0.985751 0 outer loop - vertex 13.3463 -0.574481 0 - vertex 13.0525 -0.187573 -0.2 - vertex 13.0525 -0.187573 0 + vertex -24.873 13.6003 -3 + vertex -22.3118 14.0374 0 + vertex -24.873 13.6003 0 endloop endfacet - facet normal 0.796478 0.604667 0 + facet normal 0.168213 -0.985751 0 outer loop - vertex 13.0525 -0.187573 -0.2 - vertex 13.3463 -0.574481 0 - vertex 13.3463 -0.574481 -0.2 + vertex -22.3118 14.0374 0 + vertex -24.873 13.6003 -3 + vertex -22.3118 14.0374 -3 endloop endfacet - facet normal 0.773983 0.633206 0 + facet normal 0.261629 -0.965169 0 outer loop - vertex 13.0525 -0.187573 0 - vertex 12.7237 0.214368 -0.2 - vertex 12.7237 0.214368 0 + vertex -22.3118 14.0374 -3 + vertex -19.733 14.7364 0 + vertex -22.3118 14.0374 0 endloop endfacet - facet normal 0.773983 0.633206 0 + facet normal 0.261629 -0.965169 0 outer loop - vertex 12.7237 0.214368 -0.2 - vertex 13.0525 -0.187573 0 - vertex 13.0525 -0.187573 -0.2 + vertex -19.733 14.7364 0 + vertex -22.3118 14.0374 -3 + vertex -19.733 14.7364 -3 endloop endfacet - facet normal 0.753142 0.657858 0 + facet normal 0.344283 -0.938866 0 outer loop - vertex 12.7237 0.214368 0 - vertex 12.3607 0.629996 -0.2 - vertex 12.3607 0.629996 0 + vertex -19.733 14.7364 -3 + vertex -17.0754 15.711 0 + vertex -19.733 14.7364 0 endloop endfacet - facet normal 0.753142 0.657858 0 + facet normal 0.344283 -0.938866 0 outer loop - vertex 12.3607 0.629996 -0.2 - vertex 12.7237 0.214368 0 - vertex 12.7237 0.214368 -0.2 + vertex -17.0754 15.711 0 + vertex -19.733 14.7364 -3 + vertex -17.0754 15.711 -3 endloop endfacet - facet normal 0.724343 0.68944 0 + facet normal 0.435809 -0.900039 0 outer loop - vertex 12.3607 0.629996 0 - vertex 11.5355 1.49693 -0.2 - vertex 11.5355 1.49693 0 + vertex -17.0754 15.711 -3 + vertex -15.009 16.7116 0 + vertex -17.0754 15.711 0 endloop endfacet - facet normal 0.724343 0.68944 0 + facet normal 0.435809 -0.900039 0 outer loop - vertex 11.5355 1.49693 -0.2 - vertex 12.3607 0.629996 0 - vertex 12.3607 0.629996 -0.2 + vertex -15.009 16.7116 0 + vertex -17.0754 15.711 -3 + vertex -15.009 16.7116 -3 endloop endfacet - facet normal 0.689461 0.724323 -0 + facet normal 0.583649 -0.812006 0 outer loop - vertex 11.5355 1.49693 -0.2 - vertex 10.5842 2.40247 0 - vertex 11.5355 1.49693 0 + vertex -15.009 16.7116 -3 + vertex -12.0133 18.8648 0 + vertex -15.009 16.7116 0 endloop endfacet - facet normal 0.689461 0.724323 0 + facet normal 0.583649 -0.812006 0 outer loop - vertex 10.5842 2.40247 0 - vertex 11.5355 1.49693 -0.2 - vertex 10.5842 2.40247 -0.2 + vertex -12.0133 18.8648 0 + vertex -15.009 16.7116 -3 + vertex -12.0133 18.8648 -3 endloop endfacet - facet normal 0.659589 0.751627 -0 + facet normal 0.632447 -0.774604 0 outer loop - vertex 10.5842 2.40247 -0.2 - vertex 9.61741 3.25086 0 - vertex 10.5842 2.40247 0 + vertex -12.0133 18.8648 -3 + vertex -11.1208 19.5935 0 + vertex -12.0133 18.8648 0 endloop endfacet - facet normal 0.659589 0.751627 0 + facet normal 0.632447 -0.774604 0 outer loop - vertex 9.61741 3.25086 0 - vertex 10.5842 2.40247 -0.2 - vertex 9.61741 3.25086 -0.2 + vertex -11.1208 19.5935 0 + vertex -12.0133 18.8648 -3 + vertex -11.1208 19.5935 -3 endloop endfacet - facet normal 0.626395 0.779506 -0 + facet normal 0.915349 -0.40266 0 outer loop - vertex 9.61741 3.25086 -0.2 - vertex 9.29624 3.50894 0 - vertex 9.61741 3.25086 0 + vertex -11.1208 19.5935 0 + vertex -10.9412 20.0018 -3 + vertex -10.9412 20.0018 0 endloop endfacet - facet normal 0.626395 0.779506 0 + facet normal 0.915349 -0.40266 0 outer loop - vertex 9.29624 3.50894 0 - vertex 9.61741 3.25086 -0.2 - vertex 9.29624 3.50894 -0.2 + vertex -10.9412 20.0018 -3 + vertex -11.1208 19.5935 0 + vertex -11.1208 19.5935 -3 endloop endfacet - facet normal 0.533935 0.845526 -0 + facet normal 0.285826 0.958281 -0 outer loop - vertex 9.29624 3.50894 -0.2 - vertex 9.14614 3.60373 0 - vertex 9.29624 3.50894 0 + vertex -10.9412 20.0018 -3 + vertex -11.5389 20.1801 0 + vertex -10.9412 20.0018 0 endloop endfacet - facet normal 0.533935 0.845526 0 + facet normal 0.285826 0.958281 0 outer loop - vertex 9.14614 3.60373 0 - vertex 9.29624 3.50894 -0.2 - vertex 9.14614 3.60373 -0.2 + vertex -11.5389 20.1801 0 + vertex -10.9412 20.0018 -3 + vertex -11.5389 20.1801 -3 endloop endfacet - facet normal 0.419972 0.907537 -0 + facet normal 0.0268157 0.99964 -0 outer loop - vertex 9.14614 3.60373 -0.2 - vertex 9.03464 3.65533 0 - vertex 9.14614 3.60373 0 + vertex -11.5389 20.1801 -3 + vertex -12.9783 20.2187 0 + vertex -11.5389 20.1801 0 endloop endfacet - facet normal 0.419972 0.907537 0 + facet normal 0.0268157 0.99964 0 outer loop - vertex 9.03464 3.65533 0 - vertex 9.14614 3.60373 -0.2 - vertex 9.03464 3.65533 -0.2 + vertex -12.9783 20.2187 0 + vertex -11.5389 20.1801 -3 + vertex -12.9783 20.2187 -3 endloop endfacet - facet normal 0.545127 0.838353 -0 + facet normal -0.0662732 0.997802 0 outer loop - vertex 9.03464 3.65533 -0.2 - vertex 8.81858 3.79581 0 - vertex 9.03464 3.65533 0 + vertex -12.9783 20.2187 -3 + vertex -16.3196 19.9968 0 + vertex -12.9783 20.2187 0 endloop endfacet - facet normal 0.545127 0.838353 0 + facet normal -0.0662732 0.997802 0 outer loop - vertex 8.81858 3.79581 0 - vertex 9.03464 3.65533 -0.2 - vertex 8.81858 3.79581 -0.2 + vertex -16.3196 19.9968 0 + vertex -12.9783 20.2187 -3 + vertex -16.3196 19.9968 -3 endloop endfacet - facet normal 0.596587 0.802549 -0 + facet normal -0.149342 0.988786 0 outer loop - vertex 8.81858 3.79581 -0.2 - vertex 8.19732 4.25764 0 - vertex 8.81858 3.79581 0 + vertex -16.3196 19.9968 -3 + vertex -20.1789 19.4139 0 + vertex -16.3196 19.9968 0 endloop endfacet - facet normal 0.596587 0.802549 0 + facet normal -0.149342 0.988786 0 outer loop - vertex 8.19732 4.25764 0 - vertex 8.81858 3.79581 -0.2 - vertex 8.19732 4.25764 -0.2 + vertex -20.1789 19.4139 0 + vertex -16.3196 19.9968 -3 + vertex -20.1789 19.4139 -3 endloop endfacet - facet normal 0.576403 0.817166 -0 + facet normal -0.0917718 0.99578 0 outer loop - vertex 8.19732 4.25764 -0.2 - vertex 8.00725 4.39171 0 - vertex 8.19732 4.25764 0 + vertex -20.1789 19.4139 -3 + vertex -24.1572 19.0472 0 + vertex -20.1789 19.4139 0 endloop endfacet - facet normal 0.576403 0.817166 0 + facet normal -0.0917718 0.99578 0 outer loop - vertex 8.00725 4.39171 0 - vertex 8.19732 4.25764 -0.2 - vertex 8.00725 4.39171 -0.2 + vertex -24.1572 19.0472 0 + vertex -20.1789 19.4139 -3 + vertex -24.1572 19.0472 -3 endloop endfacet - facet normal 0.52168 0.853141 -0 + facet normal -0.0311054 0.999516 0 outer loop - vertex 8.00725 4.39171 -0.2 - vertex 7.75154 4.54807 0 - vertex 8.00725 4.39171 0 + vertex -24.1572 19.0472 -3 + vertex -27.5587 18.9414 0 + vertex -24.1572 19.0472 0 endloop endfacet - facet normal 0.52168 0.853141 0 + facet normal -0.0311054 0.999516 0 outer loop - vertex 7.75154 4.54807 0 - vertex 8.00725 4.39171 -0.2 - vertex 7.75154 4.54807 -0.2 + vertex -27.5587 18.9414 0 + vertex -24.1572 19.0472 -3 + vertex -27.5587 18.9414 -3 endloop endfacet - facet normal 0.475339 0.879803 -0 + facet normal 0.0933351 0.995635 -0 outer loop - vertex 7.75154 4.54807 -0.2 - vertex 7.07462 4.9138 0 - vertex 7.75154 4.54807 0 + vertex -27.5587 18.9414 -3 + vertex -29.687 19.1409 0 + vertex -27.5587 18.9414 0 endloop endfacet - facet normal 0.475339 0.879803 0 + facet normal 0.0933351 0.995635 0 outer loop - vertex 7.07462 4.9138 0 - vertex 7.75154 4.54807 -0.2 - vertex 7.07462 4.9138 -0.2 + vertex -29.687 19.1409 0 + vertex -27.5587 18.9414 -3 + vertex -29.687 19.1409 -3 endloop endfacet - facet normal 0.439259 0.89836 -0 + facet normal 0.326889 0.945063 -0 outer loop - vertex 7.07462 4.9138 -0.2 - vertex 6.22936 5.32709 0 - vertex 7.07462 4.9138 0 + vertex -29.687 19.1409 -3 + vertex -33.0651 20.3093 0 + vertex -29.687 19.1409 0 endloop endfacet - facet normal 0.439259 0.89836 0 + facet normal 0.326889 0.945063 0 outer loop - vertex 6.22936 5.32709 0 - vertex 7.07462 4.9138 -0.2 - vertex 6.22936 5.32709 -0.2 + vertex -33.0651 20.3093 0 + vertex -29.687 19.1409 -3 + vertex -33.0651 20.3093 -3 endloop endfacet - facet normal 0.414563 0.910021 -0 + facet normal 0.441663 0.897181 -0 outer loop - vertex 6.22936 5.32709 -0.2 - vertex 5.27855 5.76024 0 - vertex 6.22936 5.32709 0 + vertex -33.0651 20.3093 -3 + vertex -35.7552 21.6337 0 + vertex -33.0651 20.3093 0 endloop endfacet - facet normal 0.414563 0.910021 0 + facet normal 0.441663 0.897181 0 outer loop - vertex 5.27855 5.76024 0 - vertex 6.22936 5.32709 -0.2 - vertex 5.27855 5.76024 -0.2 + vertex -35.7552 21.6337 0 + vertex -33.0651 20.3093 -3 + vertex -35.7552 21.6337 -3 endloop endfacet - facet normal 0.393495 0.919327 -0 + facet normal 0.596659 0.802495 -0 outer loop - vertex 5.27855 5.76024 -0.2 - vertex 4.285 6.1855 0 - vertex 5.27855 5.76024 0 + vertex -35.7552 21.6337 -3 + vertex -37.6991 23.0789 0 + vertex -35.7552 21.6337 0 endloop endfacet - facet normal 0.393495 0.919327 0 + facet normal 0.596659 0.802495 0 outer loop - vertex 4.285 6.1855 0 - vertex 5.27855 5.76024 -0.2 - vertex 4.285 6.1855 -0.2 + vertex -37.6991 23.0789 0 + vertex -35.7552 21.6337 -3 + vertex -37.6991 23.0789 -3 endloop endfacet - facet normal 0.371607 0.92839 -0 + facet normal 0.746999 0.664825 0 outer loop - vertex 4.285 6.1855 -0.2 - vertex 3.31149 6.57517 0 - vertex 4.285 6.1855 0 + vertex -37.6991 23.0789 0 + vertex -38.3729 23.836 -3 + vertex -38.3729 23.836 0 endloop endfacet - facet normal 0.371607 0.92839 0 + facet normal 0.746999 0.664825 0 outer loop - vertex 3.31149 6.57517 0 - vertex 4.285 6.1855 -0.2 - vertex 3.31149 6.57517 -0.2 + vertex -38.3729 23.836 -3 + vertex -37.6991 23.0789 0 + vertex -37.6991 23.0789 -3 endloop endfacet - facet normal 0.344035 0.938957 -0 + facet normal 0.857117 0.515122 0 outer loop - vertex 3.31149 6.57517 -0.2 - vertex 2.42084 6.9015 0 - vertex 3.31149 6.57517 0 + vertex -38.3729 23.836 0 + vertex -38.8382 24.6102 -3 + vertex -38.8382 24.6102 0 endloop endfacet - facet normal 0.344035 0.938957 0 + facet normal 0.857117 0.515122 0 outer loop - vertex 2.42084 6.9015 0 - vertex 3.31149 6.57517 -0.2 - vertex 2.42084 6.9015 -0.2 + vertex -38.8382 24.6102 -3 + vertex -38.3729 23.836 0 + vertex -38.3729 23.836 -3 endloop endfacet - facet normal 0.301156 0.953575 -0 + facet normal 0.945559 0.32545 0 outer loop - vertex 2.42084 6.9015 -0.2 - vertex 1.67583 7.13679 0 - vertex 2.42084 6.9015 0 + vertex -38.8382 24.6102 0 + vertex -39.1303 25.4589 -3 + vertex -39.1303 25.4589 0 endloop endfacet - facet normal 0.301156 0.953575 0 + facet normal 0.945559 0.32545 0 outer loop - vertex 1.67583 7.13679 0 - vertex 2.42084 6.9015 -0.2 - vertex 1.67583 7.13679 -0.2 + vertex -39.1303 25.4589 -3 + vertex -38.8382 24.6102 0 + vertex -38.8382 24.6102 -3 endloop endfacet - facet normal 0.313822 0.949482 -0 + facet normal 0.969805 -0.24388 0 outer loop - vertex 1.67583 7.13679 -0.2 - vertex 1.30727 7.25861 0 - vertex 1.67583 7.13679 0 + vertex -39.1303 25.4589 0 + vertex -39.0347 25.8392 -3 + vertex -39.0347 25.8392 0 endloop endfacet - facet normal 0.313822 0.949482 0 + facet normal 0.969805 -0.24388 0 outer loop - vertex 1.30727 7.25861 0 - vertex 1.67583 7.13679 -0.2 - vertex 1.30727 7.25861 -0.2 + vertex -39.0347 25.8392 -3 + vertex -39.1303 25.4589 0 + vertex -39.1303 25.4589 -3 endloop endfacet - facet normal 0.372489 0.928036 -0 + facet normal -0.217347 -0.976094 0 outer loop - vertex 1.30727 7.25861 -0.2 - vertex 0.855811 7.43981 0 - vertex 1.30727 7.25861 0 + vertex -39.0347 25.8392 -3 + vertex -38.5782 25.7376 0 + vertex -39.0347 25.8392 0 endloop endfacet - facet normal 0.372489 0.928036 0 + facet normal -0.217347 -0.976094 -0 outer loop - vertex 0.855811 7.43981 0 - vertex 1.30727 7.25861 -0.2 - vertex 0.855811 7.43981 -0.2 + vertex -38.5782 25.7376 0 + vertex -39.0347 25.8392 -3 + vertex -38.5782 25.7376 -3 endloop endfacet - facet normal 0.420776 0.907164 -0 + facet normal -0.602798 -0.797894 0 outer loop - vertex 0.855811 7.43981 -0.2 - vertex -0.23691 7.94665 0 - vertex 0.855811 7.43981 0 + vertex -38.5782 25.7376 -3 + vertex -37.7877 25.1404 0 + vertex -38.5782 25.7376 0 endloop endfacet - facet normal 0.420776 0.907164 0 + facet normal -0.602798 -0.797894 -0 outer loop - vertex -0.23691 7.94665 0 - vertex 0.855811 7.43981 -0.2 - vertex -0.23691 7.94665 -0.2 + vertex -37.7877 25.1404 0 + vertex -38.5782 25.7376 -3 + vertex -37.7877 25.1404 -3 endloop endfacet - facet normal 0.458228 0.888835 -0 + facet normal -0.582847 -0.812582 0 outer loop - vertex -0.23691 7.94665 -0.2 - vertex -1.48458 8.58988 0 - vertex -0.23691 7.94665 0 + vertex -37.7877 25.1404 -3 + vertex -36.1697 23.9798 0 + vertex -37.7877 25.1404 0 endloop endfacet - facet normal 0.458228 0.888835 0 + facet normal -0.582847 -0.812582 -0 outer loop - vertex -1.48458 8.58988 0 - vertex -0.23691 7.94665 -0.2 - vertex -1.48458 8.58988 -0.2 + vertex -36.1697 23.9798 0 + vertex -37.7877 25.1404 -3 + vertex -36.1697 23.9798 -3 endloop endfacet - facet normal 0.484776 0.874638 -0 + facet normal -0.438905 -0.898534 0 outer loop - vertex -1.48458 8.58988 -0.2 - vertex -2.76946 9.30203 0 - vertex -1.48458 8.58988 0 + vertex -36.1697 23.9798 -3 + vertex -34.2108 23.023 0 + vertex -36.1697 23.9798 0 endloop endfacet - facet normal 0.484776 0.874638 0 + facet normal -0.438905 -0.898534 -0 outer loop - vertex -2.76946 9.30203 0 - vertex -1.48458 8.58988 -0.2 - vertex -2.76946 9.30203 -0.2 + vertex -34.2108 23.023 0 + vertex -36.1697 23.9798 -3 + vertex -34.2108 23.023 -3 endloop endfacet - facet normal 0.509783 0.860303 -0 + facet normal -0.304923 -0.952377 0 outer loop - vertex -2.76946 9.30203 -0.2 - vertex -3.97378 10.0157 0 - vertex -2.76946 9.30203 0 + vertex -34.2108 23.023 -3 + vertex -32.1178 22.3529 0 + vertex -34.2108 23.023 0 endloop endfacet - facet normal 0.509783 0.860303 0 + facet normal -0.304923 -0.952377 -0 outer loop - vertex -3.97378 10.0157 0 - vertex -2.76946 9.30203 -0.2 - vertex -3.97378 10.0157 -0.2 + vertex -32.1178 22.3529 0 + vertex -34.2108 23.023 -3 + vertex -32.1178 22.3529 -3 endloop endfacet - facet normal 0.541316 0.840819 -0 + facet normal -0.147036 -0.989131 0 outer loop - vertex -3.97378 10.0157 -0.2 - vertex -4.9798 10.6633 0 - vertex -3.97378 10.0157 0 + vertex -32.1178 22.3529 -3 + vertex -30.0976 22.0525 0 + vertex -32.1178 22.3529 0 endloop endfacet - facet normal 0.541316 0.840819 0 + facet normal -0.147036 -0.989131 -0 outer loop - vertex -4.9798 10.6633 0 - vertex -3.97378 10.0157 -0.2 - vertex -4.9798 10.6633 -0.2 + vertex -30.0976 22.0525 0 + vertex -32.1178 22.3529 -3 + vertex -30.0976 22.0525 -3 endloop endfacet - facet normal 0.578658 0.81557 -0 + facet normal -0.0457632 -0.998952 0 outer loop - vertex -4.9798 10.6633 -0.2 - vertex -5.37165 10.9414 0 - vertex -4.9798 10.6633 0 + vertex -30.0976 22.0525 -3 + vertex -28.3511 21.9725 0 + vertex -30.0976 22.0525 0 endloop endfacet - facet normal 0.578658 0.81557 0 + facet normal -0.0457632 -0.998952 -0 outer loop - vertex -5.37165 10.9414 0 - vertex -4.9798 10.6633 -0.2 - vertex -5.37165 10.9414 -0.2 + vertex -28.3511 21.9725 0 + vertex -30.0976 22.0525 -3 + vertex -28.3511 21.9725 -3 endloop endfacet - facet normal 0.621078 0.783749 -0 + facet normal 0.491954 0.870621 -0 outer loop - vertex -5.37165 10.9414 -0.2 - vertex -5.66976 11.1776 0 - vertex -5.37165 10.9414 0 + vertex -28.3511 21.9725 -3 + vertex -29.0303 22.3563 0 + vertex -28.3511 21.9725 0 endloop endfacet - facet normal 0.621078 0.783749 0 + facet normal 0.491954 0.870621 0 outer loop - vertex -5.66976 11.1776 0 - vertex -5.37165 10.9414 -0.2 - vertex -5.66976 11.1776 -0.2 + vertex -29.0303 22.3563 0 + vertex -28.3511 21.9725 -3 + vertex -29.0303 22.3563 -3 endloop endfacet - facet normal 0.700224 0.713923 -0 + facet normal 0.563624 0.826031 -0 outer loop - vertex -5.66976 11.1776 -0.2 - vertex -5.85942 11.3636 0 - vertex -5.66976 11.1776 0 + vertex -29.0303 22.3563 -3 + vertex -30.3878 23.2826 0 + vertex -29.0303 22.3563 0 endloop endfacet - facet normal 0.700224 0.713923 0 + facet normal 0.563624 0.826031 0 outer loop - vertex -5.85942 11.3636 0 - vertex -5.66976 11.1776 -0.2 - vertex -5.85942 11.3636 -0.2 + vertex -30.3878 23.2826 0 + vertex -29.0303 22.3563 -3 + vertex -30.3878 23.2826 -3 endloop endfacet - facet normal 0.822029 0.569446 0 + facet normal 0.796403 0.604766 0 outer loop - vertex -5.85942 11.3636 0 - vertex -5.90899 11.4352 -0.2 - vertex -5.90899 11.4352 0 + vertex -30.3878 23.2826 0 + vertex -31.0943 24.213 -3 + vertex -31.0943 24.213 0 endloop endfacet - facet normal 0.822029 0.569446 0 + facet normal 0.796403 0.604766 0 outer loop - vertex -5.90899 11.4352 -0.2 - vertex -5.85942 11.3636 0 - vertex -5.85942 11.3636 -0.2 + vertex -31.0943 24.213 -3 + vertex -30.3878 23.2826 0 + vertex -30.3878 23.2826 -3 endloop endfacet - facet normal 0.95697 0.290185 0 + facet normal 0.951494 0.307667 0 outer loop - vertex -5.90899 11.4352 0 - vertex -5.92592 11.491 -0.2 - vertex -5.92592 11.491 0 + vertex -31.0943 24.213 0 + vertex -31.2773 24.779 -3 + vertex -31.2773 24.779 0 endloop endfacet - facet normal 0.95697 0.290185 0 + facet normal 0.951494 0.307667 0 outer loop - vertex -5.92592 11.491 -0.2 - vertex -5.90899 11.4352 0 - vertex -5.90899 11.4352 -0.2 + vertex -31.2773 24.779 -3 + vertex -31.0943 24.213 0 + vertex -31.0943 24.213 -3 endloop endfacet - facet normal 0.964129 -0.265435 0 + facet normal 0.935098 -0.35439 0 outer loop - vertex -5.92592 11.491 0 - vertex -5.91161 11.5429 -0.2 - vertex -5.91161 11.5429 0 + vertex -31.2773 24.779 0 + vertex -31.1793 25.0376 -3 + vertex -31.1793 25.0376 0 endloop endfacet - facet normal 0.964129 -0.265435 0 + facet normal 0.935098 -0.35439 0 outer loop - vertex -5.91161 11.5429 -0.2 - vertex -5.92592 11.491 0 - vertex -5.92592 11.491 -0.2 + vertex -31.1793 25.0376 -3 + vertex -31.2773 24.779 0 + vertex -31.2773 24.779 -3 endloop endfacet - facet normal 0.717664 -0.69639 0 + facet normal -0.153546 -0.988142 0 outer loop - vertex -5.91161 11.5429 0 - vertex -5.8692 11.5867 -0.2 - vertex -5.8692 11.5867 0 + vertex -31.1793 25.0376 -3 + vertex -30.8173 24.9813 0 + vertex -31.1793 25.0376 0 endloop endfacet - facet normal 0.717664 -0.69639 0 + facet normal -0.153546 -0.988142 -0 outer loop - vertex -5.8692 11.5867 -0.2 - vertex -5.91161 11.5429 0 - vertex -5.91161 11.5429 -0.2 + vertex -30.8173 24.9813 0 + vertex -31.1793 25.0376 -3 + vertex -30.8173 24.9813 -3 endloop endfacet - facet normal 0.453397 -0.891309 0 + facet normal -0.527885 -0.849316 0 outer loop - vertex -5.8692 11.5867 -0.2 - vertex -5.79943 11.6221 0 - vertex -5.8692 11.5867 0 + vertex -30.8173 24.9813 -3 + vertex -30.2081 24.6027 0 + vertex -30.8173 24.9813 0 endloop endfacet - facet normal 0.453397 -0.891309 0 + facet normal -0.527885 -0.849316 -0 outer loop - vertex -5.79943 11.6221 0 - vertex -5.8692 11.5867 -0.2 - vertex -5.79943 11.6221 -0.2 + vertex -30.2081 24.6027 0 + vertex -30.8173 24.9813 -3 + vertex -30.2081 24.6027 -3 endloop endfacet - facet normal 0.272626 -0.96212 0 + facet normal -0.502983 -0.864296 0 outer loop - vertex -5.79943 11.6221 -0.2 - vertex -5.70304 11.6495 0 - vertex -5.79943 11.6221 0 + vertex -30.2081 24.6027 -3 + vertex -29.3958 24.13 0 + vertex -30.2081 24.6027 0 endloop endfacet - facet normal 0.272626 -0.96212 0 + facet normal -0.502983 -0.864296 -0 outer loop - vertex -5.70304 11.6495 0 - vertex -5.79943 11.6221 -0.2 - vertex -5.70304 11.6495 -0.2 + vertex -29.3958 24.13 0 + vertex -30.2081 24.6027 -3 + vertex -29.3958 24.13 -3 endloop endfacet - facet normal 0.111359 -0.99378 0 + facet normal -0.286557 -0.958063 0 outer loop - vertex -5.70304 11.6495 -0.2 - vertex -5.4334 11.6797 0 - vertex -5.70304 11.6495 0 + vertex -29.3958 24.13 -3 + vertex -28.4642 23.8513 0 + vertex -29.3958 24.13 0 endloop endfacet - facet normal 0.111359 -0.99378 0 + facet normal -0.286557 -0.958063 -0 outer loop - vertex -5.4334 11.6797 0 - vertex -5.70304 11.6495 -0.2 - vertex -5.4334 11.6797 -0.2 + vertex -28.4642 23.8513 0 + vertex -29.3958 24.13 -3 + vertex -28.4642 23.8513 -3 endloop endfacet - facet normal -0.00575054 -0.999983 0 + facet normal -0.0843211 -0.996439 0 outer loop - vertex -5.4334 11.6797 -0.2 - vertex -5.06624 11.6776 0 - vertex -5.4334 11.6797 0 + vertex -28.4642 23.8513 -3 + vertex -27.3687 23.7586 0 + vertex -28.4642 23.8513 0 endloop endfacet - facet normal -0.00575054 -0.999983 -0 + facet normal -0.0843211 -0.996439 -0 outer loop - vertex -5.06624 11.6776 0 - vertex -5.4334 11.6797 -0.2 - vertex -5.06624 11.6776 -0.2 + vertex -27.3687 23.7586 0 + vertex -28.4642 23.8513 -3 + vertex -27.3687 23.7586 -3 endloop endfacet - facet normal -0.0742941 -0.997236 0 + facet normal 0.065101 -0.997879 0 outer loop - vertex -5.06624 11.6776 -0.2 - vertex -4.60751 11.6434 0 - vertex -5.06624 11.6776 0 + vertex -27.3687 23.7586 -3 + vertex -26.0647 23.8437 0 + vertex -27.3687 23.7586 0 endloop endfacet - facet normal -0.0742941 -0.997236 -0 + facet normal 0.065101 -0.997879 0 outer loop - vertex -4.60751 11.6434 0 - vertex -5.06624 11.6776 -0.2 - vertex -4.60751 11.6434 -0.2 - endloop - endfacet - facet normal -0.120331 -0.992734 0 - outer loop - vertex -4.60751 11.6434 -0.2 - vertex -4.06319 11.5774 0 - vertex -4.60751 11.6434 0 - endloop - endfacet - facet normal -0.120331 -0.992734 -0 - outer loop - vertex -4.06319 11.5774 0 - vertex -4.60751 11.6434 -0.2 - vertex -4.06319 11.5774 -0.2 - endloop - endfacet - facet normal -0.154416 -0.988006 0 - outer loop - vertex -4.06319 11.5774 -0.2 - vertex -3.43924 11.4799 0 - vertex -4.06319 11.5774 0 - endloop - endfacet - facet normal -0.154416 -0.988006 -0 - outer loop - vertex -3.43924 11.4799 0 - vertex -4.06319 11.5774 -0.2 - vertex -3.43924 11.4799 -0.2 - endloop - endfacet - facet normal -0.181553 -0.983381 0 - outer loop - vertex -3.43924 11.4799 -0.2 - vertex -2.74162 11.3511 0 - vertex -3.43924 11.4799 0 - endloop - endfacet - facet normal -0.181553 -0.983381 -0 - outer loop - vertex -2.74162 11.3511 0 - vertex -3.43924 11.4799 -0.2 - vertex -2.74162 11.3511 -0.2 - endloop - endfacet - facet normal -0.168602 -0.985684 0 - outer loop - vertex -2.74162 11.3511 -0.2 - vertex -2.06279 11.235 0 - vertex -2.74162 11.3511 0 - endloop - endfacet - facet normal -0.168602 -0.985684 -0 - outer loop - vertex -2.06279 11.235 0 - vertex -2.74162 11.3511 -0.2 - vertex -2.06279 11.235 -0.2 - endloop - endfacet - facet normal -0.106074 -0.994358 0 - outer loop - vertex -2.06279 11.235 -0.2 - vertex -1.45038 11.1697 0 - vertex -2.06279 11.235 0 - endloop - endfacet - facet normal -0.106074 -0.994358 -0 - outer loop - vertex -1.45038 11.1697 0 - vertex -2.06279 11.235 -0.2 - vertex -1.45038 11.1697 -0.2 - endloop - endfacet - facet normal -0.0235022 -0.999724 0 - outer loop - vertex -1.45038 11.1697 -0.2 - vertex -0.893798 11.1566 0 - vertex -1.45038 11.1697 0 - endloop - endfacet - facet normal -0.0235022 -0.999724 -0 - outer loop - vertex -0.893798 11.1566 0 - vertex -1.45038 11.1697 -0.2 - vertex -0.893798 11.1566 -0.2 - endloop - endfacet - facet normal 0.0792039 -0.996858 0 - outer loop - vertex -0.893798 11.1566 -0.2 - vertex -0.382462 11.1972 0 - vertex -0.893798 11.1566 0 - endloop - endfacet - facet normal 0.0792039 -0.996858 0 - outer loop - vertex -0.382462 11.1972 0 - vertex -0.893798 11.1566 -0.2 - vertex -0.382462 11.1972 -0.2 - endloop - endfacet - facet normal 0.197027 -0.980398 0 - outer loop - vertex -0.382462 11.1972 -0.2 - vertex 0.0942225 11.293 0 - vertex -0.382462 11.1972 0 - endloop - endfacet - facet normal 0.197027 -0.980398 0 - outer loop - vertex 0.0942225 11.293 0 - vertex -0.382462 11.1972 -0.2 - vertex 0.0942225 11.293 -0.2 - endloop - endfacet - facet normal 0.319159 -0.947701 0 - outer loop - vertex 0.0942225 11.293 -0.2 - vertex 0.546849 11.4454 0 - vertex 0.0942225 11.293 0 - endloop - endfacet - facet normal 0.319159 -0.947701 0 - outer loop - vertex 0.546849 11.4454 0 - vertex 0.0942225 11.293 -0.2 - vertex 0.546849 11.4454 -0.2 - endloop - endfacet - facet normal 0.432288 -0.901736 0 - outer loop - vertex 0.546849 11.4454 -0.2 - vertex 0.986004 11.656 0 - vertex 0.546849 11.4454 0 - endloop - endfacet - facet normal 0.432288 -0.901736 0 - outer loop - vertex 0.986004 11.656 0 - vertex 0.546849 11.4454 -0.2 - vertex 0.986004 11.656 -0.2 - endloop - endfacet - facet normal 0.52637 -0.850255 0 - outer loop - vertex 0.986004 11.656 -0.2 - vertex 1.42228 11.926 0 - vertex 0.986004 11.656 0 - endloop - endfacet - facet normal 0.52637 -0.850255 0 - outer loop - vertex 1.42228 11.926 0 - vertex 0.986004 11.656 -0.2 - vertex 1.42228 11.926 -0.2 - endloop - endfacet - facet normal 0.604613 -0.796519 0 - outer loop - vertex 1.42228 11.926 -0.2 - vertex 1.72214 12.1537 0 - vertex 1.42228 11.926 0 - endloop - endfacet - facet normal 0.604613 -0.796519 0 - outer loop - vertex 1.72214 12.1537 0 - vertex 1.42228 11.926 -0.2 - vertex 1.72214 12.1537 -0.2 - endloop - endfacet - facet normal 0.710535 -0.703661 0 - outer loop - vertex 1.72214 12.1537 0 - vertex 1.81906 12.2515 -0.2 - vertex 1.81906 12.2515 0 - endloop - endfacet - facet normal 0.710535 -0.703661 0 - outer loop - vertex 1.81906 12.2515 -0.2 - vertex 1.72214 12.1537 0 - vertex 1.72214 12.1537 -0.2 - endloop - endfacet - facet normal 0.820717 -0.571334 0 - outer loop - vertex 1.81906 12.2515 0 - vertex 1.88346 12.344 -0.2 - vertex 1.88346 12.344 0 - endloop - endfacet - facet normal 0.820717 -0.571334 0 - outer loop - vertex 1.88346 12.344 -0.2 - vertex 1.81906 12.2515 0 - vertex 1.81906 12.2515 -0.2 - endloop - endfacet - facet normal 0.936854 -0.349721 0 - outer loop - vertex 1.88346 12.344 0 - vertex 1.91748 12.4352 -0.2 - vertex 1.91748 12.4352 0 - endloop - endfacet - facet normal 0.936854 -0.349721 0 - outer loop - vertex 1.91748 12.4352 -0.2 - vertex 1.88346 12.344 0 - vertex 1.88346 12.344 -0.2 - endloop - endfacet - facet normal 0.998121 -0.0612747 0 - outer loop - vertex 1.91748 12.4352 0 - vertex 1.92323 12.5289 -0.2 - vertex 1.92323 12.5289 0 - endloop - endfacet - facet normal 0.998121 -0.0612747 0 - outer loop - vertex 1.92323 12.5289 -0.2 - vertex 1.91748 12.4352 0 - vertex 1.91748 12.4352 -0.2 - endloop - endfacet - facet normal 0.979928 0.199352 0 - outer loop - vertex 1.92323 12.5289 0 - vertex 1.90284 12.6291 -0.2 - vertex 1.90284 12.6291 0 - endloop - endfacet - facet normal 0.979928 0.199352 0 - outer loop - vertex 1.90284 12.6291 -0.2 - vertex 1.92323 12.5289 0 - vertex 1.92323 12.5289 -0.2 - endloop - endfacet - facet normal 0.928124 0.372271 0 - outer loop - vertex 1.90284 12.6291 0 - vertex 1.85843 12.7398 -0.2 - vertex 1.85843 12.7398 0 - endloop - endfacet - facet normal 0.928124 0.372271 0 - outer loop - vertex 1.85843 12.7398 -0.2 - vertex 1.90284 12.6291 0 - vertex 1.90284 12.6291 -0.2 - endloop - endfacet - facet normal 0.849902 0.526941 0 - outer loop - vertex 1.85843 12.7398 0 - vertex 1.7147 12.9716 -0.2 - vertex 1.7147 12.9716 0 - endloop - endfacet - facet normal 0.849902 0.526941 0 - outer loop - vertex 1.7147 12.9716 -0.2 - vertex 1.85843 12.7398 0 - vertex 1.85843 12.7398 -0.2 - endloop - endfacet - facet normal 0.728356 0.685198 0 - outer loop - vertex 1.7147 12.9716 0 - vertex 1.51175 13.1874 -0.2 - vertex 1.51175 13.1874 0 - endloop - endfacet - facet normal 0.728356 0.685198 0 - outer loop - vertex 1.51175 13.1874 -0.2 - vertex 1.7147 12.9716 0 - vertex 1.7147 12.9716 -0.2 - endloop - endfacet - facet normal 0.606497 0.795086 -0 - outer loop - vertex 1.51175 13.1874 -0.2 - vertex 1.25015 13.3869 0 - vertex 1.51175 13.1874 0 - endloop - endfacet - facet normal 0.606497 0.795086 0 - outer loop - vertex 1.25015 13.3869 0 - vertex 1.51175 13.1874 -0.2 - vertex 1.25015 13.3869 -0.2 - endloop - endfacet - facet normal 0.497341 0.867555 -0 - outer loop - vertex 1.25015 13.3869 -0.2 - vertex 0.930489 13.5702 0 - vertex 1.25015 13.3869 0 - endloop - endfacet - facet normal 0.497341 0.867555 0 - outer loop - vertex 0.930489 13.5702 0 - vertex 1.25015 13.3869 -0.2 - vertex 0.930489 13.5702 -0.2 - endloop - endfacet - facet normal 0.404567 0.914508 -0 - outer loop - vertex 0.930489 13.5702 -0.2 - vertex 0.55335 13.737 0 - vertex 0.930489 13.5702 0 - endloop - endfacet - facet normal 0.404567 0.914508 0 - outer loop - vertex 0.55335 13.737 0 - vertex 0.930489 13.5702 -0.2 - vertex 0.55335 13.737 -0.2 - endloop - endfacet - facet normal 0.327265 0.944933 -0 - outer loop - vertex 0.55335 13.737 -0.2 - vertex 0.119316 13.8873 0 - vertex 0.55335 13.737 0 - endloop - endfacet - facet normal 0.327265 0.944933 0 - outer loop - vertex 0.119316 13.8873 0 - vertex 0.55335 13.737 -0.2 - vertex 0.119316 13.8873 -0.2 - endloop - endfacet - facet normal 0.263047 0.964783 -0 - outer loop - vertex 0.119316 13.8873 -0.2 - vertex -0.371032 14.021 0 - vertex 0.119316 13.8873 0 - endloop - endfacet - facet normal 0.263047 0.964783 0 - outer loop - vertex -0.371032 14.021 0 - vertex 0.119316 13.8873 -0.2 - vertex -0.371032 14.021 -0.2 - endloop - endfacet - facet normal 0.209418 0.977826 -0 - outer loop - vertex -0.371032 14.021 -0.2 - vertex -0.917111 14.138 0 - vertex -0.371032 14.021 0 - endloop - endfacet - facet normal 0.209418 0.977826 0 - outer loop - vertex -0.917111 14.138 0 - vertex -0.371032 14.021 -0.2 - vertex -0.917111 14.138 -0.2 - endloop - endfacet - facet normal 0.164236 0.986421 -0 - outer loop - vertex -0.917111 14.138 -0.2 - vertex -1.51834 14.2381 0 - vertex -0.917111 14.138 0 - endloop - endfacet - facet normal 0.164236 0.986421 0 - outer loop - vertex -1.51834 14.2381 0 - vertex -0.917111 14.138 -0.2 - vertex -1.51834 14.2381 -0.2 - endloop - endfacet - facet normal 0.125776 0.992059 -0 - outer loop - vertex -1.51834 14.2381 -0.2 - vertex -2.17413 14.3212 0 - vertex -1.51834 14.2381 0 - endloop - endfacet - facet normal 0.125776 0.992059 0 - outer loop - vertex -2.17413 14.3212 0 - vertex -1.51834 14.2381 -0.2 - vertex -2.17413 14.3212 -0.2 - endloop - endfacet - facet normal 0.0926874 0.995695 -0 - outer loop - vertex -2.17413 14.3212 -0.2 - vertex -2.8839 14.3873 0 - vertex -2.17413 14.3212 0 - endloop - endfacet - facet normal 0.0926874 0.995695 0 - outer loop - vertex -2.8839 14.3873 0 - vertex -2.17413 14.3212 -0.2 - vertex -2.8839 14.3873 -0.2 - endloop - endfacet - facet normal 0.0639318 0.997954 -0 - outer loop - vertex -2.8839 14.3873 -0.2 - vertex -3.64708 14.4362 0 - vertex -2.8839 14.3873 0 - endloop - endfacet - facet normal 0.0639318 0.997954 0 - outer loop - vertex -3.64708 14.4362 0 - vertex -2.8839 14.3873 -0.2 - vertex -3.64708 14.4362 -0.2 - endloop - endfacet - facet normal 0.0386969 0.999251 -0 - outer loop - vertex -3.64708 14.4362 -0.2 - vertex -4.46307 14.4678 0 - vertex -3.64708 14.4362 0 - endloop - endfacet - facet normal 0.0386969 0.999251 0 - outer loop - vertex -4.46307 14.4678 0 - vertex -3.64708 14.4362 -0.2 - vertex -4.46307 14.4678 -0.2 - endloop - endfacet - facet normal 0.0163522 0.999866 -0 - outer loop - vertex -4.46307 14.4678 -0.2 - vertex -5.33129 14.482 0 - vertex -4.46307 14.4678 0 - endloop - endfacet - facet normal 0.0163522 0.999866 0 - outer loop - vertex -5.33129 14.482 0 - vertex -4.46307 14.4678 -0.2 - vertex -5.33129 14.482 -0.2 - endloop - endfacet - facet normal -0.00360162 0.999994 0 - outer loop - vertex -5.33129 14.482 -0.2 - vertex -6.25117 14.4787 0 - vertex -5.33129 14.482 0 - endloop - endfacet - facet normal -0.00360162 0.999994 0 - outer loop - vertex -6.25117 14.4787 0 - vertex -5.33129 14.482 -0.2 - vertex -6.25117 14.4787 -0.2 - endloop - endfacet - facet normal -0.0215556 0.999768 0 - outer loop - vertex -6.25117 14.4787 -0.2 - vertex -7.22211 14.4578 0 - vertex -6.25117 14.4787 0 - endloop - endfacet - facet normal -0.0215556 0.999768 0 - outer loop - vertex -7.22211 14.4578 0 - vertex -6.25117 14.4787 -0.2 - vertex -7.22211 14.4578 -0.2 - endloop - endfacet - facet normal -0.0376222 0.999292 0 - outer loop - vertex -7.22211 14.4578 -0.2 - vertex -9.25643 14.3812 0 - vertex -7.22211 14.4578 0 - endloop - endfacet - facet normal -0.0376222 0.999292 0 - outer loop - vertex -9.25643 14.3812 0 - vertex -7.22211 14.4578 -0.2 - vertex -9.25643 14.3812 -0.2 - endloop - endfacet - facet normal -0.0777977 0.996969 0 - outer loop - vertex -9.25643 14.3812 -0.2 - vertex -9.98725 14.3241 0 - vertex -9.25643 14.3812 0 - endloop - endfacet - facet normal -0.0777977 0.996969 0 - outer loop - vertex -9.98725 14.3241 0 - vertex -9.25643 14.3812 -0.2 - vertex -9.98725 14.3241 -0.2 - endloop - endfacet - facet normal -0.133926 0.990991 0 - outer loop - vertex -9.98725 14.3241 -0.2 - vertex -10.6249 14.238 0 - vertex -9.98725 14.3241 0 - endloop - endfacet - facet normal -0.133926 0.990991 0 - outer loop - vertex -10.6249 14.238 0 - vertex -9.98725 14.3241 -0.2 - vertex -10.6249 14.238 -0.2 - endloop - endfacet - facet normal -0.202593 0.979263 0 - outer loop - vertex -10.6249 14.238 -0.2 - vertex -11.2428 14.1101 0 - vertex -10.6249 14.238 0 - endloop - endfacet - facet normal -0.202593 0.979263 0 - outer loop - vertex -11.2428 14.1101 0 - vertex -10.6249 14.238 -0.2 - vertex -11.2428 14.1101 -0.2 - endloop - endfacet - facet normal -0.261603 0.965176 0 - outer loop - vertex -11.2428 14.1101 -0.2 - vertex -11.9142 13.9281 0 - vertex -11.2428 14.1101 0 - endloop - endfacet - facet normal -0.261603 0.965176 0 - outer loop - vertex -11.9142 13.9281 0 - vertex -11.2428 14.1101 -0.2 - vertex -11.9142 13.9281 -0.2 - endloop - endfacet - facet normal -0.297369 0.954762 0 - outer loop - vertex -11.9142 13.9281 -0.2 - vertex -12.7125 13.6795 0 - vertex -11.9142 13.9281 0 - endloop - endfacet - facet normal -0.297369 0.954762 0 - outer loop - vertex -12.7125 13.6795 0 - vertex -11.9142 13.9281 -0.2 - vertex -12.7125 13.6795 -0.2 - endloop - endfacet - facet normal -0.311908 0.950112 0 - outer loop - vertex -12.7125 13.6795 -0.2 - vertex -13.7109 13.3517 0 - vertex -12.7125 13.6795 0 - endloop - endfacet - facet normal -0.311908 0.950112 0 - outer loop - vertex -13.7109 13.3517 0 - vertex -12.7125 13.6795 -0.2 - vertex -13.7109 13.3517 -0.2 - endloop - endfacet - facet normal -0.299976 0.953947 0 - outer loop - vertex -13.7109 13.3517 -0.2 - vertex -14.949 12.9624 0 - vertex -13.7109 13.3517 0 - endloop - endfacet - facet normal -0.299976 0.953947 0 - outer loop - vertex -14.949 12.9624 0 - vertex -13.7109 13.3517 -0.2 - vertex -14.949 12.9624 -0.2 - endloop - endfacet - facet normal -0.271422 0.96246 0 - outer loop - vertex -14.949 12.9624 -0.2 - vertex -16.0795 12.6436 0 - vertex -14.949 12.9624 0 - endloop - endfacet - facet normal -0.271422 0.96246 0 - outer loop - vertex -16.0795 12.6436 0 - vertex -14.949 12.9624 -0.2 - vertex -16.0795 12.6436 -0.2 - endloop - endfacet - facet normal -0.233252 0.972416 0 - outer loop - vertex -16.0795 12.6436 -0.2 - vertex -16.9775 12.4282 0 - vertex -16.0795 12.6436 0 - endloop - endfacet - facet normal -0.233252 0.972416 0 - outer loop - vertex -16.9775 12.4282 0 - vertex -16.0795 12.6436 -0.2 - vertex -16.9775 12.4282 -0.2 - endloop - endfacet - facet normal -0.178763 0.983892 0 - outer loop - vertex -16.9775 12.4282 -0.2 - vertex -17.3003 12.3696 0 - vertex -16.9775 12.4282 0 - endloop - endfacet - facet normal -0.178763 0.983892 0 - outer loop - vertex -17.3003 12.3696 0 - vertex -16.9775 12.4282 -0.2 - vertex -17.3003 12.3696 -0.2 - endloop - endfacet - facet normal -0.0935268 0.995617 0 - outer loop - vertex -17.3003 12.3696 -0.2 - vertex -17.5181 12.3491 0 - vertex -17.3003 12.3696 0 - endloop - endfacet - facet normal -0.0935268 0.995617 0 - outer loop - vertex -17.5181 12.3491 0 - vertex -17.3003 12.3696 -0.2 - vertex -17.5181 12.3491 -0.2 - endloop - endfacet - facet normal -0.0617051 0.998094 0 - outer loop - vertex -17.5181 12.3491 -0.2 - vertex -17.9556 12.3221 0 - vertex -17.5181 12.3491 0 - endloop - endfacet - facet normal -0.0617051 0.998094 0 - outer loop - vertex -17.9556 12.3221 0 - vertex -17.5181 12.3491 -0.2 - vertex -17.9556 12.3221 -0.2 - endloop - endfacet - facet normal -0.11848 0.992956 0 - outer loop - vertex -17.9556 12.3221 -0.2 - vertex -18.5728 12.2484 0 - vertex -17.9556 12.3221 0 - endloop - endfacet - facet normal -0.11848 0.992956 0 - outer loop - vertex -18.5728 12.2484 0 - vertex -17.9556 12.3221 -0.2 - vertex -18.5728 12.2484 -0.2 - endloop - endfacet - facet normal -0.150729 0.988575 0 - outer loop - vertex -18.5728 12.2484 -0.2 - vertex -19.2876 12.1394 0 - vertex -18.5728 12.2484 0 - endloop - endfacet - facet normal -0.150729 0.988575 0 - outer loop - vertex -19.2876 12.1394 0 - vertex -18.5728 12.2484 -0.2 - vertex -19.2876 12.1394 -0.2 - endloop - endfacet - facet normal -0.179254 0.983803 0 - outer loop - vertex -19.2876 12.1394 -0.2 - vertex -20.0181 12.0063 0 - vertex -19.2876 12.1394 0 - endloop - endfacet - facet normal -0.179254 0.983803 0 - outer loop - vertex -20.0181 12.0063 0 - vertex -19.2876 12.1394 -0.2 - vertex -20.0181 12.0063 -0.2 - endloop - endfacet - facet normal -0.161235 0.986916 0 - outer loop - vertex -20.0181 12.0063 -0.2 - vertex -20.4772 11.9313 0 - vertex -20.0181 12.0063 0 - endloop - endfacet - facet normal -0.161235 0.986916 0 - outer loop - vertex -20.4772 11.9313 0 - vertex -20.0181 12.0063 -0.2 - vertex -20.4772 11.9313 -0.2 - endloop - endfacet - facet normal -0.116007 0.993248 0 - outer loop - vertex -20.4772 11.9313 -0.2 - vertex -21.0446 11.8651 0 - vertex -20.4772 11.9313 0 - endloop - endfacet - facet normal -0.116007 0.993248 0 - outer loop - vertex -21.0446 11.8651 0 - vertex -20.4772 11.9313 -0.2 - vertex -21.0446 11.8651 -0.2 - endloop - endfacet - facet normal -0.076075 0.997102 0 - outer loop - vertex -21.0446 11.8651 -0.2 - vertex -22.4311 11.7593 0 - vertex -21.0446 11.8651 0 - endloop - endfacet - facet normal -0.076075 0.997102 0 - outer loop - vertex -22.4311 11.7593 0 - vertex -21.0446 11.8651 -0.2 - vertex -22.4311 11.7593 -0.2 - endloop - endfacet - facet normal -0.0432101 0.999066 0 - outer loop - vertex -22.4311 11.7593 -0.2 - vertex -24.031 11.6901 0 - vertex -22.4311 11.7593 0 - endloop - endfacet - facet normal -0.0432101 0.999066 0 - outer loop - vertex -24.031 11.6901 0 - vertex -22.4311 11.7593 -0.2 - vertex -24.031 11.6901 -0.2 - endloop - endfacet - facet normal -0.0189053 0.999821 0 - outer loop - vertex -24.031 11.6901 -0.2 - vertex -25.698 11.6586 0 - vertex -24.031 11.6901 0 - endloop - endfacet - facet normal -0.0189053 0.999821 0 - outer loop - vertex -25.698 11.6586 0 - vertex -24.031 11.6901 -0.2 - vertex -25.698 11.6586 -0.2 - endloop - endfacet - facet normal 0.00456618 0.99999 -0 - outer loop - vertex -25.698 11.6586 -0.2 - vertex -27.2855 11.6658 0 - vertex -25.698 11.6586 0 - endloop - endfacet - facet normal 0.00456618 0.99999 0 - outer loop - vertex -27.2855 11.6658 0 - vertex -25.698 11.6586 -0.2 - vertex -27.2855 11.6658 -0.2 - endloop - endfacet - facet normal 0.034581 0.999402 -0 - outer loop - vertex -27.2855 11.6658 -0.2 - vertex -28.647 11.7129 0 - vertex -27.2855 11.6658 0 - endloop - endfacet - facet normal 0.034581 0.999402 0 - outer loop - vertex -28.647 11.7129 0 - vertex -27.2855 11.6658 -0.2 - vertex -28.647 11.7129 -0.2 - endloop - endfacet - facet normal 0.0704155 0.997518 -0 - outer loop - vertex -28.647 11.7129 -0.2 - vertex -29.1973 11.7518 0 - vertex -28.647 11.7129 0 - endloop - endfacet - facet normal 0.0704155 0.997518 0 - outer loop - vertex -29.1973 11.7518 0 - vertex -28.647 11.7129 -0.2 - vertex -29.1973 11.7518 -0.2 - endloop - endfacet - facet normal 0.111453 0.99377 -0 - outer loop - vertex -29.1973 11.7518 -0.2 - vertex -29.6362 11.801 0 - vertex -29.1973 11.7518 0 - endloop - endfacet - facet normal 0.111453 0.99377 0 - outer loop - vertex -29.6362 11.801 0 - vertex -29.1973 11.7518 -0.2 - vertex -29.6362 11.801 -0.2 - endloop - endfacet - facet normal 0.189706 0.981841 -0 - outer loop - vertex -29.6362 11.801 -0.2 - vertex -29.9453 11.8607 0 - vertex -29.6362 11.801 0 - endloop - endfacet - facet normal 0.189706 0.981841 0 - outer loop - vertex -29.9453 11.8607 0 - vertex -29.6362 11.801 -0.2 - vertex -29.9453 11.8607 -0.2 - endloop - endfacet - facet normal 0.320034 0.947406 -0 - outer loop - vertex -29.9453 11.8607 -0.2 - vertex -30.0456 11.8946 0 - vertex -29.9453 11.8607 0 - endloop - endfacet - facet normal 0.320034 0.947406 0 - outer loop - vertex -30.0456 11.8946 0 - vertex -29.9453 11.8607 -0.2 - vertex -30.0456 11.8946 -0.2 - endloop - endfacet - facet normal 0.514271 0.857628 -0 - outer loop - vertex -30.0456 11.8946 -0.2 - vertex -30.1065 11.9311 0 - vertex -30.0456 11.8946 0 - endloop - endfacet - facet normal 0.514271 0.857628 0 - outer loop - vertex -30.1065 11.9311 0 - vertex -30.0456 11.8946 -0.2 - vertex -30.1065 11.9311 -0.2 - endloop - endfacet - facet normal 0.794078 0.607816 0 - outer loop - vertex -30.1065 11.9311 0 - vertex -30.2115 12.0683 -0.2 - vertex -30.2115 12.0683 0 - endloop - endfacet - facet normal 0.794078 0.607816 0 - outer loop - vertex -30.2115 12.0683 -0.2 - vertex -30.1065 11.9311 0 - vertex -30.1065 11.9311 -0.2 - endloop - endfacet - facet normal 0.908198 0.418541 0 - outer loop - vertex -30.2115 12.0683 0 - vertex -30.2975 12.2549 -0.2 - vertex -30.2975 12.2549 0 - endloop - endfacet - facet normal 0.908198 0.418541 0 - outer loop - vertex -30.2975 12.2549 -0.2 - vertex -30.2115 12.0683 0 - vertex -30.2115 12.0683 -0.2 - endloop - endfacet - facet normal 0.964271 0.264918 0 - outer loop - vertex -30.2975 12.2549 0 - vertex -30.3556 12.4664 -0.2 - vertex -30.3556 12.4664 0 - endloop - endfacet - facet normal 0.964271 0.264918 0 - outer loop - vertex -30.3556 12.4664 -0.2 - vertex -30.2975 12.2549 0 - vertex -30.2975 12.2549 -0.2 - endloop - endfacet - facet normal 0.994966 0.10021 0 - outer loop - vertex -30.3556 12.4664 0 - vertex -30.377 12.6783 -0.2 - vertex -30.377 12.6783 0 - endloop - endfacet - facet normal 0.994966 0.10021 0 - outer loop - vertex -30.377 12.6783 -0.2 - vertex -30.3556 12.4664 0 - vertex -30.3556 12.4664 -0.2 - endloop - endfacet - facet normal 0.99734 -0.0728833 0 - outer loop - vertex -30.377 12.6783 0 - vertex -30.3621 12.8813 -0.2 - vertex -30.3621 12.8813 0 - endloop - endfacet - facet normal 0.99734 -0.0728833 0 - outer loop - vertex -30.3621 12.8813 -0.2 - vertex -30.377 12.6783 0 - vertex -30.377 12.6783 -0.2 - endloop - endfacet - facet normal 0.963268 -0.268541 0 - outer loop - vertex -30.3621 12.8813 0 - vertex -30.3387 12.9655 -0.2 - vertex -30.3387 12.9655 0 - endloop - endfacet - facet normal 0.963268 -0.268541 0 - outer loop - vertex -30.3387 12.9655 -0.2 - vertex -30.3621 12.8813 0 - vertex -30.3621 12.8813 -0.2 - endloop - endfacet - facet normal 0.886257 -0.463194 0 - outer loop - vertex -30.3387 12.9655 0 - vertex -30.3001 13.0393 -0.2 - vertex -30.3001 13.0393 0 - endloop - endfacet - facet normal 0.886257 -0.463194 0 - outer loop - vertex -30.3001 13.0393 -0.2 - vertex -30.3387 12.9655 0 - vertex -30.3387 12.9655 -0.2 - endloop - endfacet - facet normal 0.748065 -0.663625 0 - outer loop - vertex -30.3001 13.0393 0 - vertex -30.2432 13.1034 -0.2 - vertex -30.2432 13.1034 0 - endloop - endfacet - facet normal 0.748065 -0.663625 0 - outer loop - vertex -30.2432 13.1034 -0.2 - vertex -30.3001 13.0393 0 - vertex -30.3001 13.0393 -0.2 - endloop - endfacet - facet normal 0.576127 -0.81736 0 - outer loop - vertex -30.2432 13.1034 -0.2 - vertex -30.1646 13.1588 0 - vertex -30.2432 13.1034 0 - endloop - endfacet - facet normal 0.576127 -0.81736 0 - outer loop - vertex -30.1646 13.1588 0 - vertex -30.2432 13.1034 -0.2 - vertex -30.1646 13.1588 -0.2 - endloop - endfacet - facet normal 0.349457 -0.936953 0 - outer loop - vertex -30.1646 13.1588 -0.2 - vertex -29.9294 13.2465 0 - vertex -30.1646 13.1588 0 - endloop - endfacet - facet normal 0.349457 -0.936953 0 - outer loop - vertex -29.9294 13.2465 0 - vertex -30.1646 13.1588 -0.2 - vertex -29.9294 13.2465 -0.2 - endloop - endfacet - facet normal 0.170605 -0.985339 0 - outer loop - vertex -29.9294 13.2465 -0.2 - vertex -29.5683 13.309 0 - vertex -29.9294 13.2465 0 - endloop - endfacet - facet normal 0.170605 -0.985339 0 - outer loop - vertex -29.5683 13.309 0 - vertex -29.9294 13.2465 -0.2 - vertex -29.5683 13.309 -0.2 - endloop - endfacet - facet normal 0.0853267 -0.996353 0 - outer loop - vertex -29.5683 13.309 -0.2 - vertex -29.0548 13.353 0 - vertex -29.5683 13.309 0 - endloop - endfacet - facet normal 0.0853267 -0.996353 0 - outer loop - vertex -29.0548 13.353 0 - vertex -29.5683 13.309 -0.2 - vertex -29.0548 13.353 -0.2 - endloop - endfacet - facet normal 0.0369327 -0.999318 0 - outer loop - vertex -29.0548 13.353 -0.2 - vertex -27.4661 13.4117 0 - vertex -29.0548 13.353 0 - endloop - endfacet - facet normal 0.0369327 -0.999318 0 - outer loop - vertex -27.4661 13.4117 0 - vertex -29.0548 13.353 -0.2 - vertex -27.4661 13.4117 -0.2 - endloop - endfacet - facet normal 0.0488074 -0.998808 0 - outer loop - vertex -27.4661 13.4117 -0.2 - vertex -26.1544 13.4758 0 - vertex -27.4661 13.4117 0 - endloop - endfacet - facet normal 0.0488074 -0.998808 0 - outer loop - vertex -26.1544 13.4758 0 - vertex -27.4661 13.4117 -0.2 - vertex -26.1544 13.4758 -0.2 - endloop - endfacet - facet normal 0.0958463 -0.995396 0 - outer loop - vertex -26.1544 13.4758 -0.2 - vertex -24.8613 13.6003 0 - vertex -26.1544 13.4758 0 - endloop - endfacet - facet normal 0.0958463 -0.995396 0 - outer loop - vertex -24.8613 13.6003 0 - vertex -26.1544 13.4758 -0.2 - vertex -24.8613 13.6003 -0.2 - endloop - endfacet - facet normal 0.144031 -0.989573 0 - outer loop - vertex -24.8613 13.6003 -0.2 - vertex -23.579 13.787 0 - vertex -24.8613 13.6003 0 - endloop - endfacet - facet normal 0.144031 -0.989573 0 - outer loop - vertex -23.579 13.787 0 - vertex -24.8613 13.6003 -0.2 - vertex -23.579 13.787 -0.2 - endloop - endfacet - facet normal 0.192155 -0.981365 0 - outer loop - vertex -23.579 13.787 -0.2 - vertex -22.3001 14.0374 0 - vertex -23.579 13.787 0 - endloop - endfacet - facet normal 0.192155 -0.981365 0 - outer loop - vertex -22.3001 14.0374 0 - vertex -23.579 13.787 -0.2 - vertex -22.3001 14.0374 -0.2 - endloop - endfacet - facet normal 0.239032 -0.971012 0 - outer loop - vertex -22.3001 14.0374 -0.2 - vertex -21.0167 14.3533 0 - vertex -22.3001 14.0374 0 - endloop - endfacet - facet normal 0.239032 -0.971012 0 - outer loop - vertex -21.0167 14.3533 0 - vertex -22.3001 14.0374 -0.2 - vertex -21.0167 14.3533 -0.2 - endloop - endfacet - facet normal 0.283599 -0.958943 0 - outer loop - vertex -21.0167 14.3533 -0.2 - vertex -19.7213 14.7364 0 - vertex -21.0167 14.3533 0 - endloop - endfacet - facet normal 0.283599 -0.958943 0 - outer loop - vertex -19.7213 14.7364 0 - vertex -21.0167 14.3533 -0.2 - vertex -19.7213 14.7364 -0.2 - endloop - endfacet - facet normal 0.325025 -0.945706 0 - outer loop - vertex -19.7213 14.7364 -0.2 - vertex -18.4061 15.1884 0 - vertex -19.7213 14.7364 0 - endloop - endfacet - facet normal 0.325025 -0.945706 0 - outer loop - vertex -18.4061 15.1884 0 - vertex -19.7213 14.7364 -0.2 - vertex -18.4061 15.1884 -0.2 - endloop - endfacet - facet normal 0.362736 -0.931892 0 - outer loop - vertex -18.4061 15.1884 -0.2 - vertex -17.0637 15.711 0 - vertex -18.4061 15.1884 0 - endloop - endfacet - facet normal 0.362736 -0.931892 0 - outer loop - vertex -17.0637 15.711 0 - vertex -18.4061 15.1884 -0.2 - vertex -17.0637 15.711 -0.2 - endloop - endfacet - facet normal 0.385262 -0.922807 0 - outer loop - vertex -17.0637 15.711 -0.2 - vertex -16.4531 15.9659 0 - vertex -17.0637 15.711 0 - endloop - endfacet - facet normal 0.385262 -0.922807 0 - outer loop - vertex -16.4531 15.9659 0 - vertex -17.0637 15.711 -0.2 - vertex -16.4531 15.9659 -0.2 - endloop - endfacet - facet normal 0.409178 -0.912454 0 - outer loop - vertex -16.4531 15.9659 -0.2 - vertex -15.9397 16.1961 0 - vertex -16.4531 15.9659 0 - endloop - endfacet - facet normal 0.409178 -0.912454 0 - outer loop - vertex -15.9397 16.1961 0 - vertex -16.4531 15.9659 -0.2 - vertex -15.9397 16.1961 -0.2 - endloop - endfacet - facet normal 0.452989 -0.891516 0 - outer loop - vertex -15.9397 16.1961 -0.2 - vertex -15.4716 16.4339 0 - vertex -15.9397 16.1961 0 - endloop - endfacet - facet normal 0.452989 -0.891516 0 - outer loop - vertex -15.4716 16.4339 0 - vertex -15.9397 16.1961 -0.2 - vertex -15.4716 16.4339 -0.2 - endloop - endfacet - facet normal 0.505092 -0.863065 0 - outer loop - vertex -15.4716 16.4339 -0.2 - vertex -14.9972 16.7116 0 - vertex -15.4716 16.4339 0 - endloop - endfacet - facet normal 0.505092 -0.863065 0 - outer loop - vertex -14.9972 16.7116 0 - vertex -15.4716 16.4339 -0.2 - vertex -14.9972 16.7116 -0.2 - endloop - endfacet - facet normal 0.548914 -0.835879 0 - outer loop - vertex -14.9972 16.7116 -0.2 - vertex -14.4648 17.0612 0 - vertex -14.9972 16.7116 0 - endloop - endfacet - facet normal 0.548914 -0.835879 0 - outer loop - vertex -14.4648 17.0612 0 - vertex -14.9972 16.7116 -0.2 - vertex -14.4648 17.0612 -0.2 - endloop - endfacet - facet normal 0.577162 -0.81663 0 - outer loop - vertex -14.4648 17.0612 -0.2 - vertex -13.8225 17.5152 0 - vertex -14.4648 17.0612 0 - endloop - endfacet - facet normal 0.577162 -0.81663 0 - outer loop - vertex -13.8225 17.5152 0 - vertex -14.4648 17.0612 -0.2 - vertex -13.8225 17.5152 -0.2 - endloop - endfacet - facet normal 0.595448 -0.803394 0 - outer loop - vertex -13.8225 17.5152 -0.2 - vertex -12.0016 18.8648 0 - vertex -13.8225 17.5152 0 - endloop - endfacet - facet normal 0.595448 -0.803394 0 - outer loop - vertex -12.0016 18.8648 0 - vertex -13.8225 17.5152 -0.2 - vertex -12.0016 18.8648 -0.2 - endloop - endfacet - facet normal 0.610957 -0.791663 0 - outer loop - vertex -12.0016 18.8648 -0.2 - vertex -11.4702 19.2748 0 - vertex -12.0016 18.8648 0 - endloop - endfacet - facet normal 0.610957 -0.791663 0 - outer loop - vertex -11.4702 19.2748 0 - vertex -12.0016 18.8648 -0.2 - vertex -11.4702 19.2748 -0.2 - endloop - endfacet - facet normal 0.661597 -0.749859 0 - outer loop - vertex -11.4702 19.2748 -0.2 - vertex -11.1091 19.5935 0 - vertex -11.4702 19.2748 0 - endloop - endfacet - facet normal 0.661597 -0.749859 0 - outer loop - vertex -11.1091 19.5935 0 - vertex -11.4702 19.2748 -0.2 - vertex -11.1091 19.5935 -0.2 - endloop - endfacet - facet normal 0.747538 -0.664219 0 - outer loop - vertex -11.1091 19.5935 0 - vertex -10.9948 19.7221 -0.2 - vertex -10.9948 19.7221 0 - endloop - endfacet - facet normal 0.747538 -0.664219 0 - outer loop - vertex -10.9948 19.7221 -0.2 - vertex -11.1091 19.5935 0 - vertex -11.1091 19.5935 -0.2 - endloop - endfacet - facet normal 0.848145 -0.529765 0 - outer loop - vertex -10.9948 19.7221 0 - vertex -10.9261 19.832 -0.2 - vertex -10.9261 19.832 0 - endloop - endfacet - facet normal 0.848145 -0.529765 0 - outer loop - vertex -10.9261 19.832 -0.2 - vertex -10.9948 19.7221 0 - vertex -10.9948 19.7221 -0.2 - endloop - endfacet - facet normal 0.972725 -0.231962 0 - outer loop - vertex -10.9261 19.832 0 - vertex -10.904 19.9248 -0.2 - vertex -10.904 19.9248 0 - endloop - endfacet - facet normal 0.972725 -0.231962 0 - outer loop - vertex -10.904 19.9248 -0.2 - vertex -10.9261 19.832 0 - vertex -10.9261 19.832 -0.2 - endloop - endfacet - facet normal 0.949443 0.31394 0 - outer loop - vertex -10.904 19.9248 0 - vertex -10.9294 20.0018 -0.2 - vertex -10.9294 20.0018 0 - endloop - endfacet - facet normal 0.949443 0.31394 0 - outer loop - vertex -10.9294 20.0018 -0.2 - vertex -10.904 19.9248 0 - vertex -10.904 19.9248 -0.2 - endloop - endfacet - facet normal 0.645708 0.763585 -0 - outer loop - vertex -10.9294 20.0018 -0.2 - vertex -11.0035 20.0644 0 - vertex -10.9294 20.0018 0 - endloop - endfacet - facet normal 0.645708 0.763585 0 - outer loop - vertex -11.0035 20.0644 0 - vertex -10.9294 20.0018 -0.2 - vertex -11.0035 20.0644 -0.2 - endloop - endfacet - facet normal 0.372622 0.927983 -0 - outer loop - vertex -11.0035 20.0644 -0.2 - vertex -11.1271 20.114 0 - vertex -11.0035 20.0644 0 - endloop - endfacet - facet normal 0.372622 0.927983 0 - outer loop - vertex -11.1271 20.114 0 - vertex -11.0035 20.0644 -0.2 - vertex -11.1271 20.114 -0.2 - endloop - endfacet - facet normal 0.213569 0.976928 -0 - outer loop - vertex -11.1271 20.114 -0.2 - vertex -11.3013 20.1521 0 - vertex -11.1271 20.114 0 - endloop - endfacet - facet normal 0.213569 0.976928 0 - outer loop - vertex -11.3013 20.1521 0 - vertex -11.1271 20.114 -0.2 - vertex -11.3013 20.1521 -0.2 - endloop - endfacet - facet normal 0.122812 0.99243 -0 - outer loop - vertex -11.3013 20.1521 -0.2 - vertex -11.5271 20.1801 0 - vertex -11.3013 20.1521 0 - endloop - endfacet - facet normal 0.122812 0.99243 0 - outer loop - vertex -11.5271 20.1801 0 - vertex -11.3013 20.1521 -0.2 - vertex -11.5271 20.1801 -0.2 - endloop - endfacet - facet normal 0.050903 0.998704 -0 - outer loop - vertex -11.5271 20.1801 -0.2 - vertex -12.1376 20.2112 0 - vertex -11.5271 20.1801 0 - endloop - endfacet - facet normal 0.050903 0.998704 0 - outer loop - vertex -12.1376 20.2112 0 - vertex -11.5271 20.1801 -0.2 - vertex -12.1376 20.2112 -0.2 - endloop - endfacet - facet normal 0.00904467 0.999959 -0 - outer loop - vertex -12.1376 20.2112 -0.2 - vertex -12.9665 20.2187 0 - vertex -12.1376 20.2112 0 - endloop - endfacet - facet normal 0.00904467 0.999959 0 - outer loop - vertex -12.9665 20.2187 0 - vertex -12.1376 20.2112 -0.2 - vertex -12.9665 20.2187 -0.2 - endloop - endfacet - facet normal -0.0191031 0.999818 0 - outer loop - vertex -12.9665 20.2187 -0.2 - vertex -13.9037 20.2008 0 - vertex -12.9665 20.2187 0 - endloop - endfacet - facet normal -0.0191031 0.999818 0 - outer loop - vertex -13.9037 20.2008 0 - vertex -12.9665 20.2187 -0.2 - vertex -13.9037 20.2008 -0.2 - endloop - endfacet - facet normal -0.0506696 0.998715 0 - outer loop - vertex -13.9037 20.2008 -0.2 - vertex -14.8461 20.153 0 - vertex -13.9037 20.2008 0 - endloop - endfacet - facet normal -0.0506696 0.998715 0 - outer loop - vertex -14.8461 20.153 0 - vertex -13.9037 20.2008 -0.2 - vertex -14.8461 20.153 -0.2 - endloop - endfacet - facet normal -0.0837631 0.996486 0 - outer loop - vertex -14.8461 20.153 -0.2 - vertex -15.684 20.0825 0 - vertex -14.8461 20.153 0 - endloop - endfacet - facet normal -0.0837631 0.996486 0 - outer loop - vertex -15.684 20.0825 0 - vertex -14.8461 20.153 -0.2 - vertex -15.684 20.0825 -0.2 - endloop - endfacet - facet normal -0.136213 0.99068 0 - outer loop - vertex -15.684 20.0825 -0.2 - vertex -16.3079 19.9967 0 - vertex -15.684 20.0825 0 - endloop - endfacet - facet normal -0.136213 0.99068 0 - outer loop - vertex -16.3079 19.9967 0 - vertex -15.684 20.0825 -0.2 - vertex -16.3079 19.9967 -0.2 - endloop - endfacet - facet normal -0.175854 0.984416 0 - outer loop - vertex -16.3079 19.9967 -0.2 - vertex -17.2235 19.8332 0 - vertex -16.3079 19.9967 0 - endloop - endfacet - facet normal -0.175854 0.984416 0 - outer loop - vertex -17.2235 19.8332 0 - vertex -16.3079 19.9967 -0.2 - vertex -17.2235 19.8332 -0.2 - endloop - endfacet - facet normal -0.15721 0.987565 0 - outer loop - vertex -17.2235 19.8332 -0.2 - vertex -18.1791 19.6811 0 - vertex -17.2235 19.8332 0 - endloop - endfacet - facet normal -0.15721 0.987565 0 - outer loop - vertex -18.1791 19.6811 0 - vertex -17.2235 19.8332 -0.2 - vertex -18.1791 19.6811 -0.2 - endloop - endfacet - facet normal -0.133206 0.991088 0 - outer loop - vertex -18.1791 19.6811 -0.2 - vertex -20.1671 19.4139 0 - vertex -18.1791 19.6811 0 - endloop - endfacet - facet normal -0.133206 0.991088 0 - outer loop - vertex -20.1671 19.4139 0 - vertex -18.1791 19.6811 -0.2 - vertex -20.1671 19.4139 -0.2 - endloop - endfacet - facet normal -0.105044 0.994468 0 - outer loop - vertex -20.1671 19.4139 -0.2 - vertex -22.1849 19.2007 0 - vertex -20.1671 19.4139 0 - endloop - endfacet - facet normal -0.105044 0.994468 0 - outer loop - vertex -22.1849 19.2007 0 - vertex -20.1671 19.4139 -0.2 - vertex -22.1849 19.2007 -0.2 - endloop - endfacet - facet normal -0.0780607 0.996949 0 - outer loop - vertex -22.1849 19.2007 -0.2 - vertex -24.1455 19.0472 0 - vertex -22.1849 19.2007 0 - endloop - endfacet - facet normal -0.0780607 0.996949 0 - outer loop - vertex -24.1455 19.0472 0 - vertex -22.1849 19.2007 -0.2 - vertex -24.1455 19.0472 -0.2 - endloop - endfacet - facet normal -0.0485635 0.99882 0 - outer loop - vertex -24.1455 19.0472 -0.2 - vertex -25.9619 18.9589 0 - vertex -24.1455 19.0472 0 - endloop - endfacet - facet normal -0.0485635 0.99882 0 - outer loop - vertex -25.9619 18.9589 0 - vertex -24.1455 19.0472 -0.2 - vertex -25.9619 18.9589 -0.2 - endloop - endfacet - facet normal -0.0217214 0.999764 0 - outer loop - vertex -25.9619 18.9589 -0.2 - vertex -26.7887 18.9409 0 - vertex -25.9619 18.9589 0 - endloop - endfacet - facet normal -0.0217214 0.999764 0 - outer loop - vertex -26.7887 18.9409 0 - vertex -25.9619 18.9589 -0.2 - vertex -26.7887 18.9409 -0.2 - endloop - endfacet - facet normal 0.000558472 1 -0 - outer loop - vertex -26.7887 18.9409 -0.2 - vertex -27.5469 18.9414 0 - vertex -26.7887 18.9409 0 - endloop - endfacet - facet normal 0.000558472 1 0 - outer loop - vertex -27.5469 18.9414 0 - vertex -26.7887 18.9409 -0.2 - vertex -27.5469 18.9414 -0.2 - endloop - endfacet - facet normal 0.0287379 0.999587 -0 - outer loop - vertex -27.5469 18.9414 -0.2 - vertex -28.2256 18.9609 0 - vertex -27.5469 18.9414 0 - endloop - endfacet - facet normal 0.0287379 0.999587 0 - outer loop - vertex -28.2256 18.9609 0 - vertex -27.5469 18.9414 -0.2 - vertex -28.2256 18.9609 -0.2 - endloop - endfacet - facet normal 0.0666534 0.997776 -0 - outer loop - vertex -28.2256 18.9609 -0.2 - vertex -28.8137 19.0002 0 - vertex -28.2256 18.9609 0 - endloop - endfacet - facet normal 0.0666534 0.997776 0 - outer loop - vertex -28.8137 19.0002 0 - vertex -28.2256 18.9609 -0.2 - vertex -28.8137 19.0002 -0.2 - endloop - endfacet - facet normal 0.121854 0.992548 -0 - outer loop - vertex -28.8137 19.0002 -0.2 - vertex -29.3006 19.0599 0 - vertex -28.8137 19.0002 0 - endloop - endfacet - facet normal 0.121854 0.992548 0 - outer loop - vertex -29.3006 19.0599 0 - vertex -28.8137 19.0002 -0.2 - vertex -29.3006 19.0599 -0.2 - endloop - endfacet - facet normal 0.211179 0.977447 -0 - outer loop - vertex -29.3006 19.0599 -0.2 - vertex -29.6752 19.1409 0 - vertex -29.3006 19.0599 0 - endloop - endfacet - facet normal 0.211179 0.977447 0 - outer loop - vertex -29.6752 19.1409 0 - vertex -29.3006 19.0599 -0.2 - vertex -29.6752 19.1409 -0.2 - endloop - endfacet - facet normal 0.291073 0.956701 -0 - outer loop - vertex -29.6752 19.1409 -0.2 - vertex -30.5811 19.4165 0 - vertex -29.6752 19.1409 0 - endloop - endfacet - facet normal 0.291073 0.956701 0 - outer loop - vertex -30.5811 19.4165 0 - vertex -29.6752 19.1409 -0.2 - vertex -30.5811 19.4165 -0.2 - endloop - endfacet - facet normal 0.314696 0.949192 -0 - outer loop - vertex -30.5811 19.4165 -0.2 - vertex -31.4466 19.7034 0 - vertex -30.5811 19.4165 0 - endloop - endfacet - facet normal 0.314696 0.949192 0 - outer loop - vertex -31.4466 19.7034 0 - vertex -30.5811 19.4165 -0.2 - vertex -31.4466 19.7034 -0.2 - endloop - endfacet - facet normal 0.339748 0.940516 -0 - outer loop - vertex -31.4466 19.7034 -0.2 - vertex -32.271 20.0012 0 - vertex -31.4466 19.7034 0 - endloop - endfacet - facet normal 0.339748 0.940516 0 - outer loop - vertex -32.271 20.0012 0 - vertex -31.4466 19.7034 -0.2 - vertex -32.271 20.0012 -0.2 - endloop - endfacet - facet normal 0.366429 0.930446 -0 - outer loop - vertex -32.271 20.0012 -0.2 - vertex -33.0533 20.3093 0 - vertex -32.271 20.0012 0 - endloop - endfacet - facet normal 0.366429 0.930446 0 - outer loop - vertex -33.0533 20.3093 0 - vertex -32.271 20.0012 -0.2 - vertex -33.0533 20.3093 -0.2 - endloop - endfacet - facet normal 0.394948 0.918703 -0 - outer loop - vertex -33.0533 20.3093 -0.2 - vertex -33.7926 20.6272 0 - vertex -33.0533 20.3093 0 - endloop - endfacet - facet normal 0.394948 0.918703 0 - outer loop - vertex -33.7926 20.6272 0 - vertex -33.0533 20.3093 -0.2 - vertex -33.7926 20.6272 -0.2 - endloop - endfacet - facet normal 0.425556 0.904932 -0 - outer loop - vertex -33.7926 20.6272 -0.2 - vertex -34.4881 20.9542 0 - vertex -33.7926 20.6272 0 - endloop - endfacet - facet normal 0.425556 0.904932 0 - outer loop - vertex -34.4881 20.9542 0 - vertex -33.7926 20.6272 -0.2 - vertex -34.4881 20.9542 -0.2 - endloop - endfacet - facet normal 0.458522 0.888683 -0 - outer loop - vertex -34.4881 20.9542 -0.2 - vertex -35.1386 21.2899 0 - vertex -34.4881 20.9542 0 - endloop - endfacet - facet normal 0.458522 0.888683 0 - outer loop - vertex -35.1386 21.2899 0 - vertex -34.4881 20.9542 -0.2 - vertex -35.1386 21.2899 -0.2 - endloop - endfacet - facet normal 0.494132 0.869387 -0 - outer loop - vertex -35.1386 21.2899 -0.2 - vertex -35.7435 21.6336 0 - vertex -35.1386 21.2899 0 - endloop - endfacet - facet normal 0.494132 0.869387 0 - outer loop - vertex -35.7435 21.6336 0 - vertex -35.1386 21.2899 -0.2 - vertex -35.7435 21.6336 -0.2 - endloop - endfacet - facet normal 0.532679 0.846317 -0 - outer loop - vertex -35.7435 21.6336 -0.2 - vertex -36.3017 21.985 0 - vertex -35.7435 21.6336 0 - endloop - endfacet - facet normal 0.532679 0.846317 0 - outer loop - vertex -36.3017 21.985 0 - vertex -35.7435 21.6336 -0.2 - vertex -36.3017 21.985 -0.2 - endloop - endfacet - facet normal 0.574426 0.818556 -0 - outer loop - vertex -36.3017 21.985 -0.2 - vertex -36.8124 22.3433 0 - vertex -36.3017 21.985 0 - endloop - endfacet - facet normal 0.574426 0.818556 0 - outer loop - vertex -36.8124 22.3433 0 - vertex -36.3017 21.985 -0.2 - vertex -36.8124 22.3433 -0.2 - endloop - endfacet - facet normal 0.619583 0.784931 -0 - outer loop - vertex -36.8124 22.3433 -0.2 - vertex -37.2746 22.7082 0 - vertex -36.8124 22.3433 0 - endloop - endfacet - facet normal 0.619583 0.784931 0 - outer loop - vertex -37.2746 22.7082 0 - vertex -36.8124 22.3433 -0.2 - vertex -37.2746 22.7082 -0.2 - endloop - endfacet - facet normal 0.668193 0.743988 -0 - outer loop - vertex -37.2746 22.7082 -0.2 - vertex -37.6874 23.0789 0 - vertex -37.2746 22.7082 0 - endloop - endfacet - facet normal 0.668193 0.743988 0 - outer loop - vertex -37.6874 23.0789 0 - vertex -37.2746 22.7082 -0.2 - vertex -37.6874 23.0789 -0.2 - endloop - endfacet - facet normal 0.720024 0.69395 0 - outer loop - vertex -37.6874 23.0789 0 - vertex -38.0499 23.455 -0.2 - vertex -38.0499 23.455 0 - endloop - endfacet - facet normal 0.720024 0.69395 0 - outer loop - vertex -38.0499 23.455 -0.2 - vertex -37.6874 23.0789 0 - vertex -37.6874 23.0789 -0.2 - endloop - endfacet - facet normal 0.774355 0.632751 0 - outer loop - vertex -38.0499 23.455 0 - vertex -38.3611 23.836 -0.2 - vertex -38.3611 23.836 0 - endloop - endfacet - facet normal 0.774355 0.632751 0 - outer loop - vertex -38.3611 23.836 -0.2 - vertex -38.0499 23.455 0 - vertex -38.0499 23.455 -0.2 - endloop - endfacet - facet normal 0.829712 0.558192 0 - outer loop - vertex -38.3611 23.836 0 - vertex -38.6203 24.2212 -0.2 - vertex -38.6203 24.2212 0 - endloop - endfacet - facet normal 0.829712 0.558192 0 - outer loop - vertex -38.6203 24.2212 -0.2 - vertex -38.3611 23.836 0 - vertex -38.3611 23.836 -0.2 - endloop - endfacet - facet normal 0.883596 0.468251 0 - outer loop - vertex -38.6203 24.2212 0 - vertex -38.8265 24.6102 -0.2 - vertex -38.8265 24.6102 0 - endloop - endfacet - facet normal 0.883596 0.468251 0 - outer loop - vertex -38.8265 24.6102 -0.2 - vertex -38.6203 24.2212 0 - vertex -38.6203 24.2212 -0.2 - endloop - endfacet - facet normal 0.926216 0.376994 0 - outer loop - vertex -38.8265 24.6102 0 - vertex -39.0227 25.0923 -0.2 - vertex -39.0227 25.0923 0 - endloop - endfacet - facet normal 0.926216 0.376994 0 - outer loop - vertex -39.0227 25.0923 -0.2 - vertex -38.8265 24.6102 0 - vertex -38.8265 24.6102 -0.2 - endloop - endfacet - facet normal 0.967451 0.253059 0 - outer loop - vertex -39.0227 25.0923 0 - vertex -39.1186 25.4589 -0.2 - vertex -39.1186 25.4589 0 - endloop - endfacet - facet normal 0.967451 0.253059 0 - outer loop - vertex -39.1186 25.4589 -0.2 - vertex -39.0227 25.0923 0 - vertex -39.0227 25.0923 -0.2 - endloop - endfacet - facet normal 0.996684 0.0813708 0 - outer loop - vertex -39.1186 25.4589 0 - vertex -39.13 25.5984 -0.2 - vertex -39.13 25.5984 0 - endloop - endfacet - facet normal 0.996684 0.0813708 0 - outer loop - vertex -39.13 25.5984 -0.2 - vertex -39.1186 25.4589 0 - vertex -39.1186 25.4589 -0.2 - endloop - endfacet - facet normal 0.993685 -0.112203 0 - outer loop - vertex -39.13 25.5984 0 - vertex -39.1175 25.7085 -0.2 - vertex -39.1175 25.7085 0 - endloop - endfacet - facet normal 0.993685 -0.112203 0 - outer loop - vertex -39.1175 25.7085 -0.2 - vertex -39.13 25.5984 0 - vertex -39.13 25.5984 -0.2 - endloop - endfacet - facet normal 0.913337 -0.407205 0 - outer loop - vertex -39.1175 25.7085 0 - vertex -39.0817 25.7888 -0.2 - vertex -39.0817 25.7888 0 - endloop - endfacet - facet normal 0.913337 -0.407205 0 - outer loop - vertex -39.0817 25.7888 -0.2 - vertex -39.1175 25.7085 0 - vertex -39.1175 25.7085 -0.2 - endloop - endfacet - facet normal 0.651025 -0.759057 0 - outer loop - vertex -39.0817 25.7888 -0.2 - vertex -39.0229 25.8392 0 - vertex -39.0817 25.7888 0 - endloop - endfacet - facet normal 0.651025 -0.759057 0 - outer loop - vertex -39.0229 25.8392 0 - vertex -39.0817 25.7888 -0.2 - vertex -39.0229 25.8392 -0.2 - endloop - endfacet - facet normal 0.24215 -0.970239 0 - outer loop - vertex -39.0229 25.8392 -0.2 - vertex -38.9416 25.8595 0 - vertex -39.0229 25.8392 0 - endloop - endfacet - facet normal 0.24215 -0.970239 0 - outer loop - vertex -38.9416 25.8595 0 - vertex -39.0229 25.8392 -0.2 - vertex -38.9416 25.8595 -0.2 - endloop - endfacet - facet normal -0.0965024 -0.995333 0 - outer loop - vertex -38.9416 25.8595 -0.2 - vertex -38.8381 25.8495 0 - vertex -38.9416 25.8595 0 - endloop - endfacet - facet normal -0.0965024 -0.995333 -0 - outer loop - vertex -38.8381 25.8495 0 - vertex -38.9416 25.8595 -0.2 - vertex -38.8381 25.8495 -0.2 - endloop - endfacet - facet normal -0.308343 -0.951275 0 - outer loop - vertex -38.8381 25.8495 -0.2 - vertex -38.7129 25.8089 0 - vertex -38.8381 25.8495 0 - endloop - endfacet - facet normal -0.308343 -0.951275 -0 - outer loop - vertex -38.7129 25.8089 0 - vertex -38.8381 25.8495 -0.2 - vertex -38.7129 25.8089 -0.2 - endloop - endfacet - facet normal -0.437843 -0.899052 0 - outer loop - vertex -38.7129 25.8089 -0.2 - vertex -38.5664 25.7376 0 - vertex -38.7129 25.8089 0 - endloop - endfacet - facet normal -0.437843 -0.899052 -0 - outer loop - vertex -38.5664 25.7376 0 - vertex -38.7129 25.8089 -0.2 - vertex -38.5664 25.7376 -0.2 - endloop - endfacet - facet normal -0.553117 -0.833103 0 - outer loop - vertex -38.5664 25.7376 -0.2 - vertex -38.2113 25.5018 0 - vertex -38.5664 25.7376 0 - endloop - endfacet - facet normal -0.553117 -0.833103 -0 - outer loop - vertex -38.2113 25.5018 0 - vertex -38.5664 25.7376 -0.2 - vertex -38.2113 25.5018 -0.2 - endloop - endfacet - facet normal -0.638761 -0.769405 0 - outer loop - vertex -38.2113 25.5018 -0.2 - vertex -37.776 25.1404 0 - vertex -38.2113 25.5018 0 - endloop - endfacet - facet normal -0.638761 -0.769405 -0 - outer loop - vertex -37.776 25.1404 0 - vertex -38.2113 25.5018 -0.2 - vertex -37.776 25.1404 -0.2 - endloop - endfacet - facet normal -0.64475 -0.764393 0 - outer loop - vertex -37.776 25.1404 -0.2 - vertex -37.4147 24.8357 0 - vertex -37.776 25.1404 0 - endloop - endfacet - facet normal -0.64475 -0.764393 -0 - outer loop - vertex -37.4147 24.8357 0 - vertex -37.776 25.1404 -0.2 - vertex -37.4147 24.8357 -0.2 - endloop - endfacet - facet normal -0.602189 -0.798353 0 - outer loop - vertex -37.4147 24.8357 -0.2 - vertex -37.0225 24.5398 0 - vertex -37.4147 24.8357 0 - endloop - endfacet - facet normal -0.602189 -0.798353 -0 - outer loop - vertex -37.0225 24.5398 0 - vertex -37.4147 24.8357 -0.2 - vertex -37.0225 24.5398 -0.2 - endloop - endfacet - facet normal -0.562472 -0.826816 0 - outer loop - vertex -37.0225 24.5398 -0.2 - vertex -36.6025 24.2541 0 - vertex -37.0225 24.5398 0 - endloop - endfacet - facet normal -0.562472 -0.826816 -0 - outer loop - vertex -36.6025 24.2541 0 - vertex -37.0225 24.5398 -0.2 - vertex -36.6025 24.2541 -0.2 - endloop - endfacet - facet normal -0.525102 -0.851039 0 - outer loop - vertex -36.6025 24.2541 -0.2 - vertex -36.1579 23.9798 0 - vertex -36.6025 24.2541 0 - endloop - endfacet - facet normal -0.525102 -0.851039 -0 - outer loop - vertex -36.1579 23.9798 0 - vertex -36.6025 24.2541 -0.2 - vertex -36.1579 23.9798 -0.2 - endloop - endfacet - facet normal -0.489575 -0.871961 0 - outer loop - vertex -36.1579 23.9798 -0.2 - vertex -35.6921 23.7183 0 - vertex -36.1579 23.9798 0 - endloop - endfacet - facet normal -0.489575 -0.871961 -0 - outer loop - vertex -35.6921 23.7183 0 - vertex -36.1579 23.9798 -0.2 - vertex -35.6921 23.7183 -0.2 - endloop - endfacet - facet normal -0.455389 -0.890292 0 - outer loop - vertex -35.6921 23.7183 -0.2 - vertex -35.2082 23.4707 0 - vertex -35.6921 23.7183 0 - endloop - endfacet - facet normal -0.455389 -0.890292 -0 - outer loop - vertex -35.2082 23.4707 0 - vertex -35.6921 23.7183 -0.2 - vertex -35.2082 23.4707 -0.2 - endloop - endfacet - facet normal -0.422055 -0.90657 0 - outer loop - vertex -35.2082 23.4707 -0.2 - vertex -34.7094 23.2385 0 - vertex -35.2082 23.4707 0 - endloop - endfacet - facet normal -0.422055 -0.90657 -0 - outer loop - vertex -34.7094 23.2385 0 - vertex -35.2082 23.4707 -0.2 - vertex -34.7094 23.2385 -0.2 - endloop - endfacet - facet normal -0.389101 -0.921195 0 - outer loop - vertex -34.7094 23.2385 -0.2 - vertex -34.199 23.023 0 - vertex -34.7094 23.2385 0 - endloop - endfacet - facet normal -0.389101 -0.921195 -0 - outer loop - vertex -34.199 23.023 0 - vertex -34.7094 23.2385 -0.2 - vertex -34.199 23.023 -0.2 - endloop - endfacet - facet normal -0.356052 -0.934466 0 - outer loop - vertex -34.199 23.023 -0.2 - vertex -33.6803 22.8253 0 - vertex -34.199 23.023 0 - endloop - endfacet - facet normal -0.356052 -0.934466 -0 - outer loop - vertex -33.6803 22.8253 0 - vertex -34.199 23.023 -0.2 - vertex -33.6803 22.8253 -0.2 - endloop - endfacet - facet normal -0.3224 -0.946604 0 - outer loop - vertex -33.6803 22.8253 -0.2 - vertex -33.1564 22.6469 0 - vertex -33.6803 22.8253 0 - endloop - endfacet - facet normal -0.3224 -0.946604 -0 - outer loop - vertex -33.1564 22.6469 0 - vertex -33.6803 22.8253 -0.2 - vertex -33.1564 22.6469 -0.2 - endloop - endfacet - facet normal -0.287637 -0.95774 0 - outer loop - vertex -33.1564 22.6469 -0.2 - vertex -32.6306 22.489 0 - vertex -33.1564 22.6469 0 - endloop - endfacet - facet normal -0.287637 -0.95774 -0 - outer loop - vertex -32.6306 22.489 0 - vertex -33.1564 22.6469 -0.2 - vertex -32.6306 22.489 -0.2 - endloop - endfacet - facet normal -0.251171 -0.967943 0 - outer loop - vertex -32.6306 22.489 -0.2 - vertex -32.1061 22.3529 0 - vertex -32.6306 22.489 0 - endloop - endfacet - facet normal -0.251171 -0.967943 -0 - outer loop - vertex -32.1061 22.3529 0 - vertex -32.6306 22.489 -0.2 - vertex -32.1061 22.3529 -0.2 - endloop - endfacet - facet normal -0.212348 -0.977194 0 - outer loop - vertex -32.1061 22.3529 -0.2 - vertex -31.5861 22.2399 0 - vertex -32.1061 22.3529 0 - endloop - endfacet - facet normal -0.212348 -0.977194 -0 - outer loop - vertex -31.5861 22.2399 0 - vertex -32.1061 22.3529 -0.2 - vertex -31.5861 22.2399 -0.2 - endloop - endfacet - facet normal -0.170418 -0.985372 0 - outer loop - vertex -31.5861 22.2399 -0.2 - vertex -31.074 22.1513 0 - vertex -31.5861 22.2399 0 - endloop - endfacet - facet normal -0.170418 -0.985372 -0 - outer loop - vertex -31.074 22.1513 0 - vertex -31.5861 22.2399 -0.2 - vertex -31.074 22.1513 -0.2 - endloop - endfacet - facet normal -0.124476 -0.992223 0 - outer loop - vertex -31.074 22.1513 -0.2 - vertex -30.5728 22.0884 0 - vertex -31.074 22.1513 0 - endloop - endfacet - facet normal -0.124476 -0.992223 -0 - outer loop - vertex -30.5728 22.0884 0 - vertex -31.074 22.1513 -0.2 - vertex -30.5728 22.0884 -0.2 - endloop - endfacet - facet normal -0.0734593 -0.997298 0 - outer loop - vertex -30.5728 22.0884 -0.2 - vertex -30.0859 22.0525 0 - vertex -30.5728 22.0884 0 - endloop - endfacet - facet normal -0.0734593 -0.997298 -0 - outer loop - vertex -30.0859 22.0525 0 - vertex -30.5728 22.0884 -0.2 - vertex -30.0859 22.0525 -0.2 - endloop - endfacet - facet normal -0.0457633 -0.998952 0 - outer loop - vertex -30.0859 22.0525 -0.2 - vertex -28.3394 21.9725 0 - vertex -30.0859 22.0525 0 - endloop - endfacet - facet normal -0.0457633 -0.998952 -0 - outer loop - vertex -28.3394 21.9725 0 - vertex -30.0859 22.0525 -0.2 - vertex -28.3394 21.9725 -0.2 - endloop - endfacet - facet normal 0.491953 0.870622 -0 - outer loop - vertex -28.3394 21.9725 -0.2 - vertex -29.0186 22.3563 0 - vertex -28.3394 21.9725 0 - endloop - endfacet - facet normal 0.491953 0.870622 0 - outer loop - vertex -29.0186 22.3563 0 - vertex -28.3394 21.9725 -0.2 - vertex -29.0186 22.3563 -0.2 - endloop - endfacet - facet normal 0.506614 0.862173 -0 - outer loop - vertex -29.0186 22.3563 -0.2 - vertex -29.4321 22.5993 0 - vertex -29.0186 22.3563 0 - endloop - endfacet - facet normal 0.506614 0.862173 0 - outer loop - vertex -29.4321 22.5993 0 - vertex -29.0186 22.3563 -0.2 - vertex -29.4321 22.5993 -0.2 - endloop - endfacet - facet normal 0.54186 0.840469 -0 - outer loop - vertex -29.4321 22.5993 -0.2 - vertex -29.7937 22.8325 0 - vertex -29.4321 22.5993 0 - endloop - endfacet - facet normal 0.54186 0.840469 0 - outer loop - vertex -29.7937 22.8325 0 - vertex -29.4321 22.5993 -0.2 - vertex -29.7937 22.8325 -0.2 - endloop - endfacet - facet normal 0.585975 0.810329 -0 - outer loop - vertex -29.7937 22.8325 -0.2 - vertex -30.1071 23.0591 0 - vertex -29.7937 22.8325 0 - endloop - endfacet - facet normal 0.585975 0.810329 0 - outer loop - vertex -30.1071 23.0591 0 - vertex -29.7937 22.8325 -0.2 - vertex -30.1071 23.0591 -0.2 - endloop - endfacet - facet normal 0.639127 0.769101 -0 - outer loop - vertex -30.1071 23.0591 -0.2 - vertex -30.3761 23.2826 0 - vertex -30.1071 23.0591 0 - endloop - endfacet - facet normal 0.639127 0.769101 0 - outer loop - vertex -30.3761 23.2826 0 - vertex -30.1071 23.0591 -0.2 - vertex -30.3761 23.2826 -0.2 - endloop - endfacet - facet normal 0.700019 0.714124 -0 - outer loop - vertex -30.3761 23.2826 -0.2 - vertex -30.6044 23.5064 0 - vertex -30.3761 23.2826 0 - endloop - endfacet - facet normal 0.700019 0.714124 0 - outer loop - vertex -30.6044 23.5064 0 - vertex -30.3761 23.2826 -0.2 - vertex -30.6044 23.5064 -0.2 - endloop - endfacet - facet normal 0.765169 0.643829 0 - outer loop - vertex -30.6044 23.5064 0 - vertex -30.7957 23.7338 -0.2 - vertex -30.7957 23.7338 0 - endloop - endfacet - facet normal 0.765169 0.643829 0 - outer loop - vertex -30.7957 23.7338 -0.2 - vertex -30.6044 23.5064 0 - vertex -30.6044 23.5064 -0.2 - endloop - endfacet - facet normal 0.828969 0.559295 0 - outer loop - vertex -30.7957 23.7338 0 - vertex -30.9539 23.9682 -0.2 - vertex -30.9539 23.9682 0 - endloop - endfacet - facet normal 0.828969 0.559295 0 - outer loop - vertex -30.9539 23.9682 -0.2 - vertex -30.7957 23.7338 0 - vertex -30.7957 23.7338 -0.2 - endloop - endfacet - facet normal 0.885091 0.465418 0 - outer loop - vertex -30.9539 23.9682 0 - vertex -31.0826 24.213 -0.2 - vertex -31.0826 24.213 0 - endloop - endfacet - facet normal 0.885091 0.465418 0 - outer loop - vertex -31.0826 24.213 -0.2 - vertex -30.9539 23.9682 0 - vertex -30.9539 23.9682 -0.2 - endloop - endfacet - facet normal 0.929158 0.369682 0 - outer loop - vertex -31.0826 24.213 0 - vertex -31.2103 24.5339 -0.2 - vertex -31.2103 24.5339 0 - endloop - endfacet - facet normal 0.929158 0.369682 0 - outer loop - vertex -31.2103 24.5339 -0.2 - vertex -31.0826 24.213 0 - vertex -31.0826 24.213 -0.2 - endloop - endfacet - facet normal 0.975453 0.220208 0 - outer loop - vertex -31.2103 24.5339 0 - vertex -31.2656 24.779 -0.2 - vertex -31.2656 24.779 0 - endloop - endfacet - facet normal 0.975453 0.220208 0 - outer loop - vertex -31.2656 24.779 -0.2 - vertex -31.2103 24.5339 0 - vertex -31.2103 24.5339 -0.2 - endloop - endfacet - facet normal 0.99992 0.0126114 0 - outer loop - vertex -31.2656 24.779 0 - vertex -31.2668 24.8727 -0.2 - vertex -31.2668 24.8727 0 - endloop - endfacet - facet normal 0.99992 0.0126114 0 - outer loop - vertex -31.2668 24.8727 -0.2 - vertex -31.2656 24.779 0 - vertex -31.2656 24.779 -0.2 - endloop - endfacet - facet normal 0.977346 -0.211648 0 - outer loop - vertex -31.2668 24.8727 0 - vertex -31.2507 24.9472 -0.2 - vertex -31.2507 24.9472 0 - endloop - endfacet - facet normal 0.977346 -0.211648 0 - outer loop - vertex -31.2507 24.9472 -0.2 - vertex -31.2668 24.8727 0 - vertex -31.2668 24.8727 -0.2 - endloop - endfacet - facet normal 0.856395 -0.516321 0 - outer loop - vertex -31.2507 24.9472 0 - vertex -31.2175 25.0021 -0.2 - vertex -31.2175 25.0021 0 - endloop - endfacet - facet normal 0.856395 -0.516321 0 - outer loop - vertex -31.2175 25.0021 -0.2 - vertex -31.2507 24.9472 0 - vertex -31.2507 24.9472 -0.2 - endloop - endfacet - facet normal 0.578733 -0.815517 0 - outer loop - vertex -31.2175 25.0021 -0.2 - vertex -31.1676 25.0376 0 - vertex -31.2175 25.0021 0 - endloop - endfacet - facet normal 0.578733 -0.815517 0 - outer loop - vertex -31.1676 25.0376 0 - vertex -31.2175 25.0021 -0.2 - vertex -31.1676 25.0376 -0.2 - endloop - endfacet - facet normal 0.230651 -0.973037 0 - outer loop - vertex -31.1676 25.0376 -0.2 - vertex -31.1012 25.0533 0 - vertex -31.1676 25.0376 0 - endloop - endfacet - facet normal 0.230651 -0.973037 0 - outer loop - vertex -31.1012 25.0533 0 - vertex -31.1676 25.0376 -0.2 - vertex -31.1012 25.0533 -0.2 - endloop - endfacet - facet normal -0.0489514 -0.998801 0 - outer loop - vertex -31.1012 25.0533 -0.2 - vertex -31.0185 25.0493 0 - vertex -31.1012 25.0533 0 - endloop - endfacet - facet normal -0.0489514 -0.998801 -0 - outer loop - vertex -31.0185 25.0493 0 - vertex -31.1012 25.0533 -0.2 - vertex -31.0185 25.0493 -0.2 - endloop - endfacet - facet normal -0.303972 -0.952681 0 - outer loop - vertex -31.0185 25.0493 -0.2 - vertex -30.8055 24.9813 0 - vertex -31.0185 25.0493 0 - endloop - endfacet - facet normal -0.303972 -0.952681 -0 - outer loop - vertex -30.8055 24.9813 0 - vertex -31.0185 25.0493 -0.2 - vertex -30.8055 24.9813 -0.2 - endloop - endfacet - facet normal -0.475595 -0.879664 0 - outer loop - vertex -30.8055 24.9813 -0.2 - vertex -30.5308 24.8328 0 - vertex -30.8055 24.9813 0 - endloop - endfacet - facet normal -0.475595 -0.879664 -0 - outer loop - vertex -30.5308 24.8328 0 - vertex -30.8055 24.9813 -0.2 - vertex -30.5308 24.8328 -0.2 - endloop - endfacet - facet normal -0.566807 -0.82385 0 - outer loop - vertex -30.5308 24.8328 -0.2 - vertex -30.1964 24.6027 0 - vertex -30.5308 24.8328 0 - endloop - endfacet - facet normal -0.566807 -0.82385 -0 - outer loop - vertex -30.1964 24.6027 0 - vertex -30.5308 24.8328 -0.2 - vertex -30.1964 24.6027 -0.2 - endloop - endfacet - facet normal -0.552424 -0.833564 0 - outer loop - vertex -30.1964 24.6027 -0.2 - vertex -29.8023 24.3416 0 - vertex -30.1964 24.6027 0 - endloop - endfacet - facet normal -0.552424 -0.833564 -0 - outer loop - vertex -29.8023 24.3416 0 - vertex -30.1964 24.6027 -0.2 - vertex -29.8023 24.3416 -0.2 - endloop - endfacet - facet normal -0.451398 -0.892323 0 - outer loop - vertex -29.8023 24.3416 -0.2 - vertex -29.384 24.13 0 - vertex -29.8023 24.3416 0 - endloop - endfacet - facet normal -0.451398 -0.892323 -0 - outer loop - vertex -29.384 24.13 0 - vertex -29.8023 24.3416 -0.2 - vertex -29.384 24.13 -0.2 - endloop - endfacet - facet normal -0.34198 -0.939707 0 - outer loop - vertex -29.384 24.13 -0.2 - vertex -28.9359 23.9669 0 - vertex -29.384 24.13 0 - endloop - endfacet - facet normal -0.34198 -0.939707 -0 - outer loop - vertex -28.9359 23.9669 0 - vertex -29.384 24.13 -0.2 - vertex -28.9359 23.9669 -0.2 - endloop - endfacet - facet normal -0.232476 -0.972602 0 - outer loop - vertex -28.9359 23.9669 -0.2 - vertex -28.4524 23.8513 0 - vertex -28.9359 23.9669 0 - endloop - endfacet - facet normal -0.232476 -0.972602 -0 - outer loop - vertex -28.4524 23.8513 0 - vertex -28.9359 23.9669 -0.2 - vertex -28.4524 23.8513 -0.2 - endloop - endfacet - facet normal -0.130593 -0.991436 0 - outer loop - vertex -28.4524 23.8513 -0.2 - vertex -27.9279 23.7822 0 - vertex -28.4524 23.8513 0 - endloop - endfacet - facet normal -0.130593 -0.991436 -0 - outer loop - vertex -27.9279 23.7822 0 - vertex -28.4524 23.8513 -0.2 - vertex -27.9279 23.7822 -0.2 - endloop - endfacet - facet normal -0.0413274 -0.999146 0 - outer loop - vertex -27.9279 23.7822 -0.2 - vertex -27.3569 23.7586 0 - vertex -27.9279 23.7822 0 - endloop - endfacet - facet normal -0.0413274 -0.999146 -0 - outer loop - vertex -27.3569 23.7586 0 - vertex -27.9279 23.7822 -0.2 - vertex -27.3569 23.7586 -0.2 - endloop - endfacet - facet normal 0.0333972 -0.999442 0 - outer loop - vertex -27.3569 23.7586 -0.2 - vertex -26.7338 23.7794 0 - vertex -27.3569 23.7586 0 - endloop - endfacet - facet normal 0.0333972 -0.999442 0 - outer loop - vertex -26.7338 23.7794 0 - vertex -27.3569 23.7586 -0.2 - vertex -26.7338 23.7794 -0.2 - endloop - endfacet - facet normal 0.0939488 -0.995577 0 - outer loop - vertex -26.7338 23.7794 -0.2 - vertex -26.053 23.8437 0 - vertex -26.7338 23.7794 0 - endloop - endfacet - facet normal 0.0939488 -0.995577 0 - outer loop - vertex -26.053 23.8437 0 - vertex -26.7338 23.7794 -0.2 - vertex -26.053 23.8437 -0.2 + vertex -26.0647 23.8437 0 + vertex -27.3687 23.7586 -3 + vertex -26.0647 23.8437 -3 endloop endfacet facet normal 0.119464 -0.992839 0 outer loop - vertex -26.053 23.8437 -0.2 - vertex -24.6523 24.0122 0 - vertex -26.053 23.8437 0 + vertex -26.0647 23.8437 -3 + vertex -24.664 24.0122 0 + vertex -26.0647 23.8437 0 endloop endfacet facet normal 0.119464 -0.992839 0 outer loop - vertex -24.6523 24.0122 0 - vertex -26.053 23.8437 -0.2 - vertex -24.6523 24.0122 -0.2 + vertex -24.664 24.0122 0 + vertex -26.0647 23.8437 -3 + vertex -24.664 24.0122 -3 endloop endfacet facet normal 0.193693 0.981062 -0 outer loop - vertex -24.6523 24.0122 -0.2 - vertex -26.0107 24.2804 0 - vertex -24.6523 24.0122 0 + vertex -24.664 24.0122 -3 + vertex -26.0224 24.2804 0 + vertex -24.664 24.0122 0 endloop endfacet facet normal 0.193693 0.981062 0 outer loop - vertex -26.0107 24.2804 0 - vertex -24.6523 24.0122 -0.2 - vertex -26.0107 24.2804 -0.2 + vertex -26.0224 24.2804 0 + vertex -24.664 24.0122 -3 + vertex -26.0224 24.2804 -3 endloop endfacet - facet normal 0.214134 0.976804 -0 + facet normal 0.282043 0.959402 -0 outer loop - vertex -26.0107 24.2804 -0.2 - vertex -26.5818 24.4056 0 - vertex -26.0107 24.2804 0 + vertex -26.0224 24.2804 -3 + vertex -28.1365 24.9019 0 + vertex -26.0224 24.2804 0 endloop endfacet - facet normal 0.214134 0.976804 0 + facet normal 0.282043 0.959402 0 outer loop - vertex -26.5818 24.4056 0 - vertex -26.0107 24.2804 -0.2 - vertex -26.5818 24.4056 -0.2 + vertex -28.1365 24.9019 0 + vertex -26.0224 24.2804 -3 + vertex -28.1365 24.9019 -3 endloop endfacet - facet normal 0.258173 0.966099 -0 + facet normal 0.487989 0.87285 -0 outer loop - vertex -26.5818 24.4056 -0.2 - vertex -27.1227 24.5501 0 - vertex -26.5818 24.4056 0 + vertex -28.1365 24.9019 -3 + vertex -29.9035 25.8898 0 + vertex -28.1365 24.9019 0 endloop endfacet - facet normal 0.258173 0.966099 0 + facet normal 0.487989 0.87285 0 outer loop - vertex -27.1227 24.5501 0 - vertex -26.5818 24.4056 -0.2 - vertex -27.1227 24.5501 -0.2 + vertex -29.9035 25.8898 0 + vertex -28.1365 24.9019 -3 + vertex -29.9035 25.8898 -3 endloop endfacet - facet normal 0.306051 0.952015 -0 + facet normal 0.641558 0.767075 -0 outer loop - vertex -27.1227 24.5501 -0.2 - vertex -27.636 24.7152 0 - vertex -27.1227 24.5501 0 + vertex -29.9035 25.8898 -3 + vertex -31.116 26.9038 0 + vertex -29.9035 25.8898 0 endloop endfacet - facet normal 0.306051 0.952015 0 + facet normal 0.641558 0.767075 0 outer loop - vertex -27.636 24.7152 0 - vertex -27.1227 24.5501 -0.2 - vertex -27.636 24.7152 -0.2 + vertex -31.116 26.9038 0 + vertex -29.9035 25.8898 -3 + vertex -31.116 26.9038 -3 endloop endfacet - facet normal 0.356888 0.934147 -0 + facet normal 0.876545 0.48132 0 outer loop - vertex -27.636 24.7152 -0.2 - vertex -28.1248 24.9019 0 - vertex -27.636 24.7152 0 + vertex -31.116 26.9038 0 + vertex -31.2912 27.2229 -3 + vertex -31.2912 27.2229 0 endloop endfacet - facet normal 0.356888 0.934147 0 + facet normal 0.876545 0.48132 0 outer loop - vertex -28.1248 24.9019 0 - vertex -27.636 24.7152 -0.2 - vertex -28.1248 24.9019 -0.2 + vertex -31.2912 27.2229 -3 + vertex -31.116 26.9038 0 + vertex -31.116 26.9038 -3 endloop endfacet - facet normal 0.409468 0.912325 -0 + facet normal 0.956151 -0.292876 0 outer loop - vertex -28.1248 24.9019 -0.2 - vertex -28.5919 25.1115 0 - vertex -28.1248 24.9019 0 + vertex -31.2912 27.2229 0 + vertex -31.2177 27.4629 -3 + vertex -31.2177 27.4629 0 endloop endfacet - facet normal 0.409468 0.912325 0 + facet normal 0.956151 -0.292876 0 outer loop - vertex -28.5919 25.1115 0 - vertex -28.1248 24.9019 -0.2 - vertex -28.5919 25.1115 -0.2 + vertex -31.2177 27.4629 -3 + vertex -31.2912 27.2229 0 + vertex -31.2912 27.2229 -3 endloop endfacet - facet normal 0.462329 0.886708 -0 + facet normal 0.0512406 -0.998686 0 outer loop - vertex -28.5919 25.1115 -0.2 - vertex -29.0402 25.3453 0 - vertex -28.5919 25.1115 0 + vertex -31.2177 27.4629 -3 + vertex -30.666 27.4912 0 + vertex -31.2177 27.4629 0 endloop endfacet - facet normal 0.462329 0.886708 0 + facet normal 0.0512406 -0.998686 0 outer loop - vertex -29.0402 25.3453 0 - vertex -28.5919 25.1115 -0.2 - vertex -29.0402 25.3453 -0.2 + vertex -30.666 27.4912 0 + vertex -31.2177 27.4629 -3 + vertex -30.666 27.4912 -3 endloop endfacet - facet normal 0.51393 0.857832 -0 + facet normal -0.343857 -0.939022 0 outer loop - vertex -29.0402 25.3453 -0.2 - vertex -29.4725 25.6043 0 - vertex -29.0402 25.3453 0 + vertex -30.666 27.4912 -3 + vertex -29.2879 26.9865 0 + vertex -30.666 27.4912 0 endloop endfacet - facet normal 0.51393 0.857832 0 + facet normal -0.343857 -0.939022 -0 outer loop - vertex -29.4725 25.6043 0 - vertex -29.0402 25.3453 -0.2 - vertex -29.4725 25.6043 -0.2 + vertex -29.2879 26.9865 0 + vertex -30.666 27.4912 -3 + vertex -29.2879 26.9865 -3 endloop endfacet - facet normal 0.562822 0.826578 -0 + facet normal -0.315787 -0.94883 0 outer loop - vertex -29.4725 25.6043 -0.2 - vertex -29.8918 25.8898 0 - vertex -29.4725 25.6043 0 + vertex -29.2879 26.9865 -3 + vertex -27.4214 26.3653 0 + vertex -29.2879 26.9865 0 endloop endfacet - facet normal 0.562822 0.826578 0 + facet normal -0.315787 -0.94883 -0 outer loop - vertex -29.8918 25.8898 0 - vertex -29.4725 25.6043 -0.2 - vertex -29.8918 25.8898 -0.2 + vertex -27.4214 26.3653 0 + vertex -29.2879 26.9865 -3 + vertex -27.4214 26.3653 -3 endloop endfacet - facet normal 0.607723 0.794149 -0 + facet normal -0.0620611 -0.998072 0 outer loop - vertex -29.8918 25.8898 -0.2 - vertex -30.6514 26.471 0 - vertex -29.8918 25.8898 0 + vertex -27.4214 26.3653 -3 + vertex -24.8433 26.205 0 + vertex -27.4214 26.3653 0 endloop endfacet - facet normal 0.607723 0.794149 0 + facet normal -0.0620611 -0.998072 -0 outer loop - vertex -30.6514 26.471 0 - vertex -29.8918 25.8898 -0.2 - vertex -30.6514 26.471 -0.2 + vertex -24.8433 26.205 0 + vertex -27.4214 26.3653 -3 + vertex -24.8433 26.205 -3 endloop endfacet - facet normal 0.662833 0.748767 -0 + facet normal 0.0113967 -0.999935 0 outer loop - vertex -30.6514 26.471 -0.2 - vertex -30.9143 26.7038 0 - vertex -30.6514 26.471 0 + vertex -24.8433 26.205 -3 + vertex -22.0473 26.2369 0 + vertex -24.8433 26.205 0 endloop endfacet - facet normal 0.662833 0.748767 0 + facet normal 0.0113967 -0.999935 0 outer loop - vertex -30.9143 26.7038 0 - vertex -30.6514 26.471 -0.2 - vertex -30.9143 26.7038 -0.2 + vertex -22.0473 26.2369 0 + vertex -24.8433 26.205 -3 + vertex -22.0473 26.2369 -3 endloop endfacet - facet normal 0.725171 0.688569 0 + facet normal 0.196528 -0.980498 0 outer loop - vertex -30.9143 26.7038 0 - vertex -31.1043 26.9038 -0.2 - vertex -31.1043 26.9038 0 + vertex -22.0473 26.2369 -3 + vertex -21.4485 26.3569 0 + vertex -22.0473 26.2369 0 endloop endfacet - facet normal 0.725171 0.688569 0 + facet normal 0.196528 -0.980498 0 outer loop - vertex -31.1043 26.9038 -0.2 - vertex -30.9143 26.7038 0 - vertex -30.9143 26.7038 -0.2 + vertex -21.4485 26.3569 0 + vertex -22.0473 26.2369 -3 + vertex -21.4485 26.3569 -3 endloop endfacet - facet normal 0.818345 0.574727 0 + facet normal 0.743557 -0.668673 0 outer loop - vertex -31.1043 26.9038 0 - vertex -31.2248 27.0754 -0.2 - vertex -31.2248 27.0754 0 + vertex -21.4485 26.3569 0 + vertex -21.2681 26.5576 -3 + vertex -21.2681 26.5576 0 endloop endfacet - facet normal 0.818345 0.574727 0 + facet normal 0.743557 -0.668673 0 outer loop - vertex -31.2248 27.0754 -0.2 - vertex -31.1043 26.9038 0 - vertex -31.1043 26.9038 -0.2 + vertex -21.2681 26.5576 -3 + vertex -21.4485 26.3569 0 + vertex -21.4485 26.3569 -3 endloop endfacet - facet normal 0.937593 0.347734 0 + facet normal 0.261077 0.965318 -0 outer loop - vertex -31.2248 27.0754 0 - vertex -31.2795 27.2229 -0.2 - vertex -31.2795 27.2229 0 + vertex -21.2681 26.5576 -3 + vertex -22.4212 26.8695 0 + vertex -21.2681 26.5576 0 endloop endfacet - facet normal 0.937593 0.347734 0 + facet normal 0.261077 0.965318 0 outer loop - vertex -31.2795 27.2229 -0.2 - vertex -31.2248 27.0754 0 - vertex -31.2248 27.0754 -0.2 + vertex -22.4212 26.8695 0 + vertex -21.2681 26.5576 -3 + vertex -22.4212 26.8695 -3 endloop endfacet - facet normal 0.99829 -0.0584589 0 + facet normal 0.309949 0.950753 -0 outer loop - vertex -31.2795 27.2229 0 - vertex -31.272 27.3506 -0.2 - vertex -31.272 27.3506 0 + vertex -22.4212 26.8695 -3 + vertex -23.8902 27.3484 0 + vertex -22.4212 26.8695 0 endloop endfacet - facet normal 0.99829 -0.0584589 0 + facet normal 0.309949 0.950753 0 outer loop - vertex -31.272 27.3506 -0.2 - vertex -31.2795 27.2229 0 - vertex -31.2795 27.2229 -0.2 + vertex -23.8902 27.3484 0 + vertex -22.4212 26.8695 -3 + vertex -23.8902 27.3484 -3 endloop endfacet - facet normal 0.861994 -0.506918 0 + facet normal 0.603717 0.797199 -0 outer loop - vertex -31.272 27.3506 0 - vertex -31.2059 27.4629 -0.2 - vertex -31.2059 27.4629 0 + vertex -23.8902 27.3484 -3 + vertex -24.3225 27.6757 0 + vertex -23.8902 27.3484 0 endloop endfacet - facet normal 0.861994 -0.506918 0 + facet normal 0.603717 0.797199 0 outer loop - vertex -31.2059 27.4629 -0.2 - vertex -31.272 27.3506 0 - vertex -31.272 27.3506 -0.2 + vertex -24.3225 27.6757 0 + vertex -23.8902 27.3484 -3 + vertex -24.3225 27.6757 -3 endloop endfacet - facet normal 0.566536 -0.824037 0 + facet normal 0.98955 0.144189 0 outer loop - vertex -31.2059 27.4629 -0.2 - vertex -31.1289 27.5158 0 - vertex -31.2059 27.4629 0 + vertex -24.3225 27.6757 0 + vertex -24.3632 27.9554 -3 + vertex -24.3632 27.9554 0 endloop endfacet - facet normal 0.566536 -0.824037 0 + facet normal 0.98955 0.144189 0 outer loop - vertex -31.1289 27.5158 0 - vertex -31.2059 27.4629 -0.2 - vertex -31.1289 27.5158 -0.2 + vertex -24.3632 27.9554 -3 + vertex -24.3225 27.6757 0 + vertex -24.3225 27.6757 -3 endloop endfacet - facet normal 0.198224 -0.980157 0 + facet normal -0.0279773 -0.999609 0 outer loop - vertex -31.1289 27.5158 -0.2 - vertex -31.0145 27.539 0 - vertex -31.1289 27.5158 0 + vertex -24.3632 27.9554 -3 + vertex -22.4093 27.9007 0 + vertex -24.3632 27.9554 0 endloop endfacet - facet normal 0.198224 -0.980157 0 + facet normal -0.0279773 -0.999609 -0 outer loop - vertex -31.0145 27.539 0 - vertex -31.1289 27.5158 -0.2 - vertex -31.0145 27.539 -0.2 + vertex -22.4093 27.9007 0 + vertex -24.3632 27.9554 -3 + vertex -22.4093 27.9007 -3 endloop endfacet - facet normal -0.0498903 -0.998755 0 + facet normal -0.150133 -0.988666 0 outer loop - vertex -31.0145 27.539 -0.2 - vertex -30.8579 27.5312 0 - vertex -31.0145 27.539 0 + vertex -22.4093 27.9007 -3 + vertex -20.8096 27.6578 0 + vertex -22.4093 27.9007 0 endloop endfacet - facet normal -0.0498903 -0.998755 -0 + facet normal -0.150133 -0.988666 -0 outer loop - vertex -30.8579 27.5312 0 - vertex -31.0145 27.539 -0.2 - vertex -30.8579 27.5312 -0.2 + vertex -20.8096 27.6578 0 + vertex -22.4093 27.9007 -3 + vertex -20.8096 27.6578 -3 endloop endfacet - facet normal -0.192665 -0.981265 0 + facet normal -0.458094 -0.888904 0 outer loop - vertex -30.8579 27.5312 -0.2 - vertex -30.6543 27.4912 0 - vertex -30.8579 27.5312 0 + vertex -20.8096 27.6578 -3 + vertex -19.9485 27.2141 0 + vertex -20.8096 27.6578 0 endloop endfacet - facet normal -0.192665 -0.981265 -0 + facet normal -0.458094 -0.888904 -0 outer loop - vertex -30.6543 27.4912 0 - vertex -30.8579 27.5312 -0.2 - vertex -30.6543 27.4912 -0.2 - endloop - endfacet - facet normal -0.304248 -0.952593 0 - outer loop - vertex -30.6543 27.4912 -0.2 - vertex -30.0875 27.3102 0 - vertex -30.6543 27.4912 0 - endloop - endfacet - facet normal -0.304248 -0.952593 -0 - outer loop - vertex -30.0875 27.3102 0 - vertex -30.6543 27.4912 -0.2 - vertex -30.0875 27.3102 -0.2 - endloop - endfacet - facet normal -0.370492 -0.928836 0 - outer loop - vertex -30.0875 27.3102 -0.2 - vertex -29.2762 26.9865 0 - vertex -30.0875 27.3102 0 - endloop - endfacet - facet normal -0.370492 -0.928836 -0 - outer loop - vertex -29.2762 26.9865 0 - vertex -30.0875 27.3102 -0.2 - vertex -29.2762 26.9865 -0.2 - endloop - endfacet - facet normal -0.380261 -0.924879 0 - outer loop - vertex -29.2762 26.9865 -0.2 - vertex -28.7314 26.7626 0 - vertex -29.2762 26.9865 0 - endloop - endfacet - facet normal -0.380261 -0.924879 -0 - outer loop - vertex -28.7314 26.7626 0 - vertex -29.2762 26.9865 -0.2 - vertex -28.7314 26.7626 -0.2 - endloop - endfacet - facet normal -0.349246 -0.937031 0 - outer loop - vertex -28.7314 26.7626 -0.2 - vertex -28.2663 26.5892 0 - vertex -28.7314 26.7626 0 - endloop - endfacet - facet normal -0.349246 -0.937031 -0 - outer loop - vertex -28.2663 26.5892 0 - vertex -28.7314 26.7626 -0.2 - vertex -28.2663 26.5892 -0.2 - endloop - endfacet - facet normal -0.29135 -0.956616 0 - outer loop - vertex -28.2663 26.5892 -0.2 - vertex -27.8395 26.4592 0 - vertex -28.2663 26.5892 0 - endloop - endfacet - facet normal -0.29135 -0.956616 -0 - outer loop - vertex -27.8395 26.4592 0 - vertex -28.2663 26.5892 -0.2 - vertex -27.8395 26.4592 -0.2 - endloop - endfacet - facet normal -0.213404 -0.976964 0 - outer loop - vertex -27.8395 26.4592 -0.2 - vertex -27.4097 26.3653 0 - vertex -27.8395 26.4592 0 - endloop - endfacet - facet normal -0.213404 -0.976964 -0 - outer loop - vertex -27.4097 26.3653 0 - vertex -27.8395 26.4592 -0.2 - vertex -27.4097 26.3653 -0.2 - endloop - endfacet - facet normal -0.13595 -0.990716 0 - outer loop - vertex -27.4097 26.3653 -0.2 - vertex -26.9353 26.3003 0 - vertex -27.4097 26.3653 0 - endloop - endfacet - facet normal -0.13595 -0.990716 -0 - outer loop - vertex -26.9353 26.3003 0 - vertex -27.4097 26.3653 -0.2 - vertex -26.9353 26.3003 -0.2 - endloop - endfacet - facet normal -0.077531 -0.99699 0 - outer loop - vertex -26.9353 26.3003 -0.2 - vertex -26.3751 26.2567 0 - vertex -26.9353 26.3003 0 - endloop - endfacet - facet normal -0.077531 -0.99699 -0 - outer loop - vertex -26.3751 26.2567 0 - vertex -26.9353 26.3003 -0.2 - vertex -26.3751 26.2567 -0.2 - endloop - endfacet - facet normal -0.0334453 -0.999441 0 - outer loop - vertex -26.3751 26.2567 -0.2 - vertex -24.8316 26.205 0 - vertex -26.3751 26.2567 0 - endloop - endfacet - facet normal -0.0334453 -0.999441 -0 - outer loop - vertex -24.8316 26.205 0 - vertex -26.3751 26.2567 -0.2 - vertex -24.8316 26.205 -0.2 - endloop - endfacet - facet normal -0.00940958 -0.999956 0 - outer loop - vertex -24.8316 26.205 -0.2 - vertex -23.1385 26.1891 0 - vertex -24.8316 26.205 0 - endloop - endfacet - facet normal -0.00940958 -0.999956 -0 - outer loop - vertex -23.1385 26.1891 0 - vertex -24.8316 26.205 -0.2 - vertex -23.1385 26.1891 -0.2 - endloop - endfacet - facet normal 0.0248422 -0.999691 0 - outer loop - vertex -23.1385 26.1891 -0.2 - vertex -22.5186 26.2045 0 - vertex -23.1385 26.1891 0 - endloop - endfacet - facet normal 0.0248422 -0.999691 0 - outer loop - vertex -22.5186 26.2045 0 - vertex -23.1385 26.1891 -0.2 - vertex -22.5186 26.2045 -0.2 - endloop - endfacet - facet normal 0.066912 -0.997759 0 - outer loop - vertex -22.5186 26.2045 -0.2 - vertex -22.0356 26.2369 0 - vertex -22.5186 26.2045 0 - endloop - endfacet - facet normal 0.066912 -0.997759 0 - outer loop - vertex -22.0356 26.2369 0 - vertex -22.5186 26.2045 -0.2 - vertex -22.0356 26.2369 -0.2 - endloop - endfacet - facet normal 0.139914 -0.990164 0 - outer loop - vertex -22.0356 26.2369 -0.2 - vertex -21.6785 26.2874 0 - vertex -22.0356 26.2369 0 - endloop - endfacet - facet normal 0.139914 -0.990164 0 - outer loop - vertex -21.6785 26.2874 0 - vertex -22.0356 26.2369 -0.2 - vertex -21.6785 26.2874 -0.2 - endloop - endfacet - facet normal 0.276553 -0.960999 0 - outer loop - vertex -21.6785 26.2874 -0.2 - vertex -21.4368 26.3569 0 - vertex -21.6785 26.2874 0 - endloop - endfacet - facet normal 0.276553 -0.960999 0 - outer loop - vertex -21.4368 26.3569 0 - vertex -21.6785 26.2874 -0.2 - vertex -21.4368 26.3569 -0.2 - endloop - endfacet - facet normal 0.462821 -0.886452 0 - outer loop - vertex -21.4368 26.3569 -0.2 - vertex -21.3558 26.3992 0 - vertex -21.4368 26.3569 0 - endloop - endfacet - facet normal 0.462821 -0.886452 0 - outer loop - vertex -21.3558 26.3992 0 - vertex -21.4368 26.3569 -0.2 - vertex -21.3558 26.3992 -0.2 - endloop - endfacet - facet normal 0.645311 -0.76392 0 - outer loop - vertex -21.3558 26.3992 -0.2 - vertex -21.2997 26.4466 0 - vertex -21.3558 26.3992 0 - endloop - endfacet - facet normal 0.645311 -0.76392 0 - outer loop - vertex -21.2997 26.4466 0 - vertex -21.3558 26.3992 -0.2 - vertex -21.2997 26.4466 -0.2 - endloop - endfacet - facet normal 0.84984 -0.527041 0 - outer loop - vertex -21.2997 26.4466 0 - vertex -21.2669 26.4994 -0.2 - vertex -21.2669 26.4994 0 - endloop - endfacet - facet normal 0.84984 -0.527041 0 - outer loop - vertex -21.2669 26.4994 -0.2 - vertex -21.2997 26.4466 0 - vertex -21.2997 26.4466 -0.2 - endloop - endfacet - facet normal 0.98379 -0.179322 0 - outer loop - vertex -21.2669 26.4994 0 - vertex -21.2563 26.5576 -0.2 - vertex -21.2563 26.5576 0 - endloop - endfacet - facet normal 0.98379 -0.179322 0 - outer loop - vertex -21.2563 26.5576 -0.2 - vertex -21.2669 26.4994 0 - vertex -21.2669 26.4994 -0.2 - endloop - endfacet - facet normal 0.837844 0.54591 0 - outer loop - vertex -21.2563 26.5576 0 - vertex -21.2799 26.5937 -0.2 - vertex -21.2799 26.5937 0 - endloop - endfacet - facet normal 0.837844 0.54591 0 - outer loop - vertex -21.2799 26.5937 -0.2 - vertex -21.2563 26.5576 0 - vertex -21.2563 26.5576 -0.2 - endloop - endfacet - facet normal 0.505324 0.86293 -0 - outer loop - vertex -21.2799 26.5937 -0.2 - vertex -21.3473 26.6332 0 - vertex -21.2799 26.5937 0 - endloop - endfacet - facet normal 0.505324 0.86293 0 - outer loop - vertex -21.3473 26.6332 0 - vertex -21.2799 26.5937 -0.2 - vertex -21.3473 26.6332 -0.2 - endloop - endfacet - facet normal 0.321132 0.947035 -0 - outer loop - vertex -21.3473 26.6332 -0.2 - vertex -21.5951 26.7172 0 - vertex -21.3473 26.6332 0 - endloop - endfacet - facet normal 0.321132 0.947035 0 - outer loop - vertex -21.5951 26.7172 0 - vertex -21.3473 26.6332 -0.2 - vertex -21.5951 26.7172 -0.2 - endloop - endfacet - facet normal 0.218663 0.9758 -0 - outer loop - vertex -21.5951 26.7172 -0.2 - vertex -21.9618 26.7994 0 - vertex -21.5951 26.7172 0 - endloop - endfacet - facet normal 0.218663 0.9758 0 - outer loop - vertex -21.9618 26.7994 0 - vertex -21.5951 26.7172 -0.2 - vertex -21.9618 26.7994 -0.2 - endloop - endfacet - facet normal 0.154639 0.987971 -0 - outer loop - vertex -21.9618 26.7994 -0.2 - vertex -22.4095 26.8695 0 - vertex -21.9618 26.7994 0 - endloop - endfacet - facet normal 0.154639 0.987971 0 - outer loop - vertex -22.4095 26.8695 0 - vertex -21.9618 26.7994 -0.2 - vertex -22.4095 26.8695 -0.2 - endloop - endfacet - facet normal 0.17991 0.983683 -0 - outer loop - vertex -22.4095 26.8695 -0.2 - vertex -22.8078 26.9423 0 - vertex -22.4095 26.8695 0 - endloop - endfacet - facet normal 0.17991 0.983683 0 - outer loop - vertex -22.8078 26.9423 0 - vertex -22.4095 26.8695 -0.2 - vertex -22.8078 26.9423 -0.2 - endloop - endfacet - facet normal 0.273496 0.961873 -0 - outer loop - vertex -22.8078 26.9423 -0.2 - vertex -23.1972 27.0531 0 - vertex -22.8078 26.9423 0 - endloop - endfacet - facet normal 0.273496 0.961873 0 - outer loop - vertex -23.1972 27.0531 0 - vertex -22.8078 26.9423 -0.2 - vertex -23.1972 27.0531 -0.2 - endloop - endfacet - facet normal 0.356994 0.934107 -0 - outer loop - vertex -23.1972 27.0531 -0.2 - vertex -23.56 27.1917 0 - vertex -23.1972 27.0531 0 - endloop - endfacet - facet normal 0.356994 0.934107 0 - outer loop - vertex -23.56 27.1917 0 - vertex -23.1972 27.0531 -0.2 - vertex -23.56 27.1917 -0.2 - endloop - endfacet - facet normal 0.441429 0.897296 -0 - outer loop - vertex -23.56 27.1917 -0.2 - vertex -23.8785 27.3484 0 - vertex -23.56 27.1917 0 - endloop - endfacet - facet normal 0.441429 0.897296 0 - outer loop - vertex -23.8785 27.3484 0 - vertex -23.56 27.1917 -0.2 - vertex -23.8785 27.3484 -0.2 - endloop - endfacet - facet normal 0.540697 0.841217 -0 - outer loop - vertex -23.8785 27.3484 -0.2 - vertex -24.1346 27.513 0 - vertex -23.8785 27.3484 0 - endloop - endfacet - facet normal 0.540697 0.841217 0 - outer loop - vertex -24.1346 27.513 0 - vertex -23.8785 27.3484 -0.2 - vertex -24.1346 27.513 -0.2 - endloop - endfacet - facet normal 0.678607 0.734501 -0 - outer loop - vertex -24.1346 27.513 -0.2 - vertex -24.3107 27.6757 0 - vertex -24.1346 27.513 0 - endloop - endfacet - facet normal 0.678607 0.734501 0 - outer loop - vertex -24.3107 27.6757 0 - vertex -24.1346 27.513 -0.2 - vertex -24.3107 27.6757 -0.2 - endloop - endfacet - facet normal 0.828129 0.560537 0 - outer loop - vertex -24.3107 27.6757 0 - vertex -24.3632 27.7532 -0.2 - vertex -24.3632 27.7532 0 - endloop - endfacet - facet normal 0.828129 0.560537 0 - outer loop - vertex -24.3632 27.7532 -0.2 - vertex -24.3107 27.6757 0 - vertex -24.3107 27.6757 -0.2 - endloop - endfacet - facet normal 0.943401 0.331655 0 - outer loop - vertex -24.3632 27.7532 0 - vertex -24.3889 27.8265 -0.2 - vertex -24.3889 27.8265 0 - endloop - endfacet - facet normal 0.943401 0.331655 0 - outer loop - vertex -24.3889 27.8265 -0.2 - vertex -24.3632 27.7532 0 - vertex -24.3632 27.7532 -0.2 - endloop - endfacet - facet normal 0.998917 -0.0465292 0 - outer loop - vertex -24.3889 27.8265 0 - vertex -24.3858 27.8943 -0.2 - vertex -24.3858 27.8943 0 - endloop - endfacet - facet normal 0.998917 -0.0465292 0 - outer loop - vertex -24.3858 27.8943 -0.2 - vertex -24.3889 27.8265 0 - vertex -24.3889 27.8265 -0.2 - endloop - endfacet - facet normal 0.871924 -0.489641 0 - outer loop - vertex -24.3858 27.8943 0 - vertex -24.3515 27.9554 -0.2 - vertex -24.3515 27.9554 0 - endloop - endfacet - facet normal 0.871924 -0.489641 0 - outer loop - vertex -24.3515 27.9554 -0.2 - vertex -24.3858 27.8943 0 - vertex -24.3858 27.8943 -0.2 - endloop - endfacet - facet normal 0.330372 -0.943851 0 - outer loop - vertex -24.3515 27.9554 -0.2 - vertex -24.2923 27.9761 0 - vertex -24.3515 27.9554 0 - endloop - endfacet - facet normal 0.330372 -0.943851 0 - outer loop - vertex -24.2923 27.9761 0 - vertex -24.3515 27.9554 -0.2 - vertex -24.2923 27.9761 -0.2 - endloop - endfacet - facet normal 0.0962711 -0.995355 0 - outer loop - vertex -24.2923 27.9761 -0.2 - vertex -24.1643 27.9885 0 - vertex -24.2923 27.9761 0 - endloop - endfacet - facet normal 0.0962711 -0.995355 0 - outer loop - vertex -24.1643 27.9885 0 - vertex -24.2923 27.9761 -0.2 - vertex -24.1643 27.9885 -0.2 - endloop - endfacet - facet normal 0.00166914 -0.999999 0 - outer loop - vertex -24.1643 27.9885 -0.2 - vertex -23.7335 27.9892 0 - vertex -24.1643 27.9885 0 - endloop - endfacet - facet normal 0.00166914 -0.999999 0 - outer loop - vertex -23.7335 27.9892 0 - vertex -24.1643 27.9885 -0.2 - vertex -23.7335 27.9892 -0.2 - endloop - endfacet - facet normal -0.048866 -0.998805 0 - outer loop - vertex -23.7335 27.9892 -0.2 - vertex -23.1232 27.9594 0 - vertex -23.7335 27.9892 0 - endloop - endfacet - facet normal -0.048866 -0.998805 -0 - outer loop - vertex -23.1232 27.9594 0 - vertex -23.7335 27.9892 -0.2 - vertex -23.1232 27.9594 -0.2 - endloop - endfacet - facet normal -0.0805478 -0.996751 0 - outer loop - vertex -23.1232 27.9594 -0.2 - vertex -22.3975 27.9007 0 - vertex -23.1232 27.9594 0 - endloop - endfacet - facet normal -0.0805478 -0.996751 -0 - outer loop - vertex -22.3975 27.9007 0 - vertex -23.1232 27.9594 -0.2 - vertex -22.3975 27.9007 -0.2 - endloop - endfacet - facet normal -0.115526 -0.993304 0 - outer loop - vertex -22.3975 27.9007 -0.2 - vertex -21.4599 27.7917 0 - vertex -22.3975 27.9007 0 - endloop - endfacet - facet normal -0.115526 -0.993304 -0 - outer loop - vertex -21.4599 27.7917 0 - vertex -22.3975 27.9007 -0.2 - vertex -21.4599 27.7917 -0.2 - endloop - endfacet - facet normal -0.170472 -0.985363 0 - outer loop - vertex -21.4599 27.7917 -0.2 - vertex -21.1001 27.7294 0 - vertex -21.4599 27.7917 0 - endloop - endfacet - facet normal -0.170472 -0.985363 -0 - outer loop - vertex -21.1001 27.7294 0 - vertex -21.4599 27.7917 -0.2 - vertex -21.1001 27.7294 -0.2 - endloop - endfacet - facet normal -0.23059 -0.973051 0 - outer loop - vertex -21.1001 27.7294 -0.2 - vertex -20.7979 27.6578 0 - vertex -21.1001 27.7294 0 - endloop - endfacet - facet normal -0.23059 -0.973051 -0 - outer loop - vertex -20.7979 27.6578 0 - vertex -21.1001 27.7294 -0.2 - vertex -20.7979 27.6578 -0.2 - endloop - endfacet - facet normal -0.312278 -0.949991 0 - outer loop - vertex -20.7979 27.6578 -0.2 - vertex -20.5419 27.5737 0 - vertex -20.7979 27.6578 0 - endloop - endfacet - facet normal -0.312278 -0.949991 -0 - outer loop - vertex -20.5419 27.5737 0 - vertex -20.7979 27.6578 -0.2 - vertex -20.5419 27.5737 -0.2 - endloop - endfacet - facet normal -0.411473 -0.911422 0 - outer loop - vertex -20.5419 27.5737 -0.2 - vertex -20.3206 27.4738 0 - vertex -20.5419 27.5737 0 - endloop - endfacet - facet normal -0.411473 -0.911422 -0 - outer loop - vertex -20.3206 27.4738 0 - vertex -20.5419 27.5737 -0.2 - vertex -20.3206 27.4738 -0.2 - endloop - endfacet - facet normal -0.51473 -0.857352 0 - outer loop - vertex -20.3206 27.4738 -0.2 - vertex -20.1227 27.3549 0 - vertex -20.3206 27.4738 0 - endloop - endfacet - facet normal -0.51473 -0.857352 -0 - outer loop - vertex -20.1227 27.3549 0 - vertex -20.3206 27.4738 -0.2 - vertex -20.1227 27.3549 -0.2 - endloop - endfacet - facet normal -0.604059 -0.79694 0 - outer loop - vertex -20.1227 27.3549 -0.2 - vertex -19.9368 27.2141 0 - vertex -20.1227 27.3549 0 - endloop - endfacet - facet normal -0.604059 -0.79694 -0 - outer loop - vertex -19.9368 27.2141 0 - vertex -20.1227 27.3549 -0.2 - vertex -19.9368 27.2141 -0.2 + vertex -19.9485 27.2141 0 + vertex -20.8096 27.6578 -3 + vertex -19.9485 27.2141 -3 endloop endfacet facet normal -0.64002 -0.768358 0 outer loop - vertex -19.9368 27.2141 -0.2 - vertex -19.3233 26.703 0 - vertex -19.9368 27.2141 0 + vertex -19.9485 27.2141 -3 + vertex -19.335 26.703 0 + vertex -19.9485 27.2141 0 endloop endfacet facet normal -0.64002 -0.768358 -0 outer loop - vertex -19.3233 26.703 0 - vertex -19.9368 27.2141 -0.2 - vertex -19.3233 26.703 -0.2 + vertex -19.335 26.703 0 + vertex -19.9485 27.2141 -3 + vertex -19.335 26.703 -3 endloop endfacet - facet normal 0.254038 -0.967194 0 + facet normal 0.254037 -0.967194 0 outer loop - vertex -19.3233 26.703 -0.2 - vertex -16.9758 27.3196 0 - vertex -19.3233 26.703 0 + vertex -19.335 26.703 -3 + vertex -16.9875 27.3196 0 + vertex -19.335 26.703 0 endloop endfacet - facet normal 0.254038 -0.967194 0 + facet normal 0.254037 -0.967194 0 outer loop - vertex -16.9758 27.3196 0 - vertex -19.3233 26.703 -0.2 - vertex -16.9758 27.3196 -0.2 + vertex -16.9875 27.3196 0 + vertex -19.335 26.703 -3 + vertex -16.9875 27.3196 -3 endloop endfacet - facet normal 0.236306 -0.971679 0 + facet normal 0.212489 -0.977163 0 outer loop - vertex -16.9758 27.3196 -0.2 - vertex -16.0674 27.5405 0 - vertex -16.9758 27.3196 0 + vertex -16.9875 27.3196 -3 + vertex -15.2376 27.7001 0 + vertex -16.9875 27.3196 0 endloop endfacet - facet normal 0.236306 -0.971679 0 + facet normal 0.212489 -0.977163 0 outer loop - vertex -16.0674 27.5405 0 - vertex -16.9758 27.3196 -0.2 - vertex -16.0674 27.5405 -0.2 + vertex -15.2376 27.7001 0 + vertex -16.9875 27.3196 -3 + vertex -15.2376 27.7001 -3 endloop endfacet - facet normal 0.186349 -0.982484 0 + facet normal 0.0813778 -0.996683 0 outer loop - vertex -16.0674 27.5405 -0.2 - vertex -15.2259 27.7001 0 - vertex -16.0674 27.5405 0 + vertex -15.2376 27.7001 -3 + vertex -13.5562 27.8374 0 + vertex -15.2376 27.7001 0 endloop endfacet - facet normal 0.186349 -0.982484 0 + facet normal 0.0813778 -0.996683 0 outer loop - vertex -15.2259 27.7001 0 - vertex -16.0674 27.5405 -0.2 - vertex -15.2259 27.7001 -0.2 + vertex -13.5562 27.8374 0 + vertex -15.2376 27.7001 -3 + vertex -13.5562 27.8374 -3 endloop endfacet - facet normal 0.119004 -0.992894 0 + facet normal -0.0507625 -0.998711 0 outer loop - vertex -15.2259 27.7001 -0.2 - vertex -14.4014 27.7989 0 - vertex -15.2259 27.7001 0 + vertex -13.5562 27.8374 -3 + vertex -11.546 27.7352 0 + vertex -13.5562 27.8374 0 endloop endfacet - facet normal 0.119004 -0.992894 0 + facet normal -0.0507625 -0.998711 -0 outer loop - vertex -14.4014 27.7989 0 - vertex -15.2259 27.7001 -0.2 - vertex -14.4014 27.7989 -0.2 + vertex -11.546 27.7352 0 + vertex -13.5562 27.8374 -3 + vertex -11.546 27.7352 -3 endloop endfacet - facet normal 0.0448493 -0.998994 0 + facet normal -0.122536 -0.992464 0 outer loop - vertex -14.4014 27.7989 -0.2 - vertex -13.5445 27.8374 0 - vertex -14.4014 27.7989 0 + vertex -11.546 27.7352 -3 + vertex -8.80952 27.3973 0 + vertex -11.546 27.7352 0 endloop endfacet - facet normal 0.0448493 -0.998994 0 + facet normal -0.122536 -0.992464 -0 outer loop - vertex -13.5445 27.8374 0 - vertex -14.4014 27.7989 -0.2 - vertex -13.5445 27.8374 -0.2 + vertex -8.80952 27.3973 0 + vertex -11.546 27.7352 -3 + vertex -8.80952 27.3973 -3 endloop endfacet - facet normal -0.0227723 -0.999741 0 + facet normal -0.0983783 -0.995149 0 outer loop - vertex -13.5445 27.8374 -0.2 - vertex -12.6053 27.816 0 - vertex -13.5445 27.8374 0 + vertex -8.80952 27.3973 -3 + vertex -7.25507 27.2437 0 + vertex -8.80952 27.3973 0 endloop endfacet - facet normal -0.0227723 -0.999741 -0 + facet normal -0.0983783 -0.995149 -0 outer loop - vertex -12.6053 27.816 0 - vertex -13.5445 27.8374 -0.2 - vertex -12.6053 27.816 -0.2 + vertex -7.25507 27.2437 0 + vertex -8.80952 27.3973 -3 + vertex -7.25507 27.2437 -3 endloop endfacet - facet normal -0.0752121 -0.997168 0 + facet normal 0.163792 -0.986495 0 outer loop - vertex -12.6053 27.816 -0.2 - vertex -11.5342 27.7352 0 - vertex -12.6053 27.816 0 + vertex -7.25507 27.2437 -3 + vertex -6.55612 27.3597 0 + vertex -7.25507 27.2437 0 endloop endfacet - facet normal -0.0752121 -0.997168 -0 + facet normal 0.163792 -0.986495 0 outer loop - vertex -11.5342 27.7352 0 - vertex -12.6053 27.816 -0.2 - vertex -11.5342 27.7352 -0.2 + vertex -6.55612 27.3597 0 + vertex -7.25507 27.2437 -3 + vertex -6.55612 27.3597 -3 endloop endfacet - facet normal -0.110844 -0.993838 0 + facet normal 0.830428 -0.557126 0 outer loop - vertex -11.5342 27.7352 -0.2 - vertex -10.2816 27.5955 0 - vertex -11.5342 27.7352 0 + vertex -6.55612 27.3597 0 + vertex -6.38329 27.6173 -3 + vertex -6.38329 27.6173 0 endloop endfacet - facet normal -0.110844 -0.993838 -0 + facet normal 0.830428 -0.557126 0 outer loop - vertex -10.2816 27.5955 0 - vertex -11.5342 27.7352 -0.2 - vertex -10.2816 27.5955 -0.2 + vertex -6.38329 27.6173 -3 + vertex -6.55612 27.3597 0 + vertex -6.55612 27.3597 -3 endloop endfacet - facet normal -0.132367 -0.991201 0 + facet normal 0.987965 -0.154679 0 outer loop - vertex -10.2816 27.5955 -0.2 - vertex -8.79778 27.3973 0 - vertex -10.2816 27.5955 0 + vertex -6.38329 27.6173 0 + vertex -6.28322 28.2565 -3 + vertex -6.28322 28.2565 0 endloop endfacet - facet normal -0.132367 -0.991201 -0 + facet normal 0.987965 -0.154679 0 outer loop - vertex -8.79778 27.3973 0 - vertex -10.2816 27.5955 -0.2 - vertex -8.79778 27.3973 -0.2 + vertex -6.28322 28.2565 -3 + vertex -6.38329 27.6173 0 + vertex -6.38329 27.6173 -3 endloop endfacet - facet normal -0.122316 -0.992491 0 + facet normal 0.99984 -0.0178603 0 outer loop - vertex -8.79778 27.3973 -0.2 - vertex -7.89877 27.2865 0 - vertex -8.79778 27.3973 0 + vertex -6.28322 28.2565 0 + vertex -6.22131 31.7226 -3 + vertex -6.22131 31.7226 0 endloop endfacet - facet normal -0.122316 -0.992491 -0 + facet normal 0.99984 -0.0178603 0 outer loop - vertex -7.89877 27.2865 0 - vertex -8.79778 27.3973 -0.2 - vertex -7.89877 27.2865 -0.2 + vertex -6.22131 31.7226 -3 + vertex -6.28322 28.2565 0 + vertex -6.28322 28.2565 -3 endloop endfacet - facet normal -0.0652699 -0.997868 0 + facet normal 0.999322 -0.0368307 0 outer loop - vertex -7.89877 27.2865 -0.2 - vertex -7.24334 27.2437 0 - vertex -7.89877 27.2865 0 + vertex -6.22131 31.7226 0 + vertex -6.055 36.2349 -3 + vertex -6.055 36.2349 0 endloop endfacet - facet normal -0.0652699 -0.997868 -0 + facet normal 0.999322 -0.0368307 0 outer loop - vertex -7.24334 27.2437 0 - vertex -7.89877 27.2865 -0.2 - vertex -7.24334 27.2437 -0.2 + vertex -6.055 36.2349 -3 + vertex -6.22131 31.7226 0 + vertex -6.22131 31.7226 -3 endloop endfacet - facet normal 0.0157984 -0.999875 0 + facet normal 0.823305 -0.5676 0 outer loop - vertex -7.24334 27.2437 -0.2 - vertex -6.99768 27.2475 0 - vertex -7.24334 27.2437 0 + vertex -6.055 36.2349 0 + vertex -5.8163 36.5812 -3 + vertex -5.8163 36.5812 0 endloop endfacet - facet normal 0.0157984 -0.999875 0 + facet normal 0.823305 -0.5676 0 outer loop - vertex -6.99768 27.2475 0 - vertex -7.24334 27.2437 -0.2 - vertex -6.99768 27.2475 -0.2 + vertex -5.8163 36.5812 -3 + vertex -6.055 36.2349 0 + vertex -6.055 36.2349 -3 endloop endfacet - facet normal 0.104958 -0.994477 0 + facet normal -0.301391 -0.953501 0 outer loop - vertex -6.99768 27.2475 -0.2 - vertex -6.80178 27.2682 0 - vertex -6.99768 27.2475 0 + vertex -5.8163 36.5812 -3 + vertex -5.55994 36.5001 0 + vertex -5.8163 36.5812 0 endloop endfacet - facet normal 0.104958 -0.994477 0 + facet normal -0.301391 -0.953501 -0 outer loop - vertex -6.80178 27.2682 0 - vertex -6.99768 27.2475 -0.2 - vertex -6.80178 27.2682 -0.2 + vertex -5.55994 36.5001 0 + vertex -5.8163 36.5812 -3 + vertex -5.55994 36.5001 -3 endloop endfacet - facet normal 0.242196 -0.970227 0 + facet normal -0.928472 -0.371402 0 outer loop - vertex -6.80178 27.2682 -0.2 - vertex -6.65192 27.3056 0 - vertex -6.80178 27.2682 0 + vertex -4.97284 35.0324 -3 + vertex -5.55994 36.5001 0 + vertex -5.55994 36.5001 -3 endloop endfacet - facet normal 0.242196 -0.970227 0 + facet normal -0.928472 -0.371402 0 outer loop - vertex -6.65192 27.3056 0 - vertex -6.80178 27.2682 -0.2 - vertex -6.65192 27.3056 -0.2 + vertex -5.55994 36.5001 0 + vertex -4.97284 35.0324 -3 + vertex -4.97284 35.0324 0 endloop endfacet - facet normal 0.449315 -0.893373 0 + facet normal -0.946087 -0.323913 0 outer loop - vertex -6.65192 27.3056 -0.2 - vertex -6.54439 27.3597 0 - vertex -6.65192 27.3056 0 + vertex -3.97987 32.1322 -3 + vertex -4.97284 35.0324 0 + vertex -4.97284 35.0324 -3 endloop endfacet - facet normal 0.449315 -0.893373 0 + facet normal -0.946087 -0.323913 0 outer loop - vertex -6.54439 27.3597 0 - vertex -6.65192 27.3056 -0.2 - vertex -6.54439 27.3597 -0.2 + vertex -4.97284 35.0324 0 + vertex -3.97987 32.1322 -3 + vertex -3.97987 32.1322 0 endloop endfacet - facet normal 0.709468 -0.704738 0 + facet normal -0.891782 -0.452466 0 outer loop - vertex -6.54439 27.3597 0 - vertex -6.44763 27.4571 -0.2 - vertex -6.44763 27.4571 0 + vertex -2.77953 29.7664 -3 + vertex -3.97987 32.1322 0 + vertex -3.97987 32.1322 -3 endloop endfacet - facet normal 0.709468 -0.704738 0 + facet normal -0.891782 -0.452466 0 outer loop - vertex -6.44763 27.4571 -0.2 - vertex -6.54439 27.3597 0 - vertex -6.54439 27.3597 -0.2 + vertex -3.97987 32.1322 0 + vertex -2.77953 29.7664 -3 + vertex -2.77953 29.7664 0 endloop endfacet - facet normal 0.90334 -0.428926 0 + facet normal -0.788004 -0.61567 0 outer loop - vertex -6.44763 27.4571 0 - vertex -6.37156 27.6173 -0.2 - vertex -6.37156 27.6173 0 + vertex -1.46161 28.0795 -3 + vertex -2.77953 29.7664 0 + vertex -2.77953 29.7664 -3 endloop endfacet - facet normal 0.90334 -0.428926 0 + facet normal -0.788004 -0.61567 0 outer loop - vertex -6.37156 27.6173 -0.2 - vertex -6.44763 27.4571 0 - vertex -6.44763 27.4571 -0.2 + vertex -2.77953 29.7664 0 + vertex -1.46161 28.0795 -3 + vertex -1.46161 28.0795 0 endloop endfacet - facet normal 0.975305 -0.220862 0 + facet normal -0.627252 -0.778816 0 outer loop - vertex -6.37156 27.6173 0 - vertex -6.31368 27.8729 -0.2 - vertex -6.31368 27.8729 0 + vertex -1.46161 28.0795 -3 + vertex -0.786632 27.5359 0 + vertex -1.46161 28.0795 0 endloop endfacet - facet normal 0.975305 -0.220862 0 + facet normal -0.627252 -0.778816 -0 outer loop - vertex -6.31368 27.8729 -0.2 - vertex -6.37156 27.6173 0 - vertex -6.37156 27.6173 -0.2 + vertex -0.786632 27.5359 0 + vertex -1.46161 28.0795 -3 + vertex -0.786632 27.5359 -3 endloop endfacet - facet normal 0.994005 -0.109334 0 + facet normal -0.430266 -0.902702 0 outer loop - vertex -6.31368 27.8729 0 - vertex -6.27149 28.2565 -0.2 - vertex -6.27149 28.2565 0 + vertex -0.786632 27.5359 -3 + vertex -0.115935 27.2162 0 + vertex -0.786632 27.5359 0 endloop endfacet - facet normal 0.994005 -0.109334 0 + facet normal -0.430266 -0.902702 -0 outer loop - vertex -6.27149 28.2565 -0.2 - vertex -6.31368 27.8729 0 - vertex -6.31368 27.8729 -0.2 + vertex -0.115935 27.2162 0 + vertex -0.786632 27.5359 -3 + vertex -0.115935 27.2162 -3 endloop endfacet - facet normal 0.998582 -0.0532268 0 + facet normal -0.108301 -0.994118 0 outer loop - vertex -6.27149 28.2565 0 - vertex -6.24249 28.8007 -0.2 - vertex -6.24249 28.8007 0 + vertex -0.115935 27.2162 -3 + vertex 0.858783 27.1101 0 + vertex -0.115935 27.2162 0 endloop endfacet - facet normal 0.998582 -0.0532268 0 + facet normal -0.108301 -0.994118 -0 outer loop - vertex -6.24249 28.8007 -0.2 - vertex -6.27149 28.2565 0 - vertex -6.27149 28.2565 -0.2 + vertex 0.858783 27.1101 0 + vertex -0.115935 27.2162 -3 + vertex 0.858783 27.1101 -3 endloop endfacet - facet normal 0.999691 -0.0248385 0 + facet normal 0.992113 -0.125344 0 outer loop - vertex -6.24249 28.8007 0 - vertex -6.22417 29.538 -0.2 - vertex -6.22417 29.538 0 + vertex 0.858783 27.1101 0 + vertex 1.04836 28.6106 -3 + vertex 1.04836 28.6106 0 endloop endfacet - facet normal 0.999691 -0.0248385 0 + facet normal 0.992113 -0.125344 0 outer loop - vertex -6.22417 29.538 -0.2 - vertex -6.24249 28.8007 0 - vertex -6.24249 28.8007 -0.2 + vertex 1.04836 28.6106 -3 + vertex 0.858783 27.1101 0 + vertex 0.858783 27.1101 -3 endloop endfacet - facet normal 0.999978 -0.00667916 0 + facet normal 0.998104 -0.0615481 0 outer loop - vertex -6.22417 29.538 0 - vertex -6.20957 31.7226 -0.2 - vertex -6.20957 31.7226 0 + vertex 1.04836 28.6106 0 + vertex 1.1273 29.8907 -3 + vertex 1.1273 29.8907 0 endloop endfacet - facet normal 0.999978 -0.00667916 0 + facet normal 0.998104 -0.0615481 0 outer loop - vertex -6.20957 31.7226 -0.2 - vertex -6.22417 29.538 0 - vertex -6.22417 29.538 -0.2 + vertex 1.1273 29.8907 -3 + vertex 1.04836 28.6106 0 + vertex 1.04836 28.6106 -3 endloop endfacet - facet normal 0.999955 -0.00944041 0 + facet normal 0.981864 -0.189585 0 outer loop - vertex -6.20957 31.7226 0 - vertex -6.19415 33.3563 -0.2 - vertex -6.19415 33.3563 0 + vertex 1.1273 29.8907 0 + vertex 1.37489 31.173 -3 + vertex 1.37489 31.173 0 endloop endfacet - facet normal 0.999955 -0.00944041 0 + facet normal 0.981864 -0.189585 0 outer loop - vertex -6.19415 33.3563 -0.2 - vertex -6.20957 31.7226 0 - vertex -6.20957 31.7226 -0.2 + vertex 1.37489 31.173 -3 + vertex 1.1273 29.8907 0 + vertex 1.1273 29.8907 -3 endloop endfacet - facet normal 0.999658 -0.0261462 0 + facet normal 0.935462 -0.353427 0 outer loop - vertex -6.19415 33.3563 0 - vertex -6.15766 34.7516 -0.2 - vertex -6.15766 34.7516 0 + vertex 1.37489 31.173 0 + vertex 2.44067 33.9939 -3 + vertex 2.44067 33.9939 0 endloop endfacet - facet normal 0.999658 -0.0261462 0 + facet normal 0.935462 -0.353427 0 outer loop - vertex -6.15766 34.7516 -0.2 - vertex -6.19415 33.3563 0 - vertex -6.19415 33.3563 -0.2 + vertex 2.44067 33.9939 -3 + vertex 1.37489 31.173 0 + vertex 1.37489 31.173 -3 endloop endfacet - facet normal 0.998669 -0.0515827 0 + facet normal 0.883303 -0.468802 0 outer loop - vertex -6.15766 34.7516 0 - vertex -6.10555 35.7605 -0.2 - vertex -6.10555 35.7605 0 + vertex 2.44067 33.9939 0 + vertex 4.08079 37.0842 -3 + vertex 4.08079 37.0842 0 endloop endfacet - facet normal 0.998669 -0.0515827 0 + facet normal 0.883303 -0.468802 0 outer loop - vertex -6.10555 35.7605 -0.2 - vertex -6.15766 34.7516 0 - vertex -6.15766 34.7516 -0.2 + vertex 4.08079 37.0842 -3 + vertex 2.44067 33.9939 0 + vertex 2.44067 33.9939 -3 endloop endfacet - facet normal 0.995383 -0.0959818 0 + facet normal 0.814108 -0.580714 0 outer loop - vertex -6.10555 35.7605 0 - vertex -6.07534 36.0738 -0.2 - vertex -6.07534 36.0738 0 + vertex 4.08079 37.0842 0 + vertex 5.15152 38.5852 -3 + vertex 5.15152 38.5852 0 endloop endfacet - facet normal 0.995383 -0.0959818 0 + facet normal 0.814108 -0.580714 0 outer loop - vertex -6.07534 36.0738 -0.2 - vertex -6.10555 35.7605 0 - vertex -6.10555 35.7605 -0.2 + vertex 5.15152 38.5852 -3 + vertex 4.08079 37.0842 0 + vertex 4.08079 37.0842 -3 endloop endfacet - facet normal 0.980771 -0.195161 0 + facet normal -0.809167 -0.587578 0 outer loop - vertex -6.07534 36.0738 0 - vertex -6.04327 36.2349 -0.2 - vertex -6.04327 36.2349 0 + vertex 5.25321 38.4452 -3 + vertex 5.15152 38.5852 0 + vertex 5.15152 38.5852 -3 endloop endfacet - facet normal 0.980771 -0.195161 0 + facet normal -0.809167 -0.587578 0 outer loop - vertex -6.04327 36.2349 -0.2 - vertex -6.07534 36.0738 0 - vertex -6.07534 36.0738 -0.2 + vertex 5.15152 38.5852 0 + vertex 5.25321 38.4452 -3 + vertex 5.25321 38.4452 0 endloop endfacet - facet normal 0.887411 -0.460979 0 + facet normal -0.887211 -0.461365 0 outer loop - vertex -6.04327 36.2349 0 - vertex -5.92579 36.4611 -0.2 - vertex -5.92579 36.4611 0 + vertex 8.028 17.0592 -3 + vertex 7.15178 18.7442 0 + vertex 7.15178 18.7442 -3 endloop endfacet - facet normal 0.887411 -0.460979 0 + facet normal -0.887211 -0.461365 0 outer loop - vertex -5.92579 36.4611 -0.2 - vertex -6.04327 36.2349 0 - vertex -6.04327 36.2349 -0.2 + vertex 7.15178 18.7442 0 + vertex 8.028 17.0592 -3 + vertex 8.028 17.0592 0 endloop endfacet - facet normal 0.77348 -0.633821 0 + facet normal -0.822305 -0.569047 0 outer loop - vertex -5.92579 36.4611 0 - vertex -5.86569 36.5344 -0.2 - vertex -5.86569 36.5344 0 + vertex 8.86535 15.8492 -3 + vertex 8.028 17.0592 0 + vertex 8.028 17.0592 -3 endloop endfacet - facet normal 0.77348 -0.633821 0 + facet normal -0.822305 -0.569047 0 outer loop - vertex -5.86569 36.5344 -0.2 - vertex -5.92579 36.4611 0 - vertex -5.92579 36.4611 -0.2 + vertex 8.028 17.0592 0 + vertex 8.86535 15.8492 -3 + vertex 8.86535 15.8492 0 endloop endfacet - facet normal 0.607425 -0.794377 0 + facet normal 0.359337 -0.933208 0 outer loop - vertex -5.86569 36.5344 -0.2 - vertex -5.80457 36.5812 0 - vertex -5.86569 36.5344 0 + vertex 8.86535 15.8492 -3 + vertex 9.72145 16.1788 0 + vertex 8.86535 15.8492 0 endloop endfacet - facet normal 0.607425 -0.794377 0 + facet normal 0.359337 -0.933208 0 outer loop - vertex -5.80457 36.5812 0 - vertex -5.86569 36.5344 -0.2 - vertex -5.80457 36.5812 -0.2 - endloop - endfacet - facet normal 0.306429 -0.951894 0 - outer loop - vertex -5.80457 36.5812 -0.2 - vertex -5.74234 36.6012 0 - vertex -5.80457 36.5812 0 - endloop - endfacet - facet normal 0.306429 -0.951894 0 - outer loop - vertex -5.74234 36.6012 0 - vertex -5.80457 36.5812 -0.2 - vertex -5.74234 36.6012 -0.2 - endloop - endfacet - facet normal -0.106116 -0.994354 0 - outer loop - vertex -5.74234 36.6012 -0.2 - vertex -5.67893 36.5944 0 - vertex -5.74234 36.6012 0 - endloop - endfacet - facet normal -0.106116 -0.994354 -0 - outer loop - vertex -5.67893 36.5944 0 - vertex -5.74234 36.6012 -0.2 - vertex -5.67893 36.5944 -0.2 - endloop - endfacet - facet normal -0.461592 -0.887092 0 - outer loop - vertex -5.67893 36.5944 -0.2 - vertex -5.61425 36.5608 0 - vertex -5.67893 36.5944 0 - endloop - endfacet - facet normal -0.461592 -0.887092 -0 - outer loop - vertex -5.61425 36.5608 0 - vertex -5.67893 36.5944 -0.2 - vertex -5.61425 36.5608 -0.2 - endloop - endfacet - facet normal -0.67638 -0.736553 0 - outer loop - vertex -5.61425 36.5608 -0.2 - vertex -5.54821 36.5001 0 - vertex -5.61425 36.5608 0 - endloop - endfacet - facet normal -0.67638 -0.736553 -0 - outer loop - vertex -5.54821 36.5001 0 - vertex -5.61425 36.5608 -0.2 - vertex -5.54821 36.5001 -0.2 - endloop - endfacet - facet normal -0.829388 -0.558673 0 - outer loop - vertex -5.41174 36.2975 -0.2 - vertex -5.54821 36.5001 0 - vertex -5.54821 36.5001 -0.2 - endloop - endfacet - facet normal -0.829388 -0.558673 0 - outer loop - vertex -5.54821 36.5001 0 - vertex -5.41174 36.2975 -0.2 - vertex -5.41174 36.2975 0 - endloop - endfacet - facet normal -0.909006 -0.416783 0 - outer loop - vertex -5.26884 35.9859 -0.2 - vertex -5.41174 36.2975 0 - vertex -5.41174 36.2975 -0.2 - endloop - endfacet - facet normal -0.909006 -0.416783 0 - outer loop - vertex -5.41174 36.2975 0 - vertex -5.26884 35.9859 -0.2 - vertex -5.26884 35.9859 0 - endloop - endfacet - facet normal -0.942118 -0.335281 0 - outer loop - vertex -5.11886 35.5644 -0.2 - vertex -5.26884 35.9859 0 - vertex -5.26884 35.9859 -0.2 - endloop - endfacet - facet normal -0.942118 -0.335281 0 - outer loop - vertex -5.26884 35.9859 0 - vertex -5.11886 35.5644 -0.2 - vertex -5.11886 35.5644 0 - endloop - endfacet - facet normal -0.958738 -0.28429 0 - outer loop - vertex -4.96111 35.0324 -0.2 - vertex -5.11886 35.5644 0 - vertex -5.11886 35.5644 -0.2 - endloop - endfacet - facet normal -0.958738 -0.28429 0 - outer loop - vertex -5.11886 35.5644 0 - vertex -4.96111 35.0324 -0.2 - vertex -4.96111 35.0324 0 - endloop - endfacet - facet normal -0.959965 -0.280118 0 - outer loop - vertex -4.73722 34.2652 -0.2 - vertex -4.96111 35.0324 0 - vertex -4.96111 35.0324 -0.2 - endloop - endfacet - facet normal -0.959965 -0.280118 0 - outer loop - vertex -4.96111 35.0324 0 - vertex -4.73722 34.2652 -0.2 - vertex -4.73722 34.2652 0 - endloop - endfacet - facet normal -0.950901 -0.309494 0 - outer loop - vertex -4.49616 33.5245 -0.2 - vertex -4.73722 34.2652 0 - vertex -4.73722 34.2652 -0.2 - endloop - endfacet - facet normal -0.950901 -0.309494 0 - outer loop - vertex -4.73722 34.2652 0 - vertex -4.49616 33.5245 -0.2 - vertex -4.49616 33.5245 0 - endloop - endfacet - facet normal -0.940636 -0.339418 0 - outer loop - vertex -4.23933 32.8128 -0.2 - vertex -4.49616 33.5245 0 - vertex -4.49616 33.5245 -0.2 - endloop - endfacet - facet normal -0.940636 -0.339418 0 - outer loop - vertex -4.49616 33.5245 0 - vertex -4.23933 32.8128 -0.2 - vertex -4.23933 32.8128 0 - endloop - endfacet - facet normal -0.928971 -0.370153 0 - outer loop - vertex -3.96814 32.1322 -0.2 - vertex -4.23933 32.8128 0 - vertex -4.23933 32.8128 -0.2 - endloop - endfacet - facet normal -0.928971 -0.370153 0 - outer loop - vertex -4.23933 32.8128 0 - vertex -3.96814 32.1322 -0.2 - vertex -3.96814 32.1322 0 - endloop - endfacet - facet normal -0.915636 -0.402008 0 - outer loop - vertex -3.68399 31.485 -0.2 - vertex -3.96814 32.1322 0 - vertex -3.96814 32.1322 -0.2 - endloop - endfacet - facet normal -0.915636 -0.402008 0 - outer loop - vertex -3.96814 32.1322 0 - vertex -3.68399 31.485 -0.2 - vertex -3.68399 31.485 0 - endloop - endfacet - facet normal -0.900273 -0.435326 0 - outer loop - vertex -3.38828 30.8734 -0.2 - vertex -3.68399 31.485 0 - vertex -3.68399 31.485 -0.2 - endloop - endfacet - facet normal -0.900273 -0.435326 0 - outer loop - vertex -3.68399 31.485 0 - vertex -3.38828 30.8734 -0.2 - vertex -3.38828 30.8734 0 - endloop - endfacet - facet normal -0.882395 -0.47051 0 - outer loop - vertex -3.08241 30.2998 -0.2 - vertex -3.38828 30.8734 0 - vertex -3.38828 30.8734 -0.2 - endloop - endfacet - facet normal -0.882395 -0.47051 0 - outer loop - vertex -3.38828 30.8734 0 - vertex -3.08241 30.2998 -0.2 - vertex -3.08241 30.2998 0 - endloop - endfacet - facet normal -0.861349 -0.508014 0 - outer loop - vertex -2.7678 29.7664 -0.2 - vertex -3.08241 30.2998 0 - vertex -3.08241 30.2998 -0.2 - endloop - endfacet - facet normal -0.861349 -0.508014 0 - outer loop - vertex -3.08241 30.2998 0 - vertex -2.7678 29.7664 -0.2 - vertex -2.7678 29.7664 0 - endloop - endfacet - facet normal -0.83625 -0.548349 0 - outer loop - vertex -2.44583 29.2754 -0.2 - vertex -2.7678 29.7664 0 - vertex -2.7678 29.7664 -0.2 - endloop - endfacet - facet normal -0.83625 -0.548349 0 - outer loop - vertex -2.7678 29.7664 0 - vertex -2.44583 29.2754 -0.2 - vertex -2.44583 29.2754 0 - endloop - endfacet - facet normal -0.805875 -0.592086 0 - outer loop - vertex -2.11792 28.8291 -0.2 - vertex -2.44583 29.2754 0 - vertex -2.44583 29.2754 -0.2 - endloop - endfacet - facet normal -0.805875 -0.592086 0 - outer loop - vertex -2.44583 29.2754 0 - vertex -2.11792 28.8291 -0.2 - vertex -2.11792 28.8291 0 - endloop - endfacet - facet normal -0.768548 -0.639792 0 - outer loop - vertex -1.78547 28.4297 -0.2 - vertex -2.11792 28.8291 0 - vertex -2.11792 28.8291 -0.2 - endloop - endfacet - facet normal -0.768548 -0.639792 0 - outer loop - vertex -2.11792 28.8291 0 - vertex -1.78547 28.4297 -0.2 - vertex -1.78547 28.4297 0 - endloop - endfacet - facet normal -0.721954 -0.691941 0 - outer loop - vertex -1.44988 28.0795 -0.2 - vertex -1.78547 28.4297 0 - vertex -1.78547 28.4297 -0.2 - endloop - endfacet - facet normal -0.721954 -0.691941 0 - outer loop - vertex -1.78547 28.4297 0 - vertex -1.44988 28.0795 -0.2 - vertex -1.44988 28.0795 0 - endloop - endfacet - facet normal -0.662916 -0.748694 0 - outer loop - vertex -1.44988 28.0795 -0.2 - vertex -1.11256 27.7809 0 - vertex -1.44988 28.0795 0 - endloop - endfacet - facet normal -0.662916 -0.748694 -0 - outer loop - vertex -1.11256 27.7809 0 - vertex -1.44988 28.0795 -0.2 - vertex -1.11256 27.7809 -0.2 - endloop - endfacet - facet normal -0.5872 -0.809442 0 - outer loop - vertex -1.11256 27.7809 -0.2 - vertex -0.7749 27.5359 0 - vertex -1.11256 27.7809 0 - endloop - endfacet - facet normal -0.5872 -0.809442 -0 - outer loop - vertex -0.7749 27.5359 0 - vertex -1.11256 27.7809 -0.2 - vertex -0.7749 27.5359 -0.2 - endloop - endfacet - facet normal -0.48954 -0.871981 0 - outer loop - vertex -0.7749 27.5359 -0.2 - vertex -0.438314 27.347 0 - vertex -0.7749 27.5359 0 - endloop - endfacet - facet normal -0.48954 -0.871981 -0 - outer loop - vertex -0.438314 27.347 0 - vertex -0.7749 27.5359 -0.2 - vertex -0.438314 27.347 -0.2 - endloop - endfacet - facet normal -0.364353 -0.931261 0 - outer loop - vertex -0.438314 27.347 -0.2 - vertex -0.104203 27.2162 0 - vertex -0.438314 27.347 0 - endloop - endfacet - facet normal -0.364353 -0.931261 -0 - outer loop - vertex -0.104203 27.2162 0 - vertex -0.438314 27.347 -0.2 - vertex -0.104203 27.2162 -0.2 - endloop - endfacet - facet normal -0.248562 -0.968616 0 - outer loop - vertex -0.104203 27.2162 -0.2 - vertex 0.215611 27.1342 0 - vertex -0.104203 27.2162 0 - endloop - endfacet - facet normal -0.248562 -0.968616 -0 - outer loop - vertex 0.215611 27.1342 0 - vertex -0.104203 27.2162 -0.2 - vertex 0.215611 27.1342 -0.2 - endloop - endfacet - facet normal -0.161031 -0.986949 0 - outer loop - vertex 0.215611 27.1342 -0.2 - vertex 0.505992 27.0868 0 - vertex 0.215611 27.1342 0 - endloop - endfacet - facet normal -0.161031 -0.986949 -0 - outer loop - vertex 0.505992 27.0868 0 - vertex 0.215611 27.1342 -0.2 - vertex 0.505992 27.0868 -0.2 - endloop - endfacet - facet normal -0.0401535 -0.999194 0 - outer loop - vertex 0.505992 27.0868 -0.2 - vertex 0.734953 27.0776 0 - vertex 0.505992 27.0868 0 - endloop - endfacet - facet normal -0.0401535 -0.999194 -0 - outer loop - vertex 0.734953 27.0776 0 - vertex 0.505992 27.0868 -0.2 - vertex 0.734953 27.0776 -0.2 - endloop - endfacet - facet normal 0.1315 -0.991316 0 - outer loop - vertex 0.734953 27.0776 -0.2 - vertex 0.816408 27.0884 0 - vertex 0.734953 27.0776 0 - endloop - endfacet - facet normal 0.1315 -0.991316 0 - outer loop - vertex 0.816408 27.0884 0 - vertex 0.734953 27.0776 -0.2 - vertex 0.816408 27.0884 -0.2 - endloop - endfacet - facet normal 0.371587 -0.928398 0 - outer loop - vertex 0.816408 27.0884 -0.2 - vertex 0.870515 27.1101 0 - vertex 0.816408 27.0884 0 - endloop - endfacet - facet normal 0.371587 -0.928398 0 - outer loop - vertex 0.870515 27.1101 0 - vertex 0.816408 27.0884 -0.2 - vertex 0.870515 27.1101 -0.2 - endloop - endfacet - facet normal 0.819454 -0.573145 0 - outer loop - vertex 0.870515 27.1101 0 - vertex 0.908598 27.1645 -0.2 - vertex 0.908598 27.1645 0 - endloop - endfacet - facet normal 0.819454 -0.573145 0 - outer loop - vertex 0.908598 27.1645 -0.2 - vertex 0.870515 27.1101 0 - vertex 0.870515 27.1101 -0.2 - endloop - endfacet - facet normal 0.947054 -0.321074 0 - outer loop - vertex 0.908598 27.1645 0 - vertex 0.944126 27.2693 -0.2 - vertex 0.944126 27.2693 0 - endloop - endfacet - facet normal 0.947054 -0.321074 0 - outer loop - vertex 0.944126 27.2693 -0.2 - vertex 0.908598 27.1645 0 - vertex 0.908598 27.1645 -0.2 - endloop - endfacet - facet normal 0.984285 -0.17659 0 - outer loop - vertex 0.944126 27.2693 0 - vertex 1.00441 27.6053 -0.2 - vertex 1.00441 27.6053 0 - endloop - endfacet - facet normal 0.984285 -0.17659 0 - outer loop - vertex 1.00441 27.6053 -0.2 - vertex 0.944126 27.2693 0 - vertex 0.944126 27.2693 -0.2 - endloop - endfacet - facet normal 0.996161 -0.0875344 0 - outer loop - vertex 1.00441 27.6053 0 - vertex 1.04514 28.0688 -0.2 - vertex 1.04514 28.0688 0 - endloop - endfacet - facet normal 0.996161 -0.0875344 0 - outer loop - vertex 1.04514 28.0688 -0.2 - vertex 1.00441 27.6053 0 - vertex 1.00441 27.6053 -0.2 - endloop - endfacet - facet normal 0.999619 -0.0276007 0 - outer loop - vertex 1.04514 28.0688 0 - vertex 1.0601 28.6106 -0.2 - vertex 1.0601 28.6106 0 - endloop - endfacet - facet normal 0.999619 -0.0276007 0 - outer loop - vertex 1.0601 28.6106 -0.2 - vertex 1.04514 28.0688 0 - vertex 1.04514 28.0688 -0.2 - endloop - endfacet - facet normal 0.999546 -0.0301211 0 - outer loop - vertex 1.0601 28.6106 0 - vertex 1.07949 29.2543 -0.2 - vertex 1.07949 29.2543 0 - endloop - endfacet - facet normal 0.999546 -0.0301211 0 - outer loop - vertex 1.07949 29.2543 -0.2 - vertex 1.0601 28.6106 0 - vertex 1.0601 28.6106 -0.2 - endloop - endfacet - facet normal 0.995652 -0.0931476 0 - outer loop - vertex 1.07949 29.2543 0 - vertex 1.13903 29.8907 -0.2 - vertex 1.13903 29.8907 0 - endloop - endfacet - facet normal 0.995652 -0.0931476 0 - outer loop - vertex 1.13903 29.8907 -0.2 - vertex 1.07949 29.2543 0 - vertex 1.07949 29.2543 -0.2 - endloop - endfacet - facet normal 0.987491 -0.157674 0 - outer loop - vertex 1.13903 29.8907 0 - vertex 1.24074 30.5277 -0.2 - vertex 1.24074 30.5277 0 - endloop - endfacet - facet normal 0.987491 -0.157674 0 - outer loop - vertex 1.24074 30.5277 -0.2 - vertex 1.13903 29.8907 0 - vertex 1.13903 29.8907 -0.2 - endloop - endfacet - facet normal 0.975385 -0.220507 0 - outer loop - vertex 1.24074 30.5277 0 - vertex 1.38662 31.173 -0.2 - vertex 1.38662 31.173 0 - endloop - endfacet - facet normal 0.975385 -0.220507 0 - outer loop - vertex 1.38662 31.173 -0.2 - vertex 1.24074 30.5277 0 - vertex 1.24074 30.5277 -0.2 - endloop - endfacet - facet normal 0.960327 -0.278878 0 - outer loop - vertex 1.38662 31.173 0 - vertex 1.57871 31.8344 -0.2 - vertex 1.57871 31.8344 0 - endloop - endfacet - facet normal 0.960327 -0.278878 0 - outer loop - vertex 1.57871 31.8344 -0.2 - vertex 1.38662 31.173 0 - vertex 1.38662 31.173 -0.2 - endloop - endfacet - facet normal 0.943682 -0.330853 0 - outer loop - vertex 1.57871 31.8344 0 - vertex 1.81903 32.5199 -0.2 - vertex 1.81903 32.5199 0 - endloop - endfacet - facet normal 0.943682 -0.330853 0 - outer loop - vertex 1.81903 32.5199 -0.2 - vertex 1.57871 31.8344 0 - vertex 1.57871 31.8344 -0.2 - endloop - endfacet - facet normal 0.926833 -0.375474 0 - outer loop - vertex 1.81903 32.5199 0 - vertex 2.10958 33.2371 -0.2 - vertex 2.10958 33.2371 0 - endloop - endfacet - facet normal 0.926833 -0.375474 0 - outer loop - vertex 2.10958 33.2371 -0.2 - vertex 1.81903 32.5199 0 - vertex 1.81903 32.5199 -0.2 - endloop - endfacet - facet normal 0.910903 -0.412619 0 - outer loop - vertex 2.10958 33.2371 0 - vertex 2.4524 33.9939 -0.2 - vertex 2.4524 33.9939 0 - endloop - endfacet - facet normal 0.910903 -0.412619 0 - outer loop - vertex 2.4524 33.9939 -0.2 - vertex 2.10958 33.2371 0 - vertex 2.10958 33.2371 -0.2 - endloop - endfacet - facet normal 0.897899 -0.440202 0 - outer loop - vertex 2.4524 33.9939 0 - vertex 2.84738 34.7996 -0.2 - vertex 2.84738 34.7996 0 - endloop - endfacet - facet normal 0.897899 -0.440202 0 - outer loop - vertex 2.84738 34.7996 -0.2 - vertex 2.4524 33.9939 0 - vertex 2.4524 33.9939 -0.2 - endloop - endfacet - facet normal 0.887623 -0.460571 0 - outer loop - vertex 2.84738 34.7996 0 - vertex 3.26543 35.6052 -0.2 - vertex 3.26543 35.6052 0 - endloop - endfacet - facet normal 0.887623 -0.460571 0 - outer loop - vertex 3.26543 35.6052 -0.2 - vertex 2.84738 34.7996 0 - vertex 2.84738 34.7996 -0.2 - endloop - endfacet - facet normal 0.877821 -0.478989 0 - outer loop - vertex 3.26543 35.6052 0 - vertex 3.68699 36.3778 -0.2 - vertex 3.68699 36.3778 0 - endloop - endfacet - facet normal 0.877821 -0.478989 0 - outer loop - vertex 3.68699 36.3778 -0.2 - vertex 3.26543 35.6052 0 - vertex 3.26543 35.6052 -0.2 - endloop - endfacet - facet normal 0.867241 -0.497888 0 - outer loop - vertex 3.68699 36.3778 0 - vertex 4.09252 37.0842 -0.2 - vertex 4.09252 37.0842 0 - endloop - endfacet - facet normal 0.867241 -0.497888 0 - outer loop - vertex 4.09252 37.0842 -0.2 - vertex 3.68699 36.3778 0 - vertex 3.68699 36.3778 -0.2 - endloop - endfacet - facet normal 0.853923 -0.520399 0 - outer loop - vertex 4.09252 37.0842 0 - vertex 4.46246 37.6912 -0.2 - vertex 4.46246 37.6912 0 - endloop - endfacet - facet normal 0.853923 -0.520399 0 - outer loop - vertex 4.46246 37.6912 -0.2 - vertex 4.09252 37.0842 0 - vertex 4.09252 37.0842 -0.2 - endloop - endfacet - facet normal 0.833342 -0.552757 0 - outer loop - vertex 4.46246 37.6912 0 - vertex 4.77727 38.1658 -0.2 - vertex 4.77727 38.1658 0 - endloop - endfacet - facet normal 0.833342 -0.552757 0 - outer loop - vertex 4.77727 38.1658 -0.2 - vertex 4.46246 37.6912 0 - vertex 4.46246 37.6912 -0.2 - endloop - endfacet - facet normal 0.789667 -0.613535 0 - outer loop - vertex 4.77727 38.1658 0 - vertex 5.01738 38.4749 -0.2 - vertex 5.01738 38.4749 0 - endloop - endfacet - facet normal 0.789667 -0.613535 0 - outer loop - vertex 5.01738 38.4749 -0.2 - vertex 4.77727 38.1658 0 - vertex 4.77727 38.1658 -0.2 - endloop - endfacet - facet normal 0.690746 -0.723097 0 - outer loop - vertex 5.01738 38.4749 -0.2 - vertex 5.10332 38.557 0 - vertex 5.01738 38.4749 0 - endloop - endfacet - facet normal 0.690746 -0.723097 0 - outer loop - vertex 5.10332 38.557 0 - vertex 5.01738 38.4749 -0.2 - vertex 5.10332 38.557 -0.2 - endloop - endfacet - facet normal 0.426773 -0.904359 0 - outer loop - vertex 5.10332 38.557 -0.2 - vertex 5.16325 38.5852 0 - vertex 5.10332 38.557 0 - endloop - endfacet - facet normal 0.426773 -0.904359 0 - outer loop - vertex 5.16325 38.5852 0 - vertex 5.10332 38.557 -0.2 - vertex 5.16325 38.5852 -0.2 - endloop - endfacet - facet normal -0.22248 -0.974937 0 - outer loop - vertex 5.16325 38.5852 -0.2 - vertex 5.20457 38.5758 0 - vertex 5.16325 38.5852 0 - endloop - endfacet - facet normal -0.22248 -0.974937 -0 - outer loop - vertex 5.20457 38.5758 0 - vertex 5.16325 38.5852 -0.2 - vertex 5.20457 38.5758 -0.2 - endloop - endfacet - facet normal -0.944948 0.327219 0 - outer loop - vertex 7.1242 19.0144 -0.2 - vertex 7.15267 19.0966 0 - vertex 7.15267 19.0966 -0.2 - endloop - endfacet - facet normal -0.944948 0.327219 0 - outer loop - vertex 7.15267 19.0966 0 - vertex 7.1242 19.0144 -0.2 - vertex 7.1242 19.0144 0 - endloop - endfacet - facet normal -0.999677 -0.0254292 0 - outer loop - vertex 7.1273 18.8927 -0.2 - vertex 7.1242 19.0144 0 - vertex 7.1242 19.0144 -0.2 - endloop - endfacet - facet normal -0.999677 -0.0254292 0 - outer loop - vertex 7.1242 19.0144 0 - vertex 7.1273 18.8927 -0.2 - vertex 7.1273 18.8927 0 - endloop - endfacet - facet normal -0.971548 -0.236844 0 - outer loop - vertex 7.16351 18.7442 -0.2 - vertex 7.1273 18.8927 0 - vertex 7.1273 18.8927 -0.2 - endloop - endfacet - facet normal -0.971548 -0.236844 0 - outer loop - vertex 7.1273 18.8927 0 - vertex 7.16351 18.7442 -0.2 - vertex 7.16351 18.7442 0 - endloop - endfacet - facet normal -0.922269 -0.38655 0 - outer loop - vertex 7.29207 18.4374 -0.2 - vertex 7.16351 18.7442 0 - vertex 7.16351 18.7442 -0.2 - endloop - endfacet - facet normal -0.922269 -0.38655 0 - outer loop - vertex 7.16351 18.7442 0 - vertex 7.29207 18.4374 -0.2 - vertex 7.29207 18.4374 0 - endloop - endfacet - facet normal -0.894309 -0.44745 0 - outer loop - vertex 7.49889 18.0241 -0.2 - vertex 7.29207 18.4374 0 - vertex 7.29207 18.4374 -0.2 - endloop - endfacet - facet normal -0.894309 -0.44745 0 - outer loop - vertex 7.29207 18.4374 0 - vertex 7.49889 18.0241 -0.2 - vertex 7.49889 18.0241 0 - endloop - endfacet - facet normal -0.872312 -0.488949 0 - outer loop - vertex 8.03973 17.0592 -0.2 - vertex 7.49889 18.0241 0 - vertex 7.49889 18.0241 -0.2 - endloop - endfacet - facet normal -0.872312 -0.488949 0 - outer loop - vertex 7.49889 18.0241 0 - vertex 8.03973 17.0592 -0.2 - vertex 8.03973 17.0592 0 - endloop - endfacet - facet normal -0.84697 -0.53164 0 - outer loop - vertex 8.57086 16.213 -0.2 - vertex 8.03973 17.0592 0 - vertex 8.03973 17.0592 -0.2 - endloop - endfacet - facet normal -0.84697 -0.53164 0 - outer loop - vertex 8.03973 17.0592 0 - vertex 8.57086 16.213 -0.2 - vertex 8.57086 16.213 0 - endloop - endfacet - facet normal -0.805848 -0.592122 0 - outer loop - vertex 8.76553 15.9481 -0.2 - vertex 8.57086 16.213 0 - vertex 8.57086 16.213 -0.2 - endloop - endfacet - facet normal -0.805848 -0.592122 0 - outer loop - vertex 8.57086 16.213 0 - vertex 8.76553 15.9481 -0.2 - vertex 8.76553 15.9481 0 - endloop - endfacet - facet normal -0.732738 -0.680511 0 - outer loop - vertex 8.83337 15.875 -0.2 - vertex 8.76553 15.9481 0 - vertex 8.76553 15.9481 -0.2 - endloop - endfacet - facet normal -0.732738 -0.680511 0 - outer loop - vertex 8.76553 15.9481 0 - vertex 8.83337 15.875 -0.2 - vertex 8.83337 15.875 0 - endloop - endfacet - facet normal -0.509392 -0.860535 0 - outer loop - vertex 8.83337 15.875 -0.2 - vertex 8.87708 15.8492 0 - vertex 8.83337 15.875 0 - endloop - endfacet - facet normal -0.509392 -0.860535 -0 - outer loop - vertex 8.87708 15.8492 0 - vertex 8.83337 15.875 -0.2 - vertex 8.87708 15.8492 -0.2 - endloop - endfacet - facet normal 0.216566 -0.976268 0 - outer loop - vertex 8.87708 15.8492 -0.2 - vertex 8.99158 15.8746 0 - vertex 8.87708 15.8492 0 - endloop - endfacet - facet normal 0.216566 -0.976268 0 - outer loop - vertex 8.99158 15.8746 0 - vertex 8.87708 15.8492 -0.2 - vertex 8.99158 15.8746 -0.2 - endloop - endfacet - facet normal 0.333607 -0.942712 0 - outer loop - vertex 8.99158 15.8746 -0.2 - vertex 9.19116 15.9452 0 - vertex 8.99158 15.8746 0 - endloop - endfacet - facet normal 0.333607 -0.942712 0 - outer loop - vertex 9.19116 15.9452 0 - vertex 8.99158 15.8746 -0.2 - vertex 9.19116 15.9452 -0.2 - endloop - endfacet - facet normal 0.395815 -0.91833 0 - outer loop - vertex 9.19116 15.9452 -0.2 - vertex 9.73318 16.1788 0 - vertex 9.19116 15.9452 0 - endloop - endfacet - facet normal 0.395815 -0.91833 0 - outer loop - vertex 9.73318 16.1788 0 - vertex 9.19116 15.9452 -0.2 - vertex 9.73318 16.1788 -0.2 + vertex 9.72145 16.1788 0 + vertex 8.86535 15.8492 -3 + vertex 9.72145 16.1788 -3 endloop endfacet facet normal 0.425917 -0.904762 0 outer loop - vertex 9.73318 16.1788 -0.2 - vertex 10.4375 16.5104 0 - vertex 9.73318 16.1788 0 + vertex 9.72145 16.1788 -3 + vertex 10.4258 16.5104 0 + vertex 9.72145 16.1788 0 endloop endfacet facet normal 0.425917 -0.904762 0 outer loop - vertex 10.4375 16.5104 0 - vertex 9.73318 16.1788 -0.2 - vertex 10.4375 16.5104 -0.2 + vertex 10.4258 16.5104 0 + vertex 9.72145 16.1788 -3 + vertex 10.4258 16.5104 -3 endloop endfacet facet normal 0.716732 0.697349 0 outer loop - vertex 10.4375 16.5104 0 - vertex 9.77546 17.1908 -0.2 - vertex 9.77546 17.1908 0 + vertex 10.4258 16.5104 0 + vertex 9.76373 17.1908 -3 + vertex 9.76373 17.1908 0 endloop endfacet facet normal 0.716732 0.697349 0 outer loop - vertex 9.77546 17.1908 -0.2 - vertex 10.4375 16.5104 0 - vertex 10.4375 16.5104 -0.2 + vertex 9.76373 17.1908 -3 + vertex 10.4258 16.5104 0 + vertex 10.4258 16.5104 -3 endloop endfacet - facet normal 0.695522 0.718505 -0 + facet normal 0.65174 0.758443 -0 outer loop - vertex 9.77546 17.1908 -0.2 - vertex 9.46246 17.4938 0 - vertex 9.77546 17.1908 0 + vertex 9.76373 17.1908 -3 + vertex 8.30319 18.4459 0 + vertex 9.76373 17.1908 0 endloop endfacet - facet normal 0.695522 0.718505 0 + facet normal 0.65174 0.758443 0 outer loop - vertex 9.46246 17.4938 0 - vertex 9.77546 17.1908 -0.2 - vertex 9.46246 17.4938 -0.2 + vertex 8.30319 18.4459 0 + vertex 9.76373 17.1908 -3 + vertex 8.30319 18.4459 -3 endloop endfacet - facet normal 0.663067 0.74856 -0 + facet normal 0.52501 0.851096 -0 outer loop - vertex 9.46246 17.4938 -0.2 - vertex 9.09841 17.8163 0 - vertex 9.46246 17.4938 0 + vertex 8.30319 18.4459 -3 + vertex 7.1994 19.1268 0 + vertex 8.30319 18.4459 0 endloop endfacet - facet normal 0.663067 0.74856 0 + facet normal 0.52501 0.851096 0 outer loop - vertex 9.09841 17.8163 0 - vertex 9.46246 17.4938 -0.2 - vertex 9.09841 17.8163 -0.2 + vertex 7.1994 19.1268 0 + vertex 8.30319 18.4459 -3 + vertex 7.1994 19.1268 -3 endloop endfacet - facet normal 0.6264 0.779502 -0 + facet normal -0.992345 0.123496 0 outer loop - vertex 9.09841 17.8163 -0.2 - vertex 8.31493 18.4459 0 - vertex 9.09841 17.8163 0 + vertex 7.15178 18.7442 -3 + vertex 7.1994 19.1268 0 + vertex 7.1994 19.1268 -3 endloop endfacet - facet normal 0.6264 0.779502 0 + facet normal -0.992345 0.123496 0 outer loop - vertex 8.31493 18.4459 0 - vertex 9.09841 17.8163 -0.2 - vertex 8.31493 18.4459 -0.2 + vertex 7.1994 19.1268 0 + vertex 7.15178 18.7442 -3 + vertex 7.15178 18.7442 0 endloop endfacet - facet normal 0.58921 0.80798 -0 + facet normal -0.148843 0.988861 0 outer loop - vertex 8.31493 18.4459 -0.2 - vertex 7.9444 18.7161 0 - vertex 8.31493 18.4459 0 + vertex -16.6107 24.7853 -3 + vertex -20.4324 24.2101 0 + vertex -16.6107 24.7853 0 endloop endfacet - facet normal 0.58921 0.80798 0 + facet normal -0.148843 0.988861 0 outer loop - vertex 7.9444 18.7161 0 - vertex 8.31493 18.4459 -0.2 - vertex 7.9444 18.7161 -0.2 + vertex -20.4324 24.2101 0 + vertex -16.6107 24.7853 -3 + vertex -20.4324 24.2101 -3 endloop endfacet - facet normal 0.554709 0.832044 -0 + facet normal -0.117787 0.993039 0 outer loop - vertex 7.9444 18.7161 -0.2 - vertex 7.62063 18.9319 0 - vertex 7.9444 18.7161 0 + vertex -20.4324 24.2101 -3 + vertex -23.3809 23.8604 0 + vertex -20.4324 24.2101 0 endloop endfacet - facet normal 0.554709 0.832044 0 + facet normal -0.117787 0.993039 0 outer loop - vertex 7.62063 18.9319 0 - vertex 7.9444 18.7161 -0.2 - vertex 7.62063 18.9319 -0.2 - endloop - endfacet - facet normal 0.492817 0.870133 -0 - outer loop - vertex 7.62063 18.9319 -0.2 - vertex 7.36805 19.075 0 - vertex 7.62063 18.9319 0 - endloop - endfacet - facet normal 0.492817 0.870133 0 - outer loop - vertex 7.36805 19.075 0 - vertex 7.62063 18.9319 -0.2 - vertex 7.36805 19.075 -0.2 - endloop - endfacet - facet normal 0.313373 0.94963 -0 - outer loop - vertex 7.36805 19.075 -0.2 - vertex 7.21113 19.1268 0 - vertex 7.36805 19.075 0 - endloop - endfacet - facet normal 0.313373 0.94963 0 - outer loop - vertex 7.21113 19.1268 0 - vertex 7.36805 19.075 -0.2 - vertex 7.21113 19.1268 -0.2 - endloop - endfacet - facet normal -0.458832 0.888523 0 - outer loop - vertex 7.21113 19.1268 -0.2 - vertex 7.15267 19.0966 0 - vertex 7.21113 19.1268 0 - endloop - endfacet - facet normal -0.458832 0.888523 0 - outer loop - vertex 7.15267 19.0966 0 - vertex 7.21113 19.1268 -0.2 - vertex 7.15267 19.0966 -0.2 - endloop - endfacet - facet normal -0.0478819 0.998853 0 - outer loop - vertex -14.6988 24.986 -0.2 - vertex -15.4289 24.9511 0 - vertex -14.6988 24.986 0 - endloop - endfacet - facet normal -0.0478819 0.998853 0 - outer loop - vertex -15.4289 24.9511 0 - vertex -14.6988 24.986 -0.2 - vertex -15.4289 24.9511 -0.2 - endloop - endfacet - facet normal -0.102501 0.994733 0 - outer loop - vertex -15.4289 24.9511 -0.2 - vertex -16.0762 24.8844 0 - vertex -15.4289 24.9511 0 - endloop - endfacet - facet normal -0.102501 0.994733 0 - outer loop - vertex -16.0762 24.8844 0 - vertex -15.4289 24.9511 -0.2 - vertex -16.0762 24.8844 -0.2 - endloop - endfacet - facet normal -0.186067 0.982537 0 - outer loop - vertex -16.0762 24.8844 -0.2 - vertex -16.599 24.7853 0 - vertex -16.0762 24.8844 0 - endloop - endfacet - facet normal -0.186067 0.982537 0 - outer loop - vertex -16.599 24.7853 0 - vertex -16.0762 24.8844 -0.2 - vertex -16.599 24.7853 -0.2 - endloop - endfacet - facet normal -0.197458 0.980311 0 - outer loop - vertex -16.599 24.7853 -0.2 - vertex -17.1707 24.6702 0 - vertex -16.599 24.7853 0 - endloop - endfacet - facet normal -0.197458 0.980311 0 - outer loop - vertex -17.1707 24.6702 0 - vertex -16.599 24.7853 -0.2 - vertex -17.1707 24.6702 -0.2 - endloop - endfacet - facet normal -0.159115 0.98726 0 - outer loop - vertex -17.1707 24.6702 -0.2 - vertex -18.0818 24.5233 0 - vertex -17.1707 24.6702 0 - endloop - endfacet - facet normal -0.159115 0.98726 0 - outer loop - vertex -18.0818 24.5233 0 - vertex -17.1707 24.6702 -0.2 - vertex -18.0818 24.5233 -0.2 - endloop - endfacet - facet normal -0.140489 0.990082 0 - outer loop - vertex -18.0818 24.5233 -0.2 - vertex -19.207 24.3637 0 - vertex -18.0818 24.5233 0 - endloop - endfacet - facet normal -0.140489 0.990082 0 - outer loop - vertex -19.207 24.3637 0 - vertex -18.0818 24.5233 -0.2 - vertex -19.207 24.3637 -0.2 - endloop - endfacet - facet normal -0.125539 0.992089 0 - outer loop - vertex -19.207 24.3637 -0.2 - vertex -20.4207 24.2101 0 - vertex -19.207 24.3637 0 - endloop - endfacet - facet normal -0.125539 0.992089 0 - outer loop - vertex -20.4207 24.2101 0 - vertex -19.207 24.3637 -0.2 - vertex -20.4207 24.2101 -0.2 - endloop - endfacet - facet normal -0.117788 0.993039 0 - outer loop - vertex -20.4207 24.2101 -0.2 - vertex -23.3692 23.8604 0 - vertex -20.4207 24.2101 0 - endloop - endfacet - facet normal -0.117788 0.993039 0 - outer loop - vertex -23.3692 23.8604 0 - vertex -20.4207 24.2101 -0.2 - vertex -23.3692 23.8604 -0.2 + vertex -23.3809 23.8604 0 + vertex -20.4324 24.2101 -3 + vertex -23.3809 23.8604 -3 endloop endfacet facet normal -0.645441 -0.76381 0 outer loop - vertex -23.3692 23.8604 -0.2 - vertex -22.6524 23.2546 0 - vertex -23.3692 23.8604 0 + vertex -23.3809 23.8604 -3 + vertex -22.6641 23.2546 0 + vertex -23.3809 23.8604 0 endloop endfacet facet normal -0.645441 -0.76381 -0 outer loop - vertex -22.6524 23.2546 0 - vertex -23.3692 23.8604 -0.2 - vertex -22.6524 23.2546 -0.2 + vertex -22.6641 23.2546 0 + vertex -23.3809 23.8604 -3 + vertex -22.6641 23.2546 -3 endloop endfacet - facet normal -0.595678 -0.803224 0 + facet normal -0.546303 -0.837588 0 outer loop - vertex -22.6524 23.2546 -0.2 - vertex -22.3422 23.0246 0 - vertex -22.6524 23.2546 0 + vertex -22.6641 23.2546 -3 + vertex -22.0432 22.8497 0 + vertex -22.6641 23.2546 0 endloop endfacet - facet normal -0.595678 -0.803224 -0 + facet normal -0.546303 -0.837588 -0 outer loop - vertex -22.3422 23.0246 0 - vertex -22.6524 23.2546 -0.2 - vertex -22.3422 23.0246 -0.2 + vertex -22.0432 22.8497 0 + vertex -22.6641 23.2546 -3 + vertex -22.0432 22.8497 -3 endloop endfacet - facet normal -0.490603 -0.871383 0 + facet normal -0.238224 -0.97121 0 outer loop - vertex -22.3422 23.0246 -0.2 - vertex -22.0315 22.8497 0 - vertex -22.3422 23.0246 0 + vertex -22.0432 22.8497 -3 + vertex -21.5591 22.7309 0 + vertex -22.0432 22.8497 0 endloop endfacet - facet normal -0.490603 -0.871383 -0 + facet normal -0.238224 -0.97121 -0 outer loop - vertex -22.0315 22.8497 0 - vertex -22.3422 23.0246 -0.2 - vertex -22.0315 22.8497 -0.2 + vertex -21.5591 22.7309 0 + vertex -22.0432 22.8497 -3 + vertex -21.5591 22.7309 -3 endloop endfacet - facet normal -0.350196 -0.936677 0 + facet normal 0.148545 -0.988906 0 outer loop - vertex -22.0315 22.8497 -0.2 - vertex -21.755 22.7463 0 - vertex -22.0315 22.8497 0 + vertex -21.5591 22.7309 -3 + vertex -19.3275 23.0662 0 + vertex -21.5591 22.7309 0 endloop endfacet - facet normal -0.350196 -0.936677 -0 + facet normal 0.148545 -0.988906 0 outer loop - vertex -21.755 22.7463 0 - vertex -22.0315 22.8497 -0.2 - vertex -21.755 22.7463 -0.2 + vertex -19.3275 23.0662 0 + vertex -21.5591 22.7309 -3 + vertex -19.3275 23.0662 -3 endloop endfacet - facet normal -0.169545 -0.985522 0 + facet normal 0.149712 -0.98873 0 outer loop - vertex -21.755 22.7463 -0.2 - vertex -21.6404 22.7266 0 - vertex -21.755 22.7463 0 + vertex -19.3275 23.0662 -3 + vertex -14.1729 23.8467 0 + vertex -19.3275 23.0662 0 endloop endfacet - facet normal -0.169545 -0.985522 -0 + facet normal 0.149712 -0.98873 0 outer loop - vertex -21.6404 22.7266 0 - vertex -21.755 22.7463 -0.2 - vertex -21.6404 22.7266 -0.2 - endloop - endfacet - facet normal 0.0467747 -0.998905 0 - outer loop - vertex -21.6404 22.7266 -0.2 - vertex -21.5474 22.7309 0 - vertex -21.6404 22.7266 0 - endloop - endfacet - facet normal 0.0467747 -0.998905 0 - outer loop - vertex -21.5474 22.7309 0 - vertex -21.6404 22.7266 -0.2 - vertex -21.5474 22.7309 -0.2 - endloop - endfacet - facet normal 0.160131 -0.987096 0 - outer loop - vertex -21.5474 22.7309 -0.2 - vertex -20.7318 22.8633 0 - vertex -21.5474 22.7309 0 - endloop - endfacet - facet normal 0.160131 -0.987096 0 - outer loop - vertex -20.7318 22.8633 0 - vertex -21.5474 22.7309 -0.2 - vertex -20.7318 22.8633 -0.2 - endloop - endfacet - facet normal 0.141843 -0.989889 0 - outer loop - vertex -20.7318 22.8633 -0.2 - vertex -19.3158 23.0662 0 - vertex -20.7318 22.8633 0 - endloop - endfacet - facet normal 0.141843 -0.989889 0 - outer loop - vertex -19.3158 23.0662 0 - vertex -20.7318 22.8633 -0.2 - vertex -19.3158 23.0662 -0.2 - endloop - endfacet - facet normal 0.145154 -0.989409 0 - outer loop - vertex -19.3158 23.0662 -0.2 - vertex -17.0412 23.3999 0 - vertex -19.3158 23.0662 0 - endloop - endfacet - facet normal 0.145154 -0.989409 0 - outer loop - vertex -17.0412 23.3999 0 - vertex -19.3158 23.0662 -0.2 - vertex -17.0412 23.3999 -0.2 - endloop - endfacet - facet normal 0.153306 -0.988179 0 - outer loop - vertex -17.0412 23.3999 -0.2 - vertex -14.1612 23.8467 0 - vertex -17.0412 23.3999 0 - endloop - endfacet - facet normal 0.153306 -0.988179 0 - outer loop - vertex -14.1612 23.8467 0 - vertex -17.0412 23.3999 -0.2 - vertex -14.1612 23.8467 -0.2 + vertex -14.1729 23.8467 0 + vertex -19.3275 23.0662 -3 + vertex -14.1729 23.8467 -3 endloop endfacet facet normal 0.152324 -0.988331 0 outer loop - vertex -14.1612 23.8467 -0.2 - vertex -10.5711 24.4 0 - vertex -14.1612 23.8467 0 + vertex -14.1729 23.8467 -3 + vertex -10.5829 24.4 0 + vertex -14.1729 23.8467 0 endloop endfacet facet normal 0.152324 -0.988331 0 outer loop - vertex -10.5711 24.4 0 - vertex -14.1612 23.8467 -0.2 - vertex -10.5711 24.4 -0.2 + vertex -10.5829 24.4 0 + vertex -14.1729 23.8467 -3 + vertex -10.5829 24.4 -3 endloop endfacet - facet normal 0.28937 -0.957217 0 + facet normal 0.753595 0.657339 0 outer loop - vertex -10.5711 24.4 -0.2 - vertex -10.5349 24.4109 0 - vertex -10.5711 24.4 0 + vertex -10.5829 24.4 0 + vertex -10.6709 24.5009 -3 + vertex -10.6709 24.5009 0 endloop endfacet - facet normal 0.28937 -0.957217 0 + facet normal 0.753595 0.657339 0 outer loop - vertex -10.5349 24.4109 0 - vertex -10.5711 24.4 -0.2 - vertex -10.5349 24.4109 -0.2 + vertex -10.6709 24.5009 -3 + vertex -10.5829 24.4 0 + vertex -10.5829 24.4 -3 endloop endfacet - facet normal 0.978613 0.20571 0 + facet normal 0.323243 0.946316 -0 outer loop - vertex -10.5349 24.4109 0 - vertex -10.5394 24.4322 -0.2 - vertex -10.5394 24.4322 0 + vertex -10.6709 24.5009 -3 + vertex -11.2742 24.7069 0 + vertex -10.6709 24.5009 0 endloop endfacet - facet normal 0.978613 0.20571 0 + facet normal 0.323243 0.946316 0 outer loop - vertex -10.5394 24.4322 -0.2 - vertex -10.5349 24.4109 0 - vertex -10.5349 24.4109 -0.2 + vertex -11.2742 24.7069 0 + vertex -10.6709 24.5009 -3 + vertex -11.2742 24.7069 -3 endloop endfacet - facet normal 0.497201 0.867635 -0 + facet normal 0.105601 0.994409 -0 outer loop - vertex -10.5394 24.4322 -0.2 - vertex -10.6591 24.5009 0 - vertex -10.5394 24.4322 0 + vertex -11.2742 24.7069 -3 + vertex -13.9393 24.99 0 + vertex -11.2742 24.7069 0 endloop endfacet - facet normal 0.497201 0.867635 0 + facet normal 0.105601 0.994409 0 outer loop - vertex -10.6591 24.5009 0 - vertex -10.5394 24.4322 -0.2 - vertex -10.6591 24.5009 -0.2 + vertex -13.9393 24.99 0 + vertex -11.2742 24.7069 -3 + vertex -13.9393 24.99 -3 endloop endfacet - facet normal 0.356744 0.934202 -0 + facet normal -0.0763677 0.99708 0 outer loop - vertex -10.6591 24.5009 -0.2 - vertex -10.9077 24.5958 0 - vertex -10.6591 24.5009 0 + vertex -13.9393 24.99 -3 + vertex -16.6107 24.7853 0 + vertex -13.9393 24.99 0 endloop endfacet - facet normal 0.356744 0.934202 0 + facet normal -0.0763677 0.99708 0 outer loop - vertex -10.9077 24.5958 0 - vertex -10.6591 24.5009 -0.2 - vertex -10.9077 24.5958 -0.2 - endloop - endfacet - facet normal 0.299009 0.95425 -0 - outer loop - vertex -10.9077 24.5958 -0.2 - vertex -11.2625 24.7069 0 - vertex -10.9077 24.5958 0 - endloop - endfacet - facet normal 0.299009 0.95425 0 - outer loop - vertex -11.2625 24.7069 0 - vertex -10.9077 24.5958 -0.2 - vertex -11.2625 24.7069 -0.2 - endloop - endfacet - facet normal 0.214726 0.976674 -0 - outer loop - vertex -11.2625 24.7069 -0.2 - vertex -11.7825 24.8213 0 - vertex -11.2625 24.7069 0 - endloop - endfacet - facet normal 0.214726 0.976674 0 - outer loop - vertex -11.7825 24.8213 0 - vertex -11.2625 24.7069 -0.2 - vertex -11.7825 24.8213 -0.2 - endloop - endfacet - facet normal 0.131639 0.991298 -0 - outer loop - vertex -11.7825 24.8213 -0.2 - vertex -12.4277 24.907 0 - vertex -11.7825 24.8213 0 - endloop - endfacet - facet normal 0.131639 0.991298 0 - outer loop - vertex -12.4277 24.907 0 - vertex -11.7825 24.8213 -0.2 - vertex -12.4277 24.907 -0.2 - endloop - endfacet - facet normal 0.0771921 0.997016 -0 - outer loop - vertex -12.4277 24.907 -0.2 - vertex -13.1566 24.9634 0 - vertex -12.4277 24.907 0 - endloop - endfacet - facet normal 0.0771921 0.997016 0 - outer loop - vertex -13.1566 24.9634 0 - vertex -12.4277 24.907 -0.2 - vertex -13.1566 24.9634 -0.2 - endloop - endfacet - facet normal 0.0344425 0.999407 -0 - outer loop - vertex -13.1566 24.9634 -0.2 - vertex -13.9275 24.99 0 - vertex -13.1566 24.9634 0 - endloop - endfacet - facet normal 0.0344425 0.999407 0 - outer loop - vertex -13.9275 24.99 0 - vertex -13.1566 24.9634 -0.2 - vertex -13.9275 24.99 -0.2 - endloop - endfacet - facet normal -0.00506693 0.999987 0 - outer loop - vertex -13.9275 24.99 -0.2 - vertex -14.6988 24.986 0 - vertex -13.9275 24.99 0 - endloop - endfacet - facet normal -0.00506693 0.999987 0 - outer loop - vertex -14.6988 24.986 0 - vertex -13.9275 24.99 -0.2 - vertex -14.6988 24.986 -0.2 + vertex -16.6107 24.7853 0 + vertex -13.9393 24.99 -3 + vertex -16.6107 24.7853 -3 endloop endfacet facet normal -1 0 0 @@ -44003,14716 +14841,4972 @@ solid OpenSCAD_Model endfacet facet normal 0 0 1 outer loop - vertex -28.0919 -25.8829 0 - vertex -27.8988 -26.2055 0 - vertex -27.9236 -26.0946 0 + vertex -28.5713 -25.7117 0 + vertex -27.9105 -26.2055 0 + vertex -28.1036 -25.8829 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -27.8988 -26.2055 0 - vertex -28.2888 -25.7968 0 - vertex -27.8924 -26.5154 0 + vertex -32.142 -25.4759 0 + vertex -28.1838 -28.4809 0 + vertex -28.5713 -25.7117 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -28.0919 -25.8829 0 - vertex -27.9236 -26.0946 0 - vertex -27.9636 -26.0069 0 + vertex -27.9105 -26.2055 0 + vertex -28.5713 -25.7117 0 + vertex -28.1838 -28.4809 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -28.0919 -25.8829 0 - vertex -27.9636 -26.0069 0 - vertex -28.0195 -25.9379 0 + vertex -35.9073 -13.512 0 + vertex -35.4871 -14.1281 0 + vertex -35.5739 -13.718 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -27.8988 -26.2055 0 - vertex -28.0919 -25.8829 0 - vertex -28.2888 -25.7968 0 + vertex -36.5262 -13.4531 0 + vertex -35.4871 -14.1281 0 + vertex -35.9073 -13.512 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -28.5596 -25.7117 0 - vertex -27.8924 -26.5154 0 - vertex -28.2888 -25.7968 0 + vertex -35.4871 -14.1281 0 + vertex -36.5262 -13.4531 0 + vertex -35.6081 -14.799 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -27.8924 -26.5154 0 - vertex -28.5596 -25.7117 0 - vertex -27.9393 -26.9734 0 + vertex -37.2393 -13.2576 0 + vertex -35.6081 -14.799 0 + vertex -36.5262 -13.4531 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -28.7678 -25.6646 0 - vertex -27.9393 -26.9734 0 - vertex -28.5596 -25.7117 0 + vertex -35.6081 -14.799 0 + vertex -37.2393 -13.2576 0 + vertex -37.0548 -18.7102 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -22.9103 -14.3386 0 - vertex -21.5729 -16.4428 0 - vertex -21.5693 -15.5508 0 + vertex -37.5366 -12.7854 0 + vertex -37.0548 -18.7102 0 + vertex -37.2393 -13.2576 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -22.1296 -14.5577 0 - vertex -21.5693 -15.5508 0 - vertex -21.5879 -15.2616 0 + vertex -38.8382 24.6102 0 + vertex -37.3951 -12.1929 0 + vertex -38.3729 23.836 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -35.8956 -13.512 0 - vertex -35.4754 -14.1281 0 - vertex -35.4904 -13.894 0 + vertex -39.1303 25.4589 0 + vertex -37.3951 -12.1929 0 + vertex -38.8382 24.6102 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -35.6956 -13.593 0 - vertex -35.4904 -13.894 0 - vertex -35.5189 -13.7992 0 + vertex -37.3951 -12.1929 0 + vertex -39.1303 25.4589 0 + vertex -37.5366 -12.7854 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -35.6956 -13.593 0 - vertex -35.5189 -13.7992 0 - vertex -35.5622 -13.718 0 + vertex -37.5366 -12.7854 0 + vertex -39.9072 -25.4747 0 + vertex -37.0548 -18.7102 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -36.1669 -13.4677 0 - vertex -35.4754 -14.1281 0 - vertex -35.8956 -13.512 0 + vertex -47.8577 -36.863 0 + vertex -37.5366 -12.7854 0 + vertex -39.1303 25.4589 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -35.6956 -13.593 0 - vertex -35.5622 -13.718 0 - vertex -35.6209 -13.6496 0 + vertex -26.0224 24.2804 0 + vertex -26.0647 23.8437 0 + vertex -24.664 24.0122 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -35.4904 -13.894 0 - vertex -35.6956 -13.593 0 - vertex -35.8956 -13.512 0 + vertex -26.0224 24.2804 0 + vertex -27.3687 23.7586 0 + vertex -26.0647 23.8437 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -35.4754 -14.1281 0 - vertex -36.1669 -13.4677 0 - vertex -35.5123 -14.4274 0 + vertex -28.1365 24.9019 0 + vertex -27.3687 23.7586 0 + vertex -26.0224 24.2804 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -36.5145 -13.4531 0 - vertex -35.5123 -14.4274 0 - vertex -36.1669 -13.4677 0 + vertex -28.1365 24.9019 0 + vertex -28.4642 23.8513 0 + vertex -27.3687 23.7586 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -35.5123 -14.4274 0 - vertex -36.5145 -13.4531 0 - vertex -35.5964 -14.799 0 + vertex -28.1365 24.9019 0 + vertex -29.3958 24.13 0 + vertex -28.4642 23.8513 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -36.7305 -13.4387 0 - vertex -35.5964 -14.799 0 - vertex -36.5145 -13.4531 0 + vertex -29.9035 25.8898 0 + vertex -29.3958 24.13 0 + vertex -28.1365 24.9019 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -35.5964 -14.799 0 - vertex -36.7305 -13.4387 0 - vertex -35.7796 -15.3934 0 + vertex -29.9035 25.8898 0 + vertex -30.2081 24.6027 0 + vertex -29.3958 24.13 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -36.9216 -13.3997 0 - vertex -35.7796 -15.3934 0 - vertex -36.7305 -13.4387 0 + vertex -29.9035 25.8898 0 + vertex -30.8173 24.9813 0 + vertex -30.2081 24.6027 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -37.0874 -13.3385 0 - vertex -35.7796 -15.3934 0 - vertex -36.9216 -13.3997 0 + vertex -31.1793 25.0376 0 + vertex -29.9035 25.8898 0 + vertex -31.116 26.9038 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -35.7796 -15.3934 0 - vertex -37.0874 -13.3385 0 - vertex -36.0907 -16.2655 0 + vertex -29.9035 25.8898 0 + vertex -31.1793 25.0376 0 + vertex -30.8173 24.9813 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -37.2276 -13.2576 0 - vertex -36.0907 -16.2655 0 - vertex -37.0874 -13.3385 0 + vertex -31.2912 27.2229 0 + vertex -31.1793 25.0376 0 + vertex -31.116 26.9038 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -36.0907 -16.2655 0 - vertex -37.2276 -13.2576 0 - vertex -36.5163 -17.3821 0 + vertex -34.2108 23.023 0 + vertex -31.1793 25.0376 0 + vertex -31.2912 27.2229 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -37.3418 -13.1594 0 - vertex -36.5163 -17.3821 0 - vertex -37.2276 -13.2576 0 + vertex -11.5389 20.1801 0 + vertex -11.1208 19.5935 0 + vertex -10.9412 20.0018 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -37.4296 -13.0463 0 - vertex -36.5163 -17.3821 0 - vertex -37.3418 -13.1594 0 + vertex -11.5389 20.1801 0 + vertex -12.0133 18.8648 0 + vertex -11.1208 19.5935 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -36.5163 -17.3821 0 - vertex -37.4296 -13.0463 0 - vertex -37.0431 -18.7102 0 + vertex -12.9783 20.2187 0 + vertex -12.0133 18.8648 0 + vertex -11.5389 20.1801 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -37.4908 -12.9209 0 - vertex -37.0431 -18.7102 0 - vertex -37.4296 -13.0463 0 + vertex -12.9783 20.2187 0 + vertex -15.009 16.7116 0 + vertex -12.0133 18.8648 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -16.3196 19.9968 0 + vertex -15.009 16.7116 0 + vertex -12.9783 20.2187 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -38.3469 -21.8682 0 - vertex -37.4908 -12.9209 0 - vertex -37.5249 -12.7854 0 + vertex -16.3196 19.9968 0 + vertex -17.0754 15.711 0 + vertex -15.009 16.7116 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -20.1789 19.4139 0 + vertex -17.0754 15.711 0 + vertex -16.3196 19.9968 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -37.3834 -12.1929 0 - vertex -38.6203 24.2212 0 - vertex -37.4611 -12.3438 0 + vertex -17.0754 15.711 0 + vertex -20.1789 19.4139 0 + vertex -19.733 14.7364 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -37.4908 -12.9209 0 - vertex -38.3469 -21.8682 0 - vertex -37.0431 -18.7102 0 + vertex -20.1789 19.4139 0 + vertex -22.3118 14.0374 0 + vertex -19.733 14.7364 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -24.1572 19.0472 0 + vertex -22.3118 14.0374 0 + vertex -20.1789 19.4139 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -39.8955 -25.4747 0 - vertex -37.5249 -12.7854 0 - vertex -37.5315 -12.6425 0 + vertex -24.1572 19.0472 0 + vertex -24.873 13.6003 0 + vertex -22.3118 14.0374 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -27.5587 18.9414 0 + vertex -24.873 13.6003 0 + vertex -24.1572 19.0472 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -38.8265 24.6102 0 - vertex -37.4611 -12.3438 0 - vertex -38.6203 24.2212 0 + vertex -24.873 13.6003 0 + vertex -27.5587 18.9414 0 + vertex -27.4778 13.4117 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -37.4611 -12.3438 0 - vertex -38.8265 24.6102 0 - vertex -37.5104 -12.4945 0 + vertex -29.687 19.1409 0 + vertex -27.4778 13.4117 0 + vertex -27.5587 18.9414 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -39.0227 25.0923 0 - vertex -37.5104 -12.4945 0 - vertex -38.8265 24.6102 0 + vertex -29.687 19.1409 0 + vertex -29.9412 13.2465 0 + vertex -27.4778 13.4117 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -47.846 -36.863 0 - vertex -37.5104 -12.4945 0 - vertex -39.0227 25.0923 0 + vertex -29.687 19.1409 0 + vertex -30.3118 13.0393 0 + vertex -29.9412 13.2465 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -33.0651 20.3093 0 + vertex -30.3118 13.0393 0 + vertex -29.687 19.1409 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -30.3118 13.0393 0 + vertex -33.0651 20.3093 0 + vertex -30.3887 12.6783 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 23.2082 3.44442 0 + vertex 23.5966 4.95794 0 + vertex 23.3811 5.8089 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 23.5966 4.95794 0 + vertex 23.2082 3.44442 0 + vertex 23.5377 4.18291 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 22.8875 6.77518 0 + vertex 23.2082 3.44442 0 + vertex 23.3811 5.8089 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 16.0239 2.90744 0 + vertex 23.2082 3.44442 0 + vertex 22.8875 6.77518 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 16.0239 2.90744 0 + vertex 22.8875 6.77518 0 + vertex 21.7142 8.22365 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 47.2139 -19.2263 0 + vertex 26.9177 3.98634 0 + vertex 26.953 2.16551 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex -47.7274 -36.6957 0 - vertex -37.5104 -12.4945 0 - vertex -47.846 -36.863 0 + vertex 26.9177 3.98634 0 + vertex 27.209 8.08714 0 + vertex 26.8985 6.51977 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 26.7235 1.18648 0 + vertex 38.4798 -20.1181 0 + vertex 26.8464 1.29842 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -47.846 -36.863 0 - vertex -39.0227 25.0923 0 - vertex -39.1186 25.4589 0 + vertex 26.9177 3.98634 0 + vertex 27.528 9.70386 0 + vertex 27.209 8.08714 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -117.5 117.5 0 - vertex -39.1186 25.4589 0 - vertex -39.13 25.5984 0 + vertex 38.4798 -20.1181 0 + vertex 26.7235 1.18648 0 + vertex 29.9429 -19.4981 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 29.9429 -19.4981 0 + vertex 26.7235 1.18648 0 + vertex 28.989 -19.2301 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 19.6777 -11.13 0 + vertex 28.989 -19.2301 0 + vertex 26.7235 1.18648 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 20.9081 -2.19366 0 + vertex 26.7235 1.18648 0 + vertex 26.5455 1.2697 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 28.989 -19.2301 0 + vertex 19.6777 -11.13 0 + vertex 27.8281 -19.1444 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 23.9858 2.16372 0 + vertex 26.5455 1.2697 0 + vertex 25.9977 1.96397 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 27.8281 -19.1444 0 + vertex 19.6777 -11.13 0 + vertex 26.5413 -19.2026 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 24.7523 2.4559 0 + vertex 25.9977 1.96397 0 + vertex 25.3153 2.68052 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 24.7523 2.4559 0 + vertex 25.3153 2.68052 0 + vertex 25.0347 2.67962 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 23.9858 2.16372 0 + vertex 25.9977 1.96397 0 + vertex 24.7523 2.4559 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 26.5455 1.2697 0 + vertex 23.9858 2.16372 0 + vertex 21.0968 -1.15452 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 21.0968 -1.15452 0 + vertex 23.9858 2.16372 0 + vertex 23.1222 1.97635 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 26.7235 1.18648 0 + vertex 20.9081 -2.19366 0 + vertex 20.4179 -3.0084 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 21.0282 0.220415 0 + vertex 23.1222 1.97635 0 + vertex 22.8505 1.9828 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 21.0282 0.220415 0 + vertex 22.8505 1.9828 0 + vertex 22.7784 2.30129 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 23.2082 3.44442 0 + vertex 16.0239 2.90744 0 + vertex 22.7784 2.30129 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 26.5455 1.2697 0 + vertex 21.0968 -1.15452 0 + vertex 20.9081 -2.19366 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 26.5413 -19.2026 0 + vertex 19.6777 -11.13 0 + vertex 25.4359 -19.4082 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 23.1222 1.97635 0 + vertex 21.0282 0.220415 0 + vertex 21.0968 -1.15452 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 15.3368 5.33522 0 + vertex 21.7142 8.22365 0 + vertex 19.7157 9.66569 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex -47.5785 -36.5332 0 - vertex -37.5315 -12.6425 0 - vertex -47.7274 -36.6957 0 + vertex 19.4865 -0.127098 0 + vertex 22.7784 2.30129 0 + vertex 16.0239 2.90744 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -26.0107 24.2804 0 - vertex -26.053 23.8437 0 - vertex -24.6523 24.0122 0 + vertex 14.9551 7.69881 0 + vertex 19.7157 9.66569 0 + vertex 18.6847 10.137 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -26.5818 24.4056 0 - vertex -26.053 23.8437 0 - vertex -26.0107 24.2804 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.5818 24.4056 0 - vertex -26.7338 23.7794 0 - vertex -26.053 23.8437 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.1227 24.5501 0 - vertex -26.7338 23.7794 0 - vertex -26.5818 24.4056 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.1227 24.5501 0 - vertex -27.3569 23.7586 0 - vertex -26.7338 23.7794 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.636 24.7152 0 - vertex -27.3569 23.7586 0 - vertex -27.1227 24.5501 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.636 24.7152 0 - vertex -27.9279 23.7822 0 - vertex -27.3569 23.7586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1248 24.9019 0 - vertex -27.9279 23.7822 0 - vertex -27.636 24.7152 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1248 24.9019 0 - vertex -28.4524 23.8513 0 - vertex -27.9279 23.7822 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.9359 23.9669 0 - vertex -28.1248 24.9019 0 - vertex -28.5919 25.1115 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1248 24.9019 0 - vertex -28.9359 23.9669 0 - vertex -28.4524 23.8513 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.384 24.13 0 - vertex -28.5919 25.1115 0 - vertex -29.0402 25.3453 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.5919 25.1115 0 - vertex -29.384 24.13 0 - vertex -28.9359 23.9669 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.8023 24.3416 0 - vertex -29.0402 25.3453 0 - vertex -29.4725 25.6043 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.0402 25.3453 0 - vertex -29.8023 24.3416 0 - vertex -29.384 24.13 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.5308 24.8328 0 - vertex -29.4725 25.6043 0 - vertex -29.8918 25.8898 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.4725 25.6043 0 - vertex -30.1964 24.6027 0 - vertex -29.8023 24.3416 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.4725 25.6043 0 - vertex -30.5308 24.8328 0 - vertex -30.1964 24.6027 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.8055 24.9813 0 - vertex -29.8918 25.8898 0 - vertex -30.6514 26.471 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.8918 25.8898 0 - vertex -30.8055 24.9813 0 - vertex -30.5308 24.8328 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.1676 25.0376 0 - vertex -30.6514 26.471 0 - vertex -30.9143 26.7038 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.6514 26.471 0 - vertex -31.0185 25.0493 0 - vertex -30.8055 24.9813 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.6514 26.471 0 - vertex -31.1012 25.0533 0 - vertex -31.0185 25.0493 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.1676 25.0376 0 - vertex -30.9143 26.7038 0 - vertex -31.1043 26.9038 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.6514 26.471 0 - vertex -31.1676 25.0376 0 - vertex -31.1012 25.0533 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.1043 26.9038 0 - vertex -31.2175 25.0021 0 - vertex -31.1676 25.0376 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2248 27.0754 0 - vertex -31.2175 25.0021 0 - vertex -31.1043 26.9038 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2248 27.0754 0 - vertex -31.2507 24.9472 0 - vertex -31.2175 25.0021 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.2082 23.4707 0 - vertex -31.2507 24.9472 0 - vertex -31.2248 27.0754 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.2082 23.4707 0 - vertex -31.2248 27.0754 0 - vertex -31.2795 27.2229 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.9294 20.0018 0 - vertex -10.9261 19.832 0 - vertex -10.904 19.9248 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.0035 20.0644 0 - vertex -10.9261 19.832 0 - vertex -10.9294 20.0018 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.9261 19.832 0 - vertex -11.0035 20.0644 0 - vertex -10.9948 19.7221 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.1271 20.114 0 - vertex -10.9948 19.7221 0 - vertex -11.0035 20.0644 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.9948 19.7221 0 - vertex -11.1271 20.114 0 - vertex -11.1091 19.5935 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.3013 20.1521 0 - vertex -11.1091 19.5935 0 - vertex -11.1271 20.114 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.5271 20.1801 0 - vertex -11.1091 19.5935 0 - vertex -11.3013 20.1521 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.1091 19.5935 0 - vertex -11.5271 20.1801 0 - vertex -11.4702 19.2748 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.1376 20.2112 0 - vertex -11.4702 19.2748 0 - vertex -11.5271 20.1801 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.4702 19.2748 0 - vertex -12.1376 20.2112 0 - vertex -12.0016 18.8648 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.9665 20.2187 0 - vertex -12.0016 18.8648 0 - vertex -12.1376 20.2112 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.9665 20.2187 0 - vertex -13.8225 17.5152 0 - vertex -12.0016 18.8648 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.9037 20.2008 0 - vertex -13.8225 17.5152 0 - vertex -12.9665 20.2187 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -14.8461 20.153 0 - vertex -13.8225 17.5152 0 - vertex -13.9037 20.2008 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.8225 17.5152 0 - vertex -14.8461 20.153 0 - vertex -14.4648 17.0612 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -15.684 20.0825 0 - vertex -14.4648 17.0612 0 - vertex -14.8461 20.153 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.4648 17.0612 0 - vertex -15.684 20.0825 0 - vertex -14.9972 16.7116 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.3079 19.9967 0 - vertex -14.9972 16.7116 0 - vertex -15.684 20.0825 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.9972 16.7116 0 - vertex -16.3079 19.9967 0 - vertex -15.4716 16.4339 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.2235 19.8332 0 - vertex -15.4716 16.4339 0 - vertex -16.3079 19.9967 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.4716 16.4339 0 - vertex -17.2235 19.8332 0 - vertex -15.9397 16.1961 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.9397 16.1961 0 - vertex -17.2235 19.8332 0 - vertex -16.4531 15.9659 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -18.1791 19.6811 0 - vertex -16.4531 15.9659 0 - vertex -17.2235 19.8332 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.4531 15.9659 0 - vertex -18.1791 19.6811 0 - vertex -17.0637 15.711 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.1791 19.6811 0 - vertex -18.4061 15.1884 0 - vertex -17.0637 15.711 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.1671 19.4139 0 - vertex -18.4061 15.1884 0 - vertex -18.1791 19.6811 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.4061 15.1884 0 - vertex -20.1671 19.4139 0 - vertex -19.7213 14.7364 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -22.1849 19.2007 0 - vertex -19.7213 14.7364 0 - vertex -20.1671 19.4139 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -19.7213 14.7364 0 - vertex -22.1849 19.2007 0 - vertex -21.0167 14.3533 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.1849 19.2007 0 - vertex -22.3001 14.0374 0 - vertex -21.0167 14.3533 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.1455 19.0472 0 - vertex -22.3001 14.0374 0 - vertex -22.1849 19.2007 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.3001 14.0374 0 - vertex -24.1455 19.0472 0 - vertex -23.579 13.787 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.1455 19.0472 0 - vertex -24.8613 13.6003 0 - vertex -23.579 13.787 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -25.9619 18.9589 0 - vertex -24.8613 13.6003 0 - vertex -24.1455 19.0472 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.9619 18.9589 0 - vertex -26.1544 13.4758 0 - vertex -24.8613 13.6003 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -26.7887 18.9409 0 - vertex -26.1544 13.4758 0 - vertex -25.9619 18.9589 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.7887 18.9409 0 - vertex -27.4661 13.4117 0 - vertex -26.1544 13.4758 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.5469 18.9414 0 - vertex -27.4661 13.4117 0 - vertex -26.7887 18.9409 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2256 18.9609 0 - vertex -27.4661 13.4117 0 - vertex -27.5469 18.9414 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.0548 13.353 0 - vertex -28.2256 18.9609 0 - vertex -28.8137 19.0002 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2256 18.9609 0 - vertex -29.0548 13.353 0 - vertex -27.4661 13.4117 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.3006 19.0599 0 - vertex -29.0548 13.353 0 - vertex -28.8137 19.0002 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.3006 19.0599 0 - vertex -29.5683 13.309 0 - vertex -29.0548 13.353 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.6752 19.1409 0 - vertex -29.5683 13.309 0 - vertex -29.3006 19.0599 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.6752 19.1409 0 - vertex -29.9294 13.2465 0 - vertex -29.5683 13.309 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.5811 19.4165 0 - vertex -29.9294 13.2465 0 - vertex -29.6752 19.1409 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9294 13.2465 0 - vertex -30.5811 19.4165 0 - vertex -30.1646 13.1588 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.4466 19.7034 0 - vertex -30.1646 13.1588 0 - vertex -30.5811 19.4165 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.1646 13.1588 0 - vertex -31.4466 19.7034 0 - vertex -30.2432 13.1034 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.271 20.0012 0 - vertex -30.2432 13.1034 0 - vertex -31.4466 19.7034 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.0533 20.3093 0 - vertex -30.3001 13.0393 0 - vertex -32.271 20.0012 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.2432 13.1034 0 - vertex -32.271 20.0012 0 - vertex -30.3001 13.0393 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.6083 4.95794 0 - vertex 23.6129 4.5634 0 - vertex 23.6192 4.7586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.6083 4.95794 0 - vertex 23.5897 4.3717 0 - vertex 23.6129 4.5634 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.6083 4.95794 0 - vertex 23.5494 4.18291 0 - vertex 23.5897 4.3717 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.4183 3.81156 0 - vertex 23.6083 4.95794 0 - vertex 23.5351 5.37146 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.6083 4.95794 0 - vertex 23.4183 3.81156 0 - vertex 23.5494 4.18291 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.22 3.44442 0 - vertex 23.5351 5.37146 0 - vertex 23.3929 5.8089 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.5351 5.37146 0 - vertex 23.22 3.44442 0 - vertex 23.4183 3.81156 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.1811 6.27516 0 - vertex 23.22 3.44442 0 - vertex 23.3929 5.8089 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.1811 6.27516 0 - vertex 23.0427 3.12896 0 - vertex 23.22 3.44442 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.8992 6.77518 0 - vertex 23.0427 3.12896 0 - vertex 23.1811 6.27516 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.6639 4.10009 0 - vertex 23.0427 3.12896 0 - vertex 22.8992 6.77518 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 16.0356 2.90743 0 - vertex 23.0427 3.12896 0 - vertex 15.6639 4.10009 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.0427 3.12896 0 - vertex 16.0356 2.90743 0 - vertex 22.9115 2.82433 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.6639 4.10009 0 - vertex 22.8992 6.77518 0 - vertex 22.6364 7.18064 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.4871 9.26334 0 - vertex 26.9615 2.94949 0 - vertex 26.9647 2.16551 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9103 6.51977 0 - vertex 27.0158 7.30485 0 - vertex 26.9517 6.92758 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.2208 8.08714 0 - vertex 26.9294 3.98634 0 - vertex 26.9615 2.94949 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.0158 7.30485 0 - vertex 26.9103 6.51977 0 - vertex 26.8894 6.05157 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.2208 8.08714 0 - vertex 26.8894 6.05157 0 - vertex 26.8871 5.49316 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.2208 8.08714 0 - vertex 26.8871 5.49316 0 - vertex 26.9294 3.98634 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.8032 1.21715 0 - vertex 41.156 -19.2119 0 - vertex 26.8581 1.29842 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.156 -19.2119 0 - vertex 26.8032 1.21715 0 - vertex 40.4513 -19.4233 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 40.4513 -19.4233 0 - vertex 26.8032 1.21715 0 - vertex 39.5298 -19.7361 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9647 2.16551 0 - vertex 27.5397 9.70386 0 - vertex 27.4871 9.26334 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9615 2.94949 0 - vertex 27.4871 9.26334 0 - vertex 27.4176 8.86037 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9615 2.94949 0 - vertex 27.4176 8.86037 0 - vertex 27.3295 8.47496 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9615 2.94949 0 - vertex 27.3295 8.47496 0 - vertex 27.2208 8.08714 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 39.5298 -19.7361 0 - vertex 26.8032 1.21715 0 - vertex 29.9546 -19.4981 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.8894 6.05157 0 - vertex 27.1048 7.68143 0 - vertex 27.0158 7.30485 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 27.1048 7.68143 0 - vertex 26.8894 6.05157 0 - vertex 27.2208 8.08714 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.9546 -19.4981 0 - vertex 26.8032 1.21715 0 - vertex 29.5013 -19.3404 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.5013 -19.3404 0 - vertex 26.8032 1.21715 0 - vertex 29.0007 -19.2301 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.7352 1.18648 0 - vertex 29.0007 -19.2301 0 - vertex 26.8032 1.21715 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.0007 -19.2301 0 - vertex 26.7352 1.18648 0 - vertex 28.4483 -19.1654 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.6819 -11.0243 0 - vertex 28.4483 -19.1654 0 - vertex 26.7352 1.18648 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.4483 -19.1654 0 - vertex 19.6819 -11.0243 0 - vertex 27.8398 -19.1444 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9199 -2.19366 0 - vertex 26.7352 1.18648 0 - vertex 26.6535 1.20459 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.1085 -1.15452 0 - vertex 26.6535 1.20459 0 - vertex 26.5572 1.2697 0 + vertex 22.7784 2.30129 0 + vertex 19.4865 -0.127098 0 + vertex 21.0282 0.220415 0 endloop endfacet facet normal -0 -0 1 outer loop - vertex 19.6895 -11.13 0 - vertex 27.8398 -19.1444 0 - vertex 19.6819 -11.0243 0 + vertex 16.8564 0.883682 0 + vertex 19.4865 -0.127098 0 + vertex 16.0239 2.90744 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 23.9975 2.16372 0 - vertex 26.5572 1.2697 0 - vertex 26.4455 1.37999 0 + vertex 14.9551 7.69881 0 + vertex 18.6847 10.137 0 + vertex 17.337 10.3363 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 24.2201 2.19262 0 - vertex 26.4455 1.37999 0 - vertex 26.3175 1.53367 0 + vertex 19.4865 -0.127098 0 + vertex 16.8564 0.883682 0 + vertex 18.2674 -0.466912 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 24.4388 2.25734 0 - vertex 26.3175 1.53367 0 - vertex 26.0094 1.96397 0 + vertex 18.2674 -0.466912 0 + vertex 16.8564 0.883682 0 + vertex 17.6745 -0.267811 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 27.8398 -19.1444 0 - vertex 19.6895 -11.13 0 - vertex 27.1629 -19.1581 0 + vertex 15.3572 9.74689 0 + vertex 17.337 10.3363 0 + vertex 15.9933 10.3315 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 24.6285 2.34829 0 - vertex 26.0094 1.96397 0 - vertex 25.8138 2.23679 0 + vertex 15.3572 9.74689 0 + vertex 15.9933 10.3315 0 + vertex 15.6762 10.1383 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 24.764 2.4559 0 - vertex 25.8138 2.23679 0 - vertex 25.6376 2.44612 0 + vertex 14.9426 8.95486 0 + vertex 17.337 10.3363 0 + vertex 15.3572 9.74689 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 21.7142 8.22365 0 + vertex 15.3368 5.33522 0 + vertex 16.0239 2.90744 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 19.7157 9.66569 0 + vertex 14.9551 7.69881 0 + vertex 15.3368 5.33522 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 17.337 10.3363 0 + vertex 14.9426 8.95486 0 + vertex 14.9551 7.69881 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 25.4359 -19.4082 0 + vertex 19.6777 -11.13 0 + vertex 23.0737 -20.4525 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 26.7235 1.18648 0 + vertex 20.4179 -3.0084 0 + vertex 19.6777 -11.13 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 24.764 2.4559 0 - vertex 25.6376 2.44612 0 - vertex 25.4766 2.59351 0 + vertex 17.1521 -17.7131 0 + vertex 23.0737 -20.4525 0 + vertex 19.6777 -11.13 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 26.7352 1.18648 0 - vertex 20.8331 -2.41014 0 - vertex 20.7245 -2.61588 0 + vertex 23.0737 -20.4525 0 + vertex 17.1521 -17.7131 0 + vertex 21.6367 -21.3703 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 20.4179 -3.0084 0 + vertex 19.5452 -10.7956 0 + vertex 19.6777 -11.13 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 24.9074 2.59483 0 - vertex 25.4766 2.59351 0 - vertex 25.3271 2.68052 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.0464 2.67962 0 - vertex 25.3271 2.68052 0 - vertex 25.185 2.7087 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.3271 2.68052 0 - vertex 25.0464 2.67962 0 - vertex 24.9074 2.59483 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.8138 2.23679 0 - vertex 24.764 2.4559 0 - vertex 24.6285 2.34829 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.4766 2.59351 0 - vertex 24.9074 2.59483 0 - vertex 24.764 2.4559 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0094 1.96397 0 - vertex 24.6285 2.34829 0 - vertex 24.4388 2.25734 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.1629 -19.1581 0 - vertex 19.6895 -11.13 0 - vertex 26.5531 -19.2026 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.3175 1.53367 0 - vertex 24.4388 2.25734 0 - vertex 24.2201 2.19262 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.5531 -19.2026 0 - vertex 19.6598 -11.2975 0 - vertex 25.9886 -19.284 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.4455 1.37999 0 - vertex 24.2201 2.19262 0 - vertex 23.9975 2.16372 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.5572 1.2697 0 - vertex 23.9975 2.16372 0 - vertex 21.1355 -0.658014 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.0469 1.94283 0 - vertex 23.9975 2.16372 0 - vertex 23.7673 2.14309 0 + vertex 19.4334 -3.80993 0 + vertex 19.5452 -10.7956 0 + vertex 20.4179 -3.0084 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 19.6598 -11.2975 0 - vertex 26.5531 -19.2026 0 - vertex 19.6895 -11.13 0 + vertex 17.7619 -4.80944 0 + vertex 19.5452 -10.7956 0 + vertex 19.4334 -3.80993 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 23.0469 1.94283 0 - vertex 23.7673 2.14309 0 - vertex 23.5277 2.10089 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.0469 1.94283 0 - vertex 23.5277 2.10089 0 - vertex 23.3072 2.04326 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.7352 1.18648 0 - vertex 20.9199 -2.19366 0 - vertex 20.8331 -2.41014 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.9975 2.16372 0 - vertex 23.0469 1.94283 0 - vertex 21.1355 -0.658014 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.1316 -0.233279 0 - vertex 23.0469 1.94283 0 - vertex 22.9727 1.93385 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.099 0.0745682 0 - vertex 22.9727 1.93385 0 - vertex 22.9112 1.94773 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0726 0.170561 0 - vertex 22.9112 1.94773 0 - vertex 22.8622 1.9828 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0399 0.220413 0 - vertex 22.8622 1.9828 0 - vertex 22.8257 2.03737 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0399 0.220413 0 - vertex 22.8257 2.03737 0 - vertex 22.8016 2.10976 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9772 0.235111 0 - vertex 22.8016 2.10976 0 - vertex 22.7901 2.30129 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.9115 2.82433 0 - vertex 16.2363 2.34533 0 - vertex 22.827 2.54396 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.6639 4.10009 0 - vertex 22.6364 7.18064 0 - vertex 22.3621 7.54907 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.6535 1.20459 0 - vertex 21.1085 -1.15452 0 - vertex 21.0399 -1.71534 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.6639 4.10009 0 - vertex 22.3621 7.54907 0 - vertex 22.0631 7.89267 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.6639 4.10009 0 - vertex 22.0631 7.89267 0 - vertex 21.7259 8.22365 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.5572 1.2697 0 - vertex 21.1355 -0.658014 0 - vertex 21.1085 -1.15452 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.498 4.716 0 - vertex 21.7259 8.22365 0 - vertex 21.3371 8.55423 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.6535 1.20459 0 - vertex 21.0399 -1.71534 0 - vertex 20.9878 -1.96317 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.6535 1.20459 0 - vertex 20.9878 -1.96317 0 - vertex 20.9199 -2.19366 0 + vertex 19.5452 -10.7956 0 + vertex 17.7619 -4.80944 0 + vertex 19.0845 -10.6988 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 19.5653 -11.6083 0 - vertex 25.9886 -19.284 0 - vertex 19.6598 -11.2975 0 + vertex 15.0012 -6.23992 0 + vertex 19.0845 -10.6988 0 + vertex 17.7619 -4.80944 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 19.0845 -10.6988 0 + vertex 15.0012 -6.23992 0 + vertex 16.7993 -11.2316 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 19.1479 -12.7477 0 - vertex 25.4477 -19.4082 0 - vertex 19.5653 -11.6083 0 + vertex 12.6103 -7.15898 0 + vertex 16.7993 -11.2316 0 + vertex 15.0012 -6.23992 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 24.9086 -19.5812 0 - vertex 18.3699 -14.7241 0 - vertex 24.3497 -19.8089 0 + vertex 16.7993 -11.2316 0 + vertex 12.6103 -7.15898 0 + vertex 13.71 -12.1451 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 13.71 -12.1451 0 + vertex 12.6103 -7.15898 0 + vertex 13.1035 -12.4147 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 18.3699 -14.7241 0 - vertex 24.9086 -19.5812 0 - vertex 19.1479 -12.7477 0 + vertex 10.2421 -7.67101 0 + vertex 13.1035 -12.4147 0 + vertex 12.6103 -7.15898 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 25.9886 -19.284 0 - vertex 19.5653 -11.6083 0 - vertex 25.4477 -19.4082 0 + vertex 13.1035 -12.4147 0 + vertex 10.2421 -7.67101 0 + vertex 12.6527 -12.8127 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 26.7352 1.18648 0 - vertex 20.7245 -2.61588 0 - vertex 19.6583 -10.9333 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.6583 -10.9333 0 - vertex 20.7245 -2.61588 0 - vertex 20.591 -2.8142 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.6583 -10.9333 0 - vertex 20.591 -2.8142 0 - vertex 20.4297 -3.0084 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.3497 -19.8089 0 - vertex 18.3699 -14.7241 0 - vertex 23.7493 -20.0973 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.6172 -10.8571 0 - vertex 20.4297 -3.0084 0 - vertex 20.2374 -3.20177 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.6172 -10.8571 0 - vertex 20.2374 -3.20177 0 - vertex 20.0112 -3.39762 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.7493 -20.0973 0 - vertex 18.3699 -14.7241 0 - vertex 23.0854 -20.4525 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 17.1638 -17.7131 0 - vertex 23.0854 -20.4525 0 - vertex 18.3699 -14.7241 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.0854 -20.4525 0 - vertex 17.1638 -17.7131 0 - vertex 22.3543 -20.8886 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.3543 -20.8886 0 - vertex 17.1638 -17.7131 0 - vertex 21.6485 -21.3703 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.6485 -21.3703 0 - vertex 17.1638 -17.7131 0 - vertex 20.9665 -21.899 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9665 -21.899 0 - vertex 17.1638 -17.7131 0 - vertex 20.3071 -22.4759 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.3071 -22.4759 0 - vertex 17.1638 -17.7131 0 - vertex 19.6689 -23.1024 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.6689 -23.1024 0 - vertex 17.1638 -17.7131 0 - vertex 19.0503 -23.7798 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.5952 -23.8342 0 - vertex 19.0503 -23.7798 0 - vertex 17.1638 -17.7131 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.0503 -23.7798 0 - vertex 14.5952 -23.8342 0 - vertex 18.4501 -24.5093 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4501 -24.5093 0 - vertex 14.5952 -23.8342 0 - vertex 17.8667 -25.2923 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.8667 -25.2923 0 - vertex 14.5952 -23.8342 0 - vertex 17.4656 -25.8764 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.4656 -25.8764 0 - vertex 14.5952 -23.8342 0 - vertex 17.0901 -26.4624 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.0901 -26.4624 0 - vertex 14.5952 -23.8342 0 - vertex 16.7406 -27.0496 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.7406 -27.0496 0 - vertex 14.5952 -23.8342 0 - vertex 16.4172 -27.6373 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.8097 -28.1484 0 - vertex 16.4172 -27.6373 0 - vertex 14.5952 -23.8342 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.4172 -27.6373 0 - vertex 12.8097 -28.1484 0 - vertex 16.1203 -28.2246 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.1203 -28.2246 0 - vertex 12.8097 -28.1484 0 - vertex 15.8502 -28.8109 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.8502 -28.8109 0 - vertex 12.8097 -28.1484 0 - vertex 15.6071 -29.3953 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.6071 -29.3953 0 - vertex 12.8097 -28.1484 0 - vertex 15.3912 -29.9771 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.0447 -30.0547 0 - vertex 15.3912 -29.9771 0 - vertex 12.8097 -28.1484 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.3912 -29.9771 0 - vertex 12.0447 -30.0547 0 - vertex 15.2028 -30.5555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9098 -31.6993 0 - vertex 11.5005 -31.4602 0 - vertex 14.8056 -32.2631 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.5005 -31.4602 0 - vertex 14.9098 -31.6993 0 - vertex 12.0447 -30.0547 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0423 -31.1299 0 - vertex 12.0447 -30.0547 0 - vertex 14.9098 -31.6993 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2028 -30.5555 0 - vertex 12.0447 -30.0547 0 - vertex 15.0423 -31.1299 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.0186 22.3563 0 - vertex -30.0859 22.0525 0 - vertex -28.3394 21.9725 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.4321 22.5993 0 - vertex -30.0859 22.0525 0 - vertex -29.0186 22.3563 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.7937 22.8325 0 - vertex -30.0859 22.0525 0 - vertex -29.4321 22.5993 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.1071 23.0591 0 - vertex -30.0859 22.0525 0 - vertex -29.7937 22.8325 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.5728 22.0884 0 - vertex -30.1071 23.0591 0 - vertex -30.3761 23.2826 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.1071 23.0591 0 - vertex -30.5728 22.0884 0 - vertex -30.0859 22.0525 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.074 22.1513 0 - vertex -30.3761 23.2826 0 - vertex -30.6044 23.5064 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.5861 22.2399 0 - vertex -30.6044 23.5064 0 - vertex -30.7957 23.7338 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.1061 22.3529 0 - vertex -30.7957 23.7338 0 - vertex -30.9539 23.9682 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3761 23.2826 0 - vertex -31.074 22.1513 0 - vertex -30.5728 22.0884 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.1061 22.3529 0 - vertex -30.9539 23.9682 0 - vertex -31.0826 24.213 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.6306 22.489 0 - vertex -31.0826 24.213 0 - vertex -31.2103 24.5339 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.1564 22.6469 0 - vertex -31.2103 24.5339 0 - vertex -31.2656 24.779 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.6044 23.5064 0 - vertex -31.5861 22.2399 0 - vertex -31.074 22.1513 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.199 23.023 0 - vertex -31.2656 24.779 0 - vertex -31.2668 24.8727 0 + vertex 12.6527 -12.8127 0 + vertex 10.2421 -7.67101 0 + vertex 12.4073 -13.2773 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex -34.7094 23.2385 0 - vertex -31.2507 24.9472 0 - vertex -35.2082 23.4707 0 + vertex 11.2177 -19.5302 0 + vertex 12.4073 -13.2773 0 + vertex 10.3474 -19.1774 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -8.06691 -19.2358 0 - vertex -17.4002 -11.6639 0 - vertex -17.3941 -11.77 0 + vertex 12.058 -19.7199 0 + vertex 11.2177 -19.5302 0 + vertex 11.7785 -19.8211 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -16.9775 12.4282 0 - vertex -17.4268 -11.5861 0 - vertex -17.4002 -11.6639 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9775 12.4282 0 - vertex -17.4764 -11.5321 0 - vertex -17.4268 -11.5861 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.5514 -11.4978 0 - vertex -17.3003 12.3696 0 - vertex -17.5181 12.3491 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9775 12.4282 0 - vertex -17.5514 -11.4978 0 - vertex -17.4764 -11.5321 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.5181 12.3491 0 - vertex -17.7876 -11.4712 0 - vertex -17.5514 -11.4978 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5728 12.2484 0 - vertex -17.5181 12.3491 0 - vertex -17.9556 12.3221 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.5181 12.3491 0 - vertex -18.5728 12.2484 0 - vertex -17.7876 -11.4712 0 + vertex 12.4073 -13.2773 0 + vertex 11.2177 -19.5302 0 + vertex 12.058 -19.7199 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -19.2876 12.1394 0 - vertex -17.7876 -11.4712 0 - vertex -18.5728 12.2484 0 + vertex 7.54923 -7.88041 0 + vertex 12.4073 -13.2773 0 + vertex 10.2421 -7.67101 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 12.4073 -13.2773 0 + vertex 8.75581 -19.1712 0 + vertex 10.3474 -19.1774 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 7.06268 -19.3694 0 + vertex 12.4073 -13.2773 0 + vertex 7.54923 -7.88041 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 12.4073 -13.2773 0 + vertex 7.06268 -19.3694 0 + vertex 8.75581 -19.1712 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -20.0181 12.0063 0 - vertex -17.7876 -11.4712 0 - vertex -19.2876 12.1394 0 + vertex 5.03167 -7.88498 0 + vertex 7.06268 -19.3694 0 + vertex 7.54923 -7.88041 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 7.06268 -19.3694 0 + vertex 5.03167 -7.88498 0 + vertex 5.689 -19.9339 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 3.854 -7.59505 0 + vertex 5.689 -19.9339 0 + vertex 5.03167 -7.88498 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 3.854 -7.59505 0 + vertex 3.72385 -21.1527 0 + vertex 5.689 -19.9339 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -20.4772 11.9313 0 - vertex -17.7876 -11.4712 0 - vertex -20.0181 12.0063 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -21.0446 11.8651 0 - vertex -17.7876 -11.4712 0 - vertex -20.4772 11.9313 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -22.4311 11.7593 0 - vertex -17.7876 -11.4712 0 - vertex -21.0446 11.8651 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.175 -11.3523 0 - vertex -22.4311 11.7593 0 - vertex -24.031 11.6901 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.175 -11.3523 0 - vertex -24.031 11.6901 0 - vertex -25.698 11.6586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.4311 11.7593 0 - vertex -27.175 -11.3523 0 - vertex -17.7876 -11.4712 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.2855 11.6658 0 - vertex -27.175 -11.3523 0 - vertex -25.698 11.6586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.647 11.7129 0 - vertex -27.175 -11.3523 0 - vertex -27.2855 11.6658 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.0944 -11.3029 0 - vertex -28.647 11.7129 0 - vertex -29.1973 11.7518 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.0944 -11.3029 0 - vertex -29.1973 11.7518 0 - vertex -29.6362 11.801 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.0944 -11.3029 0 - vertex -29.6362 11.801 0 - vertex -29.9453 11.8607 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.7011 -11.3017 0 - vertex -29.9453 11.8607 0 - vertex -30.0456 11.8946 0 + vertex -4.70045 -19.8327 0 + vertex 3.72385 -21.1527 0 + vertex 3.854 -7.59505 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -35.6555 -11.3595 0 - vertex -30.0456 11.8946 0 - vertex -30.1065 11.9311 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.527 -11.5152 0 - vertex -30.1065 11.9311 0 - vertex -30.2115 12.0683 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.9755 -11.7636 0 - vertex -30.2115 12.0683 0 - vertex -30.2975 12.2549 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.2746 22.7082 0 - vertex -30.2975 12.2549 0 - vertex -30.3556 12.4664 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3001 13.0393 0 - vertex -33.0533 20.3093 0 - vertex -30.3387 12.9655 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.7926 20.6272 0 - vertex -30.3387 12.9655 0 - vertex -33.0533 20.3093 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3387 12.9655 0 - vertex -33.7926 20.6272 0 - vertex -30.3621 12.8813 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.647 11.7129 0 - vertex -32.0944 -11.3029 0 - vertex -27.175 -11.3523 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.4881 20.9542 0 - vertex -30.3621 12.8813 0 - vertex -33.7926 20.6272 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.1386 21.2899 0 - vertex -30.3621 12.8813 0 - vertex -34.4881 20.9542 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9453 11.8607 0 - vertex -33.7011 -11.3017 0 - vertex -32.0944 -11.3029 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3621 12.8813 0 - vertex -35.1386 21.2899 0 - vertex -30.377 12.6783 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.7435 21.6336 0 - vertex -30.377 12.6783 0 - vertex -35.1386 21.2899 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.0456 11.8946 0 - vertex -34.8583 -11.3197 0 - vertex -33.7011 -11.3017 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.3017 21.985 0 - vertex -30.377 12.6783 0 - vertex -35.7435 21.6336 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.0456 11.8946 0 - vertex -35.6555 -11.3595 0 - vertex -34.8583 -11.3197 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.377 12.6783 0 - vertex -36.3017 21.985 0 - vertex -30.3556 12.4664 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.1065 11.9311 0 - vertex -36.1819 -11.4238 0 - vertex -35.6555 -11.3595 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.8124 22.3433 0 - vertex -30.3556 12.4664 0 - vertex -36.3017 21.985 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.1065 11.9311 0 - vertex -36.527 -11.5152 0 - vertex -36.1819 -11.4238 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.2115 12.0683 0 - vertex -36.7802 -11.6364 0 - vertex -36.527 -11.5152 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.2746 22.7082 0 - vertex -30.3556 12.4664 0 - vertex -36.8124 22.3433 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.2115 12.0683 0 - vertex -36.9755 -11.7636 0 - vertex -36.7802 -11.6364 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.2975 12.2549 0 - vertex -37.2746 22.7082 0 - vertex -37.1409 -11.9004 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.2975 12.2549 0 - vertex -37.1409 -11.9004 0 - vertex -36.9755 -11.7636 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.6874 23.0789 0 - vertex -37.1409 -11.9004 0 - vertex -37.2746 22.7082 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.1409 -11.9004 0 - vertex -37.6874 23.0789 0 - vertex -37.2767 -12.0443 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.0499 23.455 0 - vertex -37.2767 -12.0443 0 - vertex -37.6874 23.0789 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.3611 23.836 0 - vertex -37.2767 -12.0443 0 - vertex -38.0499 23.455 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.2767 -12.0443 0 - vertex -38.3611 23.836 0 - vertex -37.3834 -12.1929 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.6203 24.2212 0 - vertex -37.3834 -12.1929 0 - vertex -38.3611 23.836 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.15561 -22.5851 0 - vertex -8.45645 -23.4267 0 - vertex -8.48242 -23.1923 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.39946 -22.5595 0 - vertex -8.45645 -23.4267 0 - vertex -9.15561 -22.5851 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.94827 -22.6394 0 - vertex -8.48242 -23.1923 0 - vertex -8.54451 -22.9989 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.45645 -23.4267 0 - vertex -9.39946 -22.5595 0 - vertex -8.46654 -23.7044 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.77736 -22.7249 0 - vertex -8.54451 -22.9989 0 - vertex -8.64279 -22.8439 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -9.67988 -22.56 0 - vertex -8.46654 -23.7044 0 - vertex -9.39946 -22.5595 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.54451 -22.9989 0 - vertex -8.77736 -22.7249 0 - vertex -8.94827 -22.6394 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.48242 -23.1923 0 - vertex -8.94827 -22.6394 0 - vertex -9.15561 -22.5851 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.46654 -23.7044 0 - vertex -9.67988 -22.56 0 - vertex -8.51259 -24.0278 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -10.0796 -22.6123 0 - vertex -8.51259 -24.0278 0 - vertex -9.67988 -22.56 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.51259 -24.0278 0 - vertex -10.0796 -22.6123 0 - vertex -8.59455 -24.3995 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -10.5344 -22.7271 0 - vertex -8.59455 -24.3995 0 - vertex -10.0796 -22.6123 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.59455 -24.3995 0 - vertex -10.5344 -22.7271 0 - vertex -8.71232 -24.8218 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -10.9881 -22.8877 0 - vertex -8.71232 -24.8218 0 - vertex -10.5344 -22.7271 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.3849 -23.0769 0 - vertex -8.71232 -24.8218 0 - vertex -10.9881 -22.8877 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.71232 -24.8218 0 - vertex -11.3849 -23.0769 0 - vertex -9.05502 -25.8283 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.9359 -23.4045 0 - vertex -9.05502 -25.8283 0 - vertex -11.3849 -23.0769 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -12.4007 -23.7203 0 - vertex -9.05502 -25.8283 0 - vertex -11.9359 -23.4045 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -12.7941 -24.0414 0 - vertex -9.05502 -25.8283 0 - vertex -12.4007 -23.7203 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -14.2098 -26.3227 0 - vertex -9.5401 -27.0667 0 - vertex -13.9508 -25.7195 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.3777 -29.1914 0 - vertex -9.5401 -27.0667 0 - vertex -14.2098 -26.3227 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.05502 -25.8283 0 - vertex -12.7941 -24.0414 0 - vertex -9.5401 -27.0667 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.5815 -32.143 0 - vertex -15.3777 -29.1914 0 - vertex -11.9595 -33.0513 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.131 -24.3848 0 - vertex -9.5401 -27.0667 0 - vertex -12.7941 -24.0414 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.8163 -32.7116 0 - vertex -11.9595 -33.0513 0 - vertex -15.3777 -29.1914 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.4262 -24.7676 0 - vertex -9.5401 -27.0667 0 - vertex -13.131 -24.3848 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.9595 -33.0513 0 - vertex -16.8163 -32.7116 0 - vertex -12.3268 -33.8339 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.3268 -33.8339 0 - vertex -16.8163 -32.7116 0 - vertex -12.6843 -34.4922 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.5401 -27.0667 0 - vertex -13.4262 -24.7676 0 - vertex -13.6945 -25.2068 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.6843 -34.4922 0 - vertex -16.8163 -32.7116 0 - vertex -13.0331 -35.0276 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.5401 -27.0667 0 - vertex -13.6945 -25.2068 0 - vertex -13.9508 -25.7195 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.5401 -27.0667 0 - vertex -15.3777 -29.1914 0 - vertex -11.5815 -32.143 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.0331 -35.0276 0 - vertex -16.8163 -32.7116 0 - vertex -13.2045 -35.2497 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -14.4713 -35.9816 0 - vertex -13.2045 -35.2497 0 - vertex -16.8163 -32.7116 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.2045 -35.2497 0 - vertex -14.4713 -35.9816 0 - vertex -13.3741 -35.4417 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.3741 -35.4417 0 - vertex -14.4713 -35.9816 0 - vertex -13.5421 -35.6036 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -14.3614 -35.9691 0 - vertex -13.5421 -35.6036 0 - vertex -14.4713 -35.9816 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.5421 -35.6036 0 - vertex -14.3614 -35.9691 0 - vertex -13.7085 -35.7356 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.8736 -35.838 0 - vertex -14.3614 -35.9691 0 - vertex -14.0373 -35.911 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.0373 -35.911 0 - vertex -14.3614 -35.9691 0 - vertex -14.1999 -35.9546 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.7085 -35.7356 0 - vertex -14.3614 -35.9691 0 - vertex -13.8736 -35.838 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.1674 -33.591 0 - vertex -14.4713 -35.9816 0 - vertex -16.8163 -32.7116 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.4713 -35.9816 0 - vertex -17.1674 -33.591 0 - vertex -14.5979 -36.0176 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.5979 -36.0176 0 - vertex -17.1674 -33.591 0 - vertex -14.8831 -36.1495 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.4329 -34.3072 0 - vertex -14.8831 -36.1495 0 - vertex -17.1674 -33.591 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -16.5729 -36.2152 0 - vertex -14.8831 -36.1495 0 - vertex -17.4329 -34.3072 0 + vertex -5.57075 -19.2012 0 + vertex 3.854 -7.59505 0 + vertex 1.04019 -5.91722 0 endloop endfacet facet normal -0 -0 1 outer loop - vertex -16.3106 -36.4662 0 - vertex -15.4564 -36.5832 0 - vertex -16.4249 -36.334 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.4564 -36.5832 0 - vertex -16.237 -36.6071 0 - vertex -15.7439 -36.902 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.2485 -36.9225 0 - vertex -15.8411 -37.0399 0 - vertex -16.2109 -36.752 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.8411 -37.0399 0 - vertex -16.2485 -36.9225 0 - vertex -15.9096 -37.1689 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.3508 -37.1428 0 - vertex -15.9096 -37.1689 0 - vertex -16.2485 -36.9225 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.7439 -36.902 0 - vertex -16.2109 -36.752 0 - vertex -15.8411 -37.0399 0 + vertex -4.06681 -20.6308 0 + vertex 3.72385 -21.1527 0 + vertex -4.70045 -19.8327 0 endloop endfacet facet normal -0 -0 1 outer loop - vertex -16.2109 -36.752 0 - vertex -15.7439 -36.902 0 - vertex -16.237 -36.6071 0 + vertex -3.85646 -21.6547 0 + vertex 1.84511 -22.661 0 + vertex -4.06681 -20.6308 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -5.57075 -19.2012 0 + vertex 1.04019 -5.91722 0 + vertex -2.05653 -4.03047 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 1.84511 -22.661 0 + vertex -3.85646 -21.6547 0 + vertex 0.168338 -24.355 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 0.168338 -24.355 0 + vertex -3.89417 -22.8317 0 + vertex -1.19093 -26.1306 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -7.1272 -19.1706 0 + vertex -2.05653 -4.03047 0 + vertex -3.45272 -3.03042 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -17.4385 -11.5861 0 + vertex -3.45272 -3.03042 0 + vertex -3.71458 -2.66291 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -4.26405 -24.3543 0 + vertex -1.19093 -26.1306 0 + vertex -3.89417 -22.8317 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 21.6367 -21.3703 0 + vertex 17.1521 -17.7131 0 + vertex 20.2954 -22.4759 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 20.2954 -22.4759 0 + vertex 17.1521 -17.7131 0 + vertex 19.0386 -23.7798 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 14.5835 -23.8342 0 + vertex 19.0386 -23.7798 0 + vertex 17.1521 -17.7131 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 19.0386 -23.7798 0 + vertex 14.5835 -23.8342 0 + vertex 17.855 -25.2923 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 17.855 -25.2923 0 + vertex 14.5835 -23.8342 0 + vertex 16.4055 -27.6373 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 16.4055 -27.6373 0 + vertex 14.5835 -23.8342 0 + vertex 15.3794 -29.9771 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 15.3794 -29.9771 0 + vertex 11.4887 -31.4602 0 + vertex 14.7938 -32.2631 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 11.4887 -31.4602 0 + vertex 15.3794 -29.9771 0 + vertex 14.5835 -23.8342 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 25.1513 17.7384 0 + vertex 26.0816 17.5963 0 + vertex 25.9892 18.2943 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 25.1513 17.7384 0 + vertex 25.9892 18.2943 0 + vertex 25.7331 18.8483 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex -16.237 -36.6071 0 - vertex -15.4564 -36.5832 0 - vertex -16.3106 -36.4662 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -16.4249 -36.334 0 - vertex -15.1813 -36.3448 0 - vertex -16.5729 -36.2152 0 + vertex 25.704 16.8274 0 + vertex 26.0816 17.5963 0 + vertex 25.4738 17.2443 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -15.1813 -36.3448 0 - vertex -16.4249 -36.334 0 - vertex -15.4564 -36.5832 0 + vertex 26.0816 17.5963 0 + vertex 25.704 16.8274 0 + vertex 25.8979 16.7563 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -14.8831 -36.1495 0 - vertex -16.5729 -36.2152 0 - vertex -15.1813 -36.3448 0 + vertex 24.5942 18.0475 0 + vertex 25.7331 18.8483 0 + vertex 25.3447 19.2137 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -16.5729 -36.2152 0 - vertex -17.4329 -34.3072 0 - vertex -16.7476 -36.1146 0 + vertex 26.0816 17.5963 0 + vertex 25.1513 17.7384 0 + vertex 25.4738 17.2443 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -16.7476 -36.1146 0 - vertex -17.4329 -34.3072 0 - vertex -16.942 -36.0369 0 + vertex 24.5942 18.0475 0 + vertex 25.3447 19.2137 0 + vertex 24.8554 19.3454 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 25.7331 18.8483 0 + vertex 24.5942 18.0475 0 + vertex 25.1513 17.7384 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 23.3909 19.6849 0 + vertex 24.5942 18.0475 0 + vertex 24.8554 19.3454 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 22.335 18.2522 0 + vertex 23.3909 19.6849 0 + vertex 22.6368 20.047 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 23.3909 19.6849 0 + vertex 22.335 18.2522 0 + vertex 24.5942 18.0475 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 20.9591 18.304 0 + vertex 22.6368 20.047 0 + vertex 22.0911 20.5797 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -17.6153 -34.8741 0 - vertex -16.942 -36.0369 0 - vertex -17.4329 -34.3072 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.942 -36.0369 0 - vertex -17.6153 -34.8741 0 - vertex -17.1493 -35.9869 0 + vertex 19.6596 20.6529 0 + vertex 22.0911 20.5797 0 + vertex 21.7245 21.3239 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -17.7168 -35.3062 0 - vertex -17.1493 -35.9869 0 - vertex -17.6153 -34.8741 0 + vertex 19.4421 21.9215 0 + vertex 21.7245 21.3239 0 + vertex 21.508 22.3204 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 19.4421 21.9215 0 + vertex 21.508 22.3204 0 + vertex 21.2518 23.2891 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 22.0911 20.5797 0 + vertex 19.6596 20.6529 0 + vertex 19.8405 19.3078 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 18.9185 22.6398 0 + vertex 21.2518 23.2891 0 + vertex 20.762 24.0784 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 22.6368 20.047 0 + vertex 20.9591 18.304 0 + vertex 22.335 18.2522 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 18.9185 22.6398 0 + vertex 20.762 24.0784 0 + vertex 20.0338 24.6942 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 22.0911 20.5797 0 + vertex 19.8405 19.3078 0 + vertex 20.9591 18.304 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 20.9591 18.304 0 + vertex 19.8405 19.3078 0 + vertex 20.2006 18.5903 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 21.7245 21.3239 0 + vertex 19.4421 21.9215 0 + vertex 19.6596 20.6529 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 18.9185 22.6398 0 + vertex 20.0338 24.6942 0 + vertex 19.062 25.1422 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 21.2518 23.2891 0 + vertex 18.9185 22.6398 0 + vertex 19.4421 21.9215 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 19.062 25.1422 0 + vertex 17.6852 23.4449 0 + vertex 18.9185 22.6398 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 17.2513 25.98 0 + vertex 17.6852 23.4449 0 + vertex 19.062 25.1422 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 15.1211 24.4531 0 + vertex 17.2513 25.98 0 + vertex 15.7223 27.2873 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 13.4969 25.2416 0 + vertex 15.7223 27.2873 0 + vertex 15.122 28.0941 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 17.2513 25.98 0 + vertex 15.1211 24.4531 0 + vertex 17.6852 23.4449 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -17.738 -35.4761 0 - vertex -17.1493 -35.9869 0 - vertex -17.7168 -35.3062 0 + vertex 11.7374 28.4518 0 + vertex 15.122 28.0941 0 + vertex 15.0577 29.0611 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -17.1493 -35.9869 0 - vertex -17.738 -35.4761 0 - vertex -17.3625 -35.9691 0 + vertex 15.7223 27.2873 0 + vertex 13.4969 25.2416 0 + vertex 15.1211 24.4531 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -29.0303 22.3563 0 + vertex -30.0976 22.0525 0 + vertex -28.3511 21.9725 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -30.3878 23.2826 0 + vertex -30.0976 22.0525 0 + vertex -29.0303 22.3563 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -32.1178 22.3529 0 + vertex -30.3878 23.2826 0 + vertex -31.0943 24.213 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -30.3878 23.2826 0 + vertex -32.1178 22.3529 0 + vertex -30.0976 22.0525 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -34.2108 23.023 0 + vertex -31.0943 24.213 0 + vertex -31.2773 24.779 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -31.1793 25.0376 0 + vertex -34.2108 23.023 0 + vertex -31.2773 24.779 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -18.5428 -26.6889 0 + vertex -23.655 -30.4649 0 + vertex -23.4462 -30.738 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -25.4741 -26.9141 0 + vertex -18.5428 -26.6889 0 + vertex -24.4076 -24.3815 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -18.5428 -26.6889 0 + vertex -25.4741 -26.9141 0 + vertex -23.655 -30.4649 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -23.655 -30.4649 0 + vertex -25.4741 -26.9141 0 + vertex -24.0819 -30.2475 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -24.0819 -30.2475 0 + vertex -25.4741 -26.9141 0 + vertex -24.4667 -30.1541 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -17.7399 -35.6175 0 - vertex -17.3625 -35.9691 0 - vertex -17.738 -35.4761 0 + vertex -26.2338 -28.3696 0 + vertex -24.4667 -30.1541 0 + vertex -25.4741 -26.9141 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -17.3625 -35.9691 0 - vertex -17.7399 -35.6175 0 - vertex -17.4702 -35.9608 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -17.7228 -35.7323 0 - vertex -17.4702 -35.9608 0 - vertex -17.7399 -35.6175 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4702 -35.9608 0 - vertex -17.7228 -35.7323 0 - vertex -17.5603 -35.9348 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -17.6869 -35.8223 0 - vertex -17.5603 -35.9348 0 - vertex -17.7228 -35.7323 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.5603 -35.9348 0 - vertex -17.6869 -35.8223 0 - vertex -17.6327 -35.8892 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.56309 -35.9367 0 - vertex -7.30266 -36.7536 0 - vertex -7.29619 -36.8569 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.97004 -33.2395 0 - vertex -7.32635 -36.6539 0 - vertex -7.30266 -36.7536 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.13453 -33.8652 0 - vertex -3.97004 -33.2395 0 - vertex -7.70823 -32.8163 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.97004 -33.2395 0 - vertex -7.36727 -36.5579 0 - vertex -7.32635 -36.6539 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.97004 -33.2395 0 - vertex -7.50076 -36.3769 0 - vertex -7.36727 -36.5579 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.97004 -33.2395 0 - vertex -8.13453 -33.8652 0 - vertex -7.50076 -36.3769 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.50076 -36.3769 0 - vertex -8.13453 -33.8652 0 - vertex -7.70312 -36.2106 0 + vertex -24.4667 -30.1541 0 + vertex -26.2338 -28.3696 0 + vertex -24.8569 -30.2998 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -8.32474 -34.384 0 - vertex -7.70312 -36.2106 0 - vertex -8.13453 -33.8652 0 + vertex -26.8752 -29.0336 0 + vertex -24.8569 -30.2998 0 + vertex -26.2338 -28.3696 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -7.70312 -36.2106 0 - vertex -8.32474 -34.384 0 - vertex -7.97432 -36.0592 0 + vertex -24.8569 -30.2998 0 + vertex -26.8752 -29.0336 0 + vertex -26.8283 -32.1012 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -8.55649 -35.3052 0 - vertex -7.97432 -36.0592 0 - vertex -8.32474 -34.384 0 + vertex -27.5872 -29.1914 0 + vertex -26.8283 -32.1012 0 + vertex -26.8752 -29.0336 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -7.97432 -36.0592 0 - vertex -8.55649 -35.3052 0 - vertex -8.30497 -35.8814 0 + vertex -28.1878 -29.097 0 + vertex -26.8283 -32.1012 0 + vertex -27.5872 -29.1914 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -8.30497 -35.8814 0 - vertex -8.55649 -35.3052 0 - vertex -8.41808 -35.7975 0 + vertex -28.1878 -29.097 0 + vertex -29.0969 -33.8499 0 + vertex -26.8283 -32.1012 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -28.1838 -28.4809 0 + vertex -32.142 -25.4759 0 + vertex -28.1878 -29.097 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -8.57785 -35.4236 0 - vertex -8.41808 -35.7975 0 - vertex -8.55649 -35.3052 0 + vertex -35.4824 -26.6225 0 + vertex -28.1878 -29.097 0 + vertex -32.142 -25.4759 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -8.41808 -35.7975 0 - vertex -8.57785 -35.4236 0 - vertex -8.49955 -35.7129 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -8.57707 -35.529 0 - vertex -8.49955 -35.7129 0 - vertex -8.57785 -35.4236 0 + vertex -28.1878 -29.097 0 + vertex -30.2578 -34.4631 0 + vertex -29.0969 -33.8499 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -8.49955 -35.7129 0 - vertex -8.57707 -35.529 0 - vertex -8.55176 -35.6244 0 + vertex -28.1878 -29.097 0 + vertex -31.3644 -34.8586 0 + vertex -30.2578 -34.4631 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 1.88346 12.344 0 - vertex 1.92323 12.5289 0 - vertex 1.90284 12.6291 0 + vertex -35.4824 -26.6225 0 + vertex -32.142 -25.4759 0 + vertex -34.9626 -25.4747 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 1.92323 12.5289 0 - vertex 1.88346 12.344 0 - vertex 1.91748 12.4352 0 + vertex -28.1878 -29.097 0 + vertex -35.4824 -26.6225 0 + vertex -31.3644 -34.8586 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 1.81906 12.2515 0 - vertex 1.90284 12.6291 0 - vertex 1.85843 12.7398 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.90284 12.6291 0 - vertex 1.81906 12.2515 0 - vertex 1.88346 12.344 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.85843 12.7398 0 - vertex 1.72214 12.1537 0 - vertex 1.81906 12.2515 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.7147 12.9716 0 - vertex 1.72214 12.1537 0 - vertex 1.85843 12.7398 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.42228 11.926 0 - vertex 1.7147 12.9716 0 - vertex 1.51175 13.1874 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.7147 12.9716 0 - vertex 1.42228 11.926 0 - vertex 1.72214 12.1537 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.25015 13.3869 0 - vertex 1.42228 11.926 0 - vertex 1.51175 13.1874 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.25015 13.3869 0 - vertex 0.986004 11.656 0 - vertex 1.42228 11.926 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.930489 13.5702 0 - vertex 0.986004 11.656 0 - vertex 1.25015 13.3869 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.55335 13.737 0 - vertex 0.986004 11.656 0 - vertex 0.930489 13.5702 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.55335 13.737 0 - vertex 0.546849 11.4454 0 - vertex 0.986004 11.656 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.119316 13.8873 0 - vertex 0.546849 11.4454 0 - vertex 0.55335 13.737 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.119316 13.8873 0 - vertex 0.0942225 11.293 0 - vertex 0.546849 11.4454 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.382462 11.1972 0 - vertex 0.119316 13.8873 0 - vertex -0.371032 14.021 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.119316 13.8873 0 - vertex -0.382462 11.1972 0 - vertex 0.0942225 11.293 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.371032 14.021 0 - vertex -0.893798 11.1566 0 - vertex -0.382462 11.1972 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.917111 14.138 0 - vertex -0.893798 11.1566 0 - vertex -0.371032 14.021 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.917111 14.138 0 - vertex -1.45038 11.1697 0 - vertex -0.893798 11.1566 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.51834 14.2381 0 - vertex -1.45038 11.1697 0 - vertex -0.917111 14.138 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.51834 14.2381 0 - vertex -2.06279 11.235 0 - vertex -1.45038 11.1697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.17413 14.3212 0 - vertex -2.06279 11.235 0 - vertex -1.51834 14.2381 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.17413 14.3212 0 - vertex -2.74162 11.3511 0 - vertex -2.06279 11.235 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.8839 14.3873 0 - vertex -2.74162 11.3511 0 - vertex -2.17413 14.3212 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.8839 14.3873 0 - vertex -3.43924 11.4799 0 - vertex -2.74162 11.3511 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.64708 14.4362 0 - vertex -3.43924 11.4799 0 - vertex -2.8839 14.3873 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.64708 14.4362 0 - vertex -4.06319 11.5774 0 - vertex -3.43924 11.4799 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.46307 14.4678 0 - vertex -4.06319 11.5774 0 - vertex -3.64708 14.4362 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.46307 14.4678 0 - vertex -4.60751 11.6434 0 - vertex -4.06319 11.5774 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.46307 14.4678 0 - vertex -5.06624 11.6776 0 - vertex -4.60751 11.6434 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.33129 14.482 0 - vertex -5.06624 11.6776 0 - vertex -4.46307 14.4678 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.33129 14.482 0 - vertex -5.4334 11.6797 0 - vertex -5.06624 11.6776 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.33129 14.482 0 - vertex -5.70304 11.6495 0 - vertex -5.4334 11.6797 0 + vertex -31.3644 -34.8586 0 + vertex -35.4824 -26.6225 0 + vertex -35.0529 -35.0835 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -6.25117 14.4787 0 - vertex -5.70304 11.6495 0 - vertex -5.33129 14.482 0 + vertex -38.7331 -34.5543 0 + vertex -35.0529 -35.0835 0 + vertex -35.4824 -26.6225 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -5.70304 11.6495 0 - vertex -6.25117 14.4787 0 - vertex -5.79943 11.6221 0 + vertex -35.0529 -35.0835 0 + vertex -38.7331 -34.5543 0 + vertex -38.4261 -34.9619 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -5.79943 11.6221 0 - vertex -6.25117 14.4787 0 - vertex -5.8692 11.5867 0 + vertex -18.6886 -22.3738 0 + vertex -24.4076 -24.3815 0 + vertex -18.5428 -26.6889 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -7.22211 14.4578 0 - vertex -5.8692 11.5867 0 - vertex -6.25117 14.4787 0 + vertex -23.8149 -31.5911 0 + vertex -21.28 -33.2523 0 + vertex -23.4462 -30.738 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -5.8692 11.5867 0 - vertex -7.22211 14.4578 0 - vertex -5.91161 11.5429 0 + vertex -18.5428 -26.6889 0 + vertex -23.4462 -30.738 0 + vertex -21.28 -33.2523 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -9.25643 14.3812 0 - vertex -5.91161 11.5429 0 - vertex -7.22211 14.4578 0 + vertex -24.7956 -33.2498 0 + vertex -21.28 -33.2523 0 + vertex -23.8149 -31.5911 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -3.70285 -2.66292 0 - vertex -17.4002 -11.6639 0 - vertex -6.14058 -19.1411 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.91161 11.5429 0 - vertex -9.25643 14.3812 0 - vertex -5.92592 11.491 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4002 -11.6639 0 - vertex -7.11547 -19.1706 0 - vertex -6.14058 -19.1411 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4002 -11.6639 0 - vertex -7.63584 -19.198 0 - vertex -7.11547 -19.1706 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4002 -11.6639 0 - vertex -8.06691 -19.2358 0 - vertex -7.63584 -19.198 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.06691 -19.2358 0 - vertex -17.3941 -11.77 0 - vertex -8.43701 -19.2929 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -12.0792 -19.1571 0 - vertex -8.43701 -19.2929 0 - vertex -17.3941 -11.77 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -9.98725 14.3241 0 - vertex -5.92592 11.491 0 - vertex -9.25643 14.3812 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.43701 -19.2929 0 - vertex -12.0792 -19.1571 0 - vertex -8.77447 -19.378 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -11.9023 -19.2259 0 - vertex -8.77447 -19.378 0 - vertex -12.0792 -19.1571 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -10.6249 14.238 0 - vertex -5.92592 11.491 0 - vertex -9.98725 14.3241 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.77447 -19.378 0 - vertex -11.9023 -19.2259 0 - vertex -9.10766 -19.4997 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.2428 14.1101 0 - vertex -5.92592 11.491 0 - vertex -10.6249 14.238 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.92592 11.491 0 - vertex -11.2428 14.1101 0 - vertex -11.9142 13.9281 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -11.7723 -19.3375 0 - vertex -9.46489 -19.667 0 - vertex -11.9023 -19.2259 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.6707 -19.9072 0 - vertex -10.3649 -20.1728 0 - vertex -11.6557 -19.6804 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.3649 -20.1728 0 - vertex -11.6899 -19.4898 0 - vertex -11.6557 -19.6804 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.87453 -19.8884 0 - vertex -11.6899 -19.4898 0 - vertex -10.3649 -20.1728 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -11.6899 -19.4898 0 - vertex -9.87453 -19.8884 0 - vertex -11.7723 -19.3375 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.92592 11.491 0 - vertex -11.9142 13.9281 0 - vertex -12.7125 13.6795 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.46489 -19.667 0 - vertex -11.7723 -19.3375 0 - vertex -9.87453 -19.8884 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.10766 -19.4997 0 - vertex -11.9023 -19.2259 0 - vertex -9.46489 -19.667 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.4339 -12.0833 0 - vertex -12.0792 -19.1571 0 - vertex -17.3941 -11.77 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.7109 13.3517 0 - vertex -5.92592 11.491 0 - vertex -12.7125 13.6795 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.0792 -19.1571 0 - vertex -17.4339 -12.0833 0 - vertex -12.302 -19.1333 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -14.949 12.9624 0 - vertex -5.92592 11.491 0 - vertex -13.7109 13.3517 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.5116 -12.3759 0 - vertex -12.302 -19.1333 0 - vertex -17.4339 -12.0833 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.0795 12.6436 0 - vertex -5.92592 11.491 0 - vertex -14.949 12.9624 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.6664 -12.8441 0 - vertex -12.302 -19.1333 0 - vertex -17.5116 -12.3759 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4002 -11.6639 0 - vertex -5.92592 11.491 0 - vertex -16.0795 12.6436 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.302 -19.1333 0 - vertex -17.6664 -12.8441 0 - vertex -12.6849 -19.1929 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4002 -11.6639 0 - vertex -16.0795 12.6436 0 - vertex -16.9775 12.4282 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.5514 -11.4978 0 - vertex -16.9775 12.4282 0 - vertex -17.3003 12.3696 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -18.1466 -14.1495 0 - vertex -12.6849 -19.1929 0 - vertex -17.6664 -12.8441 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.6849 -19.1929 0 - vertex -18.1466 -14.1495 0 - vertex -13.3483 -19.3556 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.3483 -19.3556 0 - vertex -18.1466 -14.1495 0 - vertex -14.1989 -19.5967 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -18.7537 -15.6836 0 - vertex -14.1989 -19.5967 0 - vertex -18.1466 -14.1495 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.1989 -19.5967 0 - vertex -18.7537 -15.6836 0 - vertex -15.1436 -19.8912 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -19.3667 -17.1305 0 - vertex -15.1436 -19.8912 0 - vertex -18.7537 -15.6836 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.1436 -19.8912 0 - vertex -19.3667 -17.1305 0 - vertex -16.9393 -20.461 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -19.4996 -17.3696 0 - vertex -16.9393 -20.461 0 - vertex -19.3667 -17.1305 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9393 -20.461 0 - vertex -19.4996 -17.3696 0 - vertex -17.9865 -20.7653 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -19.6713 -17.584 0 - vertex -17.9865 -20.7653 0 - vertex -19.4996 -17.3696 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -19.8743 -17.7693 0 - vertex -17.9865 -20.7653 0 - vertex -19.6713 -17.584 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.9865 -20.7653 0 - vertex -19.8743 -17.7693 0 - vertex -18.1109 -20.8023 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.1109 -20.8023 0 - vertex -19.8743 -17.7693 0 - vertex -18.2248 -20.8552 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.1009 -17.9213 0 - vertex -18.2248 -20.8552 0 - vertex -19.8743 -17.7693 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.2248 -20.8552 0 - vertex -20.1009 -17.9213 0 - vertex -18.3284 -20.924 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.3435 -18.0357 0 - vertex -18.3284 -20.924 0 - vertex -20.1009 -17.9213 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.3284 -20.924 0 - vertex -20.3435 -18.0357 0 - vertex -18.4218 -21.0091 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.7355 -20.1677 0 - vertex -10.3649 -20.1728 0 - vertex -11.6707 -19.9072 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.3649 -20.1728 0 - vertex -11.7355 -20.1677 0 - vertex -11.5073 -20.829 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.851 -20.4599 0 - vertex -11.5073 -20.829 0 - vertex -11.7355 -20.1677 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.0288 -20.9134 0 - vertex -11.5073 -20.829 0 - vertex -11.851 -20.4599 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.5073 -20.829 0 - vertex -12.0288 -20.9134 0 - vertex -11.8784 -21.0286 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.0594 -21.0513 0 - vertex -11.8784 -21.0286 0 - vertex -12.0288 -20.9134 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.8784 -21.0286 0 - vertex -12.0594 -21.0513 0 - vertex -12.0427 -21.102 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.0427 -21.102 0 - vertex -12.0594 -21.0513 0 - vertex -12.0573 -21.0889 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.3267 -22.6747 0 - vertex -17.2249 -22.8126 0 - vertex -17.2578 -22.7276 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4374 -22.6462 0 - vertex -17.2249 -22.8126 0 - vertex -17.3267 -22.6747 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.2249 -22.8126 0 - vertex -17.4374 -22.6462 0 - vertex -17.2226 -22.9371 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.8061 -22.6324 0 - vertex -17.2226 -22.9371 0 - vertex -17.4374 -22.6462 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.2226 -22.9371 0 - vertex -17.8061 -22.6324 0 - vertex -17.2873 -23.335 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.1091 -22.6172 0 - vertex -17.2873 -23.335 0 - vertex -17.8061 -22.6324 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.2873 -23.335 0 - vertex -18.1091 -22.6172 0 - vertex -17.4084 -23.7485 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.3541 -22.5704 0 - vertex -17.4084 -23.7485 0 - vertex -18.1091 -22.6172 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4084 -23.7485 0 - vertex -18.3541 -22.5704 0 - vertex -17.6656 -24.469 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5429 -22.4899 0 - vertex -17.6656 -24.469 0 - vertex -18.3541 -22.5704 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.6769 -22.3738 0 - vertex -17.6656 -24.469 0 - vertex -18.5429 -22.4899 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.6656 -24.469 0 - vertex -18.6769 -22.3738 0 - vertex -18.5311 -26.6889 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.116 -21.2395 0 - vertex -18.6769 -22.3738 0 - vertex -18.7577 -22.2202 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.116 -21.2395 0 - vertex -18.7577 -22.2202 0 - vertex -18.7869 -22.0269 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.4218 -21.0091 0 - vertex -20.3435 -18.0357 0 - vertex -18.5053 -21.1105 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.5945 -18.108 0 - vertex -18.5053 -21.1105 0 - vertex -20.3435 -18.0357 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5053 -21.1105 0 - vertex -20.5945 -18.108 0 - vertex -18.5788 -21.2283 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.8463 -18.1339 0 - vertex -18.5788 -21.2283 0 - vertex -20.5945 -18.108 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -22.6874 -20.0641 0 - vertex -18.5788 -21.2283 0 - vertex -22.5978 -19.6581 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -22.8608 -20.5868 0 - vertex -18.6967 -21.5139 0 - vertex -22.6874 -20.0641 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -23.116 -21.2395 0 - vertex -18.7869 -22.0269 0 - vertex -22.8608 -20.5868 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.6967 -21.5139 0 - vertex -22.8608 -20.5868 0 - vertex -18.766 -21.7922 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5788 -21.2283 0 - vertex -20.8463 -18.1339 0 - vertex -22.5978 -19.6581 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.585 -19.4947 0 - vertex -20.8463 -18.1339 0 - vertex -21.0912 -18.1093 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.594 -19.3555 0 - vertex -21.0912 -18.1093 0 - vertex -21.2545 -18.0693 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.6769 -22.3738 0 - vertex -23.116 -21.2395 0 - vertex -24.3958 -24.3815 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.625 -19.2389 0 - vertex -21.2545 -18.0693 0 - vertex -21.378 -18.0171 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.6782 -19.1432 0 - vertex -21.378 -18.0171 0 - vertex -21.4669 -17.9347 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.7539 -19.0668 0 - vertex -21.4669 -17.9347 0 - vertex -21.5263 -17.8042 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.9739 -18.9651 0 - vertex -21.5263 -17.8042 0 - vertex -21.5614 -17.6077 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.1186 -18.9365 0 - vertex -21.5614 -17.6077 0 - vertex -21.5774 -17.3273 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.766 -21.7922 0 - vertex -22.8608 -20.5868 0 - vertex -18.7869 -22.0269 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5729 -16.4428 0 - vertex -22.9103 -14.3386 0 - vertex -23.3301 -14.2877 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.9412 -14.6683 0 - vertex -21.5879 -15.2616 0 - vertex -21.6284 -15.0493 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.7989 -14.7733 0 - vertex -21.6284 -15.0493 0 - vertex -21.6966 -14.8935 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.6284 -15.0493 0 - vertex -21.7989 -14.7733 0 - vertex -21.9412 -14.6683 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5788 -21.2283 0 - vertex -22.6874 -20.0641 0 - vertex -18.6967 -21.5139 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5879 -15.2616 0 - vertex -21.9412 -14.6683 0 - vertex -22.1296 -14.5577 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5693 -15.5508 0 - vertex -22.1296 -14.5577 0 - vertex -22.3213 -14.4724 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.8463 -18.1339 0 - vertex -22.585 -19.4947 0 - vertex -22.5978 -19.6581 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5693 -15.5508 0 - vertex -22.3213 -14.4724 0 - vertex -22.5778 -14.3998 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.6769 -22.3738 0 - vertex -24.3958 -24.3815 0 - vertex -18.5311 -26.6889 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5693 -15.5508 0 - vertex -22.5778 -14.3998 0 - vertex -22.9103 -14.3386 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.9793 -25.8003 0 - vertex -18.5311 -26.6889 0 - vertex -24.3958 -24.3815 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5311 -26.6889 0 - vertex -24.9793 -25.8003 0 - vertex -19.7699 -29.7113 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.0912 -18.1093 0 - vertex -22.594 -19.3555 0 - vertex -22.585 -19.4947 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.2545 -18.0693 0 - vertex -22.625 -19.2389 0 - vertex -22.594 -19.3555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.378 -18.0171 0 - vertex -22.6782 -19.1432 0 - vertex -22.625 -19.2389 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.4669 -17.9347 0 - vertex -22.7539 -19.0668 0 - vertex -22.6782 -19.1432 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5263 -17.8042 0 - vertex -22.8524 -19.008 0 - vertex -22.7539 -19.0668 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.6632 -18.9241 0 - vertex -21.5729 -16.4428 0 - vertex -23.3301 -14.2877 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5263 -17.8042 0 - vertex -22.9739 -18.9651 0 - vertex -22.8524 -19.008 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5614 -17.6077 0 - vertex -23.1186 -18.9365 0 - vertex -22.9739 -18.9651 0 + vertex -21.28 -33.2523 0 + vertex -24.7956 -33.2498 0 + vertex -22.458 -35.4568 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex -23.4791 -18.9156 0 - vertex -21.5729 -16.4428 0 - vertex -23.6632 -18.9241 0 + vertex -23.6767 -35.9691 0 + vertex -22.458 -35.4568 0 + vertex -24.7956 -33.2498 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -21.5774 -17.3273 0 - vertex -23.4791 -18.9156 0 - vertex -23.1186 -18.9365 0 + vertex -22.458 -35.4568 0 + vertex -23.6767 -35.9691 0 + vertex -23.007 -35.8619 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -21.5729 -16.4428 0 - vertex -23.4791 -18.9156 0 - vertex -21.5774 -17.3273 0 + vertex -23.6767 -35.9691 0 + vertex -24.7956 -33.2498 0 + vertex -24.4194 -36.2501 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.4767 -14.2125 0 - vertex -23.6632 -18.9241 0 - vertex -23.3301 -14.2877 0 + vertex -27.2791 -36.8782 0 + vertex -24.4194 -36.2501 0 + vertex -24.7956 -33.2498 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -23.6632 -18.9241 0 - vertex -24.4767 -14.2125 0 - vertex -23.8226 -18.954 0 + vertex -24.4194 -36.2501 0 + vertex -27.2791 -36.8782 0 + vertex -24.9699 -36.888 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -23.8226 -18.954 0 - vertex -24.4767 -14.2125 0 - vertex -23.9653 -19.0124 0 + vertex -24.9699 -36.888 0 + vertex -27.2791 -36.8782 0 + vertex -25.157 -37.5754 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -26.1077 -14.1654 0 - vertex -23.9653 -19.0124 0 - vertex -24.4767 -14.2125 0 + vertex -22.4212 26.8695 0 + vertex -21.4485 26.3569 0 + vertex -21.2681 26.5576 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -23.9653 -19.0124 0 - vertex -26.1077 -14.1654 0 - vertex -24.0993 -19.1062 0 + vertex -21.4485 26.3569 0 + vertex -22.4212 26.8695 0 + vertex -22.0473 26.2369 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.0993 -19.1062 0 - vertex -26.1077 -14.1654 0 - vertex -24.2328 -19.2424 0 + vertex -24.8433 26.205 0 + vertex -22.4212 26.8695 0 + vertex -23.8902 27.3484 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.2328 -19.2424 0 - vertex -26.1077 -14.1654 0 - vertex -24.3738 -19.4278 0 + vertex -22.4212 26.8695 0 + vertex -24.8433 26.205 0 + vertex -22.0473 26.2369 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -28.2448 -14.1442 0 - vertex -24.3738 -19.4278 0 - vertex -26.1077 -14.1654 0 + vertex -24.3225 27.6757 0 + vertex -24.8433 26.205 0 + vertex -23.8902 27.3484 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.3738 -19.4278 0 - vertex -28.2448 -14.1442 0 - vertex -24.7108 -19.9745 0 + vertex -27.4214 26.3653 0 + vertex -24.3225 27.6757 0 + vertex -24.3632 27.9554 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -8.78909 -22.7249 0 + vertex -8.46819 -23.4267 0 + vertex -8.55624 -22.9989 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -8.46819 -23.4267 0 + vertex -8.78909 -22.7249 0 + vertex -9.69161 -22.56 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -8.46819 -23.4267 0 + vertex -9.69161 -22.56 0 + vertex -8.72405 -24.8218 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -31.1223 -16.1487 0 - vertex -24.7108 -19.9745 0 - vertex -28.2448 -14.1442 0 + vertex -10.5461 -22.7271 0 + vertex -8.72405 -24.8218 0 + vertex -9.69161 -22.56 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -31.4477 -16.8607 0 - vertex -24.7108 -19.9745 0 - vertex -31.1223 -16.1487 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.7108 -19.9745 0 - vertex -31.4477 -16.8607 0 - vertex -24.9407 -20.3516 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.9407 -20.3516 0 - vertex -31.4477 -16.8607 0 - vertex -25.1784 -20.695 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.1784 -20.695 0 - vertex -31.4477 -16.8607 0 - vertex -25.4267 -21.0057 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.4267 -21.0057 0 - vertex -31.4477 -16.8607 0 - vertex -25.6884 -21.2849 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.6884 -21.2849 0 - vertex -31.4477 -16.8607 0 - vertex -25.9661 -21.5339 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.9661 -21.5339 0 - vertex -31.4477 -16.8607 0 - vertex -26.2627 -21.7538 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.2627 -21.7538 0 - vertex -31.4477 -16.8607 0 - vertex -26.5809 -21.9457 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.5809 -21.9457 0 - vertex -31.8034 -17.6899 0 - vertex -26.9234 -22.1109 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.9234 -22.1109 0 - vertex -31.8034 -17.6899 0 - vertex -27.2929 -22.2506 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.2929 -22.2506 0 - vertex -31.8034 -17.6899 0 - vertex -27.6923 -22.3658 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.678 -15.2903 0 - vertex -28.2448 -14.1442 0 - vertex -28.9898 -14.1579 0 + vertex -11.3967 -23.0769 0 + vertex -8.72405 -24.8218 0 + vertex -10.5461 -22.7271 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -31.8034 -17.6899 0 - vertex -26.5809 -21.9457 0 - vertex -31.4477 -16.8607 0 + vertex -12.4124 -23.7203 0 + vertex -8.72405 -24.8218 0 + vertex -11.3967 -23.0769 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -30.5215 -14.964 0 - vertex -28.9898 -14.1579 0 - vertex -29.549 -14.1906 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.6923 -22.3658 0 - vertex -31.8034 -17.6899 0 - vertex -28.1242 -22.4577 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.4158 -14.7057 0 - vertex -29.549 -14.1906 0 - vertex -29.9449 -14.2443 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.377 -14.5514 0 - vertex -29.9449 -14.2443 0 - vertex -30.1999 -14.321 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.9898 -14.1579 0 - vertex -30.5215 -14.964 0 - vertex -30.678 -15.2903 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.377 -14.5514 0 - vertex -30.1999 -14.321 0 - vertex -30.2816 -14.3686 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.377 -14.5514 0 - vertex -30.2816 -14.3686 0 - vertex -30.3364 -14.4227 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.377 -14.5514 0 - vertex -30.3364 -14.4227 0 - vertex -30.3673 -14.4836 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9449 -14.2443 0 - vertex -30.377 -14.5514 0 - vertex -30.4158 -14.7057 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.549 -14.1906 0 - vertex -30.4158 -14.7057 0 - vertex -30.5215 -14.964 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2448 -14.1442 0 - vertex -30.678 -15.2903 0 - vertex -30.8691 -15.6487 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2448 -14.1442 0 - vertex -30.8691 -15.6487 0 - vertex -31.1223 -16.1487 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1242 -22.4577 0 - vertex -31.8034 -17.6899 0 - vertex -28.5914 -22.5277 0 + vertex -8.72405 -24.8218 0 + vertex -12.4124 -23.7203 0 + vertex -9.55184 -27.0667 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -32.1476 -18.5412 0 - vertex -28.5914 -22.5277 0 - vertex -31.8034 -17.6899 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.5914 -22.5277 0 - vertex -32.1476 -18.5412 0 - vertex -29.0966 -22.5767 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.0966 -22.5767 0 - vertex -32.1476 -18.5412 0 - vertex -29.6427 -22.606 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.6427 -22.606 0 - vertex -32.1476 -18.5412 0 - vertex -30.2322 -22.6168 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.2322 -22.6168 0 - vertex -32.1476 -18.5412 0 - vertex -30.868 -22.6102 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.868 -22.6102 0 - vertex -32.1476 -18.5412 0 - vertex -31.8095 -22.5865 0 + vertex -13.1427 -24.3848 0 + vertex -9.55184 -27.0667 0 + vertex -12.4124 -23.7203 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -33.2902 -21.4299 0 - vertex -31.8095 -22.5865 0 - vertex -32.1476 -18.5412 0 + vertex -14.2216 -26.3227 0 + vertex -9.55184 -27.0667 0 + vertex -13.7062 -25.2068 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -31.8095 -22.5865 0 - vertex -33.2902 -21.4299 0 - vertex -32.5132 -22.5543 0 + vertex -9.55184 -27.0667 0 + vertex -15.3894 -29.1914 0 + vertex -11.5932 -32.143 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -32.5132 -22.5543 0 - vertex -33.2902 -21.4299 0 - vertex -33.0067 -22.5002 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -33.4325 -21.7956 0 - vertex -33.0067 -22.5002 0 - vertex -33.2902 -21.4299 0 + vertex -9.55184 -27.0667 0 + vertex -13.1427 -24.3848 0 + vertex -13.7062 -25.2068 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -33.0067 -22.5002 0 - vertex -33.4325 -21.7956 0 - vertex -33.1833 -22.4608 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -33.503 -22.0719 0 - vertex -33.1833 -22.4608 0 - vertex -33.4325 -21.7956 0 + vertex -15.3894 -29.1914 0 + vertex -9.55184 -27.0667 0 + vertex -14.2216 -26.3227 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -33.1833 -22.4608 0 - vertex -33.503 -22.0719 0 - vertex -33.3177 -22.4108 0 + vertex -16.8281 -32.7116 0 + vertex -11.5932 -32.143 0 + vertex -15.3894 -29.1914 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -33.3177 -22.4108 0 - vertex -33.503 -22.0719 0 - vertex -33.4135 -22.3486 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -33.5026 -22.1809 0 - vertex -33.4135 -22.3486 0 - vertex -33.503 -22.0719 0 + vertex -11.5932 -32.143 0 + vertex -16.8281 -32.7116 0 + vertex -12.3385 -33.8339 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -33.4135 -22.3486 0 - vertex -33.5026 -22.1809 0 - vertex -33.4739 -22.2725 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -23.8031 -31.5911 0 - vertex -21.2682 -33.2523 0 - vertex -23.5218 -31.031 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.2375 -32.3527 0 - vertex -21.2682 -33.2523 0 - vertex -23.8031 -31.5911 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.2682 -33.2523 0 - vertex -24.2375 -32.3527 0 - vertex -21.6072 -34.0169 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.6072 -34.0169 0 - vertex -24.2375 -32.3527 0 - vertex -21.9074 -34.6287 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -23.5218 -31.031 0 - vertex -21.2682 -33.2523 0 - vertex -23.4513 -30.847 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.7839 -33.2498 0 - vertex -21.9074 -34.6287 0 - vertex -24.2375 -32.3527 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -19.7699 -29.7113 0 - vertex -23.4345 -30.738 0 - vertex -21.2682 -33.2523 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.9074 -34.6287 0 - vertex -24.7839 -33.2498 0 - vertex -22.1824 -35.1035 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.1824 -35.1035 0 - vertex -24.7839 -33.2498 0 - vertex -22.4463 -35.4568 0 + vertex -12.3385 -33.8339 0 + vertex -16.8281 -32.7116 0 + vertex -13.0448 -35.0276 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex -23.665 -35.9691 0 - vertex -22.4463 -35.4568 0 - vertex -24.7839 -33.2498 0 + vertex -14.3732 -35.9691 0 + vertex -13.0448 -35.0276 0 + vertex -16.8281 -32.7116 0 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 1 outer loop - vertex -23.4513 -30.847 0 - vertex -21.2682 -33.2523 0 - vertex -23.4345 -30.738 0 + vertex -13.0448 -35.0276 0 + vertex -14.3732 -35.9691 0 + vertex -13.7203 -35.7356 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -14.3732 -35.9691 0 + vertex -16.8281 -32.7116 0 + vertex -14.8949 -36.1495 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex -23.4345 -30.738 0 - vertex -19.7699 -29.7113 0 - vertex -23.4571 -30.6716 0 + vertex -16.5846 -36.2152 0 + vertex -14.8949 -36.1495 0 + vertex -16.8281 -32.7116 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -19.7699 -29.7113 0 - vertex -23.5012 -30.6026 0 - vertex -23.4571 -30.6716 0 + vertex -16.6989 -37.6188 0 + vertex -15.9213 -37.1689 0 + vertex -16.2226 -36.752 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -19.7699 -29.7113 0 - vertex -23.6433 -30.465 0 - vertex -23.5012 -30.6026 0 + vertex -14.8949 -36.1495 0 + vertex -16.5846 -36.2152 0 + vertex -15.4682 -36.5832 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -15.4682 -36.5832 0 + vertex -16.2226 -36.752 0 + vertex -15.9213 -37.1689 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -15.4682 -36.5832 0 + vertex -16.5846 -36.2152 0 + vertex -16.2226 -36.752 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -17.7285 -35.3062 0 + vertex -16.5846 -36.2152 0 + vertex -16.8281 -32.7116 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -16.5846 -36.2152 0 + vertex -17.7285 -35.3062 0 + vertex -17.3742 -35.9691 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -17.3742 -35.9691 0 + vertex -17.7285 -35.3062 0 + vertex -17.6987 -35.8223 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -10.3766 -20.1728 0 + vertex -11.7016 -19.4898 0 + vertex -11.6824 -19.9072 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -3.45272 -3.03042 0 + vertex -11.9141 -19.2259 0 + vertex -11.7016 -19.4898 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -3.45272 -3.03042 0 + vertex -17.4385 -11.5861 0 + vertex -11.9141 -19.2259 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -17.5299 12.3491 0 + vertex -3.71458 -2.66291 0 + vertex -13.7227 13.3517 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -17.4456 -12.0833 0 + vertex -11.9141 -19.2259 0 + vertex -17.4385 -11.5861 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -11.9141 -19.2259 0 + vertex -17.4456 -12.0833 0 + vertex -12.3137 -19.1333 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -17.7993 -11.4712 0 + vertex -3.71458 -2.66291 0 + vertex -17.5299 12.3491 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -3.71458 -2.66291 0 + vertex -17.7993 -11.4712 0 + vertex -17.4385 -11.5861 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -20.0298 12.0063 0 + vertex -17.7993 -11.4712 0 + vertex -17.5299 12.3491 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -22.4428 11.7593 0 + vertex -17.7993 -11.4712 0 + vertex -20.0298 12.0063 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -27.1868 -11.3523 0 + vertex -22.4428 11.7593 0 + vertex -25.7097 11.6586 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -22.4428 11.7593 0 + vertex -27.1868 -11.3523 0 + vertex -17.7993 -11.4712 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -28.6588 11.7129 0 + vertex -27.1868 -11.3523 0 + vertex -25.7097 11.6586 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -34.87 -11.3196 0 + vertex -28.6588 11.7129 0 + vertex -30.1182 11.9311 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -36.792 -11.6364 0 + vertex -30.1182 11.9311 0 + vertex -30.3887 12.6783 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -35.7552 21.6337 0 + vertex -30.3887 12.6783 0 + vertex -33.0651 20.3093 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -28.6588 11.7129 0 + vertex -34.87 -11.3196 0 + vertex -27.1868 -11.3523 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -37.6991 23.0789 0 + vertex -30.3887 12.6783 0 + vertex -35.7552 21.6337 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -30.1182 11.9311 0 + vertex -36.1936 -11.4238 0 + vertex -34.87 -11.3196 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -30.1182 11.9311 0 + vertex -36.792 -11.6364 0 + vertex -36.1936 -11.4238 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -30.3887 12.6783 0 + vertex -37.6991 23.0789 0 + vertex -36.792 -11.6364 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -36.792 -11.6364 0 + vertex -37.6991 23.0789 0 + vertex -37.3951 -12.1929 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -38.3729 23.836 0 + vertex -37.3951 -12.1929 0 + vertex -37.6991 23.0789 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -3.80393 -35.193 0 + vertex -7.51249 -36.3769 0 + vertex -7.31439 -36.7536 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -3.99709 -33.5697 0 + vertex -8.33648 -34.384 0 + vertex -7.51249 -36.3769 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -7.51249 -36.3769 0 + vertex -8.33648 -34.384 0 + vertex -7.98605 -36.0592 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -8.56822 -35.3052 0 + vertex -7.98605 -36.0592 0 + vertex -8.33648 -34.384 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -7.98605 -36.0592 0 + vertex -8.56822 -35.3052 0 + vertex -8.51129 -35.7129 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 1.41055 11.926 0 + vertex 1.8467 12.7398 0 + vertex 1.50002 13.1874 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 1.8467 12.7398 0 + vertex 1.41055 11.926 0 + vertex 1.87173 12.344 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 0.918757 13.5702 0 + vertex 1.41055 11.926 0 + vertex 1.50002 13.1874 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 0.918757 13.5702 0 + vertex 0.535115 11.4454 0 + vertex 1.41055 11.926 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 0.918757 13.5702 0 + vertex -0.394194 11.1972 0 + vertex 0.535115 11.4454 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -0.928844 14.138 0 + vertex -0.394194 11.1972 0 + vertex 0.918757 13.5702 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -0.928844 14.138 0 + vertex -1.46211 11.1697 0 + vertex -0.394194 11.1972 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -0.928844 14.138 0 + vertex -2.75335 11.3511 0 + vertex -1.46211 11.1697 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -3.65881 14.4362 0 + vertex -2.75335 11.3511 0 + vertex -0.928844 14.138 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -3.65881 14.4362 0 + vertex -5.07797 11.6776 0 + vertex -2.75335 11.3511 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -7.23385 14.4578 0 + vertex -5.07797 11.6776 0 + vertex -3.65881 14.4362 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -5.07797 11.6776 0 + vertex -7.23385 14.4578 0 + vertex -5.71478 11.6495 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -5.71478 11.6495 0 + vertex -7.23385 14.4578 0 + vertex -5.93765 11.491 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -13.7227 13.3517 0 + vertex -5.93765 11.491 0 + vertex -10.6367 14.238 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -4.99153 10.6633 0 + vertex -13.7227 13.3517 0 + vertex -3.71458 -2.66291 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -3.45272 -3.03042 0 + vertex -8.78621 -19.378 0 + vertex -7.1272 -19.1706 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -3.45272 -3.03042 0 + vertex -11.7016 -19.4898 0 + vertex -8.78621 -19.378 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -11.7016 -19.4898 0 + vertex -10.3766 -20.1728 0 + vertex -8.78621 -19.378 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -11.8627 -20.4599 0 + vertex -10.3766 -20.1728 0 + vertex -11.6824 -19.9072 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -10.3766 -20.1728 0 + vertex -11.8627 -20.4599 0 + vertex -12.0544 -21.102 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -12.3137 -19.1333 0 + vertex -17.4456 -12.0833 0 + vertex -15.1553 -19.8912 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -19.3785 -17.1305 0 + vertex -15.1553 -19.8912 0 + vertex -17.4456 -12.0833 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -15.1553 -19.8912 0 + vertex -19.3785 -17.1305 0 + vertex -17.9982 -20.7653 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -19.683 -17.584 0 + vertex -17.9982 -20.7653 0 + vertex -19.3785 -17.1305 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -20.1126 -17.9213 0 + vertex -17.9982 -20.7653 0 + vertex -19.683 -17.584 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -17.9982 -20.7653 0 + vertex -20.1126 -17.9213 0 + vertex -18.4336 -21.0091 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -17.8179 -22.6324 0 + vertex -17.299 -23.335 0 + vertex -17.2695 -22.7276 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -18.3659 -22.5704 0 + vertex -17.299 -23.335 0 + vertex -17.8179 -22.6324 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -18.3659 -22.5704 0 + vertex -18.5428 -26.6889 0 + vertex -17.299 -23.335 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -18.6886 -22.3738 0 + vertex -18.5428 -26.6889 0 + vertex -18.3659 -22.5704 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -18.7084 -21.5139 0 + vertex -22.6991 -20.0641 0 + vertex -18.7986 -22.0269 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -20.6062 -18.108 0 + vertex -18.4336 -21.0091 0 + vertex -20.1126 -17.9213 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -18.4336 -21.0091 0 + vertex -20.6062 -18.108 0 + vertex -18.7084 -21.5139 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -22.6991 -20.0641 0 + vertex -20.6062 -18.108 0 + vertex -22.6057 -19.3555 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -20.6062 -18.108 0 + vertex -22.6991 -20.0641 0 + vertex -18.7084 -21.5139 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -22.6057 -19.3555 0 + vertex -20.6062 -18.108 0 + vertex -21.1029 -18.1093 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -23.1278 -21.2395 0 + vertex -18.7986 -22.0269 0 + vertex -22.6991 -20.0641 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -22.6057 -19.3555 0 + vertex -21.1029 -18.1093 0 + vertex -21.3898 -18.0171 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -22.8641 -19.008 0 + vertex -21.3898 -18.0171 0 + vertex -21.538 -17.8042 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -23.4908 -18.9156 0 + vertex -21.538 -17.8042 0 + vertex -21.5846 -16.4428 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -22.1413 -14.5577 0 + vertex -21.5846 -16.4428 0 + vertex -21.6401 -15.0493 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -22.1413 -14.5577 0 + vertex -21.6401 -15.0493 0 + vertex -21.8106 -14.7733 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -18.7986 -22.0269 0 + vertex -23.1278 -21.2395 0 + vertex -18.6886 -22.3738 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -21.5846 -16.4428 0 + vertex -22.1413 -14.5577 0 + vertex -23.3419 -14.2877 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -24.4076 -24.3815 0 + vertex -18.6886 -22.3738 0 + vertex -23.1278 -21.2395 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -21.28 -33.2523 0 + vertex -22.458 -35.4568 0 + vertex -21.9191 -34.6287 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -21.3898 -18.0171 0 + vertex -22.8641 -19.008 0 + vertex -22.6057 -19.3555 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -21.5846 -16.4428 0 + vertex -23.3419 -14.2877 0 + vertex -23.4908 -18.9156 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -21.538 -17.8042 0 + vertex -23.4908 -18.9156 0 + vertex -22.8641 -19.008 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -23.3419 -14.2877 0 + vertex -24.1111 -19.1062 0 + vertex -23.4908 -18.9156 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -26.1195 -14.1654 0 + vertex -24.1111 -19.1062 0 + vertex -23.3419 -14.2877 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -24.1111 -19.1062 0 + vertex -26.1195 -14.1654 0 + vertex -24.7225 -19.9745 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -30.8809 -15.6487 0 + vertex -24.7225 -19.9745 0 + vertex -26.1195 -14.1654 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -24.7225 -19.9745 0 + vertex -30.8809 -15.6487 0 + vertex -25.7001 -21.2849 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -32.1593 -18.5412 0 + vertex -25.7001 -21.2849 0 + vertex -30.8809 -15.6487 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -30.8809 -15.6487 0 + vertex -26.1195 -14.1654 0 + vertex -29.5608 -14.1906 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -30.3887 -14.5514 0 + vertex -29.5608 -14.1906 0 + vertex -30.2116 -14.321 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -29.5608 -14.1906 0 + vertex -30.3887 -14.5514 0 + vertex -30.8809 -15.6487 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -25.7001 -21.2849 0 + vertex -32.1593 -18.5412 0 + vertex -26.9351 -22.1109 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -26.9351 -22.1109 0 + vertex -32.1593 -18.5412 0 + vertex -28.6031 -22.5277 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -28.6031 -22.5277 0 + vertex -32.1593 -18.5412 0 + vertex -30.8797 -22.6102 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex -33.3019 -21.4299 0 + vertex -30.8797 -22.6102 0 + vertex -32.1593 -18.5412 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -30.8797 -22.6102 0 + vertex -33.3019 -21.4299 0 + vertex -32.5249 -22.5543 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -33.3019 -21.4299 0 + vertex -33.3295 -22.4108 0 + vertex -32.5249 -22.5543 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex -23.8399 -30.3412 0 - vertex -19.7699 -29.7113 0 - vertex -24.9793 -25.8003 0 + vertex -33.3295 -22.4108 0 + vertex -33.3019 -21.4299 0 + vertex -33.5147 -22.0719 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -19.7699 -29.7113 0 - vertex -23.8399 -30.3412 0 - vertex -23.6433 -30.465 0 + vertex 14.2455 -2.23644 0 + vertex 14.2516 -3.15818 0 + vertex 14.333 -2.7489 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 14.2455 -2.23644 0 + vertex 13.8131 -3.7697 0 + vertex 14.2516 -3.15818 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 13.172 -4.2601 0 + vertex 14.2455 -2.23644 0 + vertex 13.5923 -0.94501 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 14.2455 -2.23644 0 + vertex 13.172 -4.2601 0 + vertex 13.8131 -3.7697 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 13.5923 -0.94501 0 + vertex 12.4032 -4.58609 0 + vertex 13.172 -4.2601 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 10.2758 -4.53506 0 + vertex 13.5923 -0.94501 0 + vertex 12.3489 0.629998 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 13.5923 -0.94501 0 + vertex 11.5814 -4.70438 0 + vertex 12.4032 -4.58609 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 7.74282 -3.09522 0 + vertex 12.3489 0.629998 0 + vertex 10.5724 2.40247 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 13.5923 -0.94501 0 + vertex 10.2758 -4.53506 0 + vertex 11.5814 -4.70438 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 6.41545 -1.76788 0 + vertex 10.5724 2.40247 0 + vertex 9.13441 3.60373 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 12.3489 0.629998 0 + vertex 9.01294 -4.00814 0 + vertex 10.2758 -4.53506 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 4.6091 0.441775 0 + vertex 9.13441 3.60373 0 + vertex 8.18559 4.25764 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 12.3489 0.629998 0 + vertex 7.74282 -3.09522 0 + vertex 9.01294 -4.00814 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 10.5724 2.40247 0 + vertex 6.41545 -1.76788 0 + vertex 7.74282 -3.09522 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 4.39665 0.754678 0 + vertex 8.18559 4.25764 0 + vertex 5.26682 5.76024 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 9.13441 3.60373 0 + vertex 4.6091 0.441775 0 + vertex 6.41545 -1.76788 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 8.18559 4.25764 0 + vertex 4.39665 0.754678 0 + vertex 4.6091 0.441775 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 1.66409 7.13679 0 + vertex 4.39665 0.754678 0 + vertex 5.26682 5.76024 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 4.39665 0.754678 0 + vertex 1.66409 7.13679 0 + vertex 4.24084 0.464987 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -3.55278 -2.51803 0 + vertex 4.24084 0.464987 0 + vertex 1.66409 7.13679 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 4.24084 0.464987 0 + vertex 1.09298 -4.60426 0 + vertex 3.9592 -5.58648 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -3.55278 -2.51803 0 + vertex 1.66409 7.13679 0 + vertex -0.248642 7.94666 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 4.24084 0.464987 0 + vertex -1.72768 -3.30659 0 + vertex 1.09298 -4.60426 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -3.55278 -2.51803 0 + vertex -0.248642 7.94666 0 + vertex -2.78119 9.30203 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 4.24084 0.464987 0 + vertex -3.55278 -2.51803 0 + vertex -1.72768 -3.30659 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -4.99153 10.6633 0 + vertex -3.55278 -2.51803 0 + vertex -2.78119 9.30203 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -1.19093 -26.1306 0 + vertex -4.26405 -24.3543 0 + vertex -2.25121 -28.0146 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -25.4624 -26.9141 0 - vertex -23.8399 -30.3412 0 - vertex -24.9793 -25.8003 0 + vertex -3.89417 -22.8317 0 + vertex 0.168338 -24.355 0 + vertex -3.85646 -21.6547 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -23.8399 -30.3412 0 - vertex -25.4624 -26.9141 0 - vertex -24.0701 -30.2475 0 + vertex 3.72385 -21.1527 0 + vertex -4.06681 -20.6308 0 + vertex 1.84511 -22.661 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.0701 -30.2475 0 - vertex -25.4624 -26.9141 0 - vertex -24.2803 -30.1833 0 + vertex -3.55278 -2.51803 0 + vertex -4.99153 10.6633 0 + vertex -3.71458 -2.66291 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -13.7227 13.3517 0 + vertex -4.99153 10.6633 0 + vertex -5.93765 11.491 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 3.854 -7.59505 0 + vertex -5.57075 -19.2012 0 + vertex -4.70045 -19.8327 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -25.8688 -27.7587 0 - vertex -24.2803 -30.1833 0 - vertex -25.4624 -26.9141 0 + vertex -10.6367 14.238 0 + vertex -5.93765 11.491 0 + vertex -7.23385 14.4578 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.2803 -30.1833 0 - vertex -25.8688 -27.7587 0 - vertex -24.455 -30.1541 0 + vertex -2.05653 -4.03047 0 + vertex -7.1272 -19.1706 0 + vertex -5.57075 -19.2012 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.455 -30.1541 0 - vertex -25.8688 -27.7587 0 - vertex -24.5406 -30.1604 0 + vertex 7.03104 -4.97268 0 + vertex 7.21237 -5.88439 0 + vertex 7.79727 -5.75259 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 5.81183 -5.98051 0 + vertex 7.03104 -4.97268 0 + vertex 5.97791 -3.63939 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 7.03104 -4.97268 0 + vertex 5.81183 -5.98051 0 + vertex 7.21237 -5.88439 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 3.9592 -5.58648 0 + vertex 5.97791 -3.63939 0 + vertex 5.02006 -2.01238 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 3.9592 -5.58648 0 + vertex 5.02006 -2.01238 0 + vertex 4.37015 -0.506109 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 5.97791 -3.63939 0 + vertex 3.9592 -5.58648 0 + vertex 5.81183 -5.98051 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 3.9592 -5.58648 0 + vertex 4.37015 -0.506109 0 + vertex 4.24084 0.464987 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 14.6656 -34.4466 0 + vertex 12.1385 -34.7994 0 + vertex 12.2351 -35.1874 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 14.7938 -32.2631 0 + vertex 11.871 -34.5351 0 + vertex 14.6656 -34.4466 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 14.6656 -34.4466 0 + vertex 11.871 -34.5351 0 + vertex 12.1385 -34.7994 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -26.0506 -28.0911 0 - vertex -24.5406 -30.1604 0 - vertex -25.8688 -27.7587 0 + vertex 10.915 -33.0747 0 + vertex 11.871 -34.5351 0 + vertex 11.4887 -31.4602 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.5406 -30.1604 0 - vertex -26.0506 -28.0911 0 - vertex -24.6311 -30.1847 0 + vertex 11.871 -34.5351 0 + vertex 10.915 -33.0747 0 + vertex 11.4551 -34.4353 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -26.2221 -28.3696 0 - vertex -24.6311 -30.1847 0 - vertex -26.0506 -28.0911 0 + vertex 10.7197 -33.9677 0 + vertex 11.4551 -34.4353 0 + vertex 10.915 -33.0747 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.6311 -30.1847 0 - vertex -26.2221 -28.3696 0 - vertex -24.8452 -30.2998 0 + vertex 11.4551 -34.4353 0 + vertex 10.7197 -33.9677 0 + vertex 10.9006 -34.3507 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 12.858 -14.1239 0 + vertex 13.2867 -16.8469 0 + vertex 14.1246 -14.3424 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 12.417 -13.7469 0 + vertex 13.2867 -16.8469 0 + vertex 12.858 -14.1239 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 12.417 -13.7469 0 + vertex 12.058 -19.7199 0 + vertex 13.2867 -16.8469 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 12.058 -19.7199 0 + vertex 12.417 -13.7469 0 + vertex 12.4073 -13.2773 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -26.3861 -28.5987 0 - vertex -24.8452 -30.2998 0 - vertex -26.2221 -28.3696 0 + vertex 11.8088 29.3224 0 + vertex 15.0577 29.0611 0 + vertex 12.0187 29.9363 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 15.122 28.0941 0 + vertex 11.7374 28.4518 0 + vertex 11.8052 27.5343 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 15.0577 29.0611 0 + vertex 11.8088 29.3224 0 + vertex 11.7374 28.4518 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 15.122 28.0941 0 + vertex 11.8052 27.5343 0 + vertex 12.0123 26.7794 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 15.122 28.0941 0 + vertex 12.0123 26.7794 0 + vertex 12.5486 25.9653 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 24.1542 17.4223 0 + vertex 24.7931 16.6725 0 + vertex 24.7174 17.1695 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 24.1542 17.4223 0 + vertex 23.3802 15.8262 0 + vertex 24.7931 16.6725 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 22.547 17.5015 0 + vertex 23.3802 15.8262 0 + vertex 24.1542 17.4223 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 22.547 17.5015 0 + vertex 21.1653 14.8489 0 + vertex 23.3802 15.8262 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 20.2159 17.5562 0 + vertex 21.1653 14.8489 0 + vertex 22.547 17.5015 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 20.2159 17.5562 0 + vertex 20.0668 14.6265 0 + vertex 21.1653 14.8489 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 18.4164 15.1559 0 + vertex 20.2159 17.5562 0 + vertex 19.8437 17.7553 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 16.5954 15.8977 0 + vertex 19.8437 17.7553 0 + vertex 19.5351 18.2611 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 15.2045 16.623 0 + vertex 19.5351 18.2611 0 + vertex 19.0948 20.2262 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 17.155 22.8321 0 + vertex 19.0948 20.2262 0 + vertex 18.6529 22.0992 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 20.2159 17.5562 0 + vertex 18.4164 15.1559 0 + vertex 20.0668 14.6265 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 13.99 17.4864 0 + vertex 19.0948 20.2262 0 + vertex 17.155 22.8321 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 19.8437 17.7553 0 + vertex 16.5954 15.8977 0 + vertex 18.4164 15.1559 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 12.6982 18.6425 0 + vertex 17.155 22.8321 0 + vertex 15.5055 23.4995 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 19.5351 18.2611 0 + vertex 15.2045 16.623 0 + vertex 16.5954 15.8977 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 10.9729 20.5521 0 + vertex 15.5055 23.4995 0 + vertex 14.0164 24.1527 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 19.0948 20.2262 0 + vertex 13.99 17.4864 0 + vertex 15.2045 16.623 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 10.9729 20.5521 0 + vertex 14.0164 24.1527 0 + vertex 13.0733 24.7212 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 17.155 22.8321 0 + vertex 12.6982 18.6425 0 + vertex 13.99 17.4864 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 9.71033 23.0922 0 + vertex 13.0733 24.7212 0 + vertex 12.1975 25.5292 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 9.07032 24.476 0 + vertex 12.1975 25.5292 0 + vertex 11.5037 26.4501 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 8.51885 25.3107 0 + vertex 11.5037 26.4501 0 + vertex 11.1066 27.3577 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 15.5055 23.4995 0 + vertex 10.9729 20.5521 0 + vertex 12.6982 18.6425 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 7.91411 25.7528 0 + vertex 11.1066 27.3577 0 + vertex 11.0411 28.3898 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -26.5458 -28.7827 0 - vertex -24.8452 -30.2998 0 - vertex -26.3861 -28.5987 0 + vertex 4.30515 36.0346 0 + vertex 12.0544 30.7144 0 + vertex 4.72188 37.0399 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.8452 -30.2998 0 - vertex -26.5458 -28.7827 0 - vertex -25.1341 -30.5242 0 + vertex 12.0544 30.7144 0 + vertex 4.30515 36.0346 0 + vertex 11.5971 30.3591 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -26.7039 -28.9262 0 - vertex -25.1341 -30.5242 0 - vertex -26.5458 -28.7827 0 + vertex 3.57109 31.3388 0 + vertex 11.5971 30.3591 0 + vertex 3.93589 34.5584 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -25.1341 -30.5242 0 - vertex -26.7039 -28.9262 0 - vertex -25.5344 -30.8827 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -26.8635 -29.0336 0 - vertex -25.5344 -30.8827 0 - vertex -26.7039 -28.9262 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.0275 -29.1093 0 - vertex -25.5344 -30.8827 0 - vertex -26.8635 -29.0336 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.1989 -29.1579 0 - vertex -25.5344 -30.8827 0 - vertex -27.0275 -29.1093 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.5344 -30.8827 0 - vertex -27.1989 -29.1579 0 - vertex -26.8166 -32.1012 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.3805 -29.1838 0 - vertex -26.8166 -32.1012 0 - vertex -27.1989 -29.1579 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.5755 -29.1914 0 - vertex -26.8166 -32.1012 0 - vertex -27.3805 -29.1838 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.9775 -29.1782 0 - vertex -26.8166 -32.1012 0 - vertex -27.5755 -29.1914 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.8166 -32.1012 0 - vertex -27.9775 -29.1782 0 - vertex -27.3602 -32.5933 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.0989 -29.15 0 - vertex -27.3602 -32.5933 0 - vertex -27.9775 -29.1782 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.3602 -32.5933 0 - vertex -28.0989 -29.15 0 - vertex -27.924 -33.0516 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.176 -29.097 0 - vertex -27.924 -33.0516 0 - vertex -28.0989 -29.15 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.2461 -34.4632 0 - vertex -28.176 -29.097 0 - vertex -28.2154 -29.0113 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.176 -29.097 0 - vertex -28.5012 -33.4718 0 - vertex -27.924 -33.0516 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.1303 -25.4759 0 - vertex -28.2154 -29.0113 0 - vertex -28.2235 -28.8853 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.0734 -25.6205 0 - vertex -27.9393 -26.9734 0 - vertex -28.7678 -25.6646 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9179 -25.5457 0 - vertex -27.9393 -26.9734 0 - vertex -29.0734 -25.6205 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.9393 -26.9734 0 - vertex -29.9179 -25.5457 0 - vertex -28.1721 -28.4809 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.9759 -25.4949 0 - vertex -28.1721 -28.4809 0 - vertex -29.9179 -25.5457 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1721 -28.4809 0 - vertex -30.9759 -25.4949 0 - vertex -28.2235 -28.8853 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.1303 -25.4759 0 - vertex -28.2235 -28.8853 0 - vertex -30.9759 -25.4949 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.176 -29.097 0 - vertex -29.0852 -33.8499 0 - vertex -28.5012 -33.4718 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.176 -29.097 0 - vertex -29.669 -34.1817 0 - vertex -29.0852 -33.8499 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2154 -29.0113 0 - vertex -32.1303 -25.4759 0 - vertex -36.4516 -28.8697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.176 -29.097 0 - vertex -30.2461 -34.4632 0 - vertex -29.669 -34.1817 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2154 -29.0113 0 - vertex -36.4516 -28.8697 0 - vertex -30.8095 -34.6902 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2154 -29.0113 0 - vertex -30.8095 -34.6902 0 - vertex -30.2461 -34.4632 0 + vertex 11.5971 30.3591 0 + vertex 4.30515 36.0346 0 + vertex 3.93589 34.5584 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex -31.9023 -34.9414 0 - vertex -30.8095 -34.6902 0 - vertex -36.4516 -28.8697 0 + vertex 4.3138 28.4461 0 + vertex 11.5971 30.3591 0 + vertex 3.57109 31.3388 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -30.8095 -34.6902 0 - vertex -31.5797 -34.902 0 - vertex -31.3526 -34.8586 0 + vertex 11.5971 30.3591 0 + vertex 4.3138 28.4461 0 + vertex 5.72413 26.6445 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -30.8095 -34.6902 0 - vertex -31.9023 -34.9414 0 - vertex -31.5797 -34.902 0 + vertex 4.3138 28.4461 0 + vertex 3.57109 31.3388 0 + vertex 3.67763 29.7129 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -31.9023 -34.9414 0 - vertex -36.4516 -28.8697 0 - vertex -32.7769 -35.0076 0 + vertex -6.41168 -29.738 0 + vertex -2.25121 -28.0146 0 + vertex -4.26405 -24.3543 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -35.4707 -26.6225 0 - vertex -32.1303 -25.4759 0 - vertex -34.9509 -25.4747 0 + vertex -2.25121 -28.0146 0 + vertex -6.41168 -29.738 0 + vertex -3.14673 -30.0798 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -36.4516 -28.8697 0 - vertex -32.1303 -25.4759 0 - vertex -35.4707 -26.6225 0 + vertex -3.14673 -30.0798 0 + vertex -6.41168 -29.738 0 + vertex -3.7659 -32.0301 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -32.7769 -35.0076 0 - vertex -36.4516 -28.8697 0 - vertex -33.8615 -35.0556 0 + vertex 33.8444 -30.1753 0 + vertex 30.1062 -30.7807 0 + vertex 30.2029 -31.1764 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 30.7817 -27.1595 0 + vertex 29.6885 -30.4984 0 + vertex 30.1062 -30.7807 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -37.5165 -31.4193 0 - vertex -33.8615 -35.0556 0 - vertex -36.4516 -28.8697 0 + vertex 28.9763 -27.4135 0 + vertex 29.6885 -30.4984 0 + vertex 30.7817 -27.1595 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -33.8615 -35.0556 0 - vertex -37.5165 -31.4193 0 - vertex -35.0412 -35.0835 0 + vertex 29.6885 -30.4984 0 + vertex 28.9763 -27.4135 0 + vertex 29.2916 -30.4642 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -35.0412 -35.0835 0 - vertex -37.5165 -31.4193 0 - vertex -36.2012 -35.0898 0 + vertex 28.9763 -27.4135 0 + vertex 28.199 -31.2235 0 + vertex 29.2916 -30.4642 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -38.3711 -33.5534 0 - vertex -36.2012 -35.0898 0 - vertex -37.5165 -31.4193 0 + vertex 25.3774 -27.4375 0 + vertex 28.199 -31.2235 0 + vertex 28.9763 -27.4135 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -36.2012 -35.0898 0 - vertex -38.3711 -33.5534 0 - vertex -37.2267 -35.0727 0 + vertex 28.199 -31.2235 0 + vertex 25.3774 -27.4375 0 + vertex 26.4192 -32.7448 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -37.2267 -35.0727 0 - vertex -38.3711 -33.5534 0 - vertex -38.0027 -35.0306 0 + vertex 25.3774 -27.4375 0 + vertex 24.9271 -33.7368 0 + vertex 26.4192 -32.7448 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -38.6277 -34.2404 0 - vertex -38.0027 -35.0306 0 - vertex -38.3711 -33.5534 0 + vertex 19.5138 -29.5327 0 + vertex 24.9271 -33.7368 0 + vertex 25.3774 -27.4375 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -38.0027 -35.0306 0 - vertex -38.6277 -34.2404 0 - vertex -38.2613 -34.9997 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.2613 -34.9997 0 - vertex -38.6277 -34.2404 0 - vertex -38.4144 -34.9619 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.4144 -34.9619 0 - vertex -38.6277 -34.2404 0 - vertex -38.5336 -34.8886 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.6277 -34.2404 0 - vertex -38.6312 -34.7874 0 - vertex -38.5336 -34.8886 0 + vertex 24.9271 -33.7368 0 + vertex 19.5138 -29.5327 0 + vertex 23.5816 -34.2758 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -38.7214 -34.5543 0 - vertex -38.6312 -34.7874 0 - vertex -38.6277 -34.2404 0 + vertex 19.3087 -31.0557 0 + vertex 23.5816 -34.2758 0 + vertex 19.5138 -29.5327 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -38.6312 -34.7874 0 - vertex -38.7214 -34.5543 0 - vertex -38.6971 -34.6715 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -23.3082 -35.9449 0 - vertex -22.4463 -35.4568 0 - vertex -23.665 -35.9691 0 + vertex 22.2417 -34.4379 0 + vertex 19.3087 -31.0557 0 + vertex 21.4183 -34.349 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -22.5782 -35.5929 0 - vertex -23.3082 -35.9449 0 - vertex -22.7126 -35.7044 0 + vertex 19.9054 -28.0436 0 + vertex 25.3774 -27.4375 0 + vertex 20.1129 -27.4424 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -22.7126 -35.7044 0 - vertex -23.3082 -35.9449 0 - vertex -22.8511 -35.7934 0 + vertex 19.5138 -29.5327 0 + vertex 25.3774 -27.4375 0 + vertex 19.9054 -28.0436 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -22.8511 -35.7934 0 - vertex -23.3082 -35.9449 0 - vertex -22.9953 -35.8619 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.9953 -35.8619 0 - vertex -23.3082 -35.9449 0 - vertex -23.1471 -35.9117 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.4463 -35.4568 0 - vertex -23.3082 -35.9449 0 - vertex -22.5782 -35.5929 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.665 -35.9691 0 - vertex -24.7839 -33.2498 0 - vertex -23.8593 -35.9891 0 + vertex 23.5816 -34.2758 0 + vertex 19.3087 -31.0557 0 + vertex 22.2417 -34.4379 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -25.4011 -34.2168 0 - vertex -23.8593 -35.9891 0 - vertex -24.7839 -33.2498 0 + vertex 19.3085 -32.3556 0 + vertex 21.4183 -34.349 0 + vertex 19.3087 -31.0557 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -23.8593 -35.9891 0 - vertex -25.4011 -34.2168 0 - vertex -24.0497 -36.0458 0 + vertex 21.4183 -34.349 0 + vertex 19.3085 -32.3556 0 + vertex 20.6651 -34.0963 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.0497 -36.0458 0 - vertex -25.4011 -34.2168 0 - vertex -24.2334 -36.1344 0 + vertex 20.6651 -34.0963 0 + vertex 19.3085 -32.3556 0 + vertex 20.0228 -33.6987 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 20.0228 -33.6987 0 + vertex 19.3085 -32.3556 0 + vertex 19.5322 -33.1754 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 45.3585 -24.1311 0 + vertex 37.9618 -36.3241 0 + vertex 38.113 -36.8464 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -26.0482 -35.1877 0 - vertex -24.2334 -36.1344 0 - vertex -25.4011 -34.2168 0 + vertex 36.8272 -33.2656 0 + vertex 37.9618 -36.3241 0 + vertex 38.2188 -29.6614 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.2334 -36.1344 0 - vertex -26.0482 -35.1877 0 - vertex -24.4077 -36.2501 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.4077 -36.2501 0 - vertex -26.0482 -35.1877 0 - vertex -24.57 -36.3881 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.57 -36.3881 0 - vertex -26.0482 -35.1877 0 - vertex -24.7177 -36.5437 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.7177 -36.5437 0 - vertex -26.0482 -35.1877 0 - vertex -24.8479 -36.7119 0 + vertex 37.9618 -36.3241 0 + vertex 36.8272 -33.2656 0 + vertex 37.1913 -36.0604 0 endloop endfacet facet normal -0 0 1 outer loop - vertex -26.6839 -36.0968 0 - vertex -24.8479 -36.7119 0 - vertex -26.0482 -35.1877 0 + vertex 36.2918 -35.0946 0 + vertex 37.1913 -36.0604 0 + vertex 36.8272 -33.2656 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.8479 -36.7119 0 - vertex -26.6839 -36.0968 0 - vertex -24.9582 -36.888 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.0457 -37.0673 0 - vertex -26.6839 -36.0968 0 - vertex -25.1078 -37.2448 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.9582 -36.888 0 - vertex -26.6839 -36.0968 0 - vertex -25.0457 -37.0673 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.2799 26.5937 0 - vertex -21.2669 26.4994 0 - vertex -21.2563 26.5576 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.3473 26.6332 0 - vertex -21.2669 26.4994 0 - vertex -21.2799 26.5937 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.2669 26.4994 0 - vertex -21.3473 26.6332 0 - vertex -21.2997 26.4466 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.3473 26.6332 0 - vertex -21.3558 26.3992 0 - vertex -21.2997 26.4466 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.3473 26.6332 0 - vertex -21.4368 26.3569 0 - vertex -21.3558 26.3992 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5951 26.7172 0 - vertex -21.4368 26.3569 0 - vertex -21.3473 26.6332 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5951 26.7172 0 - vertex -21.6785 26.2874 0 - vertex -21.4368 26.3569 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.9618 26.7994 0 - vertex -21.6785 26.2874 0 - vertex -21.5951 26.7172 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.9618 26.7994 0 - vertex -22.0356 26.2369 0 - vertex -21.6785 26.2874 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.4095 26.8695 0 - vertex -22.0356 26.2369 0 - vertex -21.9618 26.7994 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.4095 26.8695 0 - vertex -22.5186 26.2045 0 - vertex -22.0356 26.2369 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.8078 26.9423 0 - vertex -22.5186 26.2045 0 - vertex -22.4095 26.8695 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.8078 26.9423 0 - vertex -23.1385 26.1891 0 - vertex -22.5186 26.2045 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.1972 27.0531 0 - vertex -23.1385 26.1891 0 - vertex -22.8078 26.9423 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.56 27.1917 0 - vertex -23.1385 26.1891 0 - vertex -23.1972 27.0531 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.8316 26.205 0 - vertex -23.56 27.1917 0 - vertex -23.8785 27.3484 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.8316 26.205 0 - vertex -23.8785 27.3484 0 - vertex -24.1346 27.513 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.8316 26.205 0 - vertex -24.1346 27.513 0 - vertex -24.3107 27.6757 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.56 27.1917 0 - vertex -24.8316 26.205 0 - vertex -23.1385 26.1891 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.3632 27.7532 0 - vertex -24.8316 26.205 0 - vertex -24.3107 27.6757 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.3751 26.2567 0 - vertex -24.3632 27.7532 0 - vertex -24.3889 27.8265 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.1768 -3.32005 0 - vertex 14.3448 -2.7489 0 - vertex 14.3217 -2.5049 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.3448 -2.7489 0 - vertex 14.2634 -3.15818 0 - vertex 14.3256 -2.96711 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.0741 -3.47638 0 - vertex 14.3217 -2.5049 0 - vertex 14.2572 -2.23644 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.3448 -2.7489 0 - vertex 14.1768 -3.32005 0 - vertex 14.2634 -3.15818 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.8248 -3.7697 0 - vertex 14.2572 -2.23644 0 - vertex 14.1524 -1.94488 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.3217 -2.5049 0 - vertex 14.0741 -3.47638 0 - vertex 14.1768 -3.32005 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.5249 -4.03275 0 - vertex 14.1524 -1.94488 0 - vertex 14.008 -1.63155 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.1837 -4.26011 0 - vertex 14.008 -1.63155 0 - vertex 13.8249 -1.29782 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.2572 -2.23644 0 - vertex 13.8248 -3.7697 0 - vertex 14.0741 -3.47638 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.4149 -4.5861 0 - vertex 13.8249 -1.29782 0 - vertex 13.604 -0.945011 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.1524 -1.94488 0 - vertex 13.5249 -4.03275 0 - vertex 13.8248 -3.7697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.26 -4.69402 0 - vertex 13.604 -0.945011 0 - vertex 13.3463 -0.574481 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.008 -1.63155 0 - vertex 13.1837 -4.26011 0 - vertex 13.5249 -4.03275 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.608 -4.6098 0 - vertex 13.3463 -0.574481 0 - vertex 13.0525 -0.187573 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.8249 -1.29782 0 - vertex 12.8106 -4.44636 0 - vertex 13.1837 -4.26011 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.65389 -4.31807 0 - vertex 13.0525 -0.187573 0 - vertex 12.7237 0.214368 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.8249 -1.29782 0 - vertex 12.4149 -4.5861 0 - vertex 12.8106 -4.44636 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.02468 -4.00814 0 - vertex 12.7237 0.214368 0 - vertex 12.3607 0.629996 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.604 -0.945011 0 - vertex 12.006 -4.67391 0 - vertex 12.4149 -4.5861 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.604 -0.945011 0 - vertex 11.5931 -4.70438 0 - vertex 12.006 -4.67391 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.0755 -3.36119 0 - vertex 12.3607 0.629996 0 - vertex 11.5355 1.49693 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.604 -0.945011 0 - vertex 11.26 -4.69402 0 - vertex 11.5931 -4.70438 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.3463 -0.574481 0 - vertex 10.9319 -4.66264 0 - vertex 11.26 -4.69402 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.3463 -0.574481 0 - vertex 10.608 -4.6098 0 - vertex 10.9319 -4.66264 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.10115 -2.48513 0 - vertex 11.5355 1.49693 0 - vertex 10.5842 2.40247 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.0525 -0.187573 0 - vertex 10.2875 -4.53506 0 - vertex 10.608 -4.6098 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.0525 -0.187573 0 - vertex 9.96977 -4.43796 0 - vertex 10.2875 -4.53506 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.0525 -0.187573 0 - vertex 9.65389 -4.31807 0 - vertex 9.96977 -4.43796 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.79491 -1.04264 0 - vertex 10.5842 2.40247 0 - vertex 9.61741 3.25086 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.7237 0.214368 0 - vertex 9.33912 -4.17495 0 - vertex 9.65389 -4.31807 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.03464 3.65533 0 - vertex 9.61741 3.25086 0 - vertex 9.29624 3.50894 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.03464 3.65533 0 - vertex 9.29624 3.50894 0 - vertex 9.14614 3.60373 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.61741 3.25086 0 - vertex 9.03464 3.65533 0 - vertex 5.79491 -1.04264 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.7237 0.214368 0 - vertex 9.02468 -4.00814 0 - vertex 9.33912 -4.17495 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.24358 -0.384283 0 - vertex 9.03464 3.65533 0 - vertex 8.81858 3.79581 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3607 0.629996 0 - vertex 8.70978 -3.81721 0 - vertex 9.02468 -4.00814 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3607 0.629996 0 - vertex 8.39365 -3.60171 0 - vertex 8.70978 -3.81721 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.62083 0.441773 0 - vertex 8.81858 3.79581 0 - vertex 8.19732 4.25764 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3607 0.629996 0 - vertex 8.0755 -3.36119 0 - vertex 8.39365 -3.60171 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.49221 0.674515 0 - vertex 8.19732 4.25764 0 - vertex 8.00725 4.39171 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5355 1.49693 0 - vertex 7.75455 -3.09522 0 - vertex 8.0755 -3.36119 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.49221 0.674515 0 - vertex 8.00725 4.39171 0 - vertex 7.75154 4.54807 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5355 1.49693 0 - vertex 7.10115 -2.48513 0 - vertex 7.75455 -3.09522 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.44662 0.733548 0 - vertex 7.75154 4.54807 0 - vertex 7.07462 4.9138 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.5842 2.40247 0 - vertex 6.42718 -1.76788 0 - vertex 7.10115 -2.48513 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.40839 0.754677 0 - vertex 7.07462 4.9138 0 - vertex 6.22936 5.32709 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.5842 2.40247 0 - vertex 5.79491 -1.04264 0 - vertex 6.42718 -1.76788 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.40839 0.754677 0 - vertex 6.22936 5.32709 0 - vertex 5.27855 5.76024 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.03464 3.65533 0 - vertex 5.24358 -0.384283 0 - vertex 5.79491 -1.04264 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.81858 3.79581 0 - vertex 4.83246 0.134689 0 - vertex 5.24358 -0.384283 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.19732 4.25764 0 - vertex 4.49221 0.674515 0 - vertex 4.62083 0.441773 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.81858 3.79581 0 - vertex 4.62083 0.441773 0 - vertex 4.83246 0.134689 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.75154 4.54807 0 - vertex 4.44662 0.733548 0 - vertex 4.49221 0.674515 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.07462 4.9138 0 - vertex 4.40839 0.754677 0 - vertex 4.44662 0.733548 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.285 6.1855 0 - vertex 4.40839 0.754677 0 - vertex 5.27855 5.76024 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.40839 0.754677 0 - vertex 4.285 6.1855 0 - vertex 4.3737 0.738144 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.31149 6.57517 0 - vertex 4.3737 0.738144 0 - vertex 4.285 6.1855 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.42084 6.9015 0 - vertex 4.3737 0.738144 0 - vertex 3.31149 6.57517 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.3737 0.738144 0 - vertex 2.42084 6.9015 0 - vertex 4.33872 0.684191 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.67583 7.13679 0 - vertex 4.33872 0.684191 0 - vertex 2.42084 6.9015 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.30727 7.25861 0 - vertex 4.33872 0.684191 0 - vertex 1.67583 7.13679 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.22446 0.295049 0 - vertex 3.25174 -5.37115 0 - vertex 3.97093 -5.58648 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.22446 0.295049 0 - vertex 2.534 -5.13555 0 - vertex 3.25174 -5.37115 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.33872 0.684191 0 - vertex 1.30727 7.25861 0 - vertex 4.25257 0.464986 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.22446 0.295049 0 - vertex 1.81816 -4.87986 0 - vertex 2.534 -5.13555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.87688 -2.74967 0 - vertex 4.25257 0.464986 0 - vertex 1.30727 7.25861 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -2.32857 -3.00041 0 - vertex 4.25257 0.464986 0 - vertex -2.87688 -2.74967 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.22446 0.295049 0 - vertex 1.10471 -4.60426 0 - vertex 1.81816 -4.87986 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.87688 -2.74967 0 - vertex 1.30727 7.25861 0 - vertex 0.855811 7.43981 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.22446 0.295049 0 - vertex 0.394112 -4.30895 0 - vertex 1.10471 -4.60426 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.301 -2.58026 0 - vertex 0.855811 7.43981 0 - vertex -0.23691 7.94665 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.22446 0.295049 0 - vertex -0.313177 -3.99411 0 - vertex 0.394112 -4.30895 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.22446 0.295049 0 - vertex -1.01669 -3.65993 0 - vertex -0.313177 -3.99411 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.54104 -2.51804 0 - vertex -0.23691 7.94665 0 - vertex -1.48458 8.58988 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.22446 0.295049 0 - vertex -1.71595 -3.30659 0 - vertex -1.01669 -3.65993 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.22446 0.295049 0 - vertex -2.32857 -3.00041 0 - vertex -1.71595 -3.30659 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.62666 -2.52788 0 - vertex -1.48458 8.58988 0 - vertex -2.76946 9.30203 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.25257 0.464986 0 - vertex -2.32857 -3.00041 0 - vertex 4.22446 0.295049 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.855811 7.43981 0 - vertex -3.301 -2.58026 0 - vertex -2.87688 -2.74967 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.23691 7.94665 0 - vertex -3.54104 -2.51804 0 - vertex -3.301 -2.58026 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.48458 8.58988 0 - vertex -3.62666 -2.52788 0 - vertex -3.54104 -2.51804 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.76946 9.30203 0 - vertex -3.68113 -2.55635 0 - vertex -3.62666 -2.52788 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.97378 10.0157 0 - vertex -3.68113 -2.55635 0 - vertex -2.76946 9.30203 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -4.59396 -25.347 0 - vertex -1.45361 -26.5684 0 - vertex -4.25232 -24.3543 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -3.84473 -21.6547 0 - vertex -3.82849 -22.2203 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -3.87719 -21.3353 0 - vertex -3.84473 -21.6547 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -3.91934 -21.0662 0 - vertex -3.87719 -21.3353 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.9798 10.6633 0 - vertex -3.68113 -2.55635 0 - vertex -3.97378 10.0157 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.37165 10.9414 0 - vertex -3.68113 -2.55635 0 - vertex -4.9798 10.6633 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -3.97677 -20.8354 0 - vertex -3.91934 -21.0662 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -4.05507 -20.6308 0 - vertex -3.97677 -20.8354 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -4.15983 -20.4402 0 - vertex -4.05507 -20.6308 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -4.29663 -20.2518 0 - vertex -4.15983 -20.4402 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -4.47107 -20.0532 0 - vertex -4.29663 -20.2518 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -4.68872 -19.8327 0 - vertex -4.47107 -20.0532 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -4.93899 -19.592 0 - vertex -4.68872 -19.8327 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.66976 11.1776 0 - vertex -3.68113 -2.55635 0 - vertex -5.37165 10.9414 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -5.14898 -19.4116 0 - vertex -4.93899 -19.592 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -5.34642 -19.2839 0 - vertex -5.14898 -19.4116 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.68113 -2.55635 0 - vertex -5.66976 11.1776 0 - vertex -3.70601 -2.60189 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -5.55901 -19.2012 0 - vertex -5.34642 -19.2839 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.85942 11.3636 0 - vertex -3.70601 -2.60189 0 - vertex -5.66976 11.1776 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -5.8145 -19.1562 0 - vertex -5.55901 -19.2012 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4002 -11.6639 0 - vertex -5.85942 11.3636 0 - vertex -5.90899 11.4352 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.85942 11.3636 0 - vertex -17.4002 -11.6639 0 - vertex -3.70601 -2.60189 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4002 -11.6639 0 - vertex -5.90899 11.4352 0 - vertex -5.92592 11.491 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.70285 -2.66292 0 - vertex -6.14058 -19.1411 0 - vertex -5.8145 -19.1562 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.04277 -4.97268 0 - vertex 7.2241 -5.88439 0 - vertex 7.809 -5.75259 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.04277 -4.97268 0 - vertex 6.87672 -5.95074 0 - vertex 7.2241 -5.88439 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.53505 -5.98957 0 - vertex 7.04277 -4.97268 0 - vertex 6.78219 -4.68956 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.04277 -4.97268 0 - vertex 6.53505 -5.98957 0 - vertex 6.87672 -5.95074 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.82356 -5.98052 0 - vertex 6.78219 -4.68956 0 - vertex 6.51759 -4.36865 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.4311 -5.93055 0 - vertex 6.51759 -4.36865 0 - vertex 6.2523 -4.01644 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.78219 -4.68956 0 - vertex 6.18777 -5.99984 0 - vertex 6.53505 -5.98957 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.99906 -5.84891 0 - vertex 6.2523 -4.01644 0 - vertex 5.98964 -3.63939 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.78219 -4.68956 0 - vertex 5.82356 -5.98052 0 - vertex 6.18777 -5.99984 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.97093 -5.58648 0 - vertex 5.98964 -3.63939 0 - vertex 5.48552 -2.8367 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.51759 -4.36865 0 - vertex 5.4311 -5.93055 0 - vertex 5.82356 -5.98052 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.97093 -5.58648 0 - vertex 5.48552 -2.8367 0 - vertex 5.03179 -2.01239 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.2523 -4.01644 0 - vertex 4.99906 -5.84891 0 - vertex 5.4311 -5.93055 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.97093 -5.58648 0 - vertex 5.03179 -2.01239 0 - vertex 4.65505 -1.21825 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.98964 -3.63939 0 - vertex 4.51611 -5.73457 0 - vertex 4.99906 -5.84891 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.97093 -5.58648 0 - vertex 4.65505 -1.21825 0 - vertex 4.50386 -0.848697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.97093 -5.58648 0 - vertex 4.50386 -0.848697 0 - vertex 4.38188 -0.506111 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.97093 -5.58648 0 - vertex 4.38188 -0.506111 0 - vertex 4.29244 -0.196974 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.97093 -5.58648 0 - vertex 4.29244 -0.196974 0 - vertex 4.23886 0.0722368 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.97093 -5.58648 0 - vertex 4.23886 0.0722368 0 - vertex 4.22446 0.295049 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.98964 -3.63939 0 - vertex 3.97093 -5.58648 0 - vertex 4.51611 -5.73457 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.7369 -35.0944 0 - vertex 12.2214 -34.9805 0 - vertex 12.2468 -35.1875 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.73 -32.8205 0 - vertex 11.1661 -32.3709 0 - vertex 14.6832 -33.3707 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.6656 -33.913 0 - vertex 12.1503 -34.7994 0 - vertex 12.2214 -34.9805 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 11.8827 -34.5351 0 - vertex 14.6832 -33.3707 0 - vertex 11.1661 -32.3709 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.6656 -33.913 0 - vertex 12.0364 -34.6492 0 - vertex 12.1503 -34.7994 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 12.0364 -34.6492 0 - vertex 14.6832 -33.3707 0 - vertex 11.8827 -34.5351 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.6832 -33.3707 0 - vertex 12.0364 -34.6492 0 - vertex 14.6656 -33.913 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.9267 -33.0747 0 - vertex 11.8827 -34.5351 0 - vertex 11.1661 -32.3709 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.8827 -34.5351 0 - vertex 10.9267 -33.0747 0 - vertex 11.6919 -34.4621 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.6919 -34.4621 0 - vertex 10.9267 -33.0747 0 - vertex 11.4668 -34.4353 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.7819 -33.5982 0 - vertex 11.4668 -34.4353 0 - vertex 10.9267 -33.0747 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.7449 -33.8005 0 - vertex 11.4668 -34.4353 0 - vertex 10.7819 -33.5982 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.4668 -34.4353 0 - vertex 10.7449 -33.8005 0 - vertex 11.143 -34.4171 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.7315 -33.9677 0 - vertex 11.143 -34.4171 0 - vertex 10.7449 -33.8005 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.143 -34.4171 0 - vertex 10.7315 -33.9677 0 - vertex 11.016 -34.3915 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 10.7415 -34.103 0 - vertex 11.016 -34.3915 0 - vertex 10.7315 -33.9677 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.016 -34.3915 0 - vertex 10.7415 -34.103 0 - vertex 10.9123 -34.3507 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 10.775 -34.2097 0 - vertex 10.9123 -34.3507 0 - vertex 10.7415 -34.103 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.9123 -34.3507 0 - vertex 10.775 -34.2097 0 - vertex 10.832 -34.2912 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.0881 -14.3092 0 - vertex 14.1362 -14.4186 0 - vertex 14.1363 -14.3424 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.0003 -14.2763 0 - vertex 14.1362 -14.4186 0 - vertex 14.0881 -14.3092 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.1362 -14.4186 0 - vertex 14.0003 -14.2763 0 - vertex 14.0967 -14.5873 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.7222 -14.2141 0 - vertex 14.0967 -14.5873 0 - vertex 14.0003 -14.2763 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.0967 -14.5873 0 - vertex 13.7222 -14.2141 0 - vertex 13.9185 -15.1524 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.3346 -14.1615 0 - vertex 13.9185 -15.1524 0 - vertex 13.7222 -14.2141 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.8698 -14.1239 0 - vertex 13.9185 -15.1524 0 - vertex 13.3346 -14.1615 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.9185 -15.1524 0 - vertex 12.8698 -14.1239 0 - vertex 13.6397 -15.9386 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.7363 -14.0885 0 - vertex 13.6397 -15.9386 0 - vertex 12.8698 -14.1239 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.6397 -15.9386 0 - vertex 12.7363 -14.0885 0 - vertex 13.2984 -16.8469 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.6087 -14.0056 0 - vertex 13.2984 -16.8469 0 - vertex 12.7363 -14.0885 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.0711 -19.1496 0 - vertex 13.2984 -16.8469 0 - vertex 12.6087 -14.0056 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.0711 -19.1496 0 - vertex 12.6087 -14.0056 0 - vertex 12.5013 -13.8876 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.72114 -19.1409 0 - vertex 12.5013 -13.8876 0 - vertex 12.4287 -13.7469 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.76754 -19.1712 0 - vertex 12.4287 -13.7469 0 - vertex 12.3997 -13.6324 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.80885 -19.2424 0 - vertex 12.3997 -13.6324 0 - vertex 12.3889 -13.5153 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 10.602 -19.227 0 - vertex 13.2984 -16.8469 0 - vertex 10.3591 -19.1774 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.8205 29.3224 0 - vertex 15.0694 29.0611 0 - vertex 12.0304 29.9363 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0694 29.0611 0 - vertex 11.8205 29.3224 0 - vertex 15.0552 28.7509 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 11.8169 27.5343 0 - vertex 15.0574 28.4965 0 - vertex 11.7656 27.9858 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 11.903 27.1234 0 - vertex 15.0574 28.4965 0 - vertex 11.8169 27.5343 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.7675 28.9061 0 - vertex 15.0552 28.7509 0 - vertex 11.8205 29.3224 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0574 28.4965 0 - vertex 12.2572 26.3514 0 - vertex 12.3979 26.1543 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.9082 29.6745 0 - vertex 12.0304 29.9363 0 - vertex 11.965 29.8184 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.0304 29.9363 0 - vertex 11.9082 29.6745 0 - vertex 11.8205 29.3224 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0574 28.4965 0 - vertex 12.1339 26.5589 0 - vertex 12.2572 26.3514 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0552 28.7509 0 - vertex 11.7675 28.9061 0 - vertex 15.0574 28.4965 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0574 28.4965 0 - vertex 12.0241 26.7794 0 - vertex 12.1339 26.5589 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0574 28.4965 0 - vertex 11.7675 28.9061 0 - vertex 11.7492 28.4518 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 12.0241 26.7794 0 - vertex 15.0574 28.4965 0 - vertex 11.903 27.1234 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0574 28.4965 0 - vertex 11.7492 28.4518 0 - vertex 11.7656 27.9858 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.7548 16.6154 0 - vertex 24.8294 16.7672 0 - vertex 24.8232 16.8925 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.659 16.5397 0 - vertex 24.8232 16.8925 0 - vertex 24.789 17.0321 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.8294 16.7672 0 - vertex 24.7548 16.6154 0 - vertex 24.8049 16.6725 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.5483 17.3222 0 - vertex 24.789 17.0321 0 - vertex 24.7291 17.1695 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.5483 17.3222 0 - vertex 24.7291 17.1695 0 - vertex 24.6602 17.253 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.8232 16.8925 0 - vertex 24.659 16.5397 0 - vertex 24.7548 16.6154 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.789 17.0321 0 - vertex 24.5483 17.3222 0 - vertex 24.659 16.5397 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.386 17.3783 0 - vertex 24.659 16.5397 0 - vertex 24.5483 17.3222 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.386 17.3783 0 - vertex 24.3498 16.3417 0 - vertex 24.659 16.5397 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.166 17.4223 0 - vertex 24.3498 16.3417 0 - vertex 24.386 17.3783 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.166 17.4223 0 - vertex 23.9148 16.0975 0 - vertex 24.3498 16.3417 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.5226 17.4791 0 - vertex 23.9148 16.0975 0 - vertex 24.166 17.4223 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.5226 17.4791 0 - vertex 23.3919 15.8262 0 - vertex 23.9148 16.0975 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.5588 17.5015 0 - vertex 23.3919 15.8262 0 - vertex 23.5226 17.4791 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.5588 17.5015 0 - vertex 22.2336 15.278 0 - vertex 23.3919 15.8262 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0506 17.5236 0 - vertex 22.2336 15.278 0 - vertex 22.5588 17.5015 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.2336 15.278 0 - vertex 21.0506 17.5236 0 - vertex 21.6737 15.039 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.6737 15.039 0 - vertex 21.0506 17.5236 0 - vertex 21.1771 14.8489 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2276 17.5562 0 - vertex 21.1771 14.8489 0 - vertex 21.0506 17.5236 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.1771 14.8489 0 - vertex 20.2276 17.5562 0 - vertex 20.8452 14.735 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.8452 14.735 0 - vertex 20.2276 17.5562 0 - vertex 20.5722 14.6577 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.5722 14.6577 0 - vertex 20.2276 17.5562 0 - vertex 20.327 14.6203 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4469 14.7833 0 - vertex 20.2276 17.5562 0 - vertex 20.1284 17.5777 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2276 17.5562 0 - vertex 20.0785 14.6265 0 - vertex 20.327 14.6203 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4469 14.7833 0 - vertex 20.1284 17.5777 0 - vertex 20.0333 17.6179 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4281 15.1559 0 - vertex 20.0333 17.6179 0 - vertex 19.9424 17.6771 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4281 15.1559 0 - vertex 19.9424 17.6771 0 - vertex 19.8554 17.7553 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2276 17.5562 0 - vertex 19.7955 14.6797 0 - vertex 20.0785 14.6265 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.448 15.5385 0 - vertex 19.8554 17.7553 0 - vertex 19.6934 17.9694 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.448 15.5385 0 - vertex 19.6934 17.9694 0 - vertex 19.5469 18.2611 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2276 17.5562 0 - vertex 19.4469 14.7833 0 - vertex 19.7955 14.6797 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.6072 15.8977 0 - vertex 19.5469 18.2611 0 - vertex 19.4153 18.6317 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.8738 16.2527 0 - vertex 19.4153 18.6317 0 - vertex 19.2984 19.082 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2162 16.623 0 - vertex 19.2984 19.082 0 - vertex 19.1956 19.6132 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.6028 17.0277 0 - vertex 19.1956 19.6132 0 - vertex 19.1065 20.2262 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.1667 22.8321 0 - vertex 19.1065 20.2262 0 - vertex 19.0081 20.8787 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.6752 22.6222 0 - vertex 19.0081 20.8787 0 - vertex 18.892 21.4494 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4732 22.2317 0 - vertex 18.892 21.4494 0 - vertex 18.7726 21.8767 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4732 22.2317 0 - vertex 18.7726 21.8767 0 - vertex 18.7163 22.0174 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4732 22.2317 0 - vertex 18.7163 22.0174 0 - vertex 18.6646 22.0992 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.892 21.4494 0 - vertex 18.4732 22.2317 0 - vertex 18.127 22.4141 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0333 17.6179 0 - vertex 18.4281 15.1559 0 - vertex 19.4469 14.7833 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.892 21.4494 0 - vertex 18.127 22.4141 0 - vertex 17.6752 22.6222 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.0081 20.8787 0 - vertex 17.6752 22.6222 0 - vertex 17.1667 22.8321 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.8554 17.7553 0 - vertex 17.448 15.5385 0 - vertex 18.4281 15.1559 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.1065 20.2262 0 - vertex 17.1667 22.8321 0 - vertex 14.0017 17.4864 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5469 18.2611 0 - vertex 16.6072 15.8977 0 - vertex 17.448 15.5385 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4153 18.6317 0 - vertex 15.8738 16.2527 0 - vertex 16.6072 15.8977 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.3813 18.0182 0 - vertex 17.1667 22.8321 0 - vertex 15.5173 23.4995 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.2984 19.082 0 - vertex 15.2162 16.623 0 - vertex 15.8738 16.2527 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.1956 19.6132 0 - vertex 14.6028 17.0277 0 - vertex 15.2162 16.623 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.6914 19.6646 0 - vertex 15.5173 23.4995 0 - vertex 14.0281 24.1527 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.1065 20.2262 0 - vertex 14.0017 17.4864 0 - vertex 14.6028 17.0277 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.9846 20.5521 0 - vertex 14.0281 24.1527 0 - vertex 13.7923 24.2655 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.6869 21.0368 0 - vertex 13.7923 24.2655 0 - vertex 13.5553 24.3991 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.1667 22.8321 0 - vertex 13.3813 18.0182 0 - vertex 14.0017 17.4864 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.3935 21.5973 0 - vertex 13.5553 24.3991 0 - vertex 13.085 24.7212 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.5173 23.4995 0 - vertex 12.71 18.6425 0 - vertex 13.3813 18.0182 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.0801 22.2703 0 - vertex 13.085 24.7212 0 - vertex 12.6316 25.1032 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.72206 23.0922 0 - vertex 12.6316 25.1032 0 - vertex 12.2092 25.5292 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.5173 23.4995 0 - vertex 12.1494 19.1886 0 - vertex 12.71 18.6425 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.38213 23.8626 0 - vertex 12.2092 25.5292 0 - vertex 11.8324 25.9834 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.5173 23.4995 0 - vertex 11.6914 19.6646 0 - vertex 12.1494 19.1886 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.08206 24.476 0 - vertex 11.8324 25.9834 0 - vertex 11.5154 26.4501 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.80411 24.9522 0 - vertex 11.5154 26.4501 0 - vertex 11.3839 26.6832 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.0281 24.1527 0 - vertex 11.3113 20.1069 0 - vertex 11.6914 19.6646 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.6679 25.145 0 - vertex 11.3839 26.6832 0 - vertex 11.2726 26.9135 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.53058 25.3107 0 - vertex 11.2726 26.9135 0 - vertex 11.1835 27.139 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.38993 25.4519 0 - vertex 11.1835 27.139 0 - vertex 11.1184 27.3577 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.24373 25.571 0 - vertex 11.1184 27.3577 0 - vertex 11.0734 27.5937 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.08977 25.6705 0 - vertex 11.0734 27.5937 0 - vertex 11.0484 27.8474 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.0281 24.1527 0 - vertex 10.9846 20.5521 0 - vertex 11.3113 20.1069 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.92584 25.7528 0 - vertex 11.0484 27.8474 0 - vertex 11.0419 28.1143 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.9476 30.6899 0 - vertex 4.89167 37.3134 0 - vertex 11.8311 30.6195 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.73361 37.0399 0 - vertex 11.8311 30.6195 0 - vertex 4.89167 37.3134 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.31688 36.0346 0 - vertex 11.8311 30.6195 0 - vertex 4.73361 37.0399 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.1227 35.3375 0 - vertex 11.8311 30.6195 0 - vertex 4.31688 36.0346 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.8311 30.6195 0 - vertex 3.94762 34.5584 0 - vertex 11.7177 30.5077 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.68366 32.8976 0 - vertex 11.6088 30.3591 0 - vertex 3.79886 33.7332 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.94762 34.5584 0 - vertex 11.8311 30.6195 0 - vertex 4.1227 35.3375 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.7177 30.5077 0 - vertex 3.79886 33.7332 0 - vertex 11.6088 30.3591 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.52293 36.6141 0 - vertex 4.73361 37.0399 0 - vertex 4.62814 36.8484 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.73361 37.0399 0 - vertex 4.52293 36.6141 0 - vertex 4.31688 36.0346 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.6088 30.3591 0 - vertex 3.68366 32.8976 0 - vertex 11.5057 30.1782 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.79886 33.7332 0 - vertex 11.7177 30.5077 0 - vertex 3.94762 34.5584 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.60924 32.0876 0 - vertex 11.5057 30.1782 0 - vertex 3.68366 32.8976 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.58282 31.3388 0 - vertex 11.5057 30.1782 0 - vertex 3.60924 32.0876 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5057 30.1782 0 - vertex 5.05276 27.3884 0 - vertex 5.39739 26.9794 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5057 30.1782 0 - vertex 4.69711 27.8759 0 - vertex 5.05276 27.3884 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 3.59957 30.3654 0 - vertex 11.5057 30.1782 0 - vertex 3.58282 31.3388 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5057 30.1782 0 - vertex 4.32553 28.4461 0 - vertex 4.69711 27.8759 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5057 30.1782 0 - vertex 4.09087 28.8303 0 - vertex 4.32553 28.4461 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5057 30.1782 0 - vertex 3.59957 30.3654 0 - vertex 4.09087 28.8303 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.09087 28.8303 0 - vertex 3.59957 30.3654 0 - vertex 3.91157 29.1502 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 3.63162 30.0135 0 - vertex 3.91157 29.1502 0 - vertex 3.59957 30.3654 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.91157 29.1502 0 - vertex 3.63162 30.0135 0 - vertex 3.78021 29.4348 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.78021 29.4348 0 - vertex 3.63162 30.0135 0 - vertex 3.68937 29.7129 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.45361 -26.5684 0 - vertex -4.59396 -25.347 0 - vertex -1.72295 -27.0315 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -5.05721 -26.548 0 - vertex -1.72295 -27.0315 0 - vertex -4.59396 -25.347 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.72295 -27.0315 0 - vertex -5.05721 -26.548 0 - vertex -2.23947 -28.0146 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.23947 -28.0146 0 - vertex -5.05721 -26.548 0 - vertex -2.71481 -29.043 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -5.65492 -27.9982 0 - vertex -2.71481 -29.043 0 - vertex -5.05721 -26.548 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.71481 -29.043 0 - vertex -5.65492 -27.9982 0 - vertex -3.135 -30.0798 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -6.39994 -29.738 0 - vertex -3.135 -30.0798 0 - vertex -5.65492 -27.9982 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.135 -30.0798 0 - vertex -6.39994 -29.738 0 - vertex -3.4861 -31.0878 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.4477 -19.4082 0 - vertex 19.1479 -12.7477 0 - vertex 24.9086 -19.5812 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.7352 1.18648 0 - vertex 19.6583 -10.9333 0 - vertex 19.6819 -11.0243 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.4297 -3.0084 0 - vertex 19.6172 -10.8571 0 - vertex 19.6583 -10.9333 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0112 -3.39762 0 - vertex 19.557 -10.7956 0 - vertex 19.6172 -10.8571 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.4451 -3.80993 0 - vertex 19.557 -10.7956 0 - vertex 20.0112 -3.39762 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.557 -10.7956 0 - vertex 19.4451 -3.80993 0 - vertex 19.4763 -10.749 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 18.7073 -4.27174 0 - vertex 19.4763 -10.749 0 - vertex 19.4451 -3.80993 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4763 -10.749 0 - vertex 18.7073 -4.27174 0 - vertex 19.3736 -10.7173 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 17.7736 -4.80944 0 - vertex 19.3736 -10.7173 0 - vertex 18.7073 -4.27174 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.3736 -10.7173 0 - vertex 17.7736 -4.80944 0 - vertex 19.0963 -10.6988 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.0963 -10.6988 0 - vertex 17.7736 -4.80944 0 - vertex 18.7132 -10.7406 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 16.3254 -5.59514 0 - vertex 18.7132 -10.7406 0 - vertex 17.7736 -4.80944 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.7132 -10.7406 0 - vertex 16.3254 -5.59514 0 - vertex 18.2126 -10.843 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.6549 -5.93433 0 - vertex 18.2126 -10.843 0 - vertex 16.3254 -5.59514 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.2126 -10.843 0 - vertex 15.6549 -5.93433 0 - vertex 17.5824 -11.0066 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.0129 -6.23993 0 - vertex 17.5824 -11.0066 0 - vertex 15.6549 -5.93433 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.5824 -11.0066 0 - vertex 15.0129 -6.23993 0 - vertex 16.811 -11.2316 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 14.3941 -6.51356 0 - vertex 16.811 -11.2316 0 - vertex 15.0129 -6.23993 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 13.793 -6.75686 0 - vertex 16.811 -11.2316 0 - vertex 14.3941 -6.51356 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.793 -6.75686 0 - vertex 13.7217 -12.1451 0 - vertex 16.811 -11.2316 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 13.2041 -6.97145 0 - vertex 13.7217 -12.1451 0 - vertex 13.793 -6.75686 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.6221 -7.15898 0 - vertex 13.7217 -12.1451 0 - vertex 13.2041 -6.97145 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.0414 -7.32107 0 - vertex 13.7217 -12.1451 0 - vertex 12.6221 -7.15898 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.7217 -12.1451 0 - vertex 12.0414 -7.32107 0 - vertex 13.4022 -12.26 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.4568 -7.45935 0 - vertex 13.4022 -12.26 0 - vertex 12.0414 -7.32107 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.4022 -12.26 0 - vertex 11.4568 -7.45935 0 - vertex 13.1153 -12.4148 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.8627 -7.57545 0 - vertex 13.1153 -12.4148 0 - vertex 11.4568 -7.45935 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.1153 -12.4148 0 - vertex 10.8627 -7.57545 0 - vertex 12.8673 -12.6015 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.2538 -7.67101 0 - vertex 12.8673 -12.6015 0 - vertex 10.8627 -7.57545 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 10.8168 -19.3006 0 - vertex 12.5806 -18.6336 0 - vertex 10.602 -19.227 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.8673 -12.6015 0 - vertex 10.2538 -7.67101 0 - vertex 12.6645 -12.8127 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 9.62459 -7.74765 0 - vertex 12.6645 -12.8127 0 - vertex 10.2538 -7.67101 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.5806 -18.6336 0 - vertex 11.0203 -19.4009 0 - vertex 12.2803 -19.3138 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 11.5538 -19.7266 0 - vertex 12.2803 -19.3138 0 - vertex 11.2294 -19.5302 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.2803 -19.3138 0 - vertex 11.5538 -19.7266 0 - vertex 12.0697 -19.7199 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 11.7902 -19.8211 0 - vertex 12.0697 -19.7199 0 - vertex 11.5538 -19.7266 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 11.881 -19.8313 0 - vertex 12.0697 -19.7199 0 - vertex 11.7902 -19.8211 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.6645 -12.8127 0 - vertex 9.62459 -7.74765 0 - vertex 12.513 -13.0405 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.0185 -19.7802 0 - vertex 11.881 -19.8313 0 - vertex 11.9563 -19.8175 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.0697 -19.7199 0 - vertex 11.881 -19.8313 0 - vertex 12.0185 -19.7802 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 8.96966 -7.80701 0 - vertex 12.513 -13.0405 0 - vertex 9.62459 -7.74765 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 11.2294 -19.5302 0 - vertex 12.2803 -19.3138 0 - vertex 11.0203 -19.4009 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 11.0203 -19.4009 0 - vertex 12.5806 -18.6336 0 - vertex 10.8168 -19.3006 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.2984 -16.8469 0 - vertex 10.602 -19.227 0 - vertex 12.5806 -18.6336 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.513 -13.0405 0 - vertex 8.96966 -7.80701 0 - vertex 12.419 -13.2773 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.2984 -16.8469 0 - vertex 10.0711 -19.1496 0 - vertex 10.3591 -19.1774 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 7.56097 -7.88041 0 - vertex 12.419 -13.2773 0 - vertex 8.96966 -7.80701 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.5013 -13.8876 0 - vertex 9.72114 -19.1409 0 - vertex 10.0711 -19.1496 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.419 -13.2773 0 - vertex 7.56097 -7.88041 0 - vertex 12.3889 -13.5153 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.4287 -13.7469 0 - vertex 8.76754 -19.1712 0 - vertex 9.72114 -19.1409 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 6.04455 -7.91255 0 - vertex 12.3889 -13.5153 0 - vertex 7.56097 -7.88041 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3997 -13.6324 0 - vertex 7.80885 -19.2424 0 - vertex 8.76754 -19.1712 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 7.42262 -19.2967 0 - vertex 12.3889 -13.5153 0 - vertex 6.04455 -7.91255 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3889 -13.5153 0 - vertex 7.42262 -19.2967 0 - vertex 7.80885 -19.2424 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.42262 -19.2967 0 - vertex 6.04455 -7.91255 0 - vertex 7.07441 -19.3694 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.49083 -7.9071 0 - vertex 7.07441 -19.3694 0 - vertex 6.04455 -7.91255 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.07441 -19.3694 0 - vertex 5.49083 -7.9071 0 - vertex 6.74616 -19.4649 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.0434 -7.88498 0 - vertex 6.74616 -19.4649 0 - vertex 5.49083 -7.9071 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.74616 -19.4649 0 - vertex 5.0434 -7.88498 0 - vertex 6.41984 -19.5879 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.67971 -7.84446 0 - vertex 6.41984 -19.5879 0 - vertex 5.0434 -7.88498 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.41984 -19.5879 0 - vertex 4.67971 -7.84446 0 - vertex 6.07737 -19.7427 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.37723 -7.78379 0 - vertex 6.07737 -19.7427 0 - vertex 4.67971 -7.84446 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.07737 -19.7427 0 - vertex 4.37723 -7.78379 0 - vertex 5.70074 -19.9339 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.70074 -19.9339 0 - vertex 4.37723 -7.78379 0 - vertex 5.20766 -20.2058 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.11342 -7.70123 0 - vertex 5.20766 -20.2058 0 - vertex 4.37723 -7.78379 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.20766 -20.2058 0 - vertex 4.11342 -7.70123 0 - vertex 4.71458 -20.5006 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.86574 -7.59505 0 - vertex 4.71458 -20.5006 0 - vertex 4.11342 -7.70123 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.71458 -20.5006 0 - vertex 3.86574 -7.59505 0 - vertex 4.22328 -20.8168 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.40104 -7.34622 0 - vertex 4.22328 -20.8168 0 - vertex 3.86574 -7.59505 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.22328 -20.8168 0 - vertex 3.40104 -7.34622 0 - vertex 3.73558 -21.1527 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.71562 -6.94693 0 - vertex 3.73558 -21.1527 0 - vertex 3.40104 -7.34622 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.82849 -22.2203 0 - vertex 3.73558 -21.1527 0 - vertex 2.71562 -6.94693 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.73558 -21.1527 0 - vertex -3.82849 -22.2203 0 - vertex 3.25328 -21.5067 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.82849 -22.2203 0 - vertex 2.71562 -6.94693 0 - vertex 1.05193 -5.91722 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.25328 -21.5067 0 - vertex -3.82849 -22.2203 0 - vertex 2.77819 -21.8771 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.77819 -21.8771 0 - vertex -3.82849 -22.2203 0 - vertex 2.31211 -22.2625 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.82849 -22.2203 0 - vertex 1.05193 -5.91722 0 - vertex -0.694871 -4.82613 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.31211 -22.2625 0 - vertex -3.82849 -22.2203 0 - vertex 1.85684 -22.661 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.85684 -22.661 0 - vertex -3.82849 -22.2203 0 - vertex 1.4142 -23.0712 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.82849 -22.2203 0 - vertex -0.694871 -4.82613 0 - vertex -2.47177 -3.7788 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.4142 -23.0712 0 - vertex -3.82849 -22.2203 0 - vertex 0.985991 -23.4913 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.985991 -23.4913 0 - vertex -3.82849 -22.2203 0 - vertex 0.574011 -23.9198 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.82849 -22.2203 0 - vertex -2.47177 -3.7788 0 - vertex -2.8551 -3.51984 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.574011 -23.9198 0 - vertex -3.82849 -22.2203 0 - vertex 0.18007 -24.355 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -3.84589 -22.5177 0 - vertex 0.18007 -24.355 0 - vertex -3.82849 -22.2203 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.82849 -22.2203 0 - vertex -2.8551 -3.51984 0 - vertex -3.18232 -3.26618 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -3.88244 -22.8317 0 - vertex 0.18007 -24.355 0 - vertex -3.84589 -22.5177 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.82849 -22.2203 0 - vertex -3.18232 -3.26618 0 - vertex -3.44099 -3.03042 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.18007 -24.355 0 - vertex -3.88244 -22.8317 0 - vertex -0.194025 -24.7953 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -3.93975 -23.1672 0 - vertex -0.194025 -24.7953 0 - vertex -3.88244 -22.8317 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.82849 -22.2203 0 - vertex -3.44099 -3.03042 0 - vertex -3.61865 -2.82513 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.194025 -24.7953 0 - vertex -3.93975 -23.1672 0 - vertex -0.546472 -25.2391 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -4.01943 -23.5295 0 - vertex -0.546472 -25.2391 0 - vertex -3.93975 -23.1672 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.546472 -25.2391 0 - vertex -4.01943 -23.5295 0 - vertex -0.875463 -25.6847 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.82849 -22.2203 0 - vertex -3.61865 -2.82513 0 - vertex -3.70285 -2.66292 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -4.25232 -24.3543 0 - vertex -0.875463 -25.6847 0 - vertex -4.01943 -23.5295 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.875463 -25.6847 0 - vertex -4.25232 -24.3543 0 - vertex -1.17919 -26.1306 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4002 -11.6639 0 - vertex -3.70285 -2.66292 0 - vertex -3.70601 -2.60189 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.17919 -26.1306 0 - vertex -4.25232 -24.3543 0 - vertex -1.45361 -26.5684 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.0469 1.94283 0 - vertex 21.1316 -0.233279 0 - vertex 21.1355 -0.658014 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.9727 1.93385 0 - vertex 21.099 0.0745682 0 - vertex 21.1316 -0.233279 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.9112 1.94773 0 - vertex 21.0726 0.170561 0 - vertex 21.099 0.0745682 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.8622 1.9828 0 - vertex 21.0399 0.220413 0 - vertex 21.0726 0.170561 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.8016 2.10976 0 - vertex 20.9772 0.235111 0 - vertex 21.0399 0.220413 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.498 4.716 0 - vertex 21.3371 8.55423 0 - vertex 20.8834 8.89663 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.7901 2.30129 0 - vertex 20.8646 0.230347 0 - vertex 20.9772 0.235111 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 20.5155 0.168137 0 - vertex 22.827 2.54396 0 - vertex 16.2363 2.34533 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.3486 5.33522 0 - vertex 20.8834 8.89663 0 - vertex 20.3513 9.26304 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.7901 2.30129 0 - vertex 20.5155 0.168137 0 - vertex 20.8646 0.230347 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2183 5.95043 0 - vertex 20.3513 9.26304 0 - vertex 19.7274 9.66569 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.827 2.54396 0 - vertex 20.5155 0.168137 0 - vertex 22.7901 2.30129 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.1095 6.5543 0 - vertex 19.7274 9.66569 0 - vertex 19.4723 9.81661 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.1095 6.5543 0 - vertex 19.4723 9.81661 0 - vertex 19.2206 9.94402 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.1095 6.5543 0 - vertex 19.2206 9.94402 0 - vertex 18.9645 10.0501 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.5155 0.168137 0 - vertex 16.2363 2.34533 0 - vertex 20.0432 0.0451876 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0249 7.13954 0 - vertex 18.9645 10.0501 0 - vertex 18.6964 10.137 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 16.4437 1.81579 0 - vertex 20.0432 0.0451876 0 - vertex 16.2363 2.34533 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0249 7.13954 0 - vertex 18.6964 10.137 0 - vertex 18.4085 10.2069 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 16.6551 1.32614 0 - vertex 20.0432 0.0451876 0 - vertex 16.4437 1.81579 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 16.8681 0.883681 0 - vertex 19.4982 -0.127099 0 - vertex 16.6551 1.32614 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0249 7.13954 0 - vertex 18.4085 10.2069 0 - vertex 18.093 10.2619 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 17.0802 0.495742 0 - vertex 19.4982 -0.127099 0 - vertex 16.8681 0.883681 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 17.2889 0.169637 0 - vertex 18.7502 -0.369046 0 - vertex 17.0802 0.495742 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 17.4918 -0.0873203 0 - vertex 18.7502 -0.369046 0 - vertex 17.2889 0.169637 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.7502 -0.369046 0 - vertex 17.4918 -0.0873203 0 - vertex 18.4876 -0.435405 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9668 7.69881 0 - vertex 18.093 10.2619 0 - vertex 17.3487 10.3363 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4876 -0.435405 0 - vertex 17.6862 -0.267812 0 - vertex 18.2791 -0.466914 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 17.8284 -0.36402 0 - vertex 18.2791 -0.466914 0 - vertex 17.6862 -0.267812 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.1098 -0.464739 0 - vertex 17.8284 -0.36402 0 - vertex 17.9646 -0.430052 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.2791 -0.466914 0 - vertex 17.8284 -0.36402 0 - vertex 18.1098 -0.464739 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9212 8.45633 0 - vertex 17.3487 10.3363 0 - vertex 16.499 10.3797 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 17.6862 -0.267812 0 - vertex 18.4876 -0.435405 0 - vertex 17.4918 -0.0873203 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4982 -0.127099 0 - vertex 17.0802 0.495742 0 - vertex 18.7502 -0.369046 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.5399 9.97068 0 - vertex 16.499 10.3797 0 - vertex 16.2187 10.3704 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0432 0.0451876 0 - vertex 16.6551 1.32614 0 - vertex 19.4982 -0.127099 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.6879 10.1383 0 - vertex 16.2187 10.3704 0 - vertex 16.005 10.3315 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.6879 10.1383 0 - vertex 16.005 10.3315 0 - vertex 15.8355 10.2563 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.2187 10.3704 0 - vertex 15.6879 10.1383 0 - vertex 15.5399 9.97068 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 16.2363 2.34533 0 - vertex 22.9115 2.82433 0 - vertex 16.0356 2.90743 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.499 10.3797 0 - vertex 15.5399 9.97068 0 - vertex 15.369 9.74689 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.7259 8.22365 0 - vertex 15.498 4.716 0 - vertex 15.6639 4.10009 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.213 9.52982 0 - vertex 16.499 10.3797 0 - vertex 15.369 9.74689 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.8834 8.89663 0 - vertex 15.3486 5.33522 0 - vertex 15.498 4.716 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.3513 9.26304 0 - vertex 15.2183 5.95043 0 - vertex 15.3486 5.33522 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.499 10.3797 0 - vertex 15.213 9.52982 0 - vertex 14.9212 8.45633 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7274 9.66569 0 - vertex 15.1095 6.5543 0 - vertex 15.2183 5.95043 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9262 8.72903 0 - vertex 15.213 9.52982 0 - vertex 15.0942 9.33737 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.9645 10.0501 0 - vertex 15.0249 7.13954 0 - vertex 15.1095 6.5543 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9543 8.95485 0 - vertex 15.0942 9.33737 0 - vertex 15.0092 9.15168 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.093 10.2619 0 - vertex 14.9668 7.69881 0 - vertex 15.0249 7.13954 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0942 9.33737 0 - vertex 14.9543 8.95485 0 - vertex 14.9262 8.72903 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.213 9.52982 0 - vertex 14.9262 8.72903 0 - vertex 14.9212 8.45633 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.3487 10.3363 0 - vertex 14.9212 8.45633 0 - vertex 14.9668 7.69881 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.3467 17.5167 0 - vertex 26.0933 17.5963 0 - vertex 26.0696 17.9605 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 25.4856 17.2443 0 - vertex 26.0933 17.5963 0 - vertex 25.3467 17.5167 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.163 17.7384 0 - vertex 26.0696 17.9605 0 - vertex 26.0009 18.2942 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 25.6037 16.9917 0 - vertex 26.0803 17.2678 0 - vertex 25.4856 17.2443 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0803 17.2678 0 - vertex 25.6037 16.9917 0 - vertex 26.0434 17.0172 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.0501 17.8316 0 - vertex 26.0009 18.2942 0 - vertex 25.8914 18.5921 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 25.7157 16.8274 0 - vertex 26.0434 17.0172 0 - vertex 25.6037 16.9917 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0434 17.0172 0 - vertex 25.7157 16.8274 0 - vertex 25.9855 16.8461 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.9207 17.9138 0 - vertex 25.8914 18.5921 0 - vertex 25.7448 18.8483 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 25.8187 16.7495 0 - vertex 25.9855 16.8461 0 - vertex 25.7157 16.8274 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.9855 16.8461 0 - vertex 25.8187 16.7495 0 - vertex 25.9096 16.7563 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.9207 17.9138 0 - vertex 25.7448 18.8483 0 - vertex 25.5652 19.0574 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.9096 16.7563 0 - vertex 25.8187 16.7495 0 - vertex 25.8659 16.7424 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.9207 17.9138 0 - vertex 25.5652 19.0574 0 - vertex 25.3564 19.2137 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0933 17.5963 0 - vertex 25.4856 17.2443 0 - vertex 26.0803 17.2678 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0696 17.9605 0 - vertex 25.2614 17.6336 0 - vertex 25.3467 17.5167 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0696 17.9605 0 - vertex 25.163 17.7384 0 - vertex 25.2614 17.6336 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.6059 18.0475 0 - vertex 25.3564 19.2137 0 - vertex 25.1224 19.3115 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0009 18.2942 0 - vertex 25.0501 17.8316 0 - vertex 25.163 17.7384 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.6059 18.0475 0 - vertex 25.1224 19.3115 0 - vertex 24.9972 19.3368 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.8914 18.5921 0 - vertex 24.9207 17.9138 0 - vertex 25.0501 17.8316 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.6059 18.0475 0 - vertex 24.9972 19.3368 0 - vertex 24.8672 19.3454 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.6059 18.0475 0 - vertex 24.8672 19.3454 0 - vertex 24.6124 19.3722 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.3564 19.2137 0 - vertex 24.6059 18.0475 0 - vertex 24.9207 17.9138 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.2049 18.1437 0 - vertex 24.6124 19.3722 0 - vertex 24.2514 19.4451 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.6124 19.3722 0 - vertex 24.2049 18.1437 0 - vertex 24.6059 18.0475 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.7039 18.207 0 - vertex 24.2514 19.4451 0 - vertex 23.8321 19.5531 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.2514 19.4451 0 - vertex 23.7039 18.207 0 - vertex 24.2049 18.1437 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.0891 18.2417 0 - vertex 23.8321 19.5531 0 - vertex 23.4027 19.6849 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.8321 19.5531 0 - vertex 23.0891 18.2417 0 - vertex 23.7039 18.207 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.9977 19.8472 0 - vertex 23.0891 18.2417 0 - vertex 23.4027 19.6849 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.3468 18.2522 0 - vertex 22.9977 19.8472 0 - vertex 22.6486 20.047 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.5679 18.2611 0 - vertex 22.6486 20.047 0 - vertex 22.3515 20.2895 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.9977 19.8472 0 - vertex 22.3468 18.2522 0 - vertex 23.0891 18.2417 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.5679 18.2611 0 - vertex 22.3515 20.2895 0 - vertex 22.2213 20.4283 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.8522 19.3078 0 - vertex 22.2213 20.4283 0 - vertex 22.1028 20.5797 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.753 19.8896 0 - vertex 22.1028 20.5797 0 - vertex 21.8989 20.9229 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.6713 20.6529 0 - vertex 21.8989 20.9229 0 - vertex 21.7362 21.3239 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.58 21.4118 0 - vertex 21.7362 21.3239 0 - vertex 21.6111 21.7881 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.6486 20.047 0 - vertex 21.5679 18.2611 0 - vertex 22.3468 18.2522 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5238 21.6908 0 - vertex 21.6111 21.7881 0 - vertex 21.5197 22.3204 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4538 21.9215 0 - vertex 21.5197 22.3204 0 - vertex 21.4205 22.8275 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.3646 22.1178 0 - vertex 21.4205 22.8275 0 - vertex 21.3493 23.064 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.3646 22.1178 0 - vertex 21.3493 23.064 0 - vertex 21.2635 23.2891 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.2511 22.2936 0 - vertex 21.2635 23.2891 0 - vertex 21.1632 23.503 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.2511 22.2936 0 - vertex 21.1632 23.503 0 - vertex 21.0482 23.7058 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.8989 20.9229 0 - vertex 19.6713 20.6529 0 - vertex 19.753 19.8896 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.108 22.463 0 - vertex 21.0482 23.7058 0 - vertex 20.9184 23.8976 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.108 22.463 0 - vertex 20.9184 23.8976 0 - vertex 20.7738 24.0784 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.1028 20.5797 0 - vertex 19.753 19.8896 0 - vertex 19.8522 19.3078 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.108 22.463 0 - vertex 20.7738 24.0784 0 - vertex 20.6143 24.2484 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.2213 20.4283 0 - vertex 20.9709 18.304 0 - vertex 21.5679 18.2611 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.9302 22.6398 0 - vertex 20.6143 24.2484 0 - vertex 20.4398 24.4076 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.2213 20.4283 0 - vertex 19.8522 19.3078 0 - vertex 20.9709 18.304 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.9302 22.6398 0 - vertex 20.4398 24.4076 0 - vertex 20.2502 24.5562 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9709 18.304 0 - vertex 19.8522 19.3078 0 - vertex 20.7319 18.3459 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 19.9169 19.0772 0 - vertex 20.7319 18.3459 0 - vertex 19.8522 19.3078 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.6454 22.8797 0 - vertex 20.2502 24.5562 0 - vertex 20.0455 24.6942 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.7319 18.3459 0 - vertex 19.9169 19.0772 0 - vertex 20.5281 18.4055 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 19.9962 18.8829 0 - vertex 20.5281 18.4055 0 - vertex 19.9169 19.0772 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.5281 18.4055 0 - vertex 19.9962 18.8829 0 - vertex 20.3561 18.486 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.3561 18.486 0 - vertex 20.0935 18.7216 0 - vertex 20.2124 18.5903 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 20.0935 18.7216 0 - vertex 20.3561 18.486 0 - vertex 19.9962 18.8829 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.6454 22.8797 0 - vertex 20.0455 24.6942 0 - vertex 19.5904 24.9388 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.7362 21.3239 0 - vertex 19.58 21.4118 0 - vertex 19.6713 20.6529 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.6111 21.7881 0 - vertex 19.5238 21.6908 0 - vertex 19.58 21.4118 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.5197 22.3204 0 - vertex 19.4538 21.9215 0 - vertex 19.5238 21.6908 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.4205 22.8275 0 - vertex 19.3646 22.1178 0 - vertex 19.4538 21.9215 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.2635 23.2891 0 - vertex 19.2511 22.2936 0 - vertex 19.3646 22.1178 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0482 23.7058 0 - vertex 19.108 22.463 0 - vertex 19.2511 22.2936 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.318 23.1114 0 - vertex 19.5904 24.9388 0 - vertex 19.0737 25.1422 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.6143 24.2484 0 - vertex 18.9302 22.6398 0 - vertex 19.108 22.463 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2502 24.5562 0 - vertex 18.6454 22.8797 0 - vertex 18.9302 22.6398 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.9883 23.3086 0 - vertex 19.0737 25.1422 0 - vertex 18.5685 25.3244 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5904 24.9388 0 - vertex 18.318 23.1114 0 - vertex 18.6454 22.8797 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.6969 23.4449 0 - vertex 18.5685 25.3244 0 - vertex 18.1033 25.5216 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.0737 25.1422 0 - vertex 17.9883 23.3086 0 - vertex 18.318 23.1114 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.5685 25.3244 0 - vertex 17.6969 23.4449 0 - vertex 17.9883 23.3086 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.6707 25.7385 0 - vertex 17.6969 23.4449 0 - vertex 18.1033 25.5216 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.2809 23.9862 0 - vertex 17.6707 25.7385 0 - vertex 17.2631 25.98 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.2809 23.9862 0 - vertex 17.2631 25.98 0 - vertex 16.873 26.2508 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.1328 24.4531 0 - vertex 16.873 26.2508 0 - vertex 16.4932 26.5558 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.6707 25.7385 0 - vertex 16.2809 23.9862 0 - vertex 17.6969 23.4449 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.1328 24.4531 0 - vertex 16.4932 26.5558 0 - vertex 16.116 26.8997 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.2197 24.8651 0 - vertex 16.116 26.8997 0 - vertex 15.734 27.2872 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.5086 25.2416 0 - vertex 15.734 27.2872 0 - vertex 15.344 27.7317 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.9664 25.6018 0 - vertex 15.344 27.7317 0 - vertex 15.2193 27.9155 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3979 26.1543 0 - vertex 15.2193 27.9155 0 - vertex 15.1337 28.0941 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.873 26.2508 0 - vertex 15.1328 24.4531 0 - vertex 16.2809 23.9862 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3979 26.1543 0 - vertex 15.1337 28.0941 0 - vertex 15.0817 28.2827 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3979 26.1543 0 - vertex 15.0817 28.2827 0 - vertex 15.0574 28.4965 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.116 26.8997 0 - vertex 14.2197 24.8651 0 - vertex 15.1328 24.4531 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.1102 29.496 0 - vertex 12.23 30.2784 0 - vertex 15.0694 29.0611 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 45.6826 -24.0317 0 - vertex 38.119 -36.6694 0 - vertex 38.1248 -36.8464 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 45.3703 -24.1311 0 - vertex 38.0969 -36.5276 0 - vertex 38.119 -36.6694 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.2305 -29.6614 0 - vertex 38.0509 -36.4146 0 - vertex 38.0969 -36.5276 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 37.444 -31.6395 0 - vertex 38.0509 -36.4146 0 - vertex 38.2305 -29.6614 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.0509 -36.4146 0 - vertex 37.444 -31.6395 0 - vertex 37.9736 -36.3241 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 36.8389 -33.2656 0 - vertex 37.9736 -36.3241 0 - vertex 37.444 -31.6395 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.9736 -36.3241 0 - vertex 36.8389 -33.2656 0 - vertex 37.8576 -36.2498 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.8576 -36.2498 0 - vertex 36.8389 -33.2656 0 - vertex 37.6954 -36.1853 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 36.4479 -34.448 0 - vertex 37.6954 -36.1853 0 - vertex 36.8389 -33.2656 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.6954 -36.1853 0 - vertex 36.4479 -34.448 0 - vertex 37.203 -36.0604 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 36.3428 -34.844 0 - vertex 37.203 -36.0604 0 - vertex 36.4479 -34.448 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 36.3035 -35.0946 0 - vertex 37.203 -36.0604 0 - vertex 36.3428 -34.844 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.203 -36.0604 0 - vertex 36.3035 -35.0946 0 - vertex 36.6812 -35.9318 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 36.2992 -35.3418 0 - vertex 36.6812 -35.9318 0 - vertex 36.3035 -35.0946 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 36.3089 -35.532 0 - vertex 36.6812 -35.9318 0 - vertex 36.2992 -35.3418 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 36.3422 -35.6758 0 - vertex 36.5187 -35.8653 0 - vertex 36.3089 -35.532 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.6812 -35.9318 0 - vertex 36.3089 -35.532 0 - vertex 36.5187 -35.8653 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.5187 -35.8653 0 - vertex 36.3422 -35.6758 0 - vertex 36.4089 -35.7834 0 + vertex 37.1913 -36.0604 0 + vertex 36.2918 -35.0946 0 + vertex 36.3972 -35.7834 0 endloop endfacet facet normal 0 0 1 outer loop vertex 117.5 117.5 0 - vertex 47.9993 -20.1225 0 + vertex 47.9875 -20.1225 0 vertex 117.5 -117.5 0 endloop endfacet facet normal 0 0 1 outer loop vertex 117.5 117.5 0 - vertex 47.9745 -19.9807 0 - vertex 47.9993 -20.1225 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 47.9233 -19.8512 0 - vertex 47.9745 -19.9807 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 47.845 -19.7221 0 - vertex 47.9233 -19.8512 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 47.7384 -19.5813 0 - vertex 47.845 -19.7221 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 47.6302 -19.4614 0 - vertex 47.7384 -19.5813 0 + vertex 47.7267 -19.5813 0 + vertex 47.9875 -20.1225 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 27.4995 15.0808 0 - vertex 47.6302 -19.4614 0 + vertex 27.5422 14.7505 0 + vertex 47.7267 -19.5813 0 vertex 117.5 117.5 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 47.6302 -19.4614 0 - vertex 27.4995 15.0808 0 - vertex 47.5127 -19.3635 0 + vertex 47.7267 -19.5813 0 + vertex 27.5422 14.7505 0 + vertex 47.2139 -19.2263 0 endloop endfacet facet normal -0 -0 1 outer loop - vertex 27.5539 14.7505 0 - vertex 47.5127 -19.3635 0 - vertex 27.4995 15.0808 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 27.5896 14.3319 0 - vertex 47.5127 -19.3635 0 - vertex 27.5539 14.7505 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 47.5127 -19.3635 0 - vertex 27.5896 14.3319 0 - vertex 47.3799 -19.2858 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 27.6103 13.7945 0 - vertex 47.3799 -19.2858 0 - vertex 27.5896 14.3319 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 27.6211 12.2412 0 - vertex 47.3799 -19.2858 0 - vertex 27.6103 13.7945 0 + vertex 27.6094 12.2412 0 + vertex 47.2139 -19.2263 0 + vertex 27.5422 14.7505 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 27.6024 10.7775 0 - vertex 47.3799 -19.2858 0 - vertex 27.6211 12.2412 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 47.3799 -19.2858 0 - vertex 27.6024 10.7775 0 - vertex 47.2257 -19.2263 0 + vertex 27.528 9.70386 0 + vertex 47.2139 -19.2263 0 + vertex 27.6094 12.2412 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 27.5775 10.2019 0 - vertex 47.2257 -19.2263 0 - vertex 27.6024 10.7775 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 27.5397 9.70386 0 - vertex 47.2257 -19.2263 0 - vertex 27.5775 10.2019 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 47.2257 -19.2263 0 - vertex 27.5397 9.70386 0 - vertex 47.044 -19.1833 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.9647 2.16551 0 - vertex 47.044 -19.1833 0 - vertex 27.5397 9.70386 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 47.044 -19.1833 0 - vertex 26.9647 2.16551 0 - vertex 46.8289 -19.1548 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 45.391 -19.1898 0 - vertex 41.7426 -19.1572 0 - vertex 44.9905 -19.265 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 42.162 -19.859 0 - vertex 42.9547 -20.2657 0 - vertex 42.1595 -19.6516 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 42.1212 -20.0931 0 - vertex 42.9547 -20.2657 0 - vertex 42.162 -19.859 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 43.4033 -19.9696 0 - vertex 42.1595 -19.6516 0 - vertex 42.9547 -20.2657 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 42.1595 -19.6516 0 - vertex 43.4033 -19.9696 0 - vertex 42.1149 -19.4743 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.9905 -19.265 0 - vertex 41.7426 -19.1572 0 - vertex 44.6026 -19.3768 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 41.9051 -19.2238 0 - vertex 44.6026 -19.3768 0 - vertex 41.7426 -19.1572 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 43.8201 -19.7253 0 - vertex 42.1149 -19.4743 0 - vertex 43.4033 -19.9696 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.6026 -19.3768 0 - vertex 41.9051 -19.2238 0 - vertex 44.2162 -19.5289 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.2162 -19.5289 0 - vertex 42.0297 -19.3306 0 - vertex 43.8201 -19.7253 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 42.0297 -19.3306 0 - vertex 44.2162 -19.5289 0 - vertex 41.9051 -19.2238 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 46.8289 -19.1548 0 - vertex 26.9647 2.16551 0 - vertex 46.274 -19.1343 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.9324 1.61996 0 - vertex 46.274 -19.1343 0 - vertex 26.9647 2.16551 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 46.274 -19.1343 0 - vertex 26.9324 1.61996 0 - vertex 45.8151 -19.1475 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 45.8151 -19.1475 0 - vertex 26.901 1.43209 0 - vertex 45.391 -19.1898 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.3957 -19.1543 0 - vertex 26.8581 1.29842 0 - vertex 41.156 -19.2119 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 39.5298 -19.7361 0 - vertex 29.9546 -19.4981 0 - vertex 38.4916 -20.1181 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.4916 -20.1181 0 - vertex 30.3649 -19.705 0 - vertex 37.4642 -20.5001 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.4642 -20.5001 0 - vertex 30.3649 -19.705 0 - vertex 36.5724 -20.813 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 30.7365 -19.9631 0 - vertex 36.5724 -20.813 0 - vertex 30.3649 -19.705 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.5724 -20.813 0 - vertex 30.7365 -19.9631 0 - vertex 35.9118 -21.0243 0 + vertex 26.9177 3.98634 0 + vertex 47.2139 -19.2263 0 + vertex 27.528 9.70386 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex 35.4013 -21.1287 0 - vertex 35.9118 -21.0243 0 - vertex 30.7365 -19.9631 0 + vertex 42.1032 -19.4743 0 + vertex 44.5909 -19.3768 0 + vertex 41.8934 -19.2238 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 44.5909 -19.3768 0 + vertex 42.1032 -19.4743 0 + vertex 42.943 -20.2657 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 46.2623 -19.1343 0 + vertex 41.5319 -19.1343 0 + vertex 44.5909 -19.3768 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 44.5909 -19.3768 0 + vertex 41.5319 -19.1343 0 + vertex 41.8934 -19.2238 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 47.2139 -19.2263 0 + vertex 26.953 2.16551 0 + vertex 46.2623 -19.1343 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 46.2623 -19.1343 0 + vertex 26.8464 1.29842 0 + vertex 41.5319 -19.1343 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 32.0349 -22.2828 0 - vertex 34.6318 -22.2927 0 - vertex 34.653 -22.0706 0 + vertex 31.4974 -26.3899 0 + vertex 35.3305 -26.5156 0 + vertex 31.8275 -24.8188 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 34.6318 -22.2927 0 - vertex 31.6784 -25.7224 0 - vertex 33.8561 -30.1753 0 + vertex 31.8275 -24.8188 0 + vertex 34.62 -22.2927 0 + vertex 32.0255 -23.3848 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 31.8086 -21.404 0 + vertex 34.62 -22.2927 0 + vertex 34.9156 -21.474 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 38.4798 -20.1181 0 + vertex 30.7248 -19.9631 0 + vertex 35.5661 -21.102 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 34.62 -22.2927 0 + vertex 32.0232 -22.2828 0 + vertex 32.0255 -23.3848 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 34.62 -22.2927 0 + vertex 31.8086 -21.404 0 + vertex 32.0232 -22.2828 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 35.5661 -21.102 0 + vertex 30.7248 -19.9631 0 + vertex 35.2187 -21.2043 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 34.9156 -21.474 0 + vertex 31.3699 -20.64 0 + vertex 31.8086 -21.404 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 35.2187 -21.2043 0 + vertex 31.3699 -20.64 0 + vertex 34.9156 -21.474 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex 31.3699 -20.64 0 + vertex 35.2187 -21.2043 0 + vertex 30.7248 -19.9631 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 31.5092 -26.3899 0 - vertex 33.8561 -30.1753 0 - vertex 31.6003 -26.0834 0 + vertex 26.8464 1.29842 0 + vertex 46.2623 -19.1343 0 + vertex 26.953 2.16551 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 41.5319 -19.1343 0 + vertex 26.8464 1.29842 0 + vertex 38.4798 -20.1181 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex 30.7248 -19.9631 0 + vertex 38.4798 -20.1181 0 + vertex 29.9429 -19.4981 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 31.2435 -26.857 0 - vertex 33.8561 -30.1753 0 - vertex 31.3939 -26.6463 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.6318 -22.2927 0 - vertex 32.0619 -22.7991 0 - vertex 32.0372 -23.3848 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.9549 -21.8223 0 - vertex 34.653 -22.0706 0 - vertex 34.713 -21.8554 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.8204 -21.404 0 - vertex 34.713 -21.8554 0 - vertex 34.8063 -21.6543 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 31.074 -20.2742 0 - vertex 35.4013 -21.1287 0 - vertex 30.7365 -19.9631 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.6318 -22.2927 0 - vertex 32.0349 -22.2828 0 - vertex 32.0619 -22.7991 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.653 -22.0706 0 - vertex 31.9549 -21.8223 0 - vertex 32.0349 -22.2828 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 31.3816 -20.64 0 - vertex 35.2304 -21.2043 0 - vertex 31.074 -20.2742 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.713 -21.8554 0 - vertex 31.8204 -21.404 0 - vertex 31.9549 -21.8223 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.9274 -21.474 0 - vertex 31.8204 -21.404 0 - vertex 34.8063 -21.6543 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 31.8204 -21.404 0 - vertex 34.9274 -21.474 0 - vertex 31.6298 -21.0145 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.0706 -21.3217 0 - vertex 31.6298 -21.0145 0 - vertex 34.9274 -21.474 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 31.6298 -21.0145 0 - vertex 35.0706 -21.3217 0 - vertex 31.3816 -20.64 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.2304 -21.2043 0 - vertex 31.3816 -20.64 0 - vertex 35.0706 -21.3217 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.9118 -21.0243 0 - vertex 35.4013 -21.1287 0 - vertex 35.5778 -21.102 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.5436 -19.1343 0 - vertex 26.8581 1.29842 0 - vertex 41.3957 -19.1543 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 45.391 -19.1898 0 - vertex 26.901 1.43209 0 - vertex 41.7426 -19.1572 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.7426 -19.1572 0 - vertex 26.901 1.43209 0 - vertex 41.5436 -19.1343 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.8581 1.29842 0 - vertex 41.5436 -19.1343 0 - vertex 26.901 1.43209 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.4013 -21.1287 0 - vertex 31.074 -20.2742 0 - vertex 35.2304 -21.2043 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 30.3649 -19.705 0 - vertex 38.4916 -20.1181 0 - vertex 29.9546 -19.4981 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.901 1.43209 0 - vertex 45.8151 -19.1475 0 - vertex 26.9324 1.61996 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 42.1149 -19.4743 0 - vertex 43.8201 -19.7253 0 - vertex 42.0297 -19.3306 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 27.4227 15.3534 0 - vertex 27.4995 15.0808 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.5691 18.3624 0 - vertex 27.4227 15.3534 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 26.6332 18.0815 0 - vertex 27.4227 15.3534 0 - vertex 26.5691 18.3624 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 26.6784 17.7808 0 - vertex 27.3198 15.5987 0 - vertex 26.6332 18.0815 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3198 15.5987 0 - vertex 26.6784 17.7808 0 - vertex 27.1872 15.8473 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.1872 15.8473 0 - vertex 26.7051 17.4601 0 - vertex 27.0139 16.2113 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.0139 16.2113 0 - vertex 26.7051 17.4601 0 - vertex 26.8653 16.6367 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.8653 16.6367 0 - vertex 26.7051 17.4601 0 - vertex 26.7571 17.0706 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 26.7051 17.4601 0 - vertex 27.1872 15.8473 0 - vertex 26.6784 17.7808 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.4227 15.3534 0 - vertex 26.6332 18.0815 0 - vertex 27.3198 15.5987 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 26.4859 18.624 0 - vertex 26.5691 18.3624 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 26.3832 18.8665 0 - vertex 26.4859 18.624 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 26.2605 19.0904 0 - vertex 26.3832 18.8665 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 26.1176 19.296 0 - vertex 26.2605 19.0904 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 25.9541 19.4837 0 - vertex 26.1176 19.296 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 21.4677 24.3609 0 - vertex 25.9541 19.4837 0 + vertex 26.4742 18.624 0 + vertex 27.5422 14.7505 0 vertex 117.5 117.5 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 25.9541 19.4837 0 - vertex 21.4677 24.3609 0 - vertex 25.7697 19.6539 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 21.6182 24.144 0 - vertex 25.7697 19.6539 0 - vertex 21.4677 24.3609 0 + vertex 27.5422 14.7505 0 + vertex 26.4742 18.624 0 + vertex 27.1755 15.8473 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 25.7697 19.6539 0 - vertex 21.6182 24.144 0 - vertex 25.5639 19.8069 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 21.7423 23.9135 0 - vertex 25.5639 19.8069 0 - vertex 21.6182 24.144 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.5639 19.8069 0 - vertex 21.7423 23.9135 0 - vertex 25.3364 19.943 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.3364 19.943 0 - vertex 21.8437 23.6658 0 - vertex 25.087 20.0627 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 21.926 23.397 0 - vertex 25.087 20.0627 0 - vertex 21.8437 23.6658 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.087 20.0627 0 - vertex 21.926 23.397 0 - vertex 24.8151 20.1664 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.8151 20.1664 0 - vertex 21.9928 23.1034 0 - vertex 24.5205 20.2543 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 22.0944 22.427 0 - vertex 24.2028 20.3268 0 - vertex 21.9928 23.1034 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.2028 20.3268 0 - vertex 22.0944 22.427 0 - vertex 23.8617 20.3844 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 22.2815 21.5943 0 - vertex 23.8617 20.3844 0 - vertex 22.1689 21.9813 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.8617 20.3844 0 - vertex 22.2815 21.5943 0 - vertex 23.4814 20.4643 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 22.4341 21.2638 0 - vertex 23.1504 20.59 0 - vertex 22.2815 21.5943 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.1504 20.59 0 - vertex 22.4341 21.2638 0 - vertex 22.8668 20.7638 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.7421 20.8693 0 - vertex 22.4341 21.2638 0 - vertex 22.6286 20.9877 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.8668 20.7638 0 - vertex 22.4341 21.2638 0 - vertex 22.7421 20.8693 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.4814 20.4643 0 - vertex 22.2815 21.5943 0 - vertex 23.1504 20.59 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 22.1689 21.9813 0 - vertex 23.8617 20.3844 0 - vertex 22.0944 22.427 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.5205 20.2543 0 - vertex 21.9928 23.1034 0 - vertex 24.2028 20.3268 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 21.9928 23.1034 0 - vertex 24.8151 20.1664 0 - vertex 21.926 23.397 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 21.8437 23.6658 0 - vertex 25.3364 19.943 0 - vertex 21.7423 23.9135 0 + vertex 27.1755 15.8473 0 + vertex 26.4742 18.624 0 + vertex 26.6933 17.4601 0 endloop endfacet facet normal 0 0 1 outer loop vertex 117.5 117.5 0 - vertex 21.2873 24.568 0 - vertex 21.4677 24.3609 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 21.0733 24.7691 0 - vertex 21.2873 24.568 0 + vertex 25.9424 19.4837 0 + vertex 26.4742 18.624 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 15.4091 30.0386 0 - vertex 21.0733 24.7691 0 + vertex 21.2755 24.568 0 + vertex 25.9424 19.4837 0 + vertex 117.5 117.5 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex 21.8319 23.6658 0 + vertex 25.9424 19.4837 0 + vertex 21.2755 24.568 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex 22.0827 22.427 0 + vertex 25.0752 20.0627 0 + vertex 21.8319 23.6658 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 25.0752 20.0627 0 + vertex 22.0827 22.427 0 + vertex 23.8499 20.3844 0 + endloop + endfacet + facet normal -0 -0 1 + outer loop + vertex 22.2698 21.5943 0 + vertex 23.8499 20.3844 0 + vertex 22.0827 22.427 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 23.1387 20.59 0 + vertex 22.2698 21.5943 0 + vertex 22.6169 20.9877 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 23.8499 20.3844 0 + vertex 22.2698 21.5943 0 + vertex 23.1387 20.59 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 25.9424 19.4837 0 + vertex 21.8319 23.6658 0 + vertex 25.0752 20.0627 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 15.3134 30.0845 0 + vertex 21.2755 24.568 0 vertex 117.5 117.5 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 21.0733 24.7691 0 - vertex 15.4091 30.0386 0 - vertex 20.8221 24.9679 0 + vertex 21.2755 24.568 0 + vertex 15.3134 30.0845 0 + vertex 20.1819 25.3734 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 20.8221 24.9679 0 - vertex 15.4091 30.0386 0 - vertex 20.53 25.168 0 + vertex 20.1819 25.3734 0 + vertex 15.4783 29.8698 0 + vertex 18.3193 26.3216 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 20.53 25.168 0 - vertex 15.4091 30.0386 0 - vertex 20.1936 25.3734 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.1936 25.3734 0 - vertex 15.4091 30.0386 0 - vertex 19.3729 25.8147 0 + vertex 18.3193 26.3216 0 + vertex 15.4783 29.8698 0 + vertex 17.0772 26.9817 0 endloop endfacet facet normal -0 -0 1 outer loop - vertex 15.49 29.8698 0 - vertex 19.3729 25.8147 0 - vertex 15.4091 30.0386 0 + vertex 15.6084 29.1601 0 + vertex 17.0772 26.9817 0 + vertex 15.4783 29.8698 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 19.3729 25.8147 0 - vertex 15.49 29.8698 0 - vertex 18.3311 26.3216 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 15.5622 29.5773 0 - vertex 18.3311 26.3216 0 - vertex 15.49 29.8698 0 + vertex 17.0772 26.9817 0 + vertex 15.6084 29.1601 0 + vertex 16.2688 27.6146 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 17.6504 26.6607 0 - vertex 15.5622 29.5773 0 - vertex 17.0889 26.9817 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 15.6202 29.1601 0 - vertex 17.0889 26.9817 0 - vertex 15.5622 29.5773 0 + vertex 16.2688 27.6146 0 + vertex 15.6084 29.1601 0 + vertex 15.808 28.3106 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 17.0889 26.9817 0 - vertex 15.6202 29.1601 0 - vertex 16.6359 27.2959 0 + vertex 20.1819 25.3734 0 + vertex 15.3134 30.0845 0 + vertex 15.4783 29.8698 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 16.6359 27.2959 0 - vertex 15.6202 29.1601 0 - vertex 16.4467 27.454 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 15.6927 28.7106 0 - vertex 16.4467 27.454 0 - vertex 15.6202 29.1601 0 + vertex 12.2907 30.5214 0 + vertex 15.0577 29.0611 0 + vertex 15.1584 29.8123 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 16.2806 27.6146 0 - vertex 15.6927 28.7106 0 - vertex 16.1362 27.7792 0 + vertex 15.122 28.0941 0 + vertex 12.5486 25.9653 0 + vertex 13.4969 25.2416 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 16.1362 27.7792 0 - vertex 15.6927 28.7106 0 - vertex 16.0121 27.9491 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.0121 27.9491 0 - vertex 15.6927 28.7106 0 - vertex 15.9071 28.1258 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.9071 28.1258 0 - vertex 15.6927 28.7106 0 - vertex 15.8197 28.3106 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.8197 28.3106 0 - vertex 15.6927 28.7106 0 - vertex 15.7487 28.5051 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.4467 27.454 0 - vertex 15.6927 28.7106 0 - vertex 16.2806 27.6146 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.3311 26.3216 0 - vertex 15.5622 29.5773 0 - vertex 17.6504 26.6607 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 15.3672 30.0768 0 - vertex 15.4091 30.0386 0 + vertex 12.2907 30.5214 0 + vertex 15.1584 29.8123 0 + vertex 15.3134 30.0845 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 5.23504 38.5484 0 - vertex 15.3672 30.0768 0 + vertex 12.0187 29.9363 0 + vertex 15.0577 29.0611 0 + vertex 12.2907 30.5214 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 5.15152 38.5852 0 + vertex 15.3134 30.0845 0 vertex 117.5 117.5 0 endloop endfacet - facet normal 0 0 1 + facet normal -0 -0 1 outer loop - vertex 15.3672 30.0768 0 - vertex 5.23504 38.5484 0 - vertex 15.3252 30.0845 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.23 30.2784 0 - vertex 15.1102 29.496 0 - vertex 12.2821 30.4122 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.1701 29.8123 0 - vertex 12.2821 30.4122 0 - vertex 15.1102 29.496 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.2821 30.4122 0 - vertex 15.1701 29.8123 0 - vertex 12.3025 30.5214 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.734 27.2872 0 - vertex 13.5086 25.2416 0 - vertex 14.2197 24.8651 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.344 27.7317 0 - vertex 13.2184 25.4225 0 - vertex 13.5086 25.2416 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3025 30.5214 0 - vertex 15.1701 29.8123 0 - vertex 15.2437 30.0088 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.344 27.7317 0 - vertex 12.9664 25.6018 0 - vertex 13.2184 25.4225 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2193 27.9155 0 - vertex 12.7484 25.782 0 - vertex 12.9664 25.6018 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2193 27.9155 0 - vertex 12.5603 25.9653 0 - vertex 12.7484 25.782 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2193 27.9155 0 - vertex 12.3979 26.1543 0 - vertex 12.5603 25.9653 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.0304 29.9363 0 - vertex 15.0694 29.0611 0 - vertex 12.23 30.2784 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.291 30.606 0 - vertex 15.2437 30.0088 0 - vertex 15.2838 30.0618 0 + vertex 5.25321 38.4452 0 + vertex 15.3134 30.0845 0 + vertex 5.15152 38.5852 0 endloop endfacet facet normal -0 -0 1 outer loop - vertex 5.26494 38.4452 0 - vertex 15.3252 30.0845 0 - vertex 5.23504 38.5484 0 + vertex 12.0544 30.7144 0 + vertex 15.3134 30.0845 0 + vertex 5.25321 38.4452 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 15.2437 30.0088 0 - vertex 12.291 30.606 0 - vertex 12.3025 30.5214 0 + vertex 13.0733 24.7212 0 + vertex 9.71033 23.0922 0 + vertex 10.9729 20.5521 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 15.2838 30.0618 0 - vertex 12.2478 30.6663 0 - vertex 12.291 30.606 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 12.1728 30.7024 0 - vertex 15.3252 30.0845 0 - vertex 5.26494 38.4452 0 + vertex 5.72413 26.6445 0 + vertex 11.0411 28.3898 0 + vertex 11.2319 29.4873 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 15.3252 30.0845 0 - vertex 12.2478 30.6663 0 - vertex 15.2838 30.0618 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 12.2478 30.6663 0 - vertex 15.3252 30.0845 0 - vertex 12.1728 30.7024 0 + vertex 12.1975 25.5292 0 + vertex 9.07032 24.476 0 + vertex 9.71033 23.0922 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 12.1728 30.7024 0 - vertex 5.26494 38.4452 0 - vertex 12.0661 30.7144 0 + vertex 5.72413 26.6445 0 + vertex 11.2319 29.4873 0 + vertex 11.5971 30.3591 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 13.7923 24.2655 0 - vertex 10.6869 21.0368 0 - vertex 10.9846 20.5521 0 + vertex 11.5037 26.4501 0 + vertex 8.51885 25.3107 0 + vertex 9.07032 24.476 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 7.55919 25.8755 0 - vertex 11.0419 28.1143 0 - vertex 11.0528 28.3898 0 + vertex 11.1066 27.3577 0 + vertex 7.91411 25.7528 0 + vertex 8.51885 25.3107 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 13.5553 24.3991 0 - vertex 10.3935 21.5973 0 - vertex 10.6869 21.0368 0 + vertex 11.0411 28.3898 0 + vertex 7.11433 25.9588 0 + vertex 7.91411 25.7528 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 13.085 24.7212 0 - vertex 10.0801 22.2703 0 - vertex 10.3935 21.5973 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.55919 25.8755 0 - vertex 11.0528 28.3898 0 - vertex 11.1213 28.9486 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.6316 25.1032 0 - vertex 9.72206 23.0922 0 - vertex 10.0801 22.2703 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.39739 26.9794 0 - vertex 11.1213 28.9486 0 - vertex 11.2437 29.4873 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.2092 25.5292 0 - vertex 9.38213 23.8626 0 - vertex 9.72206 23.0922 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.8324 25.9834 0 - vertex 9.08206 24.476 0 - vertex 9.38213 23.8626 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.39739 26.9794 0 - vertex 11.2437 29.4873 0 - vertex 11.4096 29.9696 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5154 26.4501 0 - vertex 8.80411 24.9522 0 - vertex 9.08206 24.476 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.39739 26.9794 0 - vertex 11.4096 29.9696 0 - vertex 11.5057 30.1782 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.3839 26.6832 0 - vertex 8.6679 25.145 0 - vertex 8.80411 24.9522 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.2726 26.9135 0 - vertex 8.53058 25.3107 0 - vertex 8.6679 25.145 0 + vertex 11.0411 28.3898 0 + vertex 5.72413 26.6445 0 + vertex 7.11433 25.9588 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 5.02596 37.5856 0 - vertex 11.9476 30.6899 0 - vertex 5.13345 37.8458 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.1835 27.139 0 - vertex 8.38993 25.4519 0 - vertex 8.53058 25.3107 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.1184 27.3577 0 - vertex 8.24373 25.571 0 - vertex 8.38993 25.4519 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.0734 27.5937 0 - vertex 8.08977 25.6705 0 - vertex 8.24373 25.571 0 + vertex 5.19939 38.083 0 + vertex 12.0544 30.7144 0 + vertex 5.25321 38.4452 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 5.13345 37.8458 0 - vertex 11.9476 30.6899 0 - vertex 5.21112 38.083 0 + vertex 4.72188 37.0399 0 + vertex 12.0544 30.7144 0 + vertex 5.19939 38.083 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 11.0484 27.8474 0 - vertex 7.92584 25.7528 0 - vertex 8.08977 25.6705 0 + vertex 7.11433 25.9588 0 + vertex 5.72413 26.6445 0 + vertex 6.4022 26.1795 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 11.0419 28.1143 0 - vertex 7.55919 25.8755 0 - vertex 7.92584 25.7528 0 + vertex 15.3134 30.0845 0 + vertex 12.0544 30.7144 0 + vertex 12.2907 30.5214 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 11.1213 28.9486 0 - vertex 5.39739 26.9794 0 - vertex 7.12606 25.9588 0 + vertex -1.46161 28.0795 0 + vertex 1.04836 28.6106 0 + vertex 1.1273 29.8907 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 11.1213 28.9486 0 - vertex 7.12606 25.9588 0 - vertex 7.55919 25.8755 0 + vertex 1.04836 28.6106 0 + vertex -0.115935 27.2162 0 + vertex 0.858783 27.1101 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 12.0661 30.7144 0 - vertex 5.21112 38.083 0 - vertex 11.9476 30.6899 0 + vertex -2.77953 29.7664 0 + vertex 1.1273 29.8907 0 + vertex 1.37489 31.173 0 endloop endfacet - facet normal -0 -0 1 + facet normal 0 0 1 outer loop - vertex 5.73586 26.6445 0 - vertex 7.12606 25.9588 0 - vertex 5.39739 26.9794 0 + vertex 1.04836 28.6106 0 + vertex -0.786632 27.5359 0 + vertex -0.115935 27.2162 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 5.25596 38.2865 0 - vertex 12.0661 30.7144 0 - vertex 5.26494 38.4452 0 + vertex -3.97987 32.1322 0 + vertex 1.37489 31.173 0 + vertex 2.44067 33.9939 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 1.04836 28.6106 0 + vertex -1.46161 28.0795 0 + vertex -0.786632 27.5359 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 4.89167 37.3134 0 - vertex 11.9476 30.6899 0 - vertex 5.02596 37.5856 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 6.07308 26.3793 0 - vertex 7.12606 25.9588 0 - vertex 5.73586 26.6445 0 + vertex -5.55994 36.5001 0 + vertex 2.44067 33.9939 0 + vertex 4.08079 37.0842 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 7.12606 25.9588 0 - vertex 6.07308 26.3793 0 - vertex 6.76329 26.0408 0 + vertex 1.1273 29.8907 0 + vertex -2.77953 29.7664 0 + vertex -1.46161 28.0795 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 6.76329 26.0408 0 - vertex 6.07308 26.3793 0 - vertex 6.41393 26.1795 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.21112 38.083 0 - vertex 12.0661 30.7144 0 - vertex 5.25596 38.2865 0 + vertex -5.55994 36.5001 0 + vertex 4.08079 37.0842 0 + vertex 5.15152 38.5852 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 117.5 117.5 0 - vertex 5.20457 38.5758 0 - vertex 5.23504 38.5484 0 + vertex 1.37489 31.173 0 + vertex -3.97987 32.1322 0 + vertex -2.77953 29.7664 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 117.5 117.5 0 - vertex 5.16325 38.5852 0 - vertex 5.20457 38.5758 0 + vertex 2.44067 33.9939 0 + vertex -4.97284 35.0324 0 + vertex -3.97987 32.1322 0 endloop endfacet facet normal -0 0 1 outer loop vertex -117.5 117.5 0 - vertex 5.16325 38.5852 0 + vertex 5.15152 38.5852 0 vertex 117.5 117.5 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -0.438314 27.347 0 - vertex 1.04514 28.0688 0 - vertex 1.0601 28.6106 0 + vertex 2.44067 33.9939 0 + vertex -5.55994 36.5001 0 + vertex -4.97284 35.0324 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -1.11256 27.7809 0 - vertex 1.0601 28.6106 0 - vertex 1.07949 29.2543 0 + vertex 5.15152 38.5852 0 + vertex -5.8163 36.5812 0 + vertex -5.55994 36.5001 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 1.04514 28.0688 0 - vertex -0.438314 27.347 0 - vertex -0.104203 27.2162 0 + vertex -8.80952 27.3973 0 + vertex -6.28322 28.2565 0 + vertex -6.22131 31.7226 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -11.546 27.7352 0 + vertex -6.22131 31.7226 0 + vertex -6.055 36.2349 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex 0.505992 27.0868 0 - vertex 1.00441 27.6053 0 - vertex 0.215611 27.1342 0 + vertex -7.25507 27.2437 0 + vertex -6.28322 28.2565 0 + vertex -8.80952 27.3973 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 1.00441 27.6053 0 - vertex 0.505992 27.0868 0 - vertex 0.944126 27.2693 0 + vertex -6.28322 28.2565 0 + vertex -7.25507 27.2437 0 + vertex -6.38329 27.6173 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -1.78547 28.4297 0 - vertex 1.07949 29.2543 0 - vertex 1.13903 29.8907 0 + vertex -6.38329 27.6173 0 + vertex -7.25507 27.2437 0 + vertex -6.55612 27.3597 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 0.944126 27.2693 0 - vertex 0.734953 27.0776 0 - vertex 0.908598 27.1645 0 + vertex -6.22131 31.7226 0 + vertex -11.546 27.7352 0 + vertex -8.80952 27.3973 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -6.055 36.2349 0 + vertex -13.5562 27.8374 0 + vertex -11.546 27.7352 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -22.4093 27.9007 0 + vertex -6.055 36.2349 0 + vertex -5.8163 36.5812 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -6.055 36.2349 0 + vertex -15.2376 27.7001 0 + vertex -13.5562 27.8374 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -6.055 36.2349 0 + vertex -20.8096 27.6578 0 + vertex -15.2376 27.7001 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -15.2376 27.7001 0 + vertex -20.8096 27.6578 0 + vertex -16.9875 27.3196 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -16.9875 27.3196 0 + vertex -19.9485 27.2141 0 + vertex -19.335 26.703 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -16.9875 27.3196 0 + vertex -20.8096 27.6578 0 + vertex -19.9485 27.2141 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 5.15152 38.5852 0 + vertex -117.5 117.5 0 + vertex -5.8163 36.5812 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex 0.816408 27.0884 0 - vertex 0.908598 27.1645 0 - vertex 0.734953 27.0776 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.908598 27.1645 0 - vertex 0.816408 27.0884 0 - vertex 0.870515 27.1101 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.44583 29.2754 0 - vertex 1.13903 29.8907 0 - vertex 1.24074 30.5277 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 0.734953 27.0776 0 - vertex 0.944126 27.2693 0 - vertex 0.505992 27.0868 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.08241 30.2998 0 - vertex 1.24074 30.5277 0 - vertex 1.38662 31.173 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.04514 28.0688 0 - vertex 0.215611 27.1342 0 - vertex 1.00441 27.6053 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.38828 30.8734 0 - vertex 1.38662 31.173 0 - vertex 1.57871 31.8344 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -3.96814 32.1322 0 - vertex 1.57871 31.8344 0 - vertex 1.81903 32.5199 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 0.215611 27.1342 0 - vertex 1.04514 28.0688 0 - vertex -0.104203 27.2162 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -4.23933 32.8128 0 - vertex 1.81903 32.5199 0 - vertex 2.10958 33.2371 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.0601 28.6106 0 - vertex -0.7749 27.5359 0 - vertex -0.438314 27.347 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.73722 34.2652 0 - vertex 2.10958 33.2371 0 - vertex 2.4524 33.9939 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.96111 35.0324 0 - vertex 2.4524 33.9939 0 - vertex 2.84738 34.7996 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.0601 28.6106 0 - vertex -1.11256 27.7809 0 - vertex -0.7749 27.5359 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -5.11886 35.5644 0 - vertex 2.84738 34.7996 0 - vertex 3.26543 35.6052 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -5.41174 36.2975 0 - vertex 3.26543 35.6052 0 - vertex 3.68699 36.3778 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.07949 29.2543 0 - vertex -1.44988 28.0795 0 - vertex -1.11256 27.7809 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.41174 36.2975 0 - vertex 3.68699 36.3778 0 - vertex 4.09252 37.0842 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.54821 36.5001 0 - vertex 4.09252 37.0842 0 - vertex 4.46246 37.6912 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.07949 29.2543 0 - vertex -1.78547 28.4297 0 - vertex -1.44988 28.0795 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.61425 36.5608 0 - vertex 4.46246 37.6912 0 - vertex 4.77727 38.1658 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.13903 29.8907 0 - vertex -2.11792 28.8291 0 - vertex -1.78547 28.4297 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.13903 29.8907 0 - vertex -2.44583 29.2754 0 - vertex -2.11792 28.8291 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.61425 36.5608 0 - vertex 4.77727 38.1658 0 - vertex 5.01738 38.4749 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.24074 30.5277 0 - vertex -2.7678 29.7664 0 - vertex -2.44583 29.2754 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.24074 30.5277 0 - vertex -3.08241 30.2998 0 - vertex -2.7678 29.7664 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.38662 31.173 0 - vertex -3.38828 30.8734 0 - vertex -3.08241 30.2998 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.67893 36.5944 0 - vertex 5.01738 38.4749 0 - vertex 5.10332 38.557 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.57871 31.8344 0 - vertex -3.68399 31.485 0 - vertex -3.38828 30.8734 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.57871 31.8344 0 - vertex -3.96814 32.1322 0 - vertex -3.68399 31.485 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.81903 32.5199 0 - vertex -4.23933 32.8128 0 - vertex -3.96814 32.1322 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -5.74234 36.6012 0 - vertex 5.16325 38.5852 0 + vertex -31.2177 27.4629 0 + vertex -5.8163 36.5812 0 vertex -117.5 117.5 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 2.4524 33.9939 0 - vertex -4.96111 35.0324 0 - vertex -4.73722 34.2652 0 + vertex -6.055 36.2349 0 + vertex -22.4093 27.9007 0 + vertex -20.8096 27.6578 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 2.10958 33.2371 0 - vertex -4.49616 33.5245 0 - vertex -4.23933 32.8128 0 + vertex -24.3225 27.6757 0 + vertex -27.4214 26.3653 0 + vertex -24.8433 26.205 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 2.10958 33.2371 0 - vertex -4.73722 34.2652 0 - vertex -4.49616 33.5245 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.84738 34.7996 0 - vertex -5.11886 35.5644 0 - vertex -4.96111 35.0324 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.26543 35.6052 0 - vertex -5.26884 35.9859 0 - vertex -5.11886 35.5644 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.26543 35.6052 0 - vertex -5.41174 36.2975 0 - vertex -5.26884 35.9859 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.09252 37.0842 0 - vertex -5.54821 36.5001 0 - vertex -5.41174 36.2975 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.46246 37.6912 0 - vertex -5.61425 36.5608 0 - vertex -5.54821 36.5001 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.01738 38.4749 0 - vertex -5.67893 36.5944 0 - vertex -5.61425 36.5608 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.10332 38.557 0 - vertex -5.74234 36.6012 0 - vertex -5.67893 36.5944 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.16325 38.5852 0 - vertex -5.74234 36.6012 0 - vertex 5.10332 38.557 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.2816 27.5955 0 - vertex -6.22417 29.538 0 - vertex -6.20957 31.7226 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.5342 27.7352 0 - vertex -6.20957 31.7226 0 - vertex -6.19415 33.3563 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.22417 29.538 0 - vertex -10.2816 27.5955 0 - vertex -8.79778 27.3973 0 + vertex -5.8163 36.5812 0 + vertex -24.3632 27.9554 0 + vertex -22.4093 27.9007 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex -7.89877 27.2865 0 - vertex -6.24249 28.8007 0 - vertex -8.79778 27.3973 0 + vertex -29.2879 26.9865 0 + vertex -24.3632 27.9554 0 + vertex -30.666 27.4912 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -6.24249 28.8007 0 - vertex -7.89877 27.2865 0 - vertex -6.27149 28.2565 0 + vertex -24.3632 27.9554 0 + vertex -29.2879 26.9865 0 + vertex -27.4214 26.3653 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -12.6053 27.816 0 - vertex -6.19415 33.3563 0 - vertex -6.15766 34.7516 0 + vertex -5.8163 36.5812 0 + vertex -30.666 27.4912 0 + vertex -24.3632 27.9554 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -31.0943 24.213 0 + vertex -34.2108 23.023 0 + vertex -32.1178 22.3529 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -37.7877 25.1404 0 + vertex -31.2912 27.2229 0 + vertex -31.2177 27.4629 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -31.2912 27.2229 0 + vertex -36.1697 23.9798 0 + vertex -34.2108 23.023 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -31.2912 27.2229 0 + vertex -37.7877 25.1404 0 + vertex -36.1697 23.9798 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -5.8163 36.5812 0 + vertex -31.2177 27.4629 0 + vertex -30.666 27.4912 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -31.2177 27.4629 0 + vertex -38.5782 25.7376 0 + vertex -37.7877 25.1404 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex -7.24334 27.2437 0 - vertex -6.27149 28.2565 0 - vertex -7.89877 27.2865 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -6.99768 27.2475 0 - vertex -6.31368 27.8729 0 - vertex -7.24334 27.2437 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.5445 27.8374 0 - vertex -6.15766 34.7516 0 - vertex -6.10555 35.7605 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -6.80178 27.2682 0 - vertex -6.31368 27.8729 0 - vertex -6.99768 27.2475 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.31368 27.8729 0 - vertex -6.80178 27.2682 0 - vertex -6.37156 27.6173 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.37156 27.6173 0 - vertex -6.65192 27.3056 0 - vertex -6.44763 27.4571 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.4014 27.7989 0 - vertex -6.10555 35.7605 0 - vertex -6.07534 36.0738 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.44763 27.4571 0 - vertex -6.65192 27.3056 0 - vertex -6.54439 27.3597 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -6.65192 27.3056 0 - vertex -6.37156 27.6173 0 - vertex -6.80178 27.2682 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.2259 27.7001 0 - vertex -6.07534 36.0738 0 - vertex -6.04327 36.2349 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.27149 28.2565 0 - vertex -7.24334 27.2437 0 - vertex -6.31368 27.8729 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.22417 29.538 0 - vertex -8.79778 27.3973 0 - vertex -6.24249 28.8007 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.20957 31.7226 0 - vertex -11.5342 27.7352 0 - vertex -10.2816 27.5955 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.4599 27.7917 0 - vertex -6.04327 36.2349 0 - vertex -5.92579 36.4611 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.19415 33.3563 0 - vertex -12.6053 27.816 0 - vertex -11.5342 27.7352 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.15766 34.7516 0 - vertex -13.5445 27.8374 0 - vertex -12.6053 27.816 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.7335 27.9892 0 - vertex -5.92579 36.4611 0 - vertex -5.86569 36.5344 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.10555 35.7605 0 - vertex -14.4014 27.7989 0 - vertex -13.5445 27.8374 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.07534 36.0738 0 - vertex -15.2259 27.7001 0 - vertex -14.4014 27.7989 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.04327 36.2349 0 - vertex -16.0674 27.5405 0 - vertex -15.2259 27.7001 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.04327 36.2349 0 - vertex -20.7979 27.6578 0 - vertex -16.0674 27.5405 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -20.5419 27.5737 0 - vertex -16.0674 27.5405 0 - vertex -20.7979 27.6578 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.0145 27.539 0 - vertex -5.86569 36.5344 0 - vertex -5.80457 36.5812 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9758 27.3196 0 - vertex -19.9368 27.2141 0 - vertex -19.3233 26.703 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9758 27.3196 0 - vertex -20.1227 27.3549 0 - vertex -19.9368 27.2141 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.74234 36.6012 0 - vertex -117.5 117.5 0 - vertex -5.80457 36.5812 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9758 27.3196 0 - vertex -20.3206 27.4738 0 - vertex -20.1227 27.3549 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9758 27.3196 0 - vertex -20.5419 27.5737 0 - vertex -20.3206 27.4738 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.0674 27.5405 0 - vertex -20.5419 27.5737 0 - vertex -16.9758 27.3196 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.04327 36.2349 0 - vertex -21.1001 27.7294 0 - vertex -20.7979 27.6578 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.04327 36.2349 0 - vertex -21.4599 27.7917 0 - vertex -21.1001 27.7294 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -31.0145 27.539 0 - vertex -5.80457 36.5812 0 + vertex -39.0347 25.8392 0 + vertex -31.2177 27.4629 0 vertex -117.5 117.5 0 endloop endfacet - facet normal 0 0 1 + facet normal 0 -0 1 outer loop - vertex -5.92579 36.4611 0 - vertex -22.3975 27.9007 0 - vertex -21.4599 27.7917 0 + vertex -47.2102 -36.2359 0 + vertex -37.5366 -12.7854 0 + vertex -47.8577 -36.863 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -5.92579 36.4611 0 - vertex -23.1232 27.9594 0 - vertex -22.3975 27.9007 0 + vertex -39.9072 -25.4747 0 + vertex -47.2102 -36.2359 0 + vertex -42.237 -30.9405 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -5.92579 36.4611 0 - vertex -23.7335 27.9892 0 - vertex -23.1232 27.9594 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.86569 36.5344 0 - vertex -24.1643 27.9885 0 - vertex -23.7335 27.9892 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.86569 36.5344 0 - vertex -24.2923 27.9761 0 - vertex -24.1643 27.9885 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.3751 26.2567 0 - vertex -24.3889 27.8265 0 - vertex -24.3858 27.8943 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.3632 27.7532 0 - vertex -26.3751 26.2567 0 - vertex -24.8316 26.205 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.8395 26.4592 0 - vertex -24.3858 27.8943 0 - vertex -24.3515 27.9554 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.3858 27.8943 0 - vertex -26.9353 26.3003 0 - vertex -26.3751 26.2567 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.3858 27.8943 0 - vertex -27.4097 26.3653 0 - vertex -26.9353 26.3003 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.86569 36.5344 0 - vertex -31.0145 27.539 0 - vertex -24.2923 27.9761 0 + vertex -42.237 -30.9405 0 + vertex -47.2102 -36.2359 0 + vertex -43.2543 -33.2915 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex -29.2762 26.9865 0 - vertex -24.3515 27.9554 0 - vertex -30.0875 27.3102 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -28.7314 26.7626 0 - vertex -24.3515 27.9554 0 - vertex -29.2762 26.9865 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -27.8395 26.4592 0 - vertex -24.3515 27.9554 0 - vertex -28.2663 26.5892 0 + vertex -46.1801 -35.8499 0 + vertex -43.2543 -33.2915 0 + vertex -47.2102 -36.2359 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.3858 27.8943 0 - vertex -27.8395 26.4592 0 - vertex -27.4097 26.3653 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -28.2663 26.5892 0 - vertex -24.3515 27.9554 0 - vertex -28.7314 26.7626 0 + vertex -44.1198 -34.7306 0 + vertex -46.1801 -35.8499 0 + vertex -45.0296 -35.5019 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.3515 27.9554 0 - vertex -30.6543 27.4912 0 - vertex -30.0875 27.3102 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -30.8579 27.5312 0 - vertex -24.2923 27.9761 0 - vertex -31.0145 27.539 0 + vertex -43.2543 -33.2915 0 + vertex -46.1801 -35.8499 0 + vertex -44.1198 -34.7306 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -24.3515 27.9554 0 - vertex -30.8579 27.5312 0 - vertex -30.6543 27.4912 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.2923 27.9761 0 - vertex -30.8579 27.5312 0 - vertex -24.3515 27.9554 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.0225 24.5398 0 - vertex -31.2795 27.2229 0 - vertex -31.272 27.3506 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.7957 23.7338 0 - vertex -32.1061 22.3529 0 - vertex -31.5861 22.2399 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.0826 24.213 0 - vertex -32.6306 22.489 0 - vertex -32.1061 22.3529 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2103 24.5339 0 - vertex -33.1564 22.6469 0 - vertex -32.6306 22.489 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2656 24.779 0 - vertex -33.6803 22.8253 0 - vertex -33.1564 22.6469 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2656 24.779 0 - vertex -34.199 23.023 0 - vertex -33.6803 22.8253 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.5664 25.7376 0 - vertex -31.272 27.3506 0 - vertex -31.2059 27.4629 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2668 24.8727 0 - vertex -34.7094 23.2385 0 - vertex -34.199 23.023 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2507 24.9472 0 - vertex -34.7094 23.2385 0 - vertex -31.2668 24.8727 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2795 27.2229 0 - vertex -35.6921 23.7183 0 - vertex -35.2082 23.4707 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2795 27.2229 0 - vertex -36.1579 23.9798 0 - vertex -35.6921 23.7183 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2795 27.2229 0 - vertex -36.6025 24.2541 0 - vertex -36.1579 23.9798 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.8381 25.8495 0 - vertex -31.2059 27.4629 0 - vertex -31.1289 27.5158 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.0145 27.539 0 - vertex -117.5 117.5 0 - vertex -31.1289 27.5158 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.272 27.3506 0 - vertex -38.2113 25.5018 0 - vertex -37.776 25.1404 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.272 27.3506 0 - vertex -37.776 25.1404 0 - vertex -37.4147 24.8357 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.272 27.3506 0 - vertex -37.4147 24.8357 0 - vertex -37.0225 24.5398 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2795 27.2229 0 - vertex -37.0225 24.5398 0 - vertex -36.6025 24.2541 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.272 27.3506 0 - vertex -38.5664 25.7376 0 - vertex -38.2113 25.5018 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2059 27.4629 0 - vertex -38.7129 25.8089 0 - vertex -38.5664 25.7376 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -38.9416 25.8595 0 - vertex -31.1289 27.5158 0 - vertex -117.5 117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2059 27.4629 0 - vertex -38.8381 25.8495 0 - vertex -38.7129 25.8089 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.1289 27.5158 0 - vertex -38.9416 25.8595 0 - vertex -38.8381 25.8495 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -39.8955 -25.4747 0 - vertex -37.5315 -12.6425 0 - vertex -47.5785 -36.5332 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -47.4015 -36.3788 0 - vertex -39.8955 -25.4747 0 - vertex -47.5785 -36.5332 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.8955 -25.4747 0 - vertex -47.4015 -36.3788 0 - vertex -41.2695 -28.6585 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -41.2695 -28.6585 0 - vertex -47.1985 -36.2359 0 - vertex -42.2252 -30.9405 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -42.2252 -30.9405 0 - vertex -46.9715 -36.1082 0 - vertex -42.7651 -32.2453 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -46.7228 -35.999 0 - vertex -42.7651 -32.2453 0 - vertex -46.9715 -36.1082 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -42.7651 -32.2453 0 - vertex -46.4544 -35.9117 0 - vertex -43.2426 -33.2915 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -43.2426 -33.2915 0 - vertex -46.4544 -35.9117 0 - vertex -43.4655 -33.7273 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -43.4655 -33.7273 0 - vertex -46.1684 -35.8499 0 - vertex -43.682 -34.1098 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -43.682 -34.1098 0 - vertex -46.1684 -35.8499 0 - vertex -43.8952 -34.443 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -45.8475 -35.7893 0 - vertex -43.8952 -34.443 0 - vertex -46.1684 -35.8499 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -45.5508 -35.7136 0 - vertex -44.108 -34.7306 0 - vertex -45.8475 -35.7893 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -44.108 -34.7306 0 - vertex -45.5508 -35.7136 0 - vertex -44.3237 -34.9765 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -44.3237 -34.9765 0 - vertex -45.5508 -35.7136 0 - vertex -44.5451 -35.1844 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -44.7755 -35.3583 0 - vertex -45.5508 -35.7136 0 - vertex -45.0179 -35.5019 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -45.0179 -35.5019 0 - vertex -45.5508 -35.7136 0 - vertex -45.2753 -35.6191 0 + vertex -37.5366 -12.7854 0 + vertex -47.2102 -36.2359 0 + vertex -39.9072 -25.4747 0 endloop endfacet facet normal 0 0 1 outer loop vertex -117.5 117.5 0 - vertex -39.13 25.5984 0 - vertex -39.1175 25.7085 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -44.5451 -35.1844 0 - vertex -45.5508 -35.7136 0 - vertex -44.7755 -35.3583 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -43.8952 -34.443 0 - vertex -45.8475 -35.7893 0 - vertex -44.108 -34.7306 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -46.1684 -35.8499 0 - vertex -43.4655 -33.7273 0 - vertex -46.4544 -35.9117 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -46.4544 -35.9117 0 - vertex -42.7651 -32.2453 0 - vertex -46.7228 -35.999 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -46.9715 -36.1082 0 - vertex -42.2252 -30.9405 0 - vertex -47.1985 -36.2359 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -47.1985 -36.2359 0 - vertex -41.2695 -28.6585 0 - vertex -47.4015 -36.3788 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.5249 -12.7854 0 - vertex -39.8955 -25.4747 0 - vertex -38.3469 -21.8682 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.5104 -12.4945 0 - vertex -47.7274 -36.6957 0 - vertex -37.5315 -12.6425 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.1186 25.4589 0 - vertex -47.9322 -37.0315 0 - vertex -47.846 -36.863 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.1186 25.4589 0 - vertex -117.5 117.5 0 - vertex -47.9322 -37.0315 0 + vertex -47.8577 -36.863 0 + vertex -39.1303 25.4589 0 endloop endfacet facet normal 0 0 1 outer loop vertex -117.5 -117.5 0 - vertex -47.984 -37.1977 0 + vertex -47.8577 -36.863 0 vertex -117.5 117.5 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -47.9322 -37.0315 0 + vertex -39.0347 25.8392 0 vertex -117.5 117.5 0 - vertex -47.984 -37.1977 0 + vertex -39.1303 25.4589 0 endloop endfacet facet normal 0 0 1 outer loop - vertex -39.0817 25.7888 0 - vertex -117.5 117.5 0 - vertex -39.1175 25.7085 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.0229 25.8392 0 - vertex -117.5 117.5 0 - vertex -39.0817 25.7888 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.9416 25.8595 0 - vertex -117.5 117.5 0 - vertex -39.0229 25.8392 0 + vertex -31.2177 27.4629 0 + vertex -39.0347 25.8392 0 + vertex -38.5782 25.7376 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 47.9987 -20.2887 0 + vertex 47.8425 -21.0531 0 vertex 117.5 -117.5 0 - vertex 47.9993 -20.1225 0 + vertex 47.9875 -20.1225 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 47.9737 -20.4912 0 + vertex 47.5305 -21.9981 0 vertex 117.5 -117.5 0 - vertex 47.9987 -20.2887 0 + vertex 47.8425 -21.0531 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 47.8542 -21.0531 0 + vertex 47.0957 -22.796 0 vertex 117.5 -117.5 0 - vertex 47.9737 -20.4912 0 + vertex 47.5305 -21.9981 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 47.7155 -21.5429 0 + vertex 46.5684 -23.4293 0 vertex 117.5 -117.5 0 - vertex 47.8542 -21.0531 0 + vertex 47.0957 -22.796 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 37.9939 -37.5705 0 + vertex 46.5684 -23.4293 0 + vertex 45.9792 -23.8802 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 38.113 -36.8464 0 + vertex 45.9792 -23.8802 0 + vertex 45.3585 -24.1311 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 38.2188 -29.6614 0 + vertex 45.3585 -24.1311 0 + vertex 44.7368 -24.1643 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 40.0289 -25.46 0 + vertex 44.7368 -24.1643 0 + vertex 44.1445 -23.9621 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 47.5422 -21.9981 0 - vertex 117.5 -117.5 0 - vertex 47.7155 -21.5429 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 47.3383 -22.4165 0 - vertex 117.5 -117.5 0 - vertex 47.5422 -21.9981 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 47.1074 -22.796 0 - vertex 117.5 -117.5 0 - vertex 47.3383 -22.4165 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 46.8534 -23.1343 0 - vertex 117.5 -117.5 0 - vertex 47.1074 -22.796 0 + vertex 41.2986 -23.9223 0 + vertex 44.1445 -23.9621 0 + vertex 43.6122 -23.5069 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 38.0668 -37.4245 0 - vertex 46.8534 -23.1343 0 - vertex 46.5801 -23.4293 0 + vertex 41.2986 -23.9223 0 + vertex 43.6122 -23.5069 0 + vertex 42.7682 -22.851 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 38.0668 -37.4245 0 - vertex 46.5801 -23.4293 0 - vertex 46.2914 -23.6786 0 + vertex 44.1445 -23.9621 0 + vertex 41.2986 -23.9223 0 + vertex 40.5923 -24.6171 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 38.103 -37.2562 0 - vertex 46.2914 -23.6786 0 - vertex 45.9909 -23.8802 0 + vertex 44.1445 -23.9621 0 + vertex 40.5923 -24.6171 0 + vertex 40.0289 -25.46 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 38.1248 -36.8464 0 - vertex 45.9909 -23.8802 0 - vertex 45.6826 -24.0317 0 + vertex 44.7368 -24.1643 0 + vertex 40.0289 -25.46 0 + vertex 38.2188 -29.6614 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 38.119 -36.6694 0 - vertex 45.6826 -24.0317 0 - vertex 45.3703 -24.1311 0 + vertex 37.9618 -36.3241 0 + vertex 45.3585 -24.1311 0 + vertex 38.2188 -29.6614 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 38.2305 -29.6614 0 - vertex 45.3703 -24.1311 0 - vertex 45.0576 -24.176 0 + vertex 45.9792 -23.8802 0 + vertex 38.113 -36.8464 0 + vertex 37.9939 -37.5705 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 39.342 -26.9688 0 - vertex 45.0576 -24.176 0 - vertex 44.7485 -24.1643 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 39.342 -26.9688 0 - vertex 44.7485 -24.1643 0 - vertex 44.4468 -24.0937 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 40.0406 -25.46 0 - vertex 44.4468 -24.0937 0 - vertex 44.1563 -23.9621 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 41.3103 -23.9223 0 - vertex 44.1563 -23.9621 0 - vertex 43.8807 -23.7673 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.7898 -23.5063 0 - vertex 43.8807 -23.7673 0 - vertex 43.6239 -23.5069 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 42.2267 -23.1657 0 - vertex 43.6239 -23.5069 0 - vertex 43.3873 -23.2523 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 42.2267 -23.1657 0 - vertex 43.3873 -23.2523 0 - vertex 43.1493 -23.0437 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 42.5728 -22.9356 0 - vertex 43.1493 -23.0437 0 - vertex 42.9376 -22.9028 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 42.6968 -22.8729 0 - vertex 42.9376 -22.9028 0 - vertex 42.8503 -22.8644 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 42.6968 -22.8729 0 - vertex 42.8503 -22.8644 0 - vertex 42.7799 -22.851 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 42.9376 -22.9028 0 - vertex 42.6968 -22.8729 0 - vertex 42.5728 -22.9356 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 43.1493 -23.0437 0 - vertex 42.5728 -22.9356 0 - vertex 42.2267 -23.1657 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 43.6239 -23.5069 0 - vertex 42.2267 -23.1657 0 - vertex 41.7898 -23.5063 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 43.8807 -23.7673 0 - vertex 41.7898 -23.5063 0 - vertex 41.3103 -23.9223 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.1563 -23.9621 0 - vertex 41.3103 -23.9223 0 - vertex 40.922 -24.2835 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.1563 -23.9621 0 - vertex 40.922 -24.2835 0 - vertex 40.604 -24.6171 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.1563 -23.9621 0 - vertex 40.604 -24.6171 0 - vertex 40.3218 -24.9877 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.1563 -23.9621 0 - vertex 40.3218 -24.9877 0 - vertex 40.0406 -25.46 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.4468 -24.0937 0 - vertex 40.0406 -25.46 0 - vertex 39.7256 -26.0988 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.4468 -24.0937 0 - vertex 39.7256 -26.0988 0 - vertex 39.342 -26.9688 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 45.0576 -24.176 0 - vertex 39.342 -26.9688 0 - vertex 38.2305 -29.6614 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.0969 -36.5276 0 - vertex 45.3703 -24.1311 0 - vertex 38.2305 -29.6614 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 45.9909 -23.8802 0 - vertex 38.1248 -36.8464 0 - vertex 38.103 -37.2562 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 46.2914 -23.6786 0 - vertex 38.103 -37.2562 0 - vertex 38.0668 -37.4245 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 46.8534 -23.1343 0 - vertex 38.0668 -37.4245 0 - vertex 38.0057 -37.5705 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 46.8534 -23.1343 0 - vertex 38.0057 -37.5705 0 + vertex 46.5684 -23.4293 0 + vertex 37.9939 -37.5705 0 vertex 117.5 -117.5 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 37.9137 -37.6957 0 + vertex 37.381 -37.9628 0 vertex 117.5 -117.5 0 - vertex 38.0057 -37.5705 0 + vertex 37.9939 -37.5705 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 37.7849 -37.8018 0 + vertex 35.8907 -38.1241 0 vertex 117.5 -117.5 0 - vertex 37.9137 -37.6957 0 + vertex 37.381 -37.9628 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 37.6132 -37.8903 0 + vertex 33.1396 -38.1555 0 vertex 117.5 -117.5 0 - vertex 37.7849 -37.8018 0 + vertex 35.8907 -38.1241 0 endloop endfacet - facet normal -0 0 1 + facet normal 0 0 1 outer loop - vertex 37.3927 -37.9628 0 + vertex 29.8074 -38.0948 0 vertex 117.5 -117.5 0 - vertex 37.6132 -37.8903 0 + vertex 33.1396 -38.1555 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 21.4079 -38.2833 0 + vertex 29.8074 -38.0948 0 + vertex 28.6431 -37.8931 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 28.553 -36.8405 0 + vertex 25.9895 -35.834 0 + vertex 28.4102 -37.3704 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 37.1174 -38.0208 0 - vertex 117.5 -117.5 0 - vertex 37.3927 -37.9628 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 36.7812 -38.066 0 - vertex 117.5 -117.5 0 - vertex 37.1174 -38.0208 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 35.9024 -38.1241 0 - vertex 117.5 -117.5 0 - vertex 36.7812 -38.066 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 34.7085 -38.1497 0 - vertex 117.5 -117.5 0 - vertex 35.9024 -38.1241 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 33.1514 -38.1555 0 - vertex 117.5 -117.5 0 - vertex 34.7085 -38.1497 0 + vertex 24.0601 -37.0678 0 + vertex 28.4102 -37.3704 0 + vertex 25.9895 -35.834 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 31.1824 -38.1409 0 - vertex 117.5 -117.5 0 - vertex 33.1514 -38.1555 0 + vertex 28.4102 -37.3704 0 + vertex 24.0601 -37.0678 0 + vertex 28.6431 -37.8931 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 20.3202 -38.5182 0 - vertex 31.1824 -38.1409 0 - vertex 29.8192 -38.0948 0 + vertex 21.4079 -38.2833 0 + vertex 28.6431 -37.8931 0 + vertex 24.0601 -37.0678 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 20.3202 -38.5182 0 - vertex 29.8192 -38.0948 0 - vertex 29.3448 -38.0588 0 + vertex 29.8074 -38.0948 0 + vertex 21.4079 -38.2833 0 + vertex 20.3084 -38.5182 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 20.8717 -38.4255 0 - vertex 29.3448 -38.0588 0 - vertex 28.9979 -38.0135 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.4197 -38.2833 0 - vertex 28.9979 -38.0135 0 - vertex 28.7706 -37.9584 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.6041 -37.8201 0 - vertex 28.7706 -37.9584 0 - vertex 28.6548 -37.8931 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.4965 -36.9693 0 - vertex 26.4377 -35.4824 0 - vertex 28.4495 -37.1014 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.0012 -35.834 0 - vertex 28.4495 -37.1014 0 - vertex 26.4377 -35.4824 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.4495 -37.1014 0 - vertex 26.0012 -35.834 0 - vertex 28.4243 -37.2355 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.4243 -37.2355 0 - vertex 26.0012 -35.834 0 - vertex 28.4219 -37.3704 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.5601 -36.1579 0 - vertex 28.4219 -37.3704 0 - vertex 26.0012 -35.834 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.4219 -37.3704 0 - vertex 25.5601 -36.1579 0 - vertex 28.443 -37.5048 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.1006 -36.4644 0 - vertex 28.443 -37.5048 0 - vertex 25.5601 -36.1579 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.443 -37.5048 0 - vertex 25.1006 -36.4644 0 - vertex 28.4883 -37.6376 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 24.6091 -36.7642 0 - vertex 28.4883 -37.6376 0 - vertex 25.1006 -36.4644 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.4883 -37.6376 0 - vertex 24.6091 -36.7642 0 - vertex 28.5587 -37.7674 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 24.0719 -37.0678 0 - vertex 28.5587 -37.7674 0 - vertex 24.6091 -36.7642 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.5587 -37.7674 0 - vertex 24.0719 -37.0678 0 - vertex 28.6548 -37.8931 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.2902 -37.4839 0 - vertex 28.6548 -37.8931 0 - vertex 24.0719 -37.0678 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 22.6041 -37.8201 0 - vertex 28.6548 -37.8931 0 - vertex 23.2902 -37.4839 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.7706 -37.9584 0 - vertex 22.6041 -37.8201 0 - vertex 21.9889 -38.084 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.7706 -37.9584 0 - vertex 21.9889 -38.084 0 - vertex 21.4197 -38.2833 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.9979 -38.0135 0 - vertex 21.4197 -38.2833 0 - vertex 20.8717 -38.4255 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.3448 -38.0588 0 - vertex 20.8717 -38.4255 0 - vertex 20.3202 -38.5182 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.1824 -38.1409 0 - vertex 20.3202 -38.5182 0 + vertex 29.8074 -38.0948 0 + vertex 20.3084 -38.5182 0 vertex 117.5 -117.5 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 19.7403 -38.5689 0 + vertex 19.0956 -38.5852 0 vertex 117.5 -117.5 0 - vertex 20.3202 -38.5182 0 + vertex 20.3084 -38.5182 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 19.1073 -38.5852 0 - vertex 117.5 -117.5 0 - vertex 19.7403 -38.5689 0 + vertex 5.33583 -38.4712 0 + vertex 19.0956 -38.5852 0 + vertex 17.8945 -38.4707 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 18.4669 -38.5591 0 - vertex 117.5 -117.5 0 - vertex 19.1073 -38.5852 0 + vertex 5.33583 -38.4712 0 + vertex 17.8945 -38.4707 0 + vertex 16.8412 -38.0675 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 5.34756 -38.4712 0 - vertex 18.4669 -38.5591 0 - vertex 18.1792 -38.5233 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.55983 -38.4413 0 - vertex 18.1792 -38.5233 0 - vertex 17.9062 -38.4707 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.81563 -38.3852 0 - vertex 17.9062 -38.4707 0 - vertex 17.6424 -38.4 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.47346 -38.1927 0 - vertex 17.6424 -38.4 0 - vertex 17.3825 -38.3101 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.35232 -37.8908 0 - vertex 17.3825 -38.3101 0 - vertex 17.1211 -38.1997 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.35232 -37.8908 0 - vertex 17.1211 -38.1997 0 - vertex 16.8529 -38.0675 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.2137 -37.0171 0 - vertex 16.8529 -38.0675 0 - vertex 16.342 -37.7658 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.5307 -36.9119 0 - vertex 16.342 -37.7658 0 - vertex 16.1153 -37.6039 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.8056 -32.2631 0 - vertex 11.5005 -31.4602 0 - vertex 14.73 -32.8205 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.1661 -32.3709 0 - vertex 14.73 -32.8205 0 - vertex 11.5005 -31.4602 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.2214 -34.9805 0 - vertex 14.6774 -34.4466 0 - vertex 14.6656 -33.913 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.2214 -34.9805 0 - vertex 14.7369 -35.0944 0 - vertex 14.6774 -34.4466 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.2239 -35.4151 0 - vertex 14.7369 -35.0944 0 - vertex 12.2468 -35.1875 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.7369 -35.0944 0 - vertex 12.2239 -35.4151 0 - vertex 14.8496 -35.6738 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.1496 -35.6584 0 - vertex 14.8496 -35.6738 0 - vertex 12.2239 -35.4151 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.8496 -35.6738 0 - vertex 12.1496 -35.6584 0 - vertex 14.927 -35.9398 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.0956 -35.7642 0 - vertex 14.927 -35.9398 0 - vertex 12.1496 -35.6584 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.927 -35.9398 0 - vertex 12.0956 -35.7642 0 - vertex 15.0191 -36.1911 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.0181 -35.8752 0 - vertex 15.0191 -36.1911 0 - vertex 12.0956 -35.7642 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0191 -36.1911 0 - vertex 12.0181 -35.8752 0 - vertex 15.1264 -36.4284 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.8034 -36.1064 0 - vertex 15.1264 -36.4284 0 - vertex 12.0181 -35.8752 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.1264 -36.4284 0 - vertex 11.8034 -36.1064 0 - vertex 15.2493 -36.6526 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2493 -36.6526 0 - vertex 11.8034 -36.1064 0 - vertex 15.3884 -36.8644 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.5264 -36.339 0 - vertex 15.3884 -36.8644 0 - vertex 11.8034 -36.1064 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.3884 -36.8644 0 - vertex 11.5264 -36.339 0 - vertex 15.544 -37.0647 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.208 -36.5595 0 - vertex 15.544 -37.0647 0 - vertex 11.5264 -36.339 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.544 -37.0647 0 - vertex 11.208 -36.5595 0 - vertex 15.7167 -37.2541 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.8691 -36.7549 0 - vertex 15.7167 -37.2541 0 - vertex 11.208 -36.5595 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.7167 -37.2541 0 - vertex 10.8691 -36.7549 0 - vertex 15.907 -37.4336 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.907 -37.4336 0 - vertex 10.8691 -36.7549 0 - vertex 16.1153 -37.6039 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.5307 -36.9119 0 - vertex 16.1153 -37.6039 0 - vertex 10.8691 -36.7549 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.342 -37.7658 0 - vertex 10.5307 -36.9119 0 - vertex 10.2137 -37.0171 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.8529 -38.0675 0 - vertex 10.2137 -37.0171 0 - vertex 8.4835 -37.477 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.94379 -37.3156 0 - vertex 10.2137 -37.0171 0 - vertex 9.93892 -37.0575 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.37163 -37.1827 0 - vertex 9.93892 -37.0575 0 - vertex 9.71926 -37.0921 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.93892 -37.0575 0 - vertex 9.37163 -37.1827 0 - vertex 8.94379 -37.3156 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.2137 -37.0171 0 - vertex 8.94379 -37.3156 0 - vertex 8.4835 -37.477 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.8529 -38.0675 0 - vertex 8.4835 -37.477 0 - vertex 7.35232 -37.8908 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.3825 -38.3101 0 - vertex 7.35232 -37.8908 0 - vertex 6.47346 -38.1927 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.6424 -38.4 0 - vertex 6.47346 -38.1927 0 - vertex 5.81563 -38.3852 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.9062 -38.4707 0 - vertex 5.81563 -38.3852 0 - vertex 5.55983 -38.4413 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.1792 -38.5233 0 - vertex 5.55983 -38.4413 0 - vertex 5.34756 -38.4712 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4669 -38.5591 0 - vertex 5.34756 -38.4712 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.17491 -38.475 0 - vertex 117.5 -117.5 0 - vertex 5.34756 -38.4712 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.974434 -38.4962 0 - vertex 5.17491 -38.475 0 - vertex 5.03796 -38.4533 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.32439 -38.26 0 - vertex 5.03796 -38.4533 0 - vertex 4.93281 -38.4063 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.26446 -37.4494 0 - vertex 4.74716 -37.8041 0 - vertex 4.72035 -37.4346 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.65588 -37.2809 0 - vertex 4.72035 -37.4346 0 - vertex 4.69132 -37.3222 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.72035 -37.4346 0 - vertex 4.65588 -37.2809 0 - vertex 4.26446 -37.4494 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.74716 -37.8041 0 - vertex 4.26446 -37.4494 0 - vertex 4.76904 -38.117 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.45158 -37.8545 0 - vertex 4.76904 -38.117 0 - vertex 4.26446 -37.4494 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.76904 -38.117 0 - vertex 3.45158 -37.8545 0 - vertex 4.80226 -38.2378 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.80226 -38.2378 0 - vertex 3.45158 -37.8545 0 - vertex 4.85555 -38.3343 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.20396 -37.9704 0 - vertex 4.85555 -38.3343 0 - vertex 3.45158 -37.8545 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.85555 -38.3343 0 - vertex 3.20396 -37.9704 0 - vertex 4.93281 -38.4063 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 2.93102 -38.0768 0 - vertex 4.93281 -38.4063 0 - vertex 3.20396 -37.9704 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 2.32439 -38.26 0 - vertex 4.93281 -38.4063 0 - vertex 2.93102 -38.0768 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.03796 -38.4533 0 - vertex 2.32439 -38.26 0 - vertex 1.66207 -38.4009 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.03796 -38.4533 0 - vertex 1.66207 -38.4009 0 - vertex 0.974434 -38.4962 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.17491 -38.475 0 - vertex 0.974434 -38.4962 0 - vertex 0.291868 -38.543 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.17491 -38.475 0 - vertex 0.291868 -38.543 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.355246 -38.538 0 - vertex 117.5 -117.5 0 - vertex 0.291868 -38.543 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.84865 -38.1451 0 - vertex -0.355246 -38.538 0 - vertex -0.936529 -38.478 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.657 -38.0883 0 - vertex -0.936529 -38.478 0 - vertex -1.19299 -38.4265 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.30871 -38.0303 0 - vertex -1.19299 -38.4265 0 - vertex -1.4216 -38.36 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.30871 -38.0303 0 - vertex -1.4216 -38.36 0 - vertex -1.69347 -38.2465 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.0676 -37.9462 0 - vertex -1.69347 -38.2465 0 - vertex -1.95525 -38.0993 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.4861 -31.0878 0 - vertex -6.39994 -29.738 0 - vertex -3.75417 -32.0301 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.75417 -32.0301 0 - vertex -6.39994 -29.738 0 - vertex -3.8527 -32.4651 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.70823 -32.8163 0 - vertex -3.8527 -32.4651 0 - vertex -6.39994 -29.738 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.8527 -32.4651 0 - vertex -7.70823 -32.8163 0 - vertex -3.92523 -32.8697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.92523 -32.8697 0 - vertex -7.70823 -32.8163 0 - vertex -3.97004 -33.2395 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.30266 -36.7536 0 - vertex -3.98536 -33.5697 0 - vertex -3.97004 -33.2395 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.30266 -36.7536 0 - vertex -3.97277 -33.9877 0 - vertex -3.98536 -33.5697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.30266 -36.7536 0 - vertex -3.93569 -34.3989 0 - vertex -3.97277 -33.9877 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.30266 -36.7536 0 - vertex -3.87516 -34.8013 0 - vertex -3.93569 -34.3989 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.30266 -36.7536 0 - vertex -3.79219 -35.193 0 - vertex -3.87516 -34.8013 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.30266 -36.7536 0 - vertex -3.68783 -35.5721 0 - vertex -3.79219 -35.193 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.30266 -36.7536 0 - vertex -3.56309 -35.9367 0 - vertex -3.68783 -35.5721 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.56309 -35.9367 0 - vertex -7.29619 -36.8569 0 - vertex -3.41901 -36.2848 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.30695 -36.9638 0 - vertex -3.41901 -36.2848 0 - vertex -7.29619 -36.8569 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.41901 -36.2848 0 - vertex -7.30695 -36.9638 0 - vertex -3.25661 -36.6145 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.38017 -37.1883 0 - vertex -3.25661 -36.6145 0 - vertex -7.30695 -36.9638 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.25661 -36.6145 0 - vertex -7.38017 -37.1883 0 - vertex -3.07693 -36.924 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.07693 -36.924 0 - vertex -7.38017 -37.1883 0 - vertex -2.88099 -37.2112 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.52232 -37.4271 0 - vertex -2.88099 -37.2112 0 - vertex -7.38017 -37.1883 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.88099 -37.2112 0 - vertex -7.52232 -37.4271 0 - vertex -2.66982 -37.4742 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.73344 -37.6801 0 - vertex -2.66982 -37.4742 0 - vertex -7.52232 -37.4271 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.66982 -37.4742 0 - vertex -7.73344 -37.6801 0 - vertex -2.44446 -37.7112 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.8903 -37.8311 0 - vertex -2.44446 -37.7112 0 - vertex -7.73344 -37.6801 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.44446 -37.7112 0 - vertex -7.8903 -37.8311 0 - vertex -2.20592 -37.9202 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.20592 -37.9202 0 - vertex -7.8903 -37.8311 0 - vertex -1.95525 -38.0993 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -8.0676 -37.9462 0 - vertex -1.95525 -38.0993 0 - vertex -7.8903 -37.8311 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.69347 -38.2465 0 - vertex -8.0676 -37.9462 0 - vertex -8.30871 -38.0303 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.19299 -38.4265 0 - vertex -8.30871 -38.0303 0 - vertex -8.657 -38.0883 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.936529 -38.478 0 - vertex -8.657 -38.0883 0 - vertex -9.15585 -38.1249 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.936529 -38.478 0 - vertex -9.15585 -38.1249 0 - vertex -9.84865 -38.1451 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.355246 -38.538 0 - vertex -9.84865 -38.1451 0 - vertex -117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -9.84865 -38.1451 0 - vertex -11.9896 -38.1555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -11.9896 -38.1555 0 - vertex -14.1677 -38.1469 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -14.1677 -38.1469 0 - vertex -14.8486 -38.1282 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -18.0369 -38.1201 0 - vertex -14.8486 -38.1282 0 - vertex -15.316 -38.0928 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.5664 -38.0841 0 - vertex -15.316 -38.0928 0 - vertex -15.614 -38.0352 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.2437 -38.0218 0 - vertex -15.614 -38.0352 0 - vertex -15.7132 -37.9965 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.9096 -37.1689 0 - vertex -16.3508 -37.1428 0 - vertex -15.9511 -37.293 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.9511 -37.293 0 - vertex -16.3508 -37.1428 0 - vertex -15.9675 -37.4163 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.5023 -37.3844 0 - vertex -15.9675 -37.4163 0 - vertex -16.3508 -37.1428 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.9675 -37.4163 0 - vertex -16.5023 -37.3844 0 - vertex -15.9604 -37.5428 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.9604 -37.5428 0 - vertex -16.5023 -37.3844 0 - vertex -15.9316 -37.6764 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.6872 -37.6188 0 - vertex -15.9316 -37.6764 0 - vertex -16.5023 -37.3844 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.9316 -37.6764 0 - vertex -16.6872 -37.6188 0 - vertex -15.8777 -37.8324 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.8516 -37.795 0 - vertex -15.8777 -37.8324 0 - vertex -16.6872 -37.6188 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.8777 -37.8324 0 - vertex -16.8516 -37.795 0 - vertex -15.8396 -37.8957 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.8396 -37.8957 0 - vertex -16.8516 -37.795 0 - vertex -15.7865 -37.9502 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.0213 -37.9274 0 - vertex -15.7865 -37.9502 0 - vertex -16.8516 -37.795 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.7865 -37.9502 0 - vertex -17.0213 -37.9274 0 - vertex -15.7132 -37.9965 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.2437 -38.0218 0 - vertex -15.7132 -37.9965 0 - vertex -17.0213 -37.9274 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.614 -38.0352 0 - vertex -17.2437 -38.0218 0 - vertex -17.5664 -38.0841 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.316 -38.0928 0 - vertex -17.5664 -38.0841 0 - vertex -18.0369 -38.1201 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.8486 -38.1282 0 - vertex -18.0369 -38.1201 0 - vertex -117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -18.0369 -38.1201 0 - vertex -18.7028 -38.1359 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -18.7028 -38.1359 0 - vertex -20.8109 -38.1301 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -20.8109 -38.1301 0 - vertex -23.4866 -38.0828 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2718 -38.1638 0 - vertex -23.4866 -38.0828 0 - vertex -24.3782 -38.0456 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2718 -38.1638 0 - vertex -24.3782 -38.0456 0 - vertex -24.7978 -38.0047 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2718 -38.1638 0 - vertex -24.7978 -38.0047 0 - vertex -24.9442 -37.9384 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.2673 -36.8782 0 - vertex -25.1078 -37.2448 0 - vertex -26.6839 -36.0968 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.1078 -37.2448 0 - vertex -27.2673 -36.8782 0 - vertex -25.1419 -37.4158 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.1419 -37.4158 0 - vertex -27.2673 -36.8782 0 - vertex -25.1453 -37.5754 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.1453 -37.5754 0 - vertex -27.2673 -36.8782 0 - vertex -25.1152 -37.719 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2718 -38.1638 0 - vertex -25.1152 -37.719 0 - vertex -27.2673 -36.8782 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.1152 -37.719 0 - vertex -28.2718 -38.1638 0 - vertex -25.0491 -37.8416 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.0491 -37.8416 0 - vertex -28.2718 -38.1638 0 - vertex -24.9442 -37.9384 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.4866 -38.0828 0 - vertex -28.2718 -38.1638 0 - vertex -117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -28.2718 -38.1638 0 - vertex -37.6203 -38.1325 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -37.6203 -38.1325 0 - vertex -41.2883 -38.1087 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -41.2883 -38.1087 0 - vertex -44.3648 -38.0673 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -44.3648 -38.0673 0 - vertex -46.5272 -38.014 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -46.5272 -38.014 0 - vertex -47.1648 -37.9848 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -47.1648 -37.9848 0 - vertex -47.4529 -37.9547 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -47.4529 -37.9547 0 - vertex -47.6522 -37.8745 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.984 -37.1977 0 - vertex -117.5 -117.5 0 - vertex -47.9993 -37.3583 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.355246 -38.538 0 - vertex -117.5 -117.5 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.8044 -37.7712 0 - vertex -117.5 -117.5 0 - vertex -47.6522 -37.8745 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.9115 -37.6485 0 - vertex -117.5 -117.5 0 - vertex -47.8044 -37.7712 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.9758 -37.5097 0 - vertex -117.5 -117.5 0 - vertex -47.9115 -37.6485 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.9993 -37.3583 0 - vertex -117.5 -117.5 0 - vertex -47.9758 -37.5097 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 42.9547 -20.2657 0 - vertex 42.1212 -20.0931 0 - vertex 42.3117 -20.6924 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 42.0356 -20.3507 0 - vertex 42.3117 -20.6924 0 - vertex 42.1212 -20.0931 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 41.9515 -20.5727 0 - vertex 42.3117 -20.6924 0 - vertex 42.0356 -20.3507 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 42.3117 -20.6924 0 - vertex 41.9515 -20.5727 0 - vertex 42.1116 -20.8028 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 41.9099 -20.7296 0 - vertex 42.1116 -20.8028 0 - vertex 41.9515 -20.5727 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 42.1116 -20.8028 0 - vertex 41.9099 -20.7296 0 - vertex 41.9827 -20.8453 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 41.9179 -20.8207 0 - vertex 41.9827 -20.8453 0 - vertex 41.9099 -20.7296 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.9827 -20.8453 0 - vertex 41.9179 -20.8207 0 - vertex 41.9427 -20.8413 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.1157 -22.9178 0 - vertex 36.3671 -23.1585 0 - vertex 36.3539 -23.0402 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.1157 -22.9178 0 - vertex 36.3539 -23.0402 0 - vertex 36.3224 -22.9562 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 35.9442 -22.9618 0 - vertex 36.3671 -23.1585 0 - vertex 36.1157 -22.9178 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.2034 -22.8943 0 - vertex 36.3224 -22.9562 0 - vertex 36.2723 -22.9073 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.3224 -22.9562 0 - vertex 36.2034 -22.8943 0 - vertex 36.1157 -22.9178 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.3671 -23.1585 0 - vertex 35.9442 -22.9618 0 - vertex 36.362 -23.3104 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.362 -23.3104 0 - vertex 35.9442 -22.9618 0 - vertex 36.2977 -23.7121 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 35.7166 -22.9783 0 - vertex 36.2977 -23.7121 0 - vertex 35.9442 -22.9618 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.4626 -22.9668 0 - vertex 36.2977 -23.7121 0 - vertex 35.7166 -22.9783 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.2977 -23.7121 0 - vertex 35.4626 -22.9668 0 - vertex 36.1622 -24.2394 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.2118 -22.9271 0 - vertex 36.1622 -24.2394 0 - vertex 35.4626 -22.9668 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.1622 -24.2394 0 - vertex 35.2118 -22.9271 0 - vertex 35.957 -24.8864 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.9345 -22.8399 0 - vertex 35.957 -24.8864 0 - vertex 35.2118 -22.9271 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.957 -24.8864 0 - vertex 34.9345 -22.8399 0 - vertex 35.6833 -25.6471 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.8338 -22.7839 0 - vertex 35.6833 -25.6471 0 - vertex 34.9345 -22.8399 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.7558 -22.7166 0 - vertex 35.6833 -25.6471 0 - vertex 34.8338 -22.7839 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.6833 -25.6471 0 - vertex 34.7558 -22.7166 0 - vertex 35.3422 -26.5156 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.6986 -22.636 0 - vertex 35.3422 -26.5156 0 - vertex 34.7558 -22.7166 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 33.8561 -30.1753 0 - vertex 34.6986 -22.636 0 - vertex 34.6602 -22.54 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 33.8561 -30.1753 0 - vertex 34.6602 -22.54 0 - vertex 34.6385 -22.4262 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.6986 -22.636 0 - vertex 33.8561 -30.1753 0 - vertex 35.3422 -26.5156 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 33.8561 -30.1753 0 - vertex 34.6385 -22.4262 0 - vertex 34.6318 -22.2927 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.6318 -22.2927 0 - vertex 32.0372 -23.3848 0 - vertex 31.9625 -24.0535 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.6318 -22.2927 0 - vertex 31.9625 -24.0535 0 - vertex 31.8392 -24.8188 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.6318 -22.2927 0 - vertex 31.8392 -24.8188 0 - vertex 31.6784 -25.7224 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 33.8561 -30.1753 0 - vertex 31.6784 -25.7224 0 - vertex 31.6003 -26.0834 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 31.3939 -26.6463 0 - vertex 33.8561 -30.1753 0 - vertex 31.5092 -26.3899 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 31.047 -27.0266 0 - vertex 33.8561 -30.1753 0 - vertex 31.2435 -26.857 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 30.7934 -27.1595 0 - vertex 33.8561 -30.1753 0 - vertex 31.047 -27.0266 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 30.2299 -31.0524 0 - vertex 33.1139 -32.0001 0 - vertex 30.2187 -30.9454 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 30.1034 -31.4773 0 - vertex 33.1139 -32.0001 0 - vertex 30.1726 -31.3179 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 33.1139 -32.0001 0 - vertex 30.1034 -31.4773 0 - vertex 32.5373 -33.371 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 29.8827 -31.8517 0 - vertex 32.5373 -33.371 0 - vertex 30.1034 -31.4773 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 30.2146 -31.1764 0 - vertex 33.1139 -32.0001 0 - vertex 30.2299 -31.0524 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 29.5499 -32.3032 0 - vertex 32.5373 -33.371 0 - vertex 29.8827 -31.8517 0 + vertex 10.519 -36.9119 0 + vertex 16.8412 -38.0675 0 + vertex 15.8953 -37.4336 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex 30.2187 -30.9454 0 - vertex 33.8561 -30.1753 0 - vertex 30.1812 -30.855 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 32.5373 -33.371 0 - vertex 29.5499 -32.3032 0 - vertex 32.0766 -34.3595 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.1179 -30.7807 0 - vertex 33.8561 -30.1753 0 - vertex 30.7934 -27.1595 0 + vertex 11.871 -34.5351 0 + vertex 14.7938 -32.2631 0 + vertex 11.4887 -31.4602 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 29.1028 -32.8352 0 - vertex 32.0766 -34.3595 0 - vertex 29.5499 -32.3032 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.9008 -30.6099 0 - vertex 30.7934 -27.1595 0 - vertex 30.4717 -27.2602 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 32.0766 -34.3595 0 - vertex 29.1028 -32.8352 0 - vertex 31.8743 -34.7329 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.8743 -34.7329 0 - vertex 29.1028 -32.8352 0 - vertex 31.6824 -35.0376 0 + vertex 12.2351 -35.1874 0 + vertex 14.8379 -35.6738 0 + vertex 14.6656 -34.4466 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 30.1726 -31.3179 0 - vertex 33.1139 -32.0001 0 - vertex 30.2146 -31.1764 0 + vertex 12.1379 -35.6584 0 + vertex 14.8379 -35.6738 0 + vertex 12.2351 -35.1874 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 33.8561 -30.1753 0 - vertex 30.2187 -30.9454 0 - vertex 33.1139 -32.0001 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 33.8561 -30.1753 0 - vertex 30.1179 -30.7807 0 - vertex 30.1812 -30.855 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.7002 -30.4984 0 - vertex 30.4717 -27.2602 0 - vertex 30.0709 -27.3331 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.7934 -27.1595 0 - vertex 29.9008 -30.6099 0 - vertex 30.1179 -30.7807 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.4717 -27.2602 0 - vertex 29.7002 -30.4984 0 - vertex 29.9008 -30.6099 0 + vertex 14.8379 -35.6738 0 + vertex 12.1379 -35.6584 0 + vertex 15.2376 -36.6526 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 29.58 -27.3827 0 - vertex 29.7002 -30.4984 0 - vertex 30.0709 -27.3331 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.58 -27.3827 0 - vertex 29.5048 -30.449 0 - vertex 29.7002 -30.4984 0 + vertex 11.7916 -36.1064 0 + vertex 15.2376 -36.6526 0 + vertex 12.1379 -35.6584 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 28.988 -27.4135 0 - vertex 29.5048 -30.449 0 - vertex 29.58 -27.3827 0 + vertex 11.1962 -36.5595 0 + vertex 15.2376 -36.6526 0 + vertex 11.7916 -36.1064 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 29.5048 -30.449 0 - vertex 28.988 -27.4135 0 - vertex 29.3033 -30.4642 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.3033 -30.4642 0 - vertex 28.988 -27.4135 0 - vertex 29.0845 -30.5466 0 + vertex 15.2376 -36.6526 0 + vertex 11.1962 -36.5595 0 + vertex 15.8953 -37.4336 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 27.4568 -27.4364 0 - vertex 29.0845 -30.5466 0 - vertex 28.988 -27.4135 0 + vertex 10.519 -36.9119 0 + vertex 15.8953 -37.4336 0 + vertex 11.1962 -36.5595 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 29.0845 -30.5466 0 - vertex 27.4568 -27.4364 0 - vertex 28.8369 -30.6989 0 + vertex 16.8412 -38.0675 0 + vertex 10.519 -36.9119 0 + vertex 9.92719 -37.0575 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 28.8369 -30.6989 0 - vertex 27.4568 -27.4364 0 - vertex 28.5495 -30.9236 0 + vertex 16.8412 -38.0675 0 + vertex 9.92719 -37.0575 0 + vertex 8.47177 -37.477 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 28.5495 -30.9236 0 - vertex 27.4568 -27.4364 0 - vertex 28.2108 -31.2235 0 + vertex 16.8412 -38.0675 0 + vertex 8.47177 -37.477 0 + vertex 5.33583 -38.4712 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 19.0956 -38.5852 0 + vertex 5.33583 -38.4712 0 + vertex 117.5 -117.5 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 2.31266 -38.26 0 + vertex 5.33583 -38.4712 0 + vertex 4.84381 -38.3343 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 3.43985 -37.8545 0 + vertex 4.73542 -37.8041 0 + vertex 4.64415 -37.2809 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 25.3891 -27.4375 0 - vertex 28.2108 -31.2235 0 - vertex 27.4568 -27.4364 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.2108 -31.2235 0 - vertex 25.3891 -27.4375 0 - vertex 27.276 -32.055 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.276 -32.055 0 - vertex 25.3891 -27.4375 0 - vertex 26.4309 -32.7448 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.4309 -32.7448 0 - vertex 25.3891 -27.4375 0 - vertex 25.6577 -33.3022 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.3891 -27.4375 0 - vertex 25.2926 -33.5342 0 - vertex 25.6577 -33.3022 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.3891 -27.4375 0 - vertex 24.9388 -33.7368 0 - vertex 25.2926 -33.5342 0 + vertex 3.43985 -37.8545 0 + vertex 4.84381 -38.3343 0 + vertex 4.73542 -37.8041 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 19.5256 -29.5327 0 - vertex 24.9388 -33.7368 0 - vertex 25.3891 -27.4375 0 + vertex 2.31266 -38.26 0 + vertex 4.84381 -38.3343 0 + vertex 3.43985 -37.8545 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 24.9388 -33.7368 0 - vertex 19.5256 -29.5327 0 - vertex 24.5942 -33.911 0 + vertex 5.33583 -38.4712 0 + vertex 2.31266 -38.26 0 + vertex 0.962702 -38.4962 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 5.33583 -38.4712 0 + vertex 0.962702 -38.4962 0 + vertex 117.5 -117.5 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 19.3985 -30.306 0 - vertex 24.5942 -33.911 0 - vertex 19.5256 -29.5327 0 + vertex -0.366978 -38.538 0 + vertex 117.5 -117.5 0 + vertex 0.962702 -38.4962 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 24.5942 -33.911 0 - vertex 19.3985 -30.306 0 - vertex 24.2566 -34.0582 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.9237 -34.1793 0 - vertex 19.3985 -30.306 0 - vertex 23.5933 -34.2758 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.5933 -34.2758 0 - vertex 19.3985 -30.306 0 - vertex 23.2634 -34.3487 0 + vertex -8.66873 -38.0883 0 + vertex -0.366978 -38.538 0 + vertex -1.43333 -38.36 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 19.3204 -31.0557 0 - vertex 23.2634 -34.3487 0 - vertex 19.3985 -30.306 0 + vertex -8.07933 -37.9462 0 + vertex -1.43333 -38.36 0 + vertex -2.45619 -37.7112 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 23.2634 -34.3487 0 - vertex 19.3204 -31.0557 0 - vertex 22.9315 -34.3992 0 + vertex -3.7659 -32.0301 0 + vertex -6.41168 -29.738 0 + vertex -3.99709 -33.5697 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 22.9315 -34.3992 0 - vertex 19.3204 -31.0557 0 - vertex 22.5956 -34.4285 0 + vertex -8.33648 -34.384 0 + vertex -3.99709 -33.5697 0 + vertex -6.41168 -29.738 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 22.5956 -34.4285 0 - vertex 19.3204 -31.0557 0 - vertex 22.2534 -34.4379 0 + vertex -7.51249 -36.3769 0 + vertex -3.80393 -35.193 0 + vertex -3.99709 -33.5697 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 22.2534 -34.4379 0 - vertex 19.3204 -31.0557 0 - vertex 21.8355 -34.4151 0 + vertex -3.80393 -35.193 0 + vertex -7.31439 -36.7536 0 + vertex -3.26834 -36.6145 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -7.3919 -37.1883 0 + vertex -3.26834 -36.6145 0 + vertex -7.31439 -36.7536 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -3.26834 -36.6145 0 + vertex -7.3919 -37.1883 0 + vertex -2.45619 -37.7112 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 19.2935 -31.7496 0 - vertex 21.8355 -34.4151 0 - vertex 19.3204 -31.0557 0 + vertex -7.74517 -37.6801 0 + vertex -2.45619 -37.7112 0 + vertex -7.3919 -37.1883 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 21.8355 -34.4151 0 - vertex 19.2935 -31.7496 0 - vertex 21.43 -34.349 0 + vertex -8.07933 -37.9462 0 + vertex -2.45619 -37.7112 0 + vertex -7.74517 -37.6801 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 19.9171 -28.0436 0 - vertex 25.3891 -27.4375 0 - vertex 20.1247 -27.4424 0 + vertex -1.43333 -38.36 0 + vertex -8.07933 -37.9462 0 + vertex -8.66873 -38.0883 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 19.6992 -28.7679 0 - vertex 25.3891 -27.4375 0 - vertex 19.9171 -28.0436 0 + vertex -0.366978 -38.538 0 + vertex -8.66873 -38.0883 0 + vertex -12.0013 -38.1555 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 19.5256 -29.5327 0 - vertex 25.3891 -27.4375 0 - vertex 19.6992 -28.7679 0 + vertex -0.366978 -38.538 0 + vertex -12.0013 -38.1555 0 + vertex -117.5 -117.5 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 24.2566 -34.0582 0 - vertex 19.3985 -30.306 0 - vertex 23.9237 -34.1793 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.43 -34.349 0 - vertex 19.2935 -31.7496 0 - vertex 21.0421 -34.2419 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0421 -34.2419 0 - vertex 19.2935 -31.7496 0 - vertex 20.6768 -34.0963 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.6768 -34.0963 0 - vertex 19.2935 -31.7496 0 - vertex 20.3392 -33.9144 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 19.3203 -32.3556 0 - vertex 20.3392 -33.9144 0 - vertex 19.2935 -31.7496 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.3392 -33.9144 0 - vertex 19.3203 -32.3556 0 - vertex 20.0345 -33.6987 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0345 -33.6987 0 - vertex 19.3203 -32.3556 0 - vertex 19.7677 -33.4516 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 19.3545 -32.6156 0 - vertex 19.7677 -33.4516 0 - vertex 19.3203 -32.3556 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 19.403 -32.8415 0 - vertex 19.7677 -33.4516 0 - vertex 19.3545 -32.6156 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7677 -33.4516 0 - vertex 19.403 -32.8415 0 - vertex 19.5439 -33.1754 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5439 -33.1754 0 - vertex 19.403 -32.8415 0 - vertex 19.466 -33.0295 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.6824 -35.0376 0 - vertex 29.1028 -32.8352 0 - vertex 31.4948 -35.2825 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.4948 -35.2825 0 - vertex 29.1028 -32.8352 0 - vertex 31.3052 -35.4767 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.3052 -35.4767 0 - vertex 29.1028 -32.8352 0 - vertex 31.1075 -35.6291 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.1075 -35.6291 0 - vertex 29.1028 -32.8352 0 - vertex 30.8955 -35.7486 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.8955 -35.7486 0 - vertex 29.1028 -32.8352 0 - vertex 30.6629 -35.8443 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.6629 -35.8443 0 - vertex 29.1028 -32.8352 0 - vertex 30.4037 -35.9251 0 + vertex -117.5 -117.5 0 + vertex -12.0013 -38.1555 0 + vertex -15.3277 -38.0928 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 28.539 -33.4515 0 - vertex 30.4037 -35.9251 0 - vertex 29.1028 -32.8352 0 + vertex -17.5781 -38.0841 0 + vertex -15.3277 -38.0928 0 + vertex -15.7983 -37.9502 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 30.4037 -35.9251 0 - vertex 28.539 -33.4515 0 - vertex 29.7804 -36.0779 0 + vertex -15.9213 -37.1689 0 + vertex -16.6989 -37.6188 0 + vertex -15.9433 -37.6764 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 29.7804 -36.0779 0 - vertex 28.539 -33.4515 0 - vertex 29.5705 -36.1356 0 + vertex -16.6989 -37.6188 0 + vertex -15.7983 -37.9502 0 + vertex -15.9433 -37.6764 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 27.856 -34.1555 0 - vertex 29.5705 -36.1356 0 - vertex 28.539 -33.4515 0 + vertex -17.033 -37.9274 0 + vertex -15.7983 -37.9502 0 + vertex -16.6989 -37.6188 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 29.5705 -36.1356 0 - vertex 27.856 -34.1555 0 - vertex 29.3757 -36.2065 0 + vertex -17.5781 -38.0841 0 + vertex -15.7983 -37.9502 0 + vertex -17.033 -37.9274 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 29.3757 -36.2065 0 - vertex 27.856 -34.1555 0 - vertex 29.1966 -36.2895 0 + vertex -15.3277 -38.0928 0 + vertex -17.5781 -38.0841 0 + vertex -117.5 -117.5 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 29.1966 -36.2895 0 - vertex 27.856 -34.1555 0 - vertex 29.034 -36.3831 0 + vertex -117.5 -117.5 0 + vertex -17.5781 -38.0841 0 + vertex -20.8226 -38.1301 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -28.2835 -38.1638 0 + vertex -20.8226 -38.1301 0 + vertex -24.8096 -38.0047 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -27.2791 -36.8782 0 + vertex -25.0608 -37.8416 0 + vertex -25.157 -37.5754 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -28.2835 -38.1638 0 + vertex -25.0608 -37.8416 0 + vertex -27.2791 -36.8782 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -25.0608 -37.8416 0 + vertex -28.2835 -38.1638 0 + vertex -24.8096 -38.0047 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -20.8226 -38.1301 0 + vertex -28.2835 -38.1638 0 + vertex -117.5 -117.5 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -117.5 -117.5 0 + vertex -28.2835 -38.1638 0 + vertex -37.632 -38.1325 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -117.5 -117.5 0 + vertex -37.632 -38.1325 0 + vertex -47.4646 -37.9547 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -0.366978 -38.538 0 + vertex -117.5 -117.5 0 + vertex 117.5 -117.5 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -47.8161 -37.7712 0 + vertex -117.5 -117.5 0 + vertex -47.4646 -37.9547 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -47.9875 -37.5097 0 + vertex -117.5 -117.5 0 + vertex -47.8161 -37.7712 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -47.8577 -36.863 0 + vertex -117.5 -117.5 0 + vertex -47.9875 -37.5097 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 42.0238 -20.3507 0 + vertex 42.943 -20.2657 0 + vertex 42.1032 -19.4743 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 27.3514 -34.6537 0 - vertex 29.034 -36.3831 0 - vertex 27.856 -34.1555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.034 -36.3831 0 - vertex 27.3514 -34.6537 0 - vertex 28.8888 -36.4863 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.8888 -36.4863 0 - vertex 27.3514 -34.6537 0 - vertex 28.7617 -36.5978 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.8832 -35.0925 0 - vertex 28.7617 -36.5978 0 - vertex 27.3514 -34.6537 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.7617 -36.5978 0 - vertex 26.8832 -35.0925 0 - vertex 28.6534 -36.7163 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.6534 -36.7163 0 - vertex 26.8832 -35.0925 0 - vertex 28.5648 -36.8405 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.5648 -36.8405 0 - vertex 26.4377 -35.4824 0 - vertex 28.4965 -36.9693 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.4377 -35.4824 0 - vertex 28.5648 -36.8405 0 - vertex 26.8832 -35.0925 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.5394 24.4322 0 - vertex -10.5711 24.4 0 - vertex -10.5349 24.4109 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.6591 24.5009 0 - vertex -10.5711 24.4 0 - vertex -10.5394 24.4322 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.9077 24.5958 0 - vertex -10.5711 24.4 0 - vertex -10.6591 24.5009 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.2625 24.7069 0 - vertex -10.5711 24.4 0 - vertex -10.9077 24.5958 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.1612 23.8467 0 - vertex -11.2625 24.7069 0 - vertex -11.7825 24.8213 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.1612 23.8467 0 - vertex -11.7825 24.8213 0 - vertex -12.4277 24.907 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.1612 23.8467 0 - vertex -12.4277 24.907 0 - vertex -13.1566 24.9634 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.1612 23.8467 0 - vertex -13.1566 24.9634 0 - vertex -13.9275 24.99 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.2625 24.7069 0 - vertex -14.1612 23.8467 0 - vertex -10.5711 24.4 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -14.6988 24.986 0 - vertex -14.1612 23.8467 0 - vertex -13.9275 24.99 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -15.4289 24.9511 0 - vertex -14.1612 23.8467 0 - vertex -14.6988 24.986 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.0412 23.3999 0 - vertex -15.4289 24.9511 0 - vertex -16.0762 24.8844 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.0412 23.3999 0 - vertex -16.0762 24.8844 0 - vertex -16.599 24.7853 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.4289 24.9511 0 - vertex -17.0412 23.3999 0 - vertex -14.1612 23.8467 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.1707 24.6702 0 - vertex -17.0412 23.3999 0 - vertex -16.599 24.7853 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -18.0818 24.5233 0 - vertex -17.0412 23.3999 0 - vertex -17.1707 24.6702 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -19.3158 23.0662 0 - vertex -18.0818 24.5233 0 - vertex -19.207 24.3637 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.0818 24.5233 0 - vertex -19.3158 23.0662 0 - vertex -17.0412 23.3999 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.4207 24.2101 0 - vertex -19.3158 23.0662 0 - vertex -19.207 24.3637 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.4207 24.2101 0 - vertex -20.7318 22.8633 0 - vertex -19.3158 23.0662 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.4207 24.2101 0 - vertex -21.5474 22.7309 0 - vertex -20.7318 22.8633 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -22.0315 22.8497 0 - vertex -21.5474 22.7309 0 - vertex -20.4207 24.2101 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5474 22.7309 0 - vertex -21.755 22.7463 0 - vertex -21.6404 22.7266 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5474 22.7309 0 - vertex -22.0315 22.8497 0 - vertex -21.755 22.7463 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.4207 24.2101 0 - vertex -22.3422 23.0246 0 - vertex -22.0315 22.8497 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.4207 24.2101 0 - vertex -22.6524 23.2546 0 - vertex -22.3422 23.0246 0 + vertex 42.0238 -20.3507 0 + vertex 41.971 -20.8453 0 + vertex 42.943 -20.2657 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex -22.6524 23.2546 0 - vertex -20.4207 24.2101 0 - vertex -23.3692 23.8604 0 + vertex 41.971 -20.8453 0 + vertex 42.0238 -20.3507 0 + vertex 41.8981 -20.7296 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 8.12348 -21.5274 0 - vertex 10.1807 -23.3758 0 - vertex 10.149 -22.9513 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.50498 -21.5121 0 - vertex 10.149 -22.9513 0 - vertex 10.1103 -22.7594 0 + vertex 36.104 -22.9178 0 + vertex 36.2859 -23.7121 0 + vertex 36.3422 -23.0402 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 7.71946 -21.5983 0 - vertex 10.1807 -23.3758 0 - vertex 8.12348 -21.5274 0 + vertex 35.2001 -22.9271 0 + vertex 36.2859 -23.7121 0 + vertex 36.104 -22.9178 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 8.85925 -21.5524 0 - vertex 10.1103 -22.7594 0 - vertex 10.0571 -22.5812 0 + vertex 36.2859 -23.7121 0 + vertex 35.2001 -22.9271 0 + vertex 35.3305 -26.5156 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 8.85925 -21.5524 0 - vertex 10.0571 -22.5812 0 - vertex 9.99008 -22.4166 0 + vertex 34.7441 -22.7166 0 + vertex 35.3305 -26.5156 0 + vertex 35.2001 -22.9271 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 10.1807 -23.3758 0 - vertex 7.71946 -21.5983 0 - vertex 10.1598 -23.7848 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.18157 -21.6481 0 - vertex 9.99008 -22.4166 0 - vertex 9.90973 -22.2656 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.18157 -21.6481 0 - vertex 9.90973 -22.2656 0 - vertex 9.81668 -22.1284 0 + vertex 31.8275 -24.8188 0 + vertex 34.7441 -22.7166 0 + vertex 34.62 -22.2927 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 7.29763 -21.7251 0 - vertex 10.1598 -23.7848 0 - vertex 7.71946 -21.5983 0 + vertex 31.8275 -24.8188 0 + vertex 35.3305 -26.5156 0 + vertex 34.7441 -22.7166 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 9.18157 -21.6481 0 - vertex 9.81668 -22.1284 0 - vertex 9.71152 -22.0048 0 + vertex 31.2318 -26.857 0 + vertex 35.3305 -26.5156 0 + vertex 31.4974 -26.3899 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 9.18157 -21.6481 0 - vertex 9.71152 -22.0048 0 - vertex 9.59484 -21.895 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.18157 -21.6481 0 - vertex 9.59484 -21.895 0 - vertex 9.46723 -21.7989 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.1598 -23.7848 0 - vertex 7.29763 -21.7251 0 - vertex 10.0892 -24.2416 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.99008 -22.4166 0 - vertex 9.18157 -21.6481 0 - vertex 8.85925 -21.5524 0 + vertex 35.3305 -26.5156 0 + vertex 31.2318 -26.857 0 + vertex 33.8444 -30.1753 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 6.8627 -21.9079 0 - vertex 10.0892 -24.2416 0 - vertex 7.29763 -21.7251 0 + vertex 30.7817 -27.1595 0 + vertex 33.8444 -30.1753 0 + vertex 31.2318 -26.857 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 10.1103 -22.7594 0 - vertex 8.85925 -21.5524 0 - vertex 8.50498 -21.5121 0 + vertex 33.8444 -30.1753 0 + vertex 30.2029 -31.1764 0 + vertex 32.5255 -33.371 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 29.8709 -31.8517 0 + vertex 32.5255 -33.371 0 + vertex 30.2029 -31.1764 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 10.149 -22.9513 0 - vertex 8.50498 -21.5121 0 - vertex 8.12348 -21.5274 0 + vertex 30.1062 -30.7807 0 + vertex 33.8444 -30.1753 0 + vertex 30.7817 -27.1595 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 10.0892 -24.2416 0 - vertex 6.8627 -21.9079 0 - vertex 9.95745 -24.7805 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 6.41939 -22.1469 0 - vertex 9.95745 -24.7805 0 - vertex 6.8627 -21.9079 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.97241 -22.4422 0 - vertex 9.95745 -24.7805 0 - vertex 6.41939 -22.1469 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.52647 -22.794 0 - vertex 9.75283 -25.4359 0 - vertex 5.97241 -22.4422 0 + vertex 32.5255 -33.371 0 + vertex 29.8709 -31.8517 0 + vertex 31.6707 -35.0376 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 9.95745 -24.7805 0 - vertex 5.97241 -22.4422 0 - vertex 9.75283 -25.4359 0 + vertex 31.6707 -35.0376 0 + vertex 29.8709 -31.8517 0 + vertex 30.8837 -35.7486 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 27.8442 -34.1555 0 + vertex 30.8837 -35.7486 0 + vertex 29.8709 -31.8517 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 9.75283 -25.4359 0 - vertex 5.52647 -22.794 0 - vertex 9.46376 -26.2422 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.08628 -23.2024 0 - vertex 9.46376 -26.2422 0 - vertex 5.52647 -22.794 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.45147 -23.8871 0 - vertex 9.46376 -26.2422 0 - vertex 5.08628 -23.2024 0 + vertex 30.8837 -35.7486 0 + vertex 27.8442 -34.1555 0 + vertex 29.7686 -36.0779 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 9.46376 -26.2422 0 - vertex 4.45147 -23.8871 0 - vertex 9.07864 -27.2338 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.85887 -24.6213 0 - vertex 9.07864 -27.2338 0 - vertex 4.45147 -23.8871 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.31148 -25.3951 0 - vertex 9.07864 -27.2338 0 - vertex 3.85887 -24.6213 0 + vertex 29.7686 -36.0779 0 + vertex 27.8442 -34.1555 0 + vertex 29.0223 -36.3831 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 9.07864 -27.2338 0 - vertex 3.31148 -25.3951 0 - vertex 7.97377 -29.9101 0 + vertex 29.0223 -36.3831 0 + vertex 27.8442 -34.1555 0 + vertex 28.553 -36.8405 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 2.81229 -26.1986 0 - vertex 7.97377 -29.9101 0 - vertex 3.31148 -25.3951 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 2.36428 -27.0218 0 - vertex 7.97377 -29.9101 0 - vertex 2.81229 -26.1986 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.97046 -27.8549 0 - vertex 7.97377 -29.9101 0 - vertex 2.36428 -27.0218 0 + vertex 25.9895 -35.834 0 + vertex 28.553 -36.8405 0 + vertex 27.8442 -34.1555 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 7.97377 -29.9101 0 - vertex 1.97046 -27.8549 0 - vertex 7.44603 -31.1479 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.63381 -28.6878 0 - vertex 7.44603 -31.1479 0 - vertex 1.97046 -27.8549 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.35733 -29.5107 0 - vertex 7.44603 -31.1479 0 - vertex 1.63381 -28.6878 0 + vertex -11.2742 24.7069 0 + vertex -10.5829 24.4 0 + vertex -10.6709 24.5009 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 7.44603 -31.1479 0 - vertex 1.35733 -29.5107 0 - vertex 7.00854 -32.1311 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.144 -30.3137 0 - vertex 7.00854 -32.1311 0 - vertex 1.35733 -29.5107 0 + vertex -14.1729 23.8467 0 + vertex -11.2742 24.7069 0 + vertex -13.9393 24.99 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 7.00854 -32.1311 0 - vertex 1.144 -30.3137 0 - vertex 6.63949 -32.8952 0 + vertex -11.2742 24.7069 0 + vertex -14.1729 23.8467 0 + vertex -10.5829 24.4 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 0.99682 -31.0867 0 - vertex 6.63949 -32.8952 0 - vertex 1.144 -30.3137 0 + vertex -16.6107 24.7853 0 + vertex -14.1729 23.8467 0 + vertex -13.9393 24.99 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 6.63949 -32.8952 0 - vertex 0.99682 -31.0867 0 - vertex 6.31707 -33.4759 0 + vertex -16.6107 24.7853 0 + vertex -19.3275 23.0662 0 + vertex -14.1729 23.8467 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 0.918778 -31.8199 0 - vertex 6.31707 -33.4759 0 - vertex 0.99682 -31.0867 0 + vertex -20.4324 24.2101 0 + vertex -19.3275 23.0662 0 + vertex -16.6107 24.7853 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 6.31707 -33.4759 0 - vertex 0.918778 -31.8199 0 - vertex 6.01946 -33.9088 0 + vertex -20.4324 24.2101 0 + vertex -21.5591 22.7309 0 + vertex -19.3275 23.0662 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -20.4324 24.2101 0 + vertex -22.0432 22.8497 0 + vertex -21.5591 22.7309 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex -20.4324 24.2101 0 + vertex -22.6641 23.2546 0 + vertex -22.0432 22.8497 0 endloop endfacet facet normal 0 -0 1 outer loop - vertex 5.05744 -34.678 0 - vertex 6.01946 -33.9088 0 - vertex 0.918778 -31.8199 0 + vertex -22.6641 23.2546 0 + vertex -20.4324 24.2101 0 + vertex -23.3809 23.8604 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 6.01946 -33.9088 0 - vertex 5.41146 -34.4742 0 - vertex 5.87315 -34.0811 0 + vertex 8.49325 -21.5121 0 + vertex 10.169 -23.3758 0 + vertex 10.0454 -22.5812 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 5.87315 -34.0811 0 - vertex 5.41146 -34.4742 0 - vertex 5.72486 -34.2297 0 + vertex 10.169 -23.3758 0 + vertex 7.70773 -21.5983 0 + vertex 10.0775 -24.2416 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 6.01946 -33.9088 0 - vertex 5.05744 -34.678 0 - vertex 5.41146 -34.4742 0 + vertex 9.16984 -21.6481 0 + vertex 10.0454 -22.5812 0 + vertex 9.69979 -22.0048 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 10.0454 -22.5812 0 + vertex 9.16984 -21.6481 0 + vertex 8.49325 -21.5121 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 10.169 -23.3758 0 + vertex 8.49325 -21.5121 0 + vertex 7.70773 -21.5983 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 0.906618 -32.1685 0 - vertex 5.05744 -34.678 0 - vertex 0.918778 -31.8199 0 + vertex 6.85097 -21.9079 0 + vertex 10.0775 -24.2416 0 + vertex 7.70773 -21.5983 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 5.05744 -34.678 0 - vertex 0.906618 -32.1685 0 - vertex 4.59905 -34.8756 0 + vertex 10.0775 -24.2416 0 + vertex 6.85097 -21.9079 0 + vertex 9.7411 -25.4359 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 5.96068 -22.4422 0 + vertex 9.7411 -25.4359 0 + vertex 6.85097 -21.9079 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 5.07455 -23.2024 0 + vertex 9.7411 -25.4359 0 + vertex 5.96068 -22.4422 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 3.84714 -24.6213 0 + vertex 9.7411 -25.4359 0 + vertex 5.07455 -23.2024 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 9.7411 -25.4359 0 + vertex 3.84714 -24.6213 0 + vertex 7.96204 -29.9101 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 2.80055 -26.1986 0 + vertex 7.96204 -29.9101 0 + vertex 3.84714 -24.6213 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 1.95873 -27.8549 0 + vertex 7.96204 -29.9101 0 + vertex 2.80055 -26.1986 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 1.3456 -29.5107 0 + vertex 7.96204 -29.9101 0 + vertex 1.95873 -27.8549 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 7.96204 -29.9101 0 + vertex 1.3456 -29.5107 0 + vertex 6.30534 -33.4759 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 0.985088 -31.0867 0 + vertex 6.30534 -33.4759 0 + vertex 1.3456 -29.5107 0 + endloop + endfacet + facet normal -0 0 1 + outer loop + vertex 0.901133 -32.5034 0 + vertex 6.30534 -33.4759 0 + vertex 0.985088 -31.0867 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 6.30534 -33.4759 0 + vertex 0.901133 -32.5034 0 + vertex 5.71313 -34.2297 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 5.71313 -34.2297 0 + vertex 0.901133 -32.5034 0 + vertex 5.04571 -34.678 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 5.04571 -34.678 0 + vertex 0.901133 -32.5034 0 + vertex 4.11511 -35.011 0 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 4.11511 -35.011 0 + vertex 0.901133 -32.5034 0 + vertex 3.17687 -35.0966 0 endloop endfacet facet normal -0 -0 1 outer loop - vertex 0.912865 -32.5034 0 - vertex 4.59905 -34.8756 0 - vertex 0.906618 -32.1685 0 + vertex 1.11766 -33.6813 0 + vertex 3.17687 -35.0966 0 + vertex 0.901133 -32.5034 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 4.59905 -34.8756 0 - vertex 0.912865 -32.5034 0 - vertex 4.12685 -35.011 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 0.937893 -32.8234 0 - vertex 4.12685 -35.011 0 - vertex 0.912865 -32.5034 0 + vertex 3.17687 -35.0966 0 + vertex 1.11766 -33.6813 0 + vertex 2.32628 -34.9386 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 4.12685 -35.011 0 - vertex 0.937893 -32.8234 0 - vertex 3.65273 -35.0844 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 0.982074 -33.1272 0 - vertex 3.65273 -35.0844 0 - vertex 0.937893 -32.8234 0 + vertex 2.32628 -34.9386 0 + vertex 1.11766 -33.6813 0 + vertex 1.65861 -34.5411 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 3.65273 -35.0844 0 - vertex 0.982074 -33.1272 0 - vertex 3.18861 -35.0966 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 1.04578 -33.4136 0 - vertex 3.18861 -35.0966 0 - vertex 0.982074 -33.1272 0 + vertex 9.76373 17.1908 0 + vertex 9.72145 16.1788 0 + vertex 10.4258 16.5104 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 3.18861 -35.0966 0 - vertex 1.04578 -33.4136 0 - vertex 2.7464 -35.0478 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 1.1294 -33.6813 0 - vertex 2.7464 -35.0478 0 - vertex 1.04578 -33.4136 0 + vertex 9.76373 17.1908 0 + vertex 8.86535 15.8492 0 + vertex 9.72145 16.1788 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 2.7464 -35.0478 0 - vertex 1.1294 -33.6813 0 - vertex 2.53723 -35.0007 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 1.23329 -33.9292 0 - vertex 2.53723 -35.0007 0 - vertex 1.1294 -33.6813 0 + vertex 8.028 17.0592 0 + vertex 9.76373 17.1908 0 + vertex 8.30319 18.4459 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 2.53723 -35.0007 0 - vertex 1.23329 -33.9292 0 - vertex 2.33801 -34.9386 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.33801 -34.9386 0 - vertex 1.23329 -33.9292 0 - vertex 2.15022 -34.8616 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 1.35782 -34.1559 0 - vertex 2.15022 -34.8616 0 - vertex 1.23329 -33.9292 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.15022 -34.8616 0 - vertex 1.35782 -34.1559 0 - vertex 1.97535 -34.7696 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.8149 -34.6627 0 - vertex 1.50339 -34.3603 0 - vertex 1.67035 -34.5411 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.97535 -34.7696 0 - vertex 1.50339 -34.3603 0 - vertex 1.8149 -34.6627 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 1.50339 -34.3603 0 - vertex 1.97535 -34.7696 0 - vertex 1.35782 -34.1559 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.77546 17.1908 0 - vertex 9.73318 16.1788 0 - vertex 10.4375 16.5104 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.57086 16.213 0 - vertex 9.77546 17.1908 0 - vertex 9.46246 17.4938 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.77546 17.1908 0 - vertex 9.19116 15.9452 0 - vertex 9.73318 16.1788 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.03973 17.0592 0 - vertex 9.46246 17.4938 0 - vertex 9.09841 17.8163 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.77546 17.1908 0 - vertex 8.57086 16.213 0 - vertex 9.19116 15.9452 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 8.76553 15.9481 0 - vertex 9.19116 15.9452 0 - vertex 8.57086 16.213 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 8.83337 15.875 0 - vertex 8.99158 15.8746 0 - vertex 8.76553 15.9481 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.99158 15.8746 0 - vertex 8.83337 15.875 0 - vertex 8.87708 15.8492 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.19116 15.9452 0 - vertex 8.76553 15.9481 0 - vertex 8.99158 15.8746 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.03973 17.0592 0 - vertex 9.09841 17.8163 0 - vertex 8.31493 18.4459 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.46246 17.4938 0 - vertex 8.03973 17.0592 0 - vertex 8.57086 16.213 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.49889 18.0241 0 - vertex 8.31493 18.4459 0 - vertex 7.9444 18.7161 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.29207 18.4374 0 - vertex 7.9444 18.7161 0 - vertex 7.62063 18.9319 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.31493 18.4459 0 - vertex 7.49889 18.0241 0 - vertex 8.03973 17.0592 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.16351 18.7442 0 - vertex 7.62063 18.9319 0 - vertex 7.36805 19.075 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.9444 18.7161 0 - vertex 7.29207 18.4374 0 - vertex 7.49889 18.0241 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.1242 19.0144 0 - vertex 7.36805 19.075 0 - vertex 7.21113 19.1268 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.62063 18.9319 0 - vertex 7.16351 18.7442 0 - vertex 7.29207 18.4374 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.1242 19.0144 0 - vertex 7.21113 19.1268 0 - vertex 7.15267 19.0966 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.36805 19.075 0 - vertex 7.1273 18.8927 0 - vertex 7.16351 18.7442 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.36805 19.075 0 - vertex 7.1242 19.0144 0 - vertex 7.1273 18.8927 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.8138 -21.8092 0 - vertex 27.4312 -23.3865 0 - vertex 27.4186 -23.1088 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0922 -21.8157 0 - vertex 27.4186 -23.1088 0 - vertex 27.3785 -22.8574 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.4312 -23.3865 0 - vertex 25.8138 -21.8092 0 - vertex 27.4161 -23.6904 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.3449 -21.8501 0 - vertex 27.3785 -22.8574 0 - vertex 27.3111 -22.6325 0 + vertex 9.76373 17.1908 0 + vertex 8.028 17.0592 0 + vertex 8.86535 15.8492 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 25.51 -21.8307 0 - vertex 27.4161 -23.6904 0 - vertex 25.8138 -21.8092 0 + vertex 7.15178 18.7442 0 + vertex 8.30319 18.4459 0 + vertex 7.1994 19.1268 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 26.5717 -21.9122 0 - vertex 27.3111 -22.6325 0 - vertex 27.2166 -22.4344 0 + vertex 8.30319 18.4459 0 + vertex 7.15178 18.7442 0 + vertex 8.028 17.0592 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 26.7726 -22.0019 0 - vertex 27.2166 -22.4344 0 - vertex 27.0952 -22.2631 0 + vertex 26.0804 -21.8157 0 + vertex 27.3613 -24.0204 0 + vertex 27.3668 -22.8574 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 26.7726 -22.0019 0 - vertex 27.0952 -22.2631 0 - vertex 26.9471 -22.1189 0 + vertex 26.0804 -21.8157 0 + vertex 27.3668 -22.8574 0 + vertex 26.9354 -22.1189 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 27.2166 -22.4344 0 - vertex 26.7726 -22.0019 0 - vertex 26.5717 -21.9122 0 + vertex 27.3613 -24.0204 0 + vertex 26.0804 -21.8157 0 + vertex 24.4233 -24.8188 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 27.3111 -22.6325 0 - vertex 26.5717 -21.9122 0 - vertex 26.3449 -21.8501 0 + vertex 24.4233 -24.8188 0 + vertex 26.0804 -21.8157 0 + vertex 24.8153 -21.9586 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 27.3785 -22.8574 0 - vertex 26.3449 -21.8501 0 - vertex 26.0922 -21.8157 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.4186 -23.1088 0 - vertex 26.0922 -21.8157 0 - vertex 25.8138 -21.8092 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.435 -24.8188 0 - vertex 27.4161 -23.6904 0 - vertex 25.51 -21.8307 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.4161 -23.6904 0 - vertex 24.435 -24.8188 0 - vertex 27.373 -24.0204 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.435 -24.8188 0 - vertex 25.51 -21.8307 0 - vertex 25.181 -21.8805 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.435 -24.8188 0 - vertex 25.181 -21.8805 0 - vertex 24.827 -21.9586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.435 -24.8188 0 - vertex 24.827 -21.9586 0 - vertex 24.5319 -22.0421 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.373 -24.0204 0 - vertex 24.435 -24.8188 0 - vertex 27.2401 -24.8188 0 + vertex 27.3613 -24.0204 0 + vertex 24.4233 -24.8188 0 + vertex 27.2283 -24.8188 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 24.2621 -22.1397 0 - vertex 24.435 -24.8188 0 - vertex 24.5319 -22.0421 0 + vertex 23.7526 -22.3987 0 + vertex 24.4233 -24.8188 0 + vertex 24.8153 -21.9586 0 endloop endfacet facet normal -0 0 1 outer loop - vertex 24.0091 -22.2567 0 - vertex 24.435 -24.8188 0 - vertex 24.2621 -22.1397 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.7644 -22.3987 0 - vertex 24.435 -24.8188 0 - vertex 24.0091 -22.2567 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.5194 -22.5712 0 - vertex 24.435 -24.8188 0 - vertex 23.7644 -22.3987 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.2657 -22.7795 0 - vertex 24.435 -24.8188 0 - vertex 23.5194 -22.5712 0 + vertex 22.6861 -23.3258 0 + vertex 24.4233 -24.8188 0 + vertex 23.7526 -22.3987 0 endloop endfacet facet normal 0 0 1 outer loop - vertex 24.435 -24.8188 0 - vertex 23.2657 -22.7795 0 - vertex 23.3459 -24.8032 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 22.6979 -23.3258 0 - vertex 23.3459 -24.8032 0 - vertex 23.2657 -22.7795 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 22.2832 -23.7683 0 - vertex 23.3459 -24.8032 0 - vertex 22.6979 -23.3258 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.3459 -24.8032 0 - vertex 22.2832 -23.7683 0 - vertex 22.454 -24.761 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 21.9437 -24.1601 0 - vertex 22.454 -24.761 0 - vertex 22.2832 -23.7683 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.9437 -24.1601 0 - vertex 21.8514 -24.6984 0 - vertex 22.454 -24.761 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 21.7143 -24.4589 0 - vertex 21.8514 -24.6984 0 - vertex 21.9437 -24.1601 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.7143 -24.4589 0 - vertex 21.6873 -24.6616 0 - vertex 21.8514 -24.6984 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 21.6518 -24.5601 0 - vertex 21.6873 -24.6616 0 - vertex 21.7143 -24.4589 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.6873 -24.6616 0 - vertex 21.6518 -24.5601 0 - vertex 21.63 -24.6221 0 + vertex 24.4233 -24.8188 0 + vertex 22.6861 -23.3258 0 + vertex 21.6183 -24.6221 0 endloop endfacet facet normal 1 -0 0 @@ -58743,20 +19837,6 @@ solid OpenSCAD_Model vertex -117.5 117.5 -3 endloop endfacet - facet normal 0 0 -1 - outer loop - vertex -117.5 -117.5 -3 - vertex 117.5 117.5 -3 - vertex 117.5 -117.5 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 117.5 117.5 -3 - vertex -117.5 -117.5 -3 - vertex -117.5 117.5 -3 - endloop - endfacet facet normal 0 -1 0 outer loop vertex -117.5 -117.5 -3 diff --git a/resources/meshes/deltacomb.stl b/resources/meshes/deltacomb.stl index 7be5c33fd7..b3faa873fe 100644 Binary files a/resources/meshes/deltacomb.stl and b/resources/meshes/deltacomb.stl differ diff --git a/resources/meshes/discoeasy200.stl b/resources/meshes/discoeasy200.stl index f230512303..381df45b24 100644 Binary files a/resources/meshes/discoeasy200.stl and b/resources/meshes/discoeasy200.stl differ diff --git a/resources/meshes/jgaurora_a5.stl b/resources/meshes/jgaurora_a5.stl new file mode 100644 index 0000000000..c525b03649 Binary files /dev/null and b/resources/meshes/jgaurora_a5.stl differ diff --git a/resources/qml/AboutDialog.qml b/resources/qml/AboutDialog.qml deleted file mode 100644 index 9a7e53260b..0000000000 --- a/resources/qml/AboutDialog.qml +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright (c) 2015 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Window 2.1 - -import UM 1.1 as UM - -UM.Dialog -{ - id: base - - //: About dialog title - title: catalog.i18nc("@title:window","About Cura") - - minimumWidth: 500 * screenScaleFactor - minimumHeight: 650 * screenScaleFactor - width: minimumWidth - height: minimumHeight - - Rectangle - { - width: parent.width + 2 * margin // margin from Dialog.qml - height: version.y + version.height + margin - - anchors.top: parent.top - anchors.topMargin: - margin - anchors.horizontalCenter: parent.horizontalCenter - - color: UM.Theme.getColor("viewport_background") - } - - Image - { - id: logo - width: (base.minimumWidth * 0.85) | 0 - height: (width * (1/4.25)) | 0 - - source: UM.Theme.getImage("logo") - - sourceSize.width: width - sourceSize.height: height - anchors.top: parent.top - anchors.topMargin: ((base.minimumWidth - width) / 2) | 0 - anchors.horizontalCenter: parent.horizontalCenter - - UM.I18nCatalog{id: catalog; name:"cura"} - } - - Label - { - id: version - - text: catalog.i18nc("@label","version: %1").arg(UM.Application.version) - font: UM.Theme.getFont("large") - color: UM.Theme.getColor("text") - anchors.right : logo.right - anchors.top: logo.bottom - anchors.topMargin: (UM.Theme.getSize("default_margin").height / 2) | 0 - } - - Label - { - id: description - width: parent.width - - //: About dialog application description - text: catalog.i18nc("@label","End-to-end solution for fused filament 3D printing.") - font: UM.Theme.getFont("system") - wrapMode: Text.WordWrap - anchors.top: version.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - } - - Label - { - id: creditsNotes - width: parent.width - - //: About dialog application author note - text: catalog.i18nc("@info:credit","Cura is developed by Ultimaker B.V. in cooperation with the community.\nCura proudly uses the following open source projects:") - font: UM.Theme.getFont("system") - wrapMode: Text.WordWrap - anchors.top: description.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - } - - ScrollView - { - id: credits - anchors.top: creditsNotes.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - - width: parent.width - height: base.height - y - (2 * UM.Theme.getSize("default_margin").height + closeButton.height) - - ListView - { - id: projectsList - - width: parent.width - - delegate: Row - { - Label - { - text: "%2".arg(model.url).arg(model.name) - width: (projectsList.width * 0.25) | 0 - elide: Text.ElideRight - onLinkActivated: Qt.openUrlExternally(link) - } - Label - { - text: model.description - elide: Text.ElideRight - width: (projectsList.width * 0.6) | 0 - } - Label - { - text: model.license - elide: Text.ElideRight - width: (projectsList.width * 0.15) | 0 - } - } - model: ListModel - { - id: projectsModel - } - Component.onCompleted: - { - projectsModel.append({ name:"Cura", description: catalog.i18nc("@label", "Graphical user interface"), license: "LGPLv3", url: "https://github.com/Ultimaker/Cura" }); - projectsModel.append({ name:"Uranium", description: catalog.i18nc("@label", "Application framework"), license: "LGPLv3", url: "https://github.com/Ultimaker/Uranium" }); - projectsModel.append({ name:"CuraEngine", description: catalog.i18nc("@label", "G-code generator"), license: "AGPLv3", url: "https://github.com/Ultimaker/CuraEngine" }); - projectsModel.append({ name:"libArcus", description: catalog.i18nc("@label", "Interprocess communication library"), license: "LGPLv3", url: "https://github.com/Ultimaker/libArcus" }); - - projectsModel.append({ name:"Python", description: catalog.i18nc("@label", "Programming language"), license: "Python", url: "http://python.org/" }); - projectsModel.append({ name:"Qt5", description: catalog.i18nc("@label", "GUI framework"), license: "LGPLv3", url: "https://www.qt.io/" }); - projectsModel.append({ name:"PyQt", description: catalog.i18nc("@label", "GUI framework bindings"), license: "GPL", url: "https://riverbankcomputing.com/software/pyqt" }); - projectsModel.append({ name:"SIP", description: catalog.i18nc("@label", "C/C++ Binding library"), license: "GPL", url: "https://riverbankcomputing.com/software/sip" }); - projectsModel.append({ name:"Protobuf", description: catalog.i18nc("@label", "Data interchange format"), license: "BSD", url: "https://developers.google.com/protocol-buffers" }); - projectsModel.append({ name:"SciPy", description: catalog.i18nc("@label", "Support library for scientific computing"), license: "BSD-new", url: "https://www.scipy.org/" }); - projectsModel.append({ name:"NumPy", description: catalog.i18nc("@label", "Support library for faster math"), license: "BSD", url: "http://www.numpy.org/" }); - projectsModel.append({ name:"NumPy-STL", description: catalog.i18nc("@label", "Support library for handling STL files"), license: "BSD", url: "https://github.com/WoLpH/numpy-stl" }); - projectsModel.append({ name:"Shapely", description: catalog.i18nc("@label", "Support library for handling planar objects"), license: "BSD", url: "https://github.com/Toblerity/Shapely" }); - projectsModel.append({ name:"Trimesh", description: catalog.i18nc("@label", "Support library for handling triangular meshes"), license: "MIT", url: "https://trimsh.org" }); - projectsModel.append({ name:"NetworkX", description: catalog.i18nc("@label", "Support library for analysis of complex networks"), license: "3-clause BSD", url: "https://networkx.github.io/" }); - projectsModel.append({ name:"libSavitar", description: catalog.i18nc("@label", "Support library for handling 3MF files"), license: "LGPLv3", url: "https://github.com/ultimaker/libsavitar" }); - projectsModel.append({ name:"libCharon", description: catalog.i18nc("@label", "Support library for file metadata and streaming"), license: "LGPLv3", url: "https://github.com/ultimaker/libcharon" }); - projectsModel.append({ name:"PySerial", description: catalog.i18nc("@label", "Serial communication library"), license: "Python", url: "http://pyserial.sourceforge.net/" }); - projectsModel.append({ name:"python-zeroconf", description: catalog.i18nc("@label", "ZeroConf discovery library"), license: "LGPL", url: "https://github.com/jstasiak/python-zeroconf" }); - projectsModel.append({ name:"Clipper", description: catalog.i18nc("@label", "Polygon clipping library"), license: "Boost", url: "http://www.angusj.com/delphi/clipper.php" }); - projectsModel.append({ name:"Requests", description: catalog.i18nc("@Label", "Python HTTP library"), license: "GPL", url: "http://docs.python-requests.org" }); - - projectsModel.append({ name:"Noto Sans", description: catalog.i18nc("@label", "Font"), license: "Apache 2.0", url: "https://www.google.com/get/noto/" }); - projectsModel.append({ name:"Font-Awesome-SVG-PNG", description: catalog.i18nc("@label", "SVG icons"), license: "SIL OFL 1.1", url: "https://github.com/encharm/Font-Awesome-SVG-PNG" }); - projectsModel.append({ name:"AppImageKit", description: catalog.i18nc("@label", "Linux cross-distribution application deployment"), license: "MIT", url: "https://github.com/AppImage/AppImageKit" }); - } - } - } - - rightButtons: Button - { - //: Close about dialog button - id: closeButton - text: catalog.i18nc("@action:button","Close"); - - onClicked: base.visible = false; - } -} diff --git a/resources/qml/Account/AccountDetails.qml b/resources/qml/Account/AccountDetails.qml new file mode 100644 index 0000000000..45f822e41f --- /dev/null +++ b/resources/qml/Account/AccountDetails.qml @@ -0,0 +1,69 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.1 + +import UM 1.4 as UM +import Cura 1.1 as Cura + +Column +{ + property var profile: null + property var loggedIn: false + property var profileImage: "" + + padding: UM.Theme.getSize("wide_margin").height + spacing: UM.Theme.getSize("wide_margin").height + + AvatarImage + { + id: avatar + width: UM.Theme.getSize("avatar_image").width + height: UM.Theme.getSize("avatar_image").height + anchors.horizontalCenter: parent.horizontalCenter + source: + { + if(loggedIn) + { + if(profileImage) + { + return profileImage + } + return UM.Theme.getImage("avatar_no_user") + } + return UM.Theme.getImage("avatar_no_user") + } + outlineColor: loggedIn ? UM.Theme.getColor("account_widget_outline_active") : UM.Theme.getColor("lining") + } + + Label + { + id: information + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + renderType: Text.NativeRendering + text: loggedIn ? profile["username"] : catalog.i18nc("@label", "Please log in or create an account to\nenjoy all features of Ultimaker Cura.") + font: loggedIn ? UM.Theme.getFont("large_bold") : UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + } + + Loader + { + id: accountOperations + anchors.horizontalCenter: parent.horizontalCenter + sourceComponent: loggedIn ? userOperations : generalOperations + } + + Component + { + id: userOperations + UserOperations { } + } + + Component + { + id: generalOperations + GeneralOperations { } + } +} \ No newline at end of file diff --git a/resources/qml/Account/AccountWidget.qml b/resources/qml/Account/AccountWidget.qml new file mode 100644 index 0000000000..d3bd6fd130 --- /dev/null +++ b/resources/qml/Account/AccountWidget.qml @@ -0,0 +1,76 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.1 + +import UM 1.4 as UM +import Cura 1.1 as Cura + +Button +{ + id: accountWidget + property var profile: Cura.API.account.userProfile + property var loggedIn: Cura.API.account.isLoggedIn + + implicitHeight: UM.Theme.getSize("main_window_header").height + implicitWidth: UM.Theme.getSize("main_window_header").height + + background: AvatarImage + { + id: avatar + + width: Math.round(0.8 * accountWidget.width) + height: Math.round(0.8 * accountWidget.height) + anchors.verticalCenter: accountWidget.verticalCenter + anchors.horizontalCenter: accountWidget.horizontalCenter + + source: + { + if(loggedIn) + { + if(profile["profile_image_url"]) + { + return profile["profile_image_url"] + } + return UM.Theme.getImage("avatar_no_user") + } + return UM.Theme.getImage("avatar_no_user") + } + outlineColor: loggedIn ? UM.Theme.getColor("account_widget_outline_active") : UM.Theme.getColor("lining") + } + + onClicked: popup.opened ? popup.close() : popup.open() + + Popup + { + id: popup + + y: parent.height + UM.Theme.getSize("default_arrow").height + x: parent.width - width + + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent + + opacity: opened ? 1 : 0 + Behavior on opacity { NumberAnimation { duration: 100 } } + + contentItem: AccountDetails + { + id: panel + profile: Cura.API.account.userProfile + loggedIn: Cura.API.account.isLoggedIn + profileImage: Cura.API.account.profileImageUrl + } + + background: UM.PointingRectangle + { + color: UM.Theme.getColor("tool_panel_background") + borderColor: UM.Theme.getColor("lining") + borderWidth: UM.Theme.getSize("default_lining").width + + target: Qt.point(width - (accountWidget.width / 2), -10) + + arrowSize: UM.Theme.getSize("default_arrow").width + } + } +} diff --git a/resources/qml/Account/AvatarImage.qml b/resources/qml/Account/AvatarImage.qml new file mode 100644 index 0000000000..b76aff6990 --- /dev/null +++ b/resources/qml/Account/AvatarImage.qml @@ -0,0 +1,56 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.1 +import QtGraphicalEffects 1.0 + +import UM 1.4 as UM + +Item +{ + // This item shows the provided image while applying a round mask to it. + // It also shows a round border around it. The color is defined by the outlineColor property. + + id: avatar + + property alias source: profileImage.source + property alias outlineColor: profileImageOutline.color + + Image + { + id: profileImage + anchors.fill: parent + source: UM.Theme.getImage("avatar_default") + fillMode: Image.PreserveAspectCrop + visible: false + mipmap: true + } + + Rectangle + { + id: profileImageMask + anchors.fill: parent + radius: width + } + + OpacityMask + { + anchors.fill: parent + source: profileImage + maskSource: profileImageMask + cached: true + } + + UM.RecolorImage + { + id: profileImageOutline + anchors.centerIn: parent + // Make it a bit bigger than it has to, otherwise it sometimes shows a white border. + width: parent.width + 2 + height: parent.height + 2 + source: UM.Theme.getIcon("circle_outline") + sourceSize: Qt.size(parent.width, parent.height) + color: UM.Theme.getColor("account_widget_ouline_active") + } +} \ No newline at end of file diff --git a/resources/qml/Account/GeneralOperations.qml b/resources/qml/Account/GeneralOperations.qml new file mode 100644 index 0000000000..b9f1025d5e --- /dev/null +++ b/resources/qml/Account/GeneralOperations.qml @@ -0,0 +1,31 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.1 + +import UM 1.4 as UM +import Cura 1.1 as Cura + +Row +{ + spacing: UM.Theme.getSize("default_margin").width + + Cura.SecondaryButton + { + width: UM.Theme.getSize("account_button").width + height: UM.Theme.getSize("account_button").height + text: catalog.i18nc("@button", "Create account") + onClicked: Qt.openUrlExternally("https://account.ultimaker.com/app/create") + fixedWidthMode: true + } + + Cura.PrimaryButton + { + width: UM.Theme.getSize("account_button").width + height: UM.Theme.getSize("account_button").height + text: catalog.i18nc("@button", "Login") + onClicked: Cura.API.account.login() + fixedWidthMode: true + } +} \ No newline at end of file diff --git a/resources/qml/Account/UserOperations.qml b/resources/qml/Account/UserOperations.qml new file mode 100644 index 0000000000..b9ffa395d6 --- /dev/null +++ b/resources/qml/Account/UserOperations.qml @@ -0,0 +1,31 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.1 + +import UM 1.4 as UM +import Cura 1.1 as Cura + +Row +{ + spacing: UM.Theme.getSize("default_margin").width + + Cura.SecondaryButton + { + width: UM.Theme.getSize("account_button").width + height: UM.Theme.getSize("account_button").height + text: catalog.i18nc("@button", "Manage account") + onClicked: Qt.openUrlExternally("https://account.ultimaker.com") + fixedWidthMode: true + } + + Cura.PrimaryButton + { + width: UM.Theme.getSize("account_button").width + height: UM.Theme.getSize("account_button").height + text: catalog.i18nc("@button", "Logout") + onClicked: Cura.API.account.logout() + fixedWidthMode: true + } +} \ No newline at end of file diff --git a/resources/qml/ActionButton.qml b/resources/qml/ActionButton.qml new file mode 100644 index 0000000000..6cab04e5ec --- /dev/null +++ b/resources/qml/ActionButton.qml @@ -0,0 +1,120 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.1 +import QtGraphicalEffects 1.0 // For the dropshadow +import UM 1.1 as UM +import Cura 1.0 as Cura + + +Button +{ + id: button + property bool isIconOnRightSide: false + + property alias iconSource: buttonIconLeft.source + property alias textFont: buttonText.font + property alias cornerRadius: backgroundRect.radius + property alias tooltip: tooltip.tooltipText + property alias cornerSide: backgroundRect.cornerSide + + property color color: UM.Theme.getColor("primary") + property color hoverColor: UM.Theme.getColor("primary_hover") + property color disabledColor: color + property color textColor: UM.Theme.getColor("button_text") + property color textHoverColor: textColor + property color textDisabledColor: textColor + property color outlineColor: color + property color outlineHoverColor: hoverColor + property color outlineDisabledColor: outlineColor + property alias shadowColor: shadow.color + property alias shadowEnabled: shadow.visible + + property alias toolTipContentAlignment: tooltip.contentAlignment + + // This property is used to indicate whether the button has a fixed width or the width would depend on the contents + // Be careful when using fixedWidthMode, the translated texts can be too long that they won't fit. In any case, + // we elide the text to the right so the text will be cut off with the three dots at the end. + property var fixedWidthMode: false + + leftPadding: UM.Theme.getSize("default_margin").width + rightPadding: UM.Theme.getSize("default_margin").width + height: UM.Theme.getSize("action_button").height + hoverEnabled: true + + contentItem: Row + { + spacing: UM.Theme.getSize("narrow_margin").width + //Left side icon. Only displayed if !isIconOnRightSide. + UM.RecolorImage + { + id: buttonIconLeft + source: "" + height: UM.Theme.getSize("action_button_icon").height + width: visible ? height : 0 + sourceSize.width: width + sourceSize.height: height + color: button.hovered ? button.textHoverColor : button.textColor + visible: source != "" && !button.isIconOnRightSide + anchors.verticalCenter: parent.verticalCenter + } + + Label + { + id: buttonText + text: button.text + color: button.enabled ? (button.hovered ? button.textHoverColor : button.textColor): button.textDisabledColor + font: UM.Theme.getFont("medium") + visible: text != "" + renderType: Text.NativeRendering + anchors.verticalCenter: parent.verticalCenter + width: fixedWidthMode ? button.width - button.leftPadding - button.rightPadding : undefined + horizontalAlignment: Text.AlignHCenter + elide: Text.ElideRight + } + + //Right side icon. Only displayed if isIconOnRightSide. + UM.RecolorImage + { + id: buttonIconRight + source: buttonIconLeft.source + height: UM.Theme.getSize("action_button_icon").height + width: visible ? height : 0 + sourceSize.width: width + sourceSize.height: height + color: buttonIconLeft.color + visible: source != "" && button.isIconOnRightSide + anchors.verticalCenter: buttonIconLeft.verticalCenter + } + } + + background: Cura.RoundedRectangle + { + id: backgroundRect + cornerSide: Cura.RoundedRectangle.Direction.All + color: button.enabled ? (button.hovered ? button.hoverColor : button.color) : button.disabledColor + radius: UM.Theme.getSize("action_button_radius").width + border.width: UM.Theme.getSize("default_lining").width + border.color: button.enabled ? (button.hovered ? button.outlineHoverColor : button.outlineColor) : button.outlineDisabledColor + } + + DropShadow + { + id: shadow + // Don't blur the shadow + radius: 0 + anchors.fill: backgroundRect + source: backgroundRect + verticalOffset: 2 + visible: false + // Should always be drawn behind the background. + z: backgroundRect.z - 1 + } + + Cura.ToolTip + { + id: tooltip + visible: button.hovered + } +} \ No newline at end of file diff --git a/resources/qml/ActionPanel/ActionPanelWidget.qml b/resources/qml/ActionPanel/ActionPanelWidget.qml new file mode 100644 index 0000000000..1d9ee95548 --- /dev/null +++ b/resources/qml/ActionPanel/ActionPanelWidget.qml @@ -0,0 +1,56 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.3 + +import UM 1.2 as UM +import Cura 1.0 as Cura + + +// This element hold all the elements needed for the user to trigger the slicing process, and later +// to get information about the printing times, material consumption and the output process (such as +// saving to a file, printing over network, ... +Rectangle +{ + id: actionPanelWidget + + width: UM.Theme.getSize("action_panel_widget").width + height: childrenRect.height + 2 * UM.Theme.getSize("thick_margin").height + + color: UM.Theme.getColor("main_background") + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + radius: UM.Theme.getSize("default_radius").width + z: 10 + + property bool outputAvailable: UM.Backend.state == UM.Backend.Done || UM.Backend.state == UM.Backend.Disabled + + Loader + { + id: loader + anchors + { + top: parent.top + topMargin: UM.Theme.getSize("thick_margin").height + left: parent.left + leftMargin: UM.Theme.getSize("thick_margin").width + right: parent.right + rightMargin: UM.Theme.getSize("thick_margin").width + } + sourceComponent: outputAvailable ? outputProcessWidget : sliceProcessWidget + } + + Component + { + id: sliceProcessWidget + SliceProcessWidget { } + } + + Component + { + id: outputProcessWidget + OutputProcessWidget { } + } +} \ No newline at end of file diff --git a/resources/qml/ActionPanel/OutputDevicesActionButton.qml b/resources/qml/ActionPanel/OutputDevicesActionButton.qml new file mode 100644 index 0000000000..3bfaab0fc1 --- /dev/null +++ b/resources/qml/ActionPanel/OutputDevicesActionButton.qml @@ -0,0 +1,112 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.3 + +import UM 1.1 as UM +import Cura 1.0 as Cura + +Item +{ + id: widget + + function requestWriteToDevice() + { + UM.OutputDeviceManager.requestWriteToDevice(UM.OutputDeviceManager.activeDevice, PrintInformation.jobName, + { "filter_by_machine": true, "preferred_mimetypes": Cura.MachineManager.activeMachine.preferred_output_file_formats }); + } + + Cura.PrimaryButton + { + id: saveToButton + height: parent.height + fixedWidthMode: true + cornerSide: deviceSelectionMenu.visible ? Cura.RoundedRectangle.Direction.Left : Cura.RoundedRectangle.Direction.All + + anchors + { + top: parent.top + left: parent.left + right: deviceSelectionMenu.visible ? deviceSelectionMenu.left : parent.right + } + + tooltip: UM.OutputDeviceManager.activeDeviceDescription + + text: UM.OutputDeviceManager.activeDeviceShortDescription + + onClicked: + { + forceActiveFocus() + widget.requestWriteToDevice() + } + } + + Cura.ActionButton + { + id: deviceSelectionMenu + height: parent.height + + shadowEnabled: true + shadowColor: UM.Theme.getColor("primary_shadow") + cornerSide: Cura.RoundedRectangle.Direction.Right + + anchors + { + top: parent.top + right: parent.right + } + + leftPadding: UM.Theme.getSize("narrow_margin").width //Need more space than usual here for wide text. + rightPadding: UM.Theme.getSize("narrow_margin").width + iconSource: popup.opened ? UM.Theme.getIcon("arrow_top") : UM.Theme.getIcon("arrow_bottom") + color: UM.Theme.getColor("action_panel_secondary") + visible: (devicesModel.deviceCount > 1) + + onClicked: popup.opened ? popup.close() : popup.open() + + Popup + { + id: popup + padding: 0 + + y: -height + x: parent.width - width + + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent + + contentItem: ColumnLayout + { + Repeater + { + model: devicesModel + + delegate: Cura.ActionButton + { + text: model.description + visible: model.id != UM.OutputDeviceManager.activeDevice // Don't show the active device in the list + color: "transparent" + cornerRadius: 0 + hoverColor: UM.Theme.getColor("primary") + Layout.fillWidth: true + onClicked: + { + UM.OutputDeviceManager.setActiveDevice(model.id) + popup.close() + } + } + } + } + + background: Rectangle + { + opacity: visible ? 1 : 0 + Behavior on opacity { NumberAnimation { duration: 100 } } + color: UM.Theme.getColor("action_panel_secondary") + } + } + } + + UM.OutputDevicesModel { id: devicesModel } +} \ No newline at end of file diff --git a/resources/qml/ActionPanel/OutputProcessWidget.qml b/resources/qml/ActionPanel/OutputProcessWidget.qml new file mode 100644 index 0000000000..15214f212c --- /dev/null +++ b/resources/qml/ActionPanel/OutputProcessWidget.qml @@ -0,0 +1,171 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.3 + +import UM 1.1 as UM +import Cura 1.0 as Cura + + +// This element contains all the elements the user needs to visualize the data +// that is gather after the slicing process, such as printint time, material usage, ... +// There are also two buttons: one to previsualize the output layers, and the other to +// select what to do with it (such as print over network, save to file, ...) +Column +{ + id: widget + + spacing: UM.Theme.getSize("thin_margin").height + property bool preSlicedData: PrintInformation.preSliced + + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + Item + { + id: information + width: parent.width + height: childrenRect.height + + Column + { + id: timeAndCostsInformation + spacing: UM.Theme.getSize("thin_margin").height + + anchors + { + left: parent.left + right: parent.right + } + + Cura.IconWithText + { + id: estimatedTime + width: parent.width + + text: preSlicedData ? catalog.i18nc("@label", "No time estimation available") : PrintInformation.currentPrintTime.getDisplayString(UM.DurationFormat.Long) + source: UM.Theme.getIcon("clock") + font: UM.Theme.getFont("large_bold") + + PrintInformationWidget + { + id: printInformationPanel + visible: !preSlicedData + anchors.left: parent.left + anchors.leftMargin: parent.contentWidth + UM.Theme.getSize("default_margin").width + } + } + + Cura.IconWithText + { + id: estimatedCosts + width: parent.width + + property var printMaterialLengths: PrintInformation.materialLengths + property var printMaterialWeights: PrintInformation.materialWeights + + text: + { + if (preSlicedData) + { + return catalog.i18nc("@label", "No cost estimation available") + } + var totalLengths = 0 + var totalWeights = 0 + if (printMaterialLengths) + { + for(var index = 0; index < printMaterialLengths.length; index++) + { + if(printMaterialLengths[index] > 0) + { + totalLengths += printMaterialLengths[index] + totalWeights += Math.round(printMaterialWeights[index]) + } + } + } + return totalWeights + "g · " + totalLengths.toFixed(2) + "m" + } + source: UM.Theme.getIcon("spool") + + Item + { + id: additionalComponents + width: childrenRect.width + anchors.right: parent.right + height: parent.height + Row + { + id: additionalComponentsRow + anchors.right: parent.right + anchors.bottom: parent.bottom + spacing: UM.Theme.getSize("default_margin").width + } + } + Component.onCompleted: addAdditionalComponents("saveButton") + + Connections + { + target: CuraApplication + onAdditionalComponentsChanged: addAdditionalComponents("saveButton") + } + + function addAdditionalComponents (areaId) + { + if(areaId == "saveButton") + { + for (var component in CuraApplication.additionalComponents["saveButton"]) + { + CuraApplication.additionalComponents["saveButton"][component].parent = additionalComponentsRow + } + } + } + } + } + + + } + + Item + { + id: buttonRow + anchors.right: parent.right + anchors.left: parent.left + height: UM.Theme.getSize("action_button").height + + Cura.SecondaryButton + { + id: previewStageShortcut + + anchors + { + left: parent.left + right: outputDevicesButton.left + rightMargin: UM.Theme.getSize("default_margin").width + } + + height: UM.Theme.getSize("action_button").height + text: catalog.i18nc("@button", "Preview") + tooltip: text + fixedWidthMode: true + + toolTipContentAlignment: Cura.ToolTip.ContentAlignment.AlignLeft + + onClicked: UM.Controller.setActiveStage("PreviewStage") + visible: UM.Controller.activeStage != null && UM.Controller.activeStage.stageId != "PreviewStage" + } + + Cura.OutputDevicesActionButton + { + id: outputDevicesButton + + anchors.right: parent.right + width: previewStageShortcut.visible ? UM.Theme.getSize("action_button").width : parent.width + height: UM.Theme.getSize("action_button").height + } + } +} \ No newline at end of file diff --git a/resources/qml/ActionPanel/PrintInformationWidget.qml b/resources/qml/ActionPanel/PrintInformationWidget.qml new file mode 100644 index 0000000000..2e108b05d7 --- /dev/null +++ b/resources/qml/ActionPanel/PrintInformationWidget.qml @@ -0,0 +1,58 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.1 + +import UM 1.1 as UM +import Cura 1.0 as Cura + +UM.RecolorImage +{ + id: widget + + source: UM.Theme.getIcon("info") + width: visible ? UM.Theme.getSize("section_icon").width : 0 + height: UM.Theme.getSize("section_icon").height + + color: UM.Theme.getColor("icon") + + MouseArea + { + anchors.fill: parent + hoverEnabled: true + onEntered: popup.open() + onExited: popup.close() + } + + Popup + { + id: popup + + y: -(height + UM.Theme.getSize("default_arrow").height + UM.Theme.getSize("thin_margin").height) + x: parent.width - width + UM.Theme.getSize("thin_margin").width + + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent + + opacity: opened ? 1 : 0 + Behavior on opacity { NumberAnimation { duration: 100 } } + + contentItem: PrintJobInformation + { + id: printJobInformation + width: UM.Theme.getSize("action_panel_information_widget").width + } + + background: UM.PointingRectangle + { + color: UM.Theme.getColor("tool_panel_background") + borderColor: UM.Theme.getColor("lining") + borderWidth: UM.Theme.getSize("default_lining").width + + target: Qt.point(width - (widget.width / 2) - UM.Theme.getSize("thin_margin").width, + height + UM.Theme.getSize("default_arrow").height - UM.Theme.getSize("thin_margin").height) + + arrowSize: UM.Theme.getSize("default_arrow").width + } + } +} \ No newline at end of file diff --git a/resources/qml/ActionPanel/PrintJobInformation.qml b/resources/qml/ActionPanel/PrintJobInformation.qml new file mode 100644 index 0000000000..8bd5d5a0d3 --- /dev/null +++ b/resources/qml/ActionPanel/PrintJobInformation.qml @@ -0,0 +1,159 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.1 + +import UM 1.1 as UM +import Cura 1.0 as Cura + +Column +{ + id: base + spacing: UM.Theme.getSize("default_margin").width + + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + Column + { + id: timeSpecification + width: parent.width + topPadding: UM.Theme.getSize("default_margin").height + leftPadding: UM.Theme.getSize("default_margin").width + rightPadding: UM.Theme.getSize("default_margin").width + + Label + { + text: catalog.i18nc("@label", "Time specification").toUpperCase() + color: UM.Theme.getColor("primary") + font: UM.Theme.getFont("default_bold") + renderType: Text.NativeRendering + } + + Label + { + property var printDuration: PrintInformation.currentPrintTime + + text: + { + // All the time information for the different features is achieved + var printTime = PrintInformation.getFeaturePrintTimes() + var totalSeconds = parseInt(printDuration.getDisplayString(UM.DurationFormat.Seconds)) + + // A message is created and displayed when the user hover the time label + var text = "" + for(var feature in printTime) + { + if(!printTime[feature].isTotalDurationZero) + { + text += "" + + "".arg(printTime[feature].getDisplayString(UM.DurationFormat.ISO8601).slice(0,-3)) + + "".arg(Math.round(100 * parseInt(printTime[feature].getDisplayString(UM.DurationFormat.Seconds)) / totalSeconds)) + + "" + } + } + text += "
" + feature + ":  %1  %1%
" + return text + } + width: parent.width - 2 * UM.Theme.getSize("default_margin").width + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + textFormat: Text.RichText + } + } + + Column + { + id: materialSpecification + width: parent.width + bottomPadding: UM.Theme.getSize("default_margin").height + leftPadding: UM.Theme.getSize("default_margin").width + rightPadding: UM.Theme.getSize("default_margin").width + + Label + { + text: catalog.i18nc("@label", "Material specification").toUpperCase() + color: UM.Theme.getColor("primary") + font: UM.Theme.getFont("default_bold") + renderType: Text.NativeRendering + } + + Label + { + property var printMaterialLengths: PrintInformation.materialLengths + property var printMaterialWeights: PrintInformation.materialWeights + property var printMaterialCosts: PrintInformation.materialCosts + property var printMaterialNames: PrintInformation.materialNames + + function formatRow(items) + { + var rowHTML = "" + for(var item = 0; item < items.length; item++) + { + if (item == 0) + { + rowHTML += "%1".arg(items[item]) + } + else + { + rowHTML += "  %1".arg(items[item]) + } + } + rowHTML += "" + return rowHTML + } + + text: + { + var lengths = [] + var weights = [] + var costs = [] + var names = [] + if(printMaterialLengths) + { + for(var index = 0; index < printMaterialLengths.length; index++) + { + if(printMaterialLengths[index] > 0) + { + names.push(printMaterialNames[index]) + lengths.push(printMaterialLengths[index].toFixed(2)) + weights.push(String(Math.round(printMaterialWeights[index]))) + var cost = printMaterialCosts[index] == undefined ? 0 : printMaterialCosts[index].toFixed(2) + costs.push(cost) + } + } + } + if(lengths.length == 0) + { + lengths = ["0.00"] + weights = ["0"] + costs = ["0.00"] + } + + var text = "" + for(var index = 0; index < lengths.length; index++) + { + text += formatRow([ + "%1:".arg(names[index]), + catalog.i18nc("@label m for meter", "%1m").arg(lengths[index]), + catalog.i18nc("@label g for grams", "%1g").arg(weights[index]), + "%1 %2".arg(UM.Preferences.getValue("cura/currency")).arg(costs[index]), + ]) + } + text += "
" + + return text + } + width: parent.width - 2 * UM.Theme.getSize("default_margin").width + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + textFormat: Text.RichText + } + } +} \ No newline at end of file diff --git a/resources/qml/ActionPanel/SliceProcessWidget.qml b/resources/qml/ActionPanel/SliceProcessWidget.qml new file mode 100644 index 0000000000..1695be8748 --- /dev/null +++ b/resources/qml/ActionPanel/SliceProcessWidget.qml @@ -0,0 +1,203 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.3 +import QtQuick.Controls 1.4 as Controls1 + +import UM 1.1 as UM +import Cura 1.0 as Cura + + +// This element contains all the elements the user needs to create a printjob from the +// model(s) that is(are) on the buildplate. Mainly the button to start/stop the slicing +// process and a progress bar to see the progress of the process. +Column +{ + id: widget + + spacing: UM.Theme.getSize("thin_margin").height + + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + property real progress: UM.Backend.progress + property int backendState: UM.Backend.state + + function sliceOrStopSlicing() + { + if (widget.backendState == UM.Backend.NotStarted) + { + CuraApplication.backend.forceSlice() + } + else + { + CuraApplication.backend.stopSlicing() + } + } + + Label + { + id: autoSlicingLabel + width: parent.width + visible: progressBar.visible + + text: catalog.i18nc("@label:PrintjobStatus", "Slicing...") + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + } + + Cura.IconWithText + { + id: unableToSliceMessage + width: parent.width + visible: widget.backendState == UM.Backend.Error + + text: catalog.i18nc("@label:PrintjobStatus", "Unable to Slice") + source: UM.Theme.getIcon("warning") + iconColor: UM.Theme.getColor("warning") + } + + // Progress bar, only visible when the backend is in the process of slice the printjob + ProgressBar + { + id: progressBar + width: parent.width + height: UM.Theme.getSize("progressbar").height + value: progress + indeterminate: widget.backendState == UM.Backend.NotStarted + visible: (widget.backendState == UM.Backend.Processing || (prepareButtons.autoSlice && widget.backendState == UM.Backend.NotStarted)) + + background: Rectangle + { + anchors.fill: parent + radius: UM.Theme.getSize("progressbar_radius").width + color: UM.Theme.getColor("progressbar_background") + } + + contentItem: Item + { + anchors.fill: parent + Rectangle + { + width: progressBar.visualPosition * parent.width + height: parent.height + radius: UM.Theme.getSize("progressbar_radius").width + color: UM.Theme.getColor("progressbar_control") + } + } + } + + Item + { + id: prepareButtons + // Get the current value from the preferences + property bool autoSlice: UM.Preferences.getValue("general/auto_slice") + // Disable the slice process when + + width: parent.width + height: UM.Theme.getSize("action_button").height + visible: !autoSlice + Cura.PrimaryButton + { + id: sliceButton + fixedWidthMode: true + + height: parent.height + + anchors.right: additionalComponents.left + anchors.rightMargin: additionalComponents.width != 0 ? UM.Theme.getSize("default_margin").width : 0 + anchors.left: parent.left + + text: catalog.i18nc("@button", "Slice") + tooltip: catalog.i18nc("@label", "Start the slicing process") + enabled: widget.backendState != UM.Backend.Error + visible: widget.backendState == UM.Backend.NotStarted || widget.backendState == UM.Backend.Error + onClicked: sliceOrStopSlicing() + } + + Cura.SecondaryButton + { + id: cancelButton + fixedWidthMode: true + height: parent.height + anchors.left: parent.left + + anchors.right: additionalComponents.left + anchors.rightMargin: additionalComponents.width != 0 ? UM.Theme.getSize("default_margin").width : 0 + text: catalog.i18nc("@button", "Cancel") + enabled: sliceButton.enabled + visible: !sliceButton.visible + onClicked: sliceOrStopSlicing() + } + + Item + { + id: additionalComponents + width: childrenRect.width + anchors.right: parent.right + height: parent.height + Row + { + id: additionalComponentsRow + anchors.verticalCenter: parent.verticalCenter + spacing: UM.Theme.getSize("default_margin").width + } + } + Component.onCompleted: prepareButtons.addAdditionalComponents("saveButton") + + Connections + { + target: CuraApplication + onAdditionalComponentsChanged: prepareButtons.addAdditionalComponents("saveButton") + } + + function addAdditionalComponents (areaId) + { + if(areaId == "saveButton") + { + for (var component in CuraApplication.additionalComponents["saveButton"]) + { + CuraApplication.additionalComponents["saveButton"][component].parent = additionalComponentsRow + } + } + } + } + + + // React when the user changes the preference of having the auto slice enabled + Connections + { + target: UM.Preferences + onPreferenceChanged: + { + var autoSlice = UM.Preferences.getValue("general/auto_slice") + if(prepareButtons.autoSlice != autoSlice) + { + prepareButtons.autoSlice = autoSlice + if(autoSlice) + { + CuraApplication.backend.forceSlice() + } + } + } + } + + // Shortcut for "slice/stop" + Controls1.Action + { + shortcut: "Ctrl+P" + onTriggered: + { + if (prepareButton.enabled) + { + sliceOrStopSlicing() + } + } + } +} diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index 4bf01e16fb..a1077f5fb7 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. pragma Singleton @@ -23,8 +23,6 @@ Item property alias viewLeftSideCamera: viewLeftSideCameraAction; property alias viewRightSideCamera: viewRightSideCameraAction; - property alias expandSidebar: expandSidebarAction; - property alias deleteSelection: deleteSelectionAction; property alias centerSelection: centerSelectionAction; property alias multiplySelection: multiplySelectionAction; @@ -58,7 +56,6 @@ Item property alias preferences: preferencesAction; - property alias showEngineLog: showEngineLogAction; property alias showProfileFolder: showProfileFolderAction; property alias documentation: documentationAction; property alias reportBug: reportBugAction; @@ -70,7 +67,7 @@ Item property alias browsePackages: browsePackagesAction - UM.I18nCatalog{id: catalog; name:"cura"} + UM.I18nCatalog{id: catalog; name: "cura"} Action { @@ -398,14 +395,6 @@ Item shortcut: StandardKey.New } - Action - { - id: showEngineLogAction; - text: catalog.i18nc("@action:inmenu menubar:help","Show Engine &Log..."); - iconName: "view-list-text"; - shortcut: StandardKey.WhatsThis; - } - Action { id: showProfileFolderAction; @@ -423,14 +412,7 @@ Item Action { id: browsePackagesAction - text: catalog.i18nc("@action:menu", "Open Marketplace...") + text: catalog.i18nc("@action:menu", "&Marketplace") iconName: "plugins_browse" } - - Action - { - id: expandSidebarAction; - text: catalog.i18nc("@action:inmenu menubar:view","Expand/Collapse Sidebar"); - shortcut: "Ctrl+E"; - } } diff --git a/resources/qml/BorderGroup.qml b/resources/qml/BorderGroup.qml new file mode 100644 index 0000000000..38ad9fadff --- /dev/null +++ b/resources/qml/BorderGroup.qml @@ -0,0 +1,10 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.0 + +QtObject +{ + property real width: 0 + property color color: "black" +} diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 029149f1d0..ca1c2e38c1 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2017 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 @@ -6,53 +6,42 @@ import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import QtQuick.Layouts 1.1 import QtQuick.Dialogs 1.2 +import QtGraphicalEffects 1.0 import UM 1.3 as UM import Cura 1.1 as Cura +import "Dialogs" import "Menus" +import "MainWindow" UM.MainWindow { id: base - //: Cura application window title - title: catalog.i18nc("@title:window","Ultimaker Cura"); - viewportRect: Qt.rect(0, 0, (base.width - sidebar.width) / base.width, 1.0) - property bool showPrintMonitor: false + // Cura application window title + title: catalog.i18nc("@title:window", "Ultimaker Cura") backgroundColor: UM.Theme.getColor("viewport_background") - // This connection is here to support legacy printer output devices that use the showPrintMonitor signal on Application to switch to the monitor stage - // It should be phased out in newer plugin versions. - Connections + + UM.I18nCatalog { - target: CuraApplication - onShowPrintMonitor: { - if (show) { - UM.Controller.setActiveStage("MonitorStage") - } else { - UM.Controller.setActiveStage("PrepareStage") - } - } + id: catalog + name: "cura" } - onWidthChanged: + function showTooltip(item, position, text) { - // If slidebar is collapsed then it should be invisible - // otherwise after the main_window resize the sidebar will be fully re-drawn - if (sidebar.collapsed){ - if (sidebar.visible == true){ - sidebar.visible = false - sidebar.initialWidth = 0 - } - } - else{ - if (sidebar.visible == false){ - sidebar.visible = true - sidebar.initialWidth = UM.Theme.getSize("sidebar").width - } - } + tooltip.text = text; + position = item.mapToItem(backgroundItem, position.x - UM.Theme.getSize("default_arrow").width, position.y); + tooltip.show(position); } + function hideTooltip() + { + tooltip.hide(); + } + + Component.onCompleted: { CuraApplication.setMinimumWindowSize(UM.Theme.getSize("window_minimum_size")) @@ -72,12 +61,12 @@ UM.MainWindow Item { - id: backgroundItem; - anchors.fill: parent; - UM.I18nCatalog{id: catalog; name:"cura"} + id: backgroundItem + anchors.fill: parent signal hasMesh(string name) //this signal sends the filebase name so it can be used for the JobSpecs.qml - function getMeshName(path){ + function getMeshName(path) + { //takes the path the complete path of the meshname and returns only the filebase var fileName = path.slice(path.lastIndexOf("/") + 1) var fileBase = fileName.slice(0, fileName.indexOf(".")) @@ -85,253 +74,97 @@ UM.MainWindow } //DeleteSelection on the keypress backspace event - Keys.onPressed: { + Keys.onPressed: + { if (event.key == Qt.Key_Backspace) { Cura.Actions.deleteSelection.trigger() } } - UM.ApplicationMenu + ApplicationMenu { - id: menu + id: applicationMenu window: base - - Menu - { - id: fileMenu - title: catalog.i18nc("@title:menu menubar:toplevel","&File"); - MenuItem - { - id: newProjectMenu - action: Cura.Actions.newProject; - } - - MenuItem - { - id: openMenu - action: Cura.Actions.open; - } - - RecentFilesMenu { } - - MenuItem - { - id: saveWorkspaceMenu - text: catalog.i18nc("@title:menu menubar:file","&Save...") - onTriggered: - { - var args = { "filter_by_machine": false, "file_type": "workspace", "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml" }; - if(UM.Preferences.getValue("cura/dialog_on_project_save")) - { - saveWorkspaceDialog.args = args; - saveWorkspaceDialog.open() - } - else - { - UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args) - } - } - } - - MenuSeparator { } - - MenuItem - { - id: saveAsMenu - text: catalog.i18nc("@title:menu menubar:file", "&Export...") - onTriggered: - { - var localDeviceId = "local_file"; - UM.OutputDeviceManager.requestWriteToDevice(localDeviceId, PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"}); - } - } - - MenuItem - { - id: exportSelectionMenu - text: catalog.i18nc("@action:inmenu menubar:file", "Export Selection..."); - enabled: UM.Selection.hasSelection; - iconName: "document-save-as"; - onTriggered: UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file", PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"}); - } - - MenuSeparator { } - - MenuItem - { - id: reloadAllMenu - action: Cura.Actions.reloadAll; - } - - MenuSeparator { } - - MenuItem { action: Cura.Actions.quit; } - } - - Menu - { - title: catalog.i18nc("@title:menu menubar:toplevel","&Edit"); - - MenuItem { action: Cura.Actions.undo; } - MenuItem { action: Cura.Actions.redo; } - MenuSeparator { } - MenuItem { action: Cura.Actions.selectAll; } - MenuItem { action: Cura.Actions.arrangeAll; } - MenuItem { action: Cura.Actions.deleteSelection; } - MenuItem { action: Cura.Actions.deleteAll; } - MenuItem { action: Cura.Actions.resetAllTranslation; } - MenuItem { action: Cura.Actions.resetAll; } - MenuSeparator { } - MenuItem { action: Cura.Actions.groupObjects;} - MenuItem { action: Cura.Actions.mergeObjects;} - MenuItem { action: Cura.Actions.unGroupObjects;} - } - - ViewMenu { title: catalog.i18nc("@title:menu", "&View") } - - Menu - { - id: settingsMenu - title: catalog.i18nc("@title:menu", "&Settings") - - PrinterMenu { title: catalog.i18nc("@title:menu menubar:settings", "&Printer") } - - Instantiator - { - model: Cura.ExtrudersModel { simpleNames: true } - Menu { - title: model.name - - NozzleMenu { title: Cura.MachineManager.activeDefinitionVariantsName; visible: Cura.MachineManager.hasVariants; extruderIndex: index } - MaterialMenu { title: catalog.i18nc("@title:menu", "&Material"); visible: Cura.MachineManager.hasMaterials; extruderIndex: index } - - MenuSeparator - { - visible: Cura.MachineManager.hasVariants || Cura.MachineManager.hasMaterials - } - - MenuItem - { - text: catalog.i18nc("@action:inmenu", "Set as Active Extruder") - onTriggered: Cura.MachineManager.setExtruderIndex(model.index) - } - - MenuItem - { - text: catalog.i18nc("@action:inmenu", "Enable Extruder") - onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, true) - visible: !Cura.MachineManager.getExtruder(model.index).isEnabled - } - - MenuItem - { - text: catalog.i18nc("@action:inmenu", "Disable Extruder") - onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, false) - visible: Cura.MachineManager.getExtruder(model.index).isEnabled - enabled: Cura.MachineManager.numberExtrudersEnabled > 1 - } - - } - onObjectAdded: settingsMenu.insertItem(index, object) - onObjectRemoved: settingsMenu.removeItem(object) - } - - // TODO Only show in dev mode. Remove check when feature ready - BuildplateMenu { title: catalog.i18nc("@title:menu", "&Build plate"); visible: CuraSDKVersion == "dev" ? Cura.MachineManager.hasVariantBuildplates : false } - ProfileMenu { title: catalog.i18nc("@title:settings", "&Profile"); } - - MenuSeparator { } - - MenuItem { action: Cura.Actions.configureSettingVisibility } - } - - Menu - { - id: extension_menu - title: catalog.i18nc("@title:menu menubar:toplevel","E&xtensions"); - - Instantiator - { - id: extensions - model: UM.ExtensionModel { } - - Menu - { - id: sub_menu - title: model.name; - visible: actions != null - enabled: actions != null - Instantiator - { - model: actions - MenuItem - { - text: model.text - onTriggered: extensions.model.subMenuTriggered(name, model.text) - } - onObjectAdded: sub_menu.insertItem(index, object) - onObjectRemoved: sub_menu.removeItem(object) - } - } - - onObjectAdded: extension_menu.insertItem(index, object) - onObjectRemoved: extension_menu.removeItem(object) - } - } - - Menu - { - id: plugin_menu - title: catalog.i18nc("@title:menu menubar:toplevel", "&Marketplace") - - MenuItem { action: Cura.Actions.browsePackages } - } - - Menu - { - id: preferencesMenu - title: catalog.i18nc("@title:menu menubar:toplevel","P&references"); - - MenuItem { action: Cura.Actions.preferences; } - } - - Menu - { - id: helpMenu - title: catalog.i18nc("@title:menu menubar:toplevel","&Help"); - - MenuItem { action: Cura.Actions.showProfileFolder; } - MenuItem { action: Cura.Actions.documentation; } - MenuItem { action: Cura.Actions.reportBug; } - MenuSeparator { } - MenuItem { action: Cura.Actions.about; } - } - } - - UM.SettingPropertyProvider - { - id: machineExtruderCount - - containerStack: Cura.MachineManager.activeMachine - key: "machine_extruder_count" - watchedProperties: [ "value" ] - storeIndex: 0 } Item { - id: contentItem; + id: headerBackground + anchors + { + top: applicationMenu.bottom + left: parent.left + right: parent.right + } + height: stageMenu.source != "" ? Math.round(mainWindowHeader.height + stageMenu.height / 2) : mainWindowHeader.height - y: menu.height - width: parent.width; - height: parent.height - menu.height; + LinearGradient + { + anchors.fill: parent + start: Qt.point(0, 0) + end: Qt.point(parent.width, 0) + gradient: Gradient + { + GradientStop + { + position: 0.0 + color: UM.Theme.getColor("main_window_header_background") + } + GradientStop + { + position: 0.5 + color: UM.Theme.getColor("main_window_header_background_gradient") + } + GradientStop + { + position: 1.0 + color: UM.Theme.getColor("main_window_header_background") + } + } + } - Keys.forwardTo: menu + // This is a placehoder for adding a pattern in the header + Image + { + id: backgroundPattern + anchors.fill: parent + fillMode: Image.Tile + source: UM.Theme.getImage("header_pattern") + horizontalAlignment: Image.AlignLeft + verticalAlignment: Image.AlignTop + } + } + + MainWindowHeader + { + id: mainWindowHeader + anchors + { + left: parent.left + right: parent.right + top: applicationMenu.bottom + } + } + + Item + { + id: contentItem + + anchors + { + top: mainWindowHeader.bottom + bottom: parent.bottom + left: parent.left + right: parent.right + } + + Keys.forwardTo: applicationMenu DropArea { - anchors.fill: parent; + // The drop area is here to handle files being dropped onto Cura. + anchors.fill: parent onDropped: { if (drop.urls.length > 0) @@ -359,178 +192,146 @@ UM.MainWindow } } - JobSpecs - { - id: jobSpecs - anchors - { - bottom: parent.bottom; - right: sidebar.left; - bottomMargin: UM.Theme.getSize("default_margin").height; - rightMargin: UM.Theme.getSize("default_margin").width; - } - } - - Button - { - id: openFileButton; - text: catalog.i18nc("@action:button","Open File"); - iconSource: UM.Theme.getIcon("load") - style: UM.Theme.styles.tool_button - tooltip: "" - anchors - { - top: topbar.bottom; - topMargin: UM.Theme.getSize("default_margin").height; - left: parent.left; - } - action: Cura.Actions.open; - } - Toolbar { - id: toolbar; + // The toolbar is the left bar that is populated by all the tools (which are dynamicly populated by + // plugins) + id: toolbar property int mouseX: base.mouseX property int mouseY: base.mouseY - anchors { - top: openFileButton.bottom; - topMargin: UM.Theme.getSize("window_margin").height; - left: parent.left; + anchors + { + verticalCenter: parent.verticalCenter + left: parent.left } + visible: CuraApplication.platformActivity && !PrintInformation.preSliced } ObjectsList { - id: objectsList; - visible: UM.Preferences.getValue("cura/use_multi_build_plate"); + id: objectsList + visible: UM.Preferences.getValue("cura/use_multi_build_plate") anchors { - bottom: parent.bottom; - left: parent.left; + bottom: viewOrientationControls.top + left: toolbar.right + margins: UM.Theme.getSize("default_margin").width } - } - Topbar + JobSpecs + { + id: jobSpecs + visible: CuraApplication.platformActivity + anchors + { + left: parent.left + bottom: viewOrientationControls.top + margins: UM.Theme.getSize("default_margin").width + bottomMargin: UM.Theme.getSize("thin_margin").width + } + } + + ViewOrientationControls + { + id: viewOrientationControls + + anchors + { + left: parent.left + bottom: parent.bottom + margins: UM.Theme.getSize("default_margin").width + } + } + + Cura.ActionPanelWidget { - id: topbar - anchors.left: parent.left anchors.right: parent.right - anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.rightMargin: UM.Theme.getSize("thick_margin").width + anchors.bottomMargin: UM.Theme.getSize("thick_margin").height + visible: CuraApplication.platformActivity } Loader { + // A stage can control this area. If nothing is set, it will therefore show the 3D view. id: main anchors { - top: topbar.bottom - bottom: parent.bottom + // Align to the top of the stageMenu since the stageMenu may not exist + top: stageMenu.source ? stageMenu.verticalCenter : parent.top left: parent.left - right: sidebar.left + right: parent.right + bottom: parent.bottom } - MouseArea - { - visible: UM.Controller.activeStage.mainComponent != "" - anchors.fill: parent - acceptedButtons: Qt.AllButtons - onWheel: wheel.accepted = true - } - - source: UM.Controller.activeStage.mainComponent + source: UM.Controller.activeStage != null ? UM.Controller.activeStage.mainComponent : "" } Loader { - id: sidebar - - property bool collapsed: false; - property var initialWidth: UM.Theme.getSize("sidebar").width; - - function callExpandOrCollapse() { - if (collapsed) { - sidebar.visible = true; - sidebar.initialWidth = UM.Theme.getSize("sidebar").width; - viewportRect = Qt.rect(0, 0, (base.width - sidebar.width) / base.width, 1.0); - expandSidebarAnimation.start(); - } else { - viewportRect = Qt.rect(0, 0, 1, 1.0); - collapseSidebarAnimation.start(); - } - collapsed = !collapsed; - UM.Preferences.setValue("cura/sidebar_collapsed", collapsed); - } + // The stage menu is, as the name implies, a menu that is defined by the active stage. + // Note that this menu does not need to be set at all! It's perfectly acceptable to have a stage + // without this menu! + id: stageMenu anchors { - top: topbar.top - bottom: parent.bottom + left: parent.left + right: parent.right + top: parent.top } - width: initialWidth - x: base.width - sidebar.width - source: UM.Controller.activeStage.sidebarComponent + height: UM.Theme.getSize("stage_menu").height + source: UM.Controller.activeStage != null ? UM.Controller.activeStage.stageMenuComponent : "" - NumberAnimation { - id: collapseSidebarAnimation - target: sidebar - properties: "x" - to: base.width - duration: 100 - } - - NumberAnimation { - id: expandSidebarAnimation - target: sidebar - properties: "x" - to: base.width - sidebar.width - duration: 100 - } - - Component.onCompleted: + // HACK: This is to ensure that the parent never gets set to null, as this wreaks havoc on the focus. + function onParentDestroyed() { - var sidebar_collapsed = UM.Preferences.getValue("cura/sidebar_collapsed"); - - if (sidebar_collapsed) - { - sidebar.collapsed = true; - viewportRect = Qt.rect(0, 0, 1, 1.0) - collapseSidebarAnimation.start(); - } + printSetupSelector.parent = stageMenu + printSetupSelector.visible = false } + property Item oldParent: null - MouseArea + // The printSetupSelector is defined here so that the setting list doesn't need to get re-instantiated + // Every time the stage is changed. + property var printSetupSelector: Cura.PrintSetupSelector { - visible: UM.Controller.activeStage.sidebarComponent != "" - anchors.fill: parent - acceptedButtons: Qt.AllButtons - onWheel: wheel.accepted = true + width: UM.Theme.getSize("print_setup_widget").width + height: UM.Theme.getSize("stage_menu").height + headerCornerSide: RoundedRectangle.Direction.Right + onParentChanged: + { + if(stageMenu.oldParent !=null) + { + stageMenu.oldParent.Component.destruction.disconnect(stageMenu.onParentDestroyed) + } + stageMenu.oldParent = parent + visible = parent != stageMenu + parent.Component.destruction.connect(stageMenu.onParentDestroyed) + } } } - UM.MessageStack { anchors { horizontalCenter: parent.horizontalCenter - horizontalCenterOffset: -(Math.round(UM.Theme.getSize("sidebar").width / 2)) - top: parent.verticalCenter; - bottom: parent.bottom; + top: parent.verticalCenter + bottom: parent.bottom bottomMargin: UM.Theme.getSize("default_margin").height } } } - } - // Expand or collapse sidebar - Connections - { - target: Cura.Actions.expandSidebar - onTriggered: sidebar.callExpandOrCollapse() + PrintSetupTooltip + { + id: tooltip + } } UM.PreferencesDialog @@ -552,9 +353,6 @@ UM.MainWindow insertPage(4, catalog.i18nc("@title:tab", "Profiles"), Qt.resolvedUrl("Preferences/ProfilesPage.qml")); - // Remove plug-ins page because we will use the shiny new plugin browser: - removePage(5); - //Force refresh setPage(0); } @@ -567,13 +365,6 @@ UM.MainWindow } } - WorkspaceSummaryDialog - { - id: saveWorkspaceDialog - property var args - onYes: UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args) - } - Connections { target: Cura.Actions.preferences @@ -586,33 +377,6 @@ UM.MainWindow onShowPreferencesWindow: preferences.visible = true } - MessageDialog - { - id: newProjectDialog - modality: Qt.ApplicationModal - title: catalog.i18nc("@title:window", "New project") - text: catalog.i18nc("@info:question", "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings.") - standardButtons: StandardButton.Yes | StandardButton.No - icon: StandardIcon.Question - onYes: - { - CuraApplication.deleteAll(); - Cura.Actions.resetProfile.trigger(); - } - } - - Connections - { - target: Cura.Actions.newProject - onTriggered: - { - if(Printer.platformActivity || Cura.MachineManager.hasUserSettings) - { - newProjectDialog.visible = true - } - } - } - Connections { target: Cura.Actions.addProfile @@ -670,19 +434,6 @@ UM.MainWindow } } - UM.ExtensionModel { - id: curaExtensions - } - - // show the plugin browser dialog - Connections - { - target: Cura.Actions.browsePackages - onTriggered: { - curaExtensions.callExtensionMethod("Toolbox", "browsePackages") - } - } - Timer { id: createProfileTimer @@ -703,7 +454,8 @@ UM.MainWindow } } - ContextMenu { + ContextMenu + { id: contextMenu } @@ -870,7 +622,8 @@ UM.MainWindow modality: Qt.ApplicationModal } - MessageDialog { + MessageDialog + { id: infoMultipleFilesWithGcodeDialog title: catalog.i18nc("@title:window", "Open File(s)") icon: StandardIcon.Information @@ -914,11 +667,6 @@ UM.MainWindow } } - EngineLog - { - id: engineLog; - } - Connections { target: Cura.Actions.showProfileFolder diff --git a/resources/qml/Dialogs/AboutDialog.qml b/resources/qml/Dialogs/AboutDialog.qml new file mode 100644 index 0000000000..ac115a0e5f --- /dev/null +++ b/resources/qml/Dialogs/AboutDialog.qml @@ -0,0 +1,168 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.1 +import QtQuick.Window 2.1 + +import UM 1.1 as UM + +UM.Dialog +{ + id: base + + //: About dialog title + title: catalog.i18nc("@title:window","About Cura") + + minimumWidth: 500 * screenScaleFactor + minimumHeight: 650 * screenScaleFactor + width: minimumWidth + height: minimumHeight + + Rectangle + { + width: parent.width + 2 * margin // margin from Dialog.qml + height: version.y + version.height + margin + + anchors.top: parent.top + anchors.topMargin: - margin + anchors.horizontalCenter: parent.horizontalCenter + + color: UM.Theme.getColor("viewport_background") + } + + Image + { + id: logo + width: (base.minimumWidth * 0.85) | 0 + height: (width * (UM.Theme.getSize("logo").height / UM.Theme.getSize("logo").width)) | 0 + + source: UM.Theme.getImage("logo_about") + + anchors.top: parent.top + anchors.topMargin: ((base.minimumWidth - width) / 2) | 0 + anchors.horizontalCenter: parent.horizontalCenter + + UM.I18nCatalog{id: catalog; name: "cura"} + } + + Label + { + id: version + + text: catalog.i18nc("@label","version: %1").arg(UM.Application.version) + font: UM.Theme.getFont("large_bold") + color: UM.Theme.getColor("text") + anchors.right : logo.right + anchors.top: logo.bottom + anchors.topMargin: (UM.Theme.getSize("default_margin").height / 2) | 0 + } + + Label + { + id: description + width: parent.width + + //: About dialog application description + text: catalog.i18nc("@label","End-to-end solution for fused filament 3D printing.") + font: UM.Theme.getFont("system") + wrapMode: Text.WordWrap + anchors.top: version.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + } + + Label + { + id: creditsNotes + width: parent.width + + //: About dialog application author note + text: catalog.i18nc("@info:credit","Cura is developed by Ultimaker B.V. in cooperation with the community.\nCura proudly uses the following open source projects:") + font: UM.Theme.getFont("system") + wrapMode: Text.WordWrap + anchors.top: description.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + } + + ScrollView + { + id: credits + anchors.top: creditsNotes.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + + width: parent.width + height: base.height - y - (2 * UM.Theme.getSize("default_margin").height + closeButton.height) + + ListView + { + id: projectsList + + width: parent.width + + delegate: Row + { + Label + { + text: "%2".arg(model.url).arg(model.name) + width: (projectsList.width * 0.25) | 0 + elide: Text.ElideRight + onLinkActivated: Qt.openUrlExternally(link) + } + Label + { + text: model.description + elide: Text.ElideRight + width: (projectsList.width * 0.6) | 0 + } + Label + { + text: model.license + elide: Text.ElideRight + width: (projectsList.width * 0.15) | 0 + } + } + model: ListModel + { + id: projectsModel + } + Component.onCompleted: + { + projectsModel.append({ name: "Cura", description: catalog.i18nc("@label", "Graphical user interface"), license: "LGPLv3", url: "https://github.com/Ultimaker/Cura" }); + projectsModel.append({ name: "Uranium", description: catalog.i18nc("@label", "Application framework"), license: "LGPLv3", url: "https://github.com/Ultimaker/Uranium" }); + projectsModel.append({ name: "CuraEngine", description: catalog.i18nc("@label", "G-code generator"), license: "AGPLv3", url: "https://github.com/Ultimaker/CuraEngine" }); + projectsModel.append({ name: "libArcus", description: catalog.i18nc("@label", "Interprocess communication library"), license: "LGPLv3", url: "https://github.com/Ultimaker/libArcus" }); + + projectsModel.append({ name: "Python", description: catalog.i18nc("@label", "Programming language"), license: "Python", url: "http://python.org/" }); + projectsModel.append({ name: "Qt5", description: catalog.i18nc("@label", "GUI framework"), license: "LGPLv3", url: "https://www.qt.io/" }); + projectsModel.append({ name: "PyQt", description: catalog.i18nc("@label", "GUI framework bindings"), license: "GPL", url: "https://riverbankcomputing.com/software/pyqt" }); + projectsModel.append({ name: "SIP", description: catalog.i18nc("@label", "C/C++ Binding library"), license: "GPL", url: "https://riverbankcomputing.com/software/sip" }); + projectsModel.append({ name: "Protobuf", description: catalog.i18nc("@label", "Data interchange format"), license: "BSD", url: "https://developers.google.com/protocol-buffers" }); + projectsModel.append({ name: "SciPy", description: catalog.i18nc("@label", "Support library for scientific computing"), license: "BSD-new", url: "https://www.scipy.org/" }); + projectsModel.append({ name: "NumPy", description: catalog.i18nc("@label", "Support library for faster math"), license: "BSD", url: "http://www.numpy.org/" }); + projectsModel.append({ name: "NumPy-STL", description: catalog.i18nc("@label", "Support library for handling STL files"), license: "BSD", url: "https://github.com/WoLpH/numpy-stl" }); + projectsModel.append({ name: "Shapely", description: catalog.i18nc("@label", "Support library for handling planar objects"), license: "BSD", url: "https://github.com/Toblerity/Shapely" }); + projectsModel.append({ name: "Trimesh", description: catalog.i18nc("@label", "Support library for handling triangular meshes"), license: "MIT", url: "https://trimsh.org" }); + projectsModel.append({ name: "NetworkX", description: catalog.i18nc("@label", "Support library for analysis of complex networks"), license: "3-clause BSD", url: "https://networkx.github.io/" }); + projectsModel.append({ name: "libSavitar", description: catalog.i18nc("@label", "Support library for handling 3MF files"), license: "LGPLv3", url: "https://github.com/ultimaker/libsavitar" }); + projectsModel.append({ name: "libCharon", description: catalog.i18nc("@label", "Support library for file metadata and streaming"), license: "LGPLv3", url: "https://github.com/ultimaker/libcharon" }); + projectsModel.append({ name: "PySerial", description: catalog.i18nc("@label", "Serial communication library"), license: "Python", url: "http://pyserial.sourceforge.net/" }); + projectsModel.append({ name: "python-zeroconf", description: catalog.i18nc("@label", "ZeroConf discovery library"), license: "LGPL", url: "https://github.com/jstasiak/python-zeroconf" }); + projectsModel.append({ name: "Clipper", description: catalog.i18nc("@label", "Polygon clipping library"), license: "Boost", url: "http://www.angusj.com/delphi/clipper.php" }); + projectsModel.append({ name: "Requests", description: catalog.i18nc("@Label", "Python HTTP library"), license: "GPL", url: "http://docs.python-requests.org" }); + + projectsModel.append({ name: "Noto Sans", description: catalog.i18nc("@label", "Font"), license: "Apache 2.0", url: "https://www.google.com/get/noto/" }); + projectsModel.append({ name: "Font-Awesome-SVG-PNG", description: catalog.i18nc("@label", "SVG icons"), license: "SIL OFL 1.1", url: "https://github.com/encharm/Font-Awesome-SVG-PNG" }); + projectsModel.append({ name: "AppImageKit", description: catalog.i18nc("@label", "Linux cross-distribution application deployment"), license: "MIT", url: "https://github.com/AppImage/AppImageKit" }); + } + } + } + + rightButtons: Button + { + //: Close about dialog button + id: closeButton + text: catalog.i18nc("@action:button","Close"); + + onClicked: base.visible = false; + } +} diff --git a/resources/qml/AddMachineDialog.qml b/resources/qml/Dialogs/AddMachineDialog.qml similarity index 84% rename from resources/qml/AddMachineDialog.qml rename to resources/qml/Dialogs/AddMachineDialog.qml index d3a6de51af..f00359869c 100644 --- a/resources/qml/AddMachineDialog.qml +++ b/resources/qml/Dialogs/AddMachineDialog.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2017 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -25,7 +25,8 @@ UM.Dialog width: minimumWidth height: minimumHeight - flags: { + flags: + { var window_flags = Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowTitleHint; if (Cura.MachineManager.activeDefinitionId !== "") //Disallow closing the window if we have no active printer yet. You MUST add a printer. { @@ -48,25 +49,31 @@ UM.Dialog function getMachineName() { - return machineList.model.getItem(machineList.currentIndex) != undefined ? machineList.model.getItem(machineList.currentIndex).name : ""; + if (machineList.model.getItem(machineList.currentIndex) != undefined) + { + return machineList.model.getItem(machineList.currentIndex).name; + } + return ""; } function getMachineMetaDataEntry(key) { - var metadata = machineList.model.getItem(machineList.currentIndex) != undefined ? machineList.model.getItem(machineList.currentIndex).metadata : undefined; - if (metadata) + if (machineList.model.getItem(machineList.currentIndex) != undefined) { - return metadata[key]; + return machineList.model.getItem(machineList.currentIndex).metadata[key]; } - return undefined; + return ""; } - Label { + + Label + { id: titleLabel - anchors { + anchors + { top: parent.top left: parent.left - topMargin: UM.Theme.getSize("default_margin") + topMargin: UM.Theme.getSize("default_margin").height } text: catalog.i18nc("@title:tab", "Add a printer to Cura") @@ -82,7 +89,7 @@ UM.Dialog top: titleLabel.bottom topMargin: UM.Theme.getSize("default_margin").height } - text: catalog.i18nc("@title:tab", "Select the printer you want to use from the list below.\n\nIf your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and match adjust the settings to match your printer in the next dialog.") + text: catalog.i18nc("@title:tab", "Select the printer you want to use from the list below.\n\nIf your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog.") width: parent.width wrapMode: Text.WordWrap } @@ -102,7 +109,8 @@ UM.Dialog width: Math.round(parent.width * 0.45) frameVisible: true; - Rectangle { + Rectangle + { parent: viewport anchors.fill: parent color: palette.light @@ -148,7 +156,6 @@ UM.Dialog anchors.rightMargin: UM.Theme.getSize("default_margin").width width: UM.Theme.getSize("standard_arrow").width height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width sourceSize.height: width color: palette.windowText source: base.activeCategory == section ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_right") @@ -159,11 +166,14 @@ UM.Dialog onClicked: { base.activeCategory = section; - if (machineList.model.getItem(machineList.currentIndex).section != section) { + if (machineList.model.getItem(machineList.currentIndex).section != section) + { // Find the first machine from this section - for(var i = 0; i < machineList.model.rowCount(); i++) { + for(var i = 0; i < machineList.model.count; i++) + { var item = machineList.model.getItem(i); - if (item.section == section) { + if (item.section == section) + { machineList.currentIndex = i; break; } @@ -202,28 +212,6 @@ UM.Dialog PropertyChanges { target: machineButton; opacity: 0; height: 0; } } - - transitions: - [ - Transition - { - to: "collapsed"; - SequentialAnimation - { - NumberAnimation { property: "opacity"; duration: 75; } - NumberAnimation { property: "height"; duration: 75; } - } - }, - Transition - { - from: "collapsed"; - SequentialAnimation - { - NumberAnimation { property: "height"; duration: 75; } - NumberAnimation { property: "opacity"; duration: 75; } - } - } - ] } } } @@ -287,7 +275,6 @@ UM.Dialog id: machineName text: getMachineName() width: Math.floor(parent.width * 0.75) - implicitWidth: UM.Theme.getSize("standard_list_input").width maximumLength: 40 //validator: Cura.MachineNameValidator { } //TODO: Gives a segfault in PyQt5.6. For now, we must use a signal on text changed. validator: RegExpValidator diff --git a/resources/qml/AskOpenAsProjectOrModelsDialog.qml b/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml similarity index 100% rename from resources/qml/AskOpenAsProjectOrModelsDialog.qml rename to resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml diff --git a/resources/qml/DiscardOrKeepProfileChangesDialog.qml b/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml similarity index 100% rename from resources/qml/DiscardOrKeepProfileChangesDialog.qml rename to resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml diff --git a/resources/qml/OpenFilesIncludingProjectsDialog.qml b/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml similarity index 100% rename from resources/qml/OpenFilesIncludingProjectsDialog.qml rename to resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml diff --git a/resources/qml/WorkspaceSummaryDialog.qml b/resources/qml/Dialogs/WorkspaceSummaryDialog.qml similarity index 99% rename from resources/qml/WorkspaceSummaryDialog.qml rename to resources/qml/Dialogs/WorkspaceSummaryDialog.qml index 1b3a7aac55..35630bd19b 100644 --- a/resources/qml/WorkspaceSummaryDialog.qml +++ b/resources/qml/Dialogs/WorkspaceSummaryDialog.qml @@ -11,6 +11,7 @@ import Cura 1.0 as Cura UM.Dialog { + id: base title: catalog.i18nc("@title:window", "Save Project") minimumWidth: 500 * screenScaleFactor @@ -49,7 +50,7 @@ UM.Dialog UM.SettingDefinitionsModel { id: definitionsModel - containerId: Cura.MachineManager.activeDefinitionId + containerId: base.visible ? Cura.MachineManager.activeDefinitionId: "" showAll: true exclude: ["command_line_settings"] showAncestors: true diff --git a/resources/qml/EngineLog.qml b/resources/qml/EngineLog.qml deleted file mode 100644 index 965587b59e..0000000000 --- a/resources/qml/EngineLog.qml +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) 2015 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Layouts 1.1 - -import UM 1.1 as UM - -UM.Dialog -{ - id: dialog; - - //: Engine Log dialog title - title: catalog.i18nc("@title:window","Engine Log"); - - modality: Qt.NonModal; - - TextArea - { - id: textArea - anchors.fill: parent; - - Timer - { - id: updateTimer; - interval: 1000; - running: false; - repeat: true; - onTriggered: textArea.text = CuraApplication.getEngineLog(); - } - UM.I18nCatalog{id: catalog; name:"cura"} - } - - rightButtons: Button - { - //: Close engine log button - text: catalog.i18nc("@action:button","Close"); - onClicked: dialog.visible = false; - } - - onVisibleChanged: - { - if(visible) - { - textArea.text = CuraApplication.getEngineLog(); - updateTimer.start(); - } else - { - updateTimer.stop(); - } - } -} diff --git a/resources/qml/ExpandableComponent.qml b/resources/qml/ExpandableComponent.qml new file mode 100644 index 0000000000..025c63d754 --- /dev/null +++ b/resources/qml/ExpandableComponent.qml @@ -0,0 +1,262 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.3 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +import QtGraphicalEffects 1.0 // For the dropshadow + +// The expandable component has 2 major sub components: +// * The headerItem; Always visible and should hold some info about what happens if the component is expanded +// * The contentItem; The content that needs to be shown if the component is expanded. +Item +{ + id: base + + // Enumeration with the different possible alignments of the content with respect of the headerItem + enum ContentAlignment + { + AlignLeft, + AlignRight + } + + // The headerItem holds the QML item that is always displayed. + property alias headerItem: headerItemLoader.sourceComponent + + // The contentItem holds the QML item that is shown when the "open" button is pressed + property alias contentItem: content.contentItem + + property color contentBackgroundColor: UM.Theme.getColor("action_button") + + property color headerBackgroundColor: UM.Theme.getColor("action_button") + property color headerActiveColor: UM.Theme.getColor("secondary") + property color headerHoverColor: UM.Theme.getColor("action_button_hovered") + + property alias enabled: mouseArea.enabled + + // Text to show when this component is disabled + property alias disabledText: disabledLabel.text + + // Defines the alignment of the content with respect of the headerItem, by default to the right + property int contentAlignment: ExpandableComponent.ContentAlignment.AlignRight + + // How much spacing is needed around the contentItem + property alias contentPadding: content.padding + + // Adds a title to the content item + property alias contentHeaderTitle: contentHeader.headerTitle + + // How much spacing is needed for the contentItem by Y coordinate + property var contentSpacingY: UM.Theme.getSize("narrow_margin").width + + // How much padding is needed around the header & button + property alias headerPadding: background.padding + + // What icon should be displayed on the right. + property alias iconSource: collapseButton.source + + property alias iconColor: collapseButton.color + + // The icon size (it's always drawn as a square) + property alias iconSize: collapseButton.height + + // Is the "drawer" open? + property alias expanded: contentContainer.visible + + // What should the radius of the header be. This is also influenced by the headerCornerSide + property alias headerRadius: background.radius + + // On what side should the header corners be shown? 1 is down, 2 is left, 3 is up and 4 is right. + property alias headerCornerSide: background.cornerSide + + property alias headerShadowColor: shadow.color + + property alias enableHeaderShadow: shadow.visible + + property int shadowOffset: 2 + + function toggleContent() + { + contentContainer.visible = !expanded + } + + // Add this binding since the background color is not updated otherwise + Binding + { + target: background + property: "color" + value: + { + return base.enabled ? (expanded ? headerActiveColor : headerBackgroundColor) : UM.Theme.getColor("disabled") + } + } + + // The panel needs to close when it becomes disabled + Connections + { + target: base + onEnabledChanged: + { + if (!base.enabled && expanded) + { + toggleContent() + } + } + } + + implicitHeight: 100 * screenScaleFactor + implicitWidth: 400 * screenScaleFactor + + RoundedRectangle + { + id: background + property real padding: UM.Theme.getSize("default_margin").width + + color: base.enabled ? (base.expanded ? headerActiveColor : headerBackgroundColor) : UM.Theme.getColor("disabled") + anchors.fill: parent + + Label + { + id: disabledLabel + visible: !base.enabled + anchors.fill: parent + leftPadding: background.padding + rightPadding: background.padding + text: "" + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + verticalAlignment: Text.AlignVCenter + color: UM.Theme.getColor("text") + wrapMode: Text.WordWrap + } + + Item + { + anchors.fill: parent + visible: base.enabled + + Loader + { + id: headerItemLoader + anchors + { + left: parent.left + right: collapseButton.visible ? collapseButton.left : parent.right + top: parent.top + bottom: parent.bottom + margins: background.padding + } + } + + UM.RecolorImage + { + id: collapseButton + anchors + { + right: parent.right + verticalCenter: parent.verticalCenter + margins: background.padding + } + source: UM.Theme.getIcon("pencil") + visible: source != "" + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + color: UM.Theme.getColor("small_button_text") + } + } + + MouseArea + { + id: mouseArea + anchors.fill: parent + onClicked: toggleContent() + hoverEnabled: true + onEntered: background.color = headerHoverColor + onExited: background.color = base.enabled ? (base.expanded ? headerActiveColor : headerBackgroundColor) : UM.Theme.getColor("disabled") + } + } + + DropShadow + { + id: shadow + // Don't blur the shadow + radius: 0 + anchors.fill: background + source: background + verticalOffset: base.shadowOffset + visible: true + color: UM.Theme.getColor("action_button_shadow") + // Should always be drawn behind the background. + z: background.z - 1 + } + + Cura.RoundedRectangle + { + id: contentContainer + + visible: false + width: childrenRect.width + height: childrenRect.height + + // Ensure that the content is located directly below the headerItem + y: background.height + base.shadowOffset + base.contentSpacingY + + // Make the content aligned with the rest, using the property contentAlignment to decide whether is right or left. + // In case of right alignment, the 3x padding is due to left, right and padding between the button & text. + x: contentAlignment == ExpandableComponent.ContentAlignment.AlignRight ? -width + collapseButton.width + headerItemLoader.width + 3 * background.padding : 0 + + cornerSide: Cura.RoundedRectangle.Direction.All + color: contentBackgroundColor + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + radius: UM.Theme.getSize("default_radius").width + + ExpandableComponentHeader + { + id: contentHeader + headerTitle: "" + anchors + { + top: parent.top + right: parent.right + left: parent.left + } + + } + + Control + { + id: content + + anchors.top: contentHeader.bottom + padding: UM.Theme.getSize("default_margin").width + + contentItem: Item {} + + onContentItemChanged: + { + // Since we want the size of the content to be set by the size of the content, + // we need to do it like this. + content.width = contentItem.width + 2 * content.padding + content.height = contentItem.height + 2 * content.padding + } + } + } + + // DO NOT MOVE UP IN THE CODE: This connection has to be here, after the definition of the content item. + // Apparently the order in which these are handled matters and so the height is correctly updated if this is here. + Connections + { + // Since it could be that the content is dynamically populated, we should also take these changes into account. + target: content.contentItem + onWidthChanged: content.width = content.contentItem.width + 2 * content.padding + onHeightChanged: + { + content.height = content.contentItem.height + 2 * content.padding + contentContainer.height = contentHeader.height + content.height + } + } +} diff --git a/resources/qml/ExpandableComponentHeader.qml b/resources/qml/ExpandableComponentHeader.qml new file mode 100644 index 0000000000..94066340e3 --- /dev/null +++ b/resources/qml/ExpandableComponentHeader.qml @@ -0,0 +1,68 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.3 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +// Header of the popup +Cura.RoundedRectangle +{ + id: header + + property alias headerTitle: headerLabel.text + + height: UM.Theme.getSize("expandable_component_content_header").height + color: UM.Theme.getColor("secondary") + cornerSide: Cura.RoundedRectangle.Direction.Up + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + radius: UM.Theme.getSize("default_radius").width + + Label + { + id: headerLabel + text: "" + font: UM.Theme.getFont("medium") + renderType: Text.NativeRendering + verticalAlignment: Text.AlignVCenter + color: UM.Theme.getColor("small_button_text") + height: parent.height + + anchors + { + topMargin: UM.Theme.getSize("default_margin").height + left: parent.left + leftMargin: UM.Theme.getSize("default_margin").height + } + } + + Button + { + id: closeButton + width: UM.Theme.getSize("message_close").width + height: UM.Theme.getSize("message_close").height + hoverEnabled: true + + anchors + { + right: parent.right + rightMargin: UM.Theme.getSize("default_margin").width + verticalCenter: parent.verticalCenter + } + + contentItem: UM.RecolorImage + { + anchors.fill: parent + sourceSize.width: width + color: closeButton.hovered ? UM.Theme.getColor("small_button_text_hover") : UM.Theme.getColor("small_button_text") + source: UM.Theme.getIcon("cross1") + } + + background: Item {} + + onClicked: toggleContent() // Will hide the popup item + } +} \ No newline at end of file diff --git a/resources/qml/ExpandablePopup.qml b/resources/qml/ExpandablePopup.qml new file mode 100644 index 0000000000..2d2665373e --- /dev/null +++ b/resources/qml/ExpandablePopup.qml @@ -0,0 +1,250 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.3 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +import QtGraphicalEffects 1.0 // For the dropshadow + +// The expandable component has 2 major sub components: +// * The headerItem; Always visible and should hold some info about what happens if the component is expanded +// * The contentItem; The content that needs to be shown if the component is expanded. +Item +{ + id: base + + // Enumeration with the different possible alignments of the content with respect of the headerItem + enum ContentAlignment + { + AlignLeft, + AlignRight + } + + // The headerItem holds the QML item that is always displayed. + property alias headerItem: headerItemLoader.sourceComponent + + // The contentItem holds the QML item that is shown when the "open" button is pressed + property alias contentItem: content.contentItem + + property color contentBackgroundColor: UM.Theme.getColor("action_button") + + property color headerBackgroundColor: UM.Theme.getColor("action_button") + property color headerActiveColor: UM.Theme.getColor("secondary") + property color headerHoverColor: UM.Theme.getColor("action_button_hovered") + + property alias enabled: mouseArea.enabled + + // Text to show when this component is disabled + property alias disabledText: disabledLabel.text + + // Defines the alignment of the content with respect of the headerItem, by default to the right + property int contentAlignment: ExpandablePopup.ContentAlignment.AlignRight + + // How much spacing is needed around the contentItem + property alias contentPadding: content.padding + + // How much padding is needed around the header & button + property alias headerPadding: background.padding + + // What icon should be displayed on the right. + property alias iconSource: collapseButton.source + + property alias iconColor: collapseButton.color + + // The icon size (it's always drawn as a square) + property alias iconSize: collapseButton.height + + // Is the "drawer" open? + readonly property alias expanded: content.visible + + property alias expandedHighlightColor: expandedHighlight.color + + // What should the radius of the header be. This is also influenced by the headerCornerSide + property alias headerRadius: background.radius + + // On what side should the header corners be shown? 1 is down, 2 is left, 3 is up and 4 is right. + property alias headerCornerSide: background.cornerSide + + // Change the contentItem close behaviour + property alias contentClosePolicy : content.closePolicy + + property alias headerShadowColor: shadow.color + + property alias enableHeaderShadow: shadow.visible + + property int shadowOffset: 2 + + function toggleContent() + { + if (content.visible) + { + content.close() + } + else + { + content.open() + } + } + + // Add this binding since the background color is not updated otherwise + Binding + { + target: background + property: "color" + value: base.enabled ? headerBackgroundColor : UM.Theme.getColor("disabled") + } + + // The panel needs to close when it becomes disabled + Connections + { + target: base + onEnabledChanged: + { + if (!base.enabled && expanded) + { + toggleContent() + } + } + } + + implicitHeight: 100 * screenScaleFactor + implicitWidth: 400 * screenScaleFactor + + RoundedRectangle + { + id: background + property real padding: UM.Theme.getSize("default_margin").width + + color: base.enabled ? headerBackgroundColor : UM.Theme.getColor("disabled") + anchors.fill: parent + + Label + { + id: disabledLabel + visible: !base.enabled + leftPadding: background.padding + text: "" + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + verticalAlignment: Text.AlignVCenter + color: UM.Theme.getColor("text") + height: parent.height + } + + Item + { + anchors.fill: parent + visible: base.enabled + + Loader + { + id: headerItemLoader + anchors + { + left: parent.left + right: collapseButton.visible ? collapseButton.left : parent.right + top: parent.top + bottom: parent.bottom + margins: background.padding + } + } + + // A highlight that is shown when the content is expanded + Rectangle + { + id: expandedHighlight + width: parent.width + height: UM.Theme.getSize("thick_lining").height + color: UM.Theme.getColor("primary") + visible: expanded + anchors.bottom: parent.bottom + } + + UM.RecolorImage + { + id: collapseButton + anchors + { + right: parent.right + verticalCenter: parent.verticalCenter + margins: background.padding + } + source: expanded ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left") + visible: source != "" + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + color: UM.Theme.getColor("small_button_text") + } + } + + MouseArea + { + id: mouseArea + anchors.fill: parent + onClicked: toggleContent() + hoverEnabled: true + onEntered: background.color = headerHoverColor + onExited: background.color = base.enabled ? headerBackgroundColor : UM.Theme.getColor("disabled") + } + } + + DropShadow + { + id: shadow + // Don't blur the shadow + radius: 0 + anchors.fill: background + source: background + verticalOffset: base.shadowOffset + visible: true + color: UM.Theme.getColor("action_button_shadow") + // Should always be drawn behind the background. + z: background.z - 1 + } + + Popup + { + id: content + + // Ensure that the content is located directly below the headerItem + y: background.height + base.shadowOffset + + // Make the content aligned with the rest, using the property contentAlignment to decide whether is right or left. + // In case of right alignment, the 3x padding is due to left, right and padding between the button & text. + x: contentAlignment == ExpandablePopup.ContentAlignment.AlignRight ? -width + collapseButton.width + headerItemLoader.width + 3 * background.padding : 0 + padding: UM.Theme.getSize("default_margin").width + closePolicy: Popup.CloseOnPressOutsideParent + + background: Cura.RoundedRectangle + { + cornerSide: Cura.RoundedRectangle.Direction.Down + color: contentBackgroundColor + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + radius: UM.Theme.getSize("default_radius").width + } + + contentItem: Item {} + + onContentItemChanged: + { + // Since we want the size of the content to be set by the size of the content, + // we need to do it like this. + content.width = contentItem.width + 2 * content.padding + content.height = contentItem.height + 2 * content.padding + } + } + + // DO NOT MOVE UP IN THE CODE: This connection has to be here, after the definition of the content item. + // Apparently the order in which these are handled matters and so the height is correctly updated if this is here. + Connections + { + // Since it could be that the content is dynamically populated, we should also take these changes into account. + target: content.contentItem + onWidthChanged: content.width = content.contentItem.width + 2 * content.padding + onHeightChanged: content.height = content.contentItem.height + 2 * content.padding + } +} diff --git a/resources/qml/ExtruderButton.qml b/resources/qml/ExtruderButton.qml index 2c1b80047e..feb399d528 100644 --- a/resources/qml/ExtruderButton.qml +++ b/resources/qml/ExtruderButton.qml @@ -2,80 +2,32 @@ // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 -import QtQuick.Controls 1.1 +import QtQuick.Controls 2.0 import UM 1.2 as UM import Cura 1.0 as Cura -Button +Cura.ToolbarButton { id: base - property var extruder; + property var extruder text: catalog.i18ncp("@label %1 is filled in with the name of an extruder", "Print Selected Model with %1", "Print Selected Models with %1", UM.Selection.selectionCount).arg(extruder.name) - style: UM.Theme.styles.tool_button; - iconSource: UM.Theme.getIcon("extruder_button") - checked: Cura.ExtruderManager.selectedObjectExtruders.indexOf(extruder.id) != -1 enabled: UM.Selection.hasSelection && extruder.stack.isEnabled - property color customColor: base.hovered ? UM.Theme.getColor("button_hover") : UM.Theme.getColor("button"); - - Rectangle + toolItem: ExtruderIcon { - anchors.fill: parent - anchors.margins: UM.Theme.getSize("default_lining").width; - - color: "transparent" - - border.width: base.checked ? UM.Theme.getSize("default_lining").width : 0; - border.color: UM.Theme.getColor("button_text") - } - - Item - { - anchors.centerIn: parent - width: UM.Theme.getSize("default_margin").width - height: UM.Theme.getSize("default_margin").height - - Label - { - anchors.centerIn: parent; - text: index + 1; - color: parent.enabled ? UM.Theme.getColor("button_text") : UM.Theme.getColor("button_disabled_text") - font: UM.Theme.getFont("default_bold"); - } - } - - // Material colour circle - // Only draw the filling colour of the material inside the SVG border. - Rectangle - { - anchors - { - right: parent.right - top: parent.top - rightMargin: UM.Theme.getSize("extruder_button_material_margin").width - topMargin: UM.Theme.getSize("extruder_button_material_margin").height - } - - color: model.color - - width: UM.Theme.getSize("extruder_button_material").width - height: UM.Theme.getSize("extruder_button_material").height - radius: Math.round(width / 2) - - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("extruder_button_material_border") - - opacity: !base.enabled ? 0.2 : 1.0 + materialColor: extruder.color + extruderEnabled: extruder.stack.isEnabled + property int index: extruder.index } onClicked: { forceActiveFocus() //First grab focus, so all the text fields are updated - CuraActions.setExtruderForSelection(extruder.id); + CuraActions.setExtruderForSelection(extruder.id) } } diff --git a/resources/qml/ExtruderIcon.qml b/resources/qml/ExtruderIcon.qml new file mode 100644 index 0000000000..015ebea52e --- /dev/null +++ b/resources/qml/ExtruderIcon.qml @@ -0,0 +1,72 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 1.1 +import UM 1.2 as UM + +Item +{ + id: extruderIconItem + + implicitWidth: UM.Theme.getSize("extruder_icon").width + implicitHeight: UM.Theme.getSize("extruder_icon").height + + property bool checked: true + property color materialColor + property alias textColor: extruderNumberText.color + property bool extruderEnabled: true + + UM.RecolorImage + { + id: mainIcon + anchors.fill: parent + + source: UM.Theme.getIcon("extruder_button") + color: extruderEnabled ? materialColor: UM.Theme.getColor("disabled") + } + + Rectangle + { + id: extruderNumberCircle + + width: height + height: Math.round(parent.height / 2) + radius: Math.round(width / 2) + color: UM.Theme.getColor("toolbar_background") + + anchors + { + horizontalCenter: parent.horizontalCenter + top: parent.top + // The circle needs to be slightly off center (so it sits in the middle of the square bit of the icon) + topMargin: (parent.height - height) / 2 - 0.1 * parent.height + } + + Label + { + id: extruderNumberText + anchors.centerIn: parent + text: index + 1 + font: UM.Theme.getFont("small") + color: UM.Theme.getColor("text") + width: contentWidth + height: contentHeight + visible: extruderEnabled + renderType: Text.NativeRendering + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + UM.RecolorImage + { + id: disabledIcon + anchors.fill: parent + anchors.margins: UM.Theme.getSize("thick_lining").width + sourceSize.height: width + source: UM.Theme.getIcon("cross1") + visible: !extruderEnabled + color: UM.Theme.getColor("text") + } + } +} \ No newline at end of file diff --git a/resources/qml/IconWithText.qml b/resources/qml/IconWithText.qml new file mode 100644 index 0000000000..24b6dc7fe2 --- /dev/null +++ b/resources/qml/IconWithText.qml @@ -0,0 +1,70 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +// Reusable component that holds an (re-colorable) icon on the left with some text on the right. +// This component is also designed to be used with layouts. It will use the width of the text + icon as preferred width +// It sets the icon size + half of the content as its minium width (in which case it will elide the text) +Item +{ + property alias source: icon.source + property alias iconSize: icon.width + property alias iconColor: icon.color + property alias color: label.color + property alias text: label.text + property alias font: label.font + property real margin: UM.Theme.getSize("narrow_margin").width + + // These properties can be used in combination with layouts. + readonly property real contentWidth: icon.width + margin + label.contentWidth + readonly property real minContentWidth: Math.round(icon.width + margin + 0.5 * label.contentWidth) + + Layout.minimumWidth: minContentWidth + Layout.preferredWidth: contentWidth + Layout.fillHeight: true + Layout.fillWidth: true + + implicitWidth: icon.width + 100 + implicitHeight: icon.height + + UM.RecolorImage + { + id: icon + width: UM.Theme.getSize("section_icon").width + height: width + + color: UM.Theme.getColor("icon") + + anchors + { + left: parent.left + verticalCenter: parent.verticalCenter + } + } + + Label + { + id: label + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + + anchors + { + left: icon.right + right: parent.right + top: parent.top + bottom: parent.bottom + rightMargin: 0 + margins: margin + } + } +} \ No newline at end of file diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml index 1a5b604886..144616c22d 100644 --- a/resources/qml/JobSpecs.qml +++ b/resources/qml/JobSpecs.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2017 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -9,141 +9,145 @@ import QtQuick.Layouts 1.1 import UM 1.1 as UM import Cura 1.0 as Cura -Item { +Item +{ id: base property bool activity: CuraApplication.platformActivity property string fileBaseName: PrintInformation.baseName - UM.I18nCatalog { id: catalog; name:"cura"} + UM.I18nCatalog + { + id: catalog + name: "cura" + } + width: childrenRect.width height: childrenRect.height - onActivityChanged: { - if (activity == false) { + onActivityChanged: + { + if (!activity) + { //When there is no mesh in the buildplate; the printJobTextField is set to an empty string so it doesn't set an empty string as a jobName (which is later used for saving the file) - PrintInformation.baseName = '' + PrintInformation.baseName = "" } } - Rectangle + Item { id: jobNameRow anchors.top: parent.top - anchors.right: parent.right + anchors.left: parent.left height: UM.Theme.getSize("jobspecs_line").height - visible: base.activity - Item + Button { - width: parent.width - height: parent.height + id: printJobPencilIcon + anchors.left: parent.left + anchors.verticalCenter: parent.verticalCenter + width: UM.Theme.getSize("save_button_specs_icons").width + height: UM.Theme.getSize("save_button_specs_icons").height - Button + onClicked: { - id: printJobPencilIcon - anchors.right: parent.right - anchors.verticalCenter: parent.verticalCenter - width: UM.Theme.getSize("save_button_specs_icons").width - height: UM.Theme.getSize("save_button_specs_icons").height - - onClicked: - { - printJobTextfield.selectAll(); - printJobTextfield.focus = true; - } - style: ButtonStyle - { - background: Item - { - UM.RecolorImage - { - width: UM.Theme.getSize("save_button_specs_icons").width; - height: UM.Theme.getSize("save_button_specs_icons").height; - sourceSize.width: width; - sourceSize.height: width; - color: control.hovered ? UM.Theme.getColor("text_scene_hover") : UM.Theme.getColor("text_scene"); - source: UM.Theme.getIcon("pencil"); - } - } - } + printJobTextfield.selectAll() + printJobTextfield.focus = true } - TextField + style: ButtonStyle { - id: printJobTextfield - anchors.right: printJobPencilIcon.left - anchors.rightMargin: Math.round(UM.Theme.getSize("default_margin").width / 2) - height: UM.Theme.getSize("jobspecs_line").height - width: Math.max(__contentWidth + UM.Theme.getSize("default_margin").width, 50) - maximumLength: 120 - property int unremovableSpacing: 5 - text: PrintInformation.jobName - horizontalAlignment: TextInput.AlignRight - onEditingFinished: { - var new_name = text == "" ? catalog.i18nc("@text Print job name", "Untitled") : text; - PrintInformation.setJobName(new_name, true); - printJobTextfield.focus = false; - } - validator: RegExpValidator { - regExp: /^[^\\\/\*\?\|\[\]]*$/ - } - style: TextFieldStyle{ - textColor: UM.Theme.getColor("text_scene"); - font: UM.Theme.getFont("default_bold"); - background: Rectangle { - opacity: 0 - border.width: 0 + background: Item + { + UM.RecolorImage + { + width: UM.Theme.getSize("save_button_specs_icons").width + height: UM.Theme.getSize("save_button_specs_icons").height + sourceSize.width: width + sourceSize.height: width + color: control.hovered ? UM.Theme.getColor("text_scene_hover") : UM.Theme.getColor("text_scene") + source: UM.Theme.getIcon("pencil") } } } } - } - Row { - id: additionalComponentsRow - anchors.top: jobNameRow.bottom - anchors.right: parent.right + TextField + { + id: printJobTextfield + anchors.left: printJobPencilIcon.right + anchors.leftMargin: UM.Theme.getSize("narrow_margin").width + height: UM.Theme.getSize("jobspecs_line").height + width: Math.max(__contentWidth + UM.Theme.getSize("default_margin").width, 50) + maximumLength: 120 + text: PrintInformation.jobName + horizontalAlignment: TextInput.AlignLeft + + onEditingFinished: + { + var new_name = text == "" ? catalog.i18nc("@text Print job name", "Untitled") : text + PrintInformation.setJobName(new_name, true) + printJobTextfield.focus = false + } + + validator: RegExpValidator { + regExp: /^[^\\\/\*\?\|\[\]]*$/ + } + + style: TextFieldStyle + { + textColor: UM.Theme.getColor("text_scene") + font: UM.Theme.getFont("default") + background: Rectangle + { + opacity: 0 + border.width: 0 + } + } + } } Label { id: boundingSpec anchors.top: jobNameRow.bottom - anchors.right: additionalComponentsRow.left - anchors.rightMargin: - { - if (additionalComponentsRow.width > 0) - { - return UM.Theme.getSize("default_margin").width - } - else - { - return 0; - } - } + anchors.left: parent.left + height: UM.Theme.getSize("jobspecs_line").height verticalAlignment: Text.AlignVCenter - font: UM.Theme.getFont("small") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_scene") text: CuraApplication.getSceneBoundingBoxString } - Component.onCompleted: { + Row + { + id: additionalComponentsRow + anchors.top: boundingSpec.top + anchors.bottom: boundingSpec.bottom + anchors.left: boundingSpec.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + } + + Component.onCompleted: + { base.addAdditionalComponents("jobSpecsButton") } - Connections { + Connections + { target: CuraApplication onAdditionalComponentsChanged: base.addAdditionalComponents("jobSpecsButton") } - function addAdditionalComponents (areaId) { - if(areaId == "jobSpecsButton") { - for (var component in CuraApplication.additionalComponents["jobSpecsButton"]) { + function addAdditionalComponents(areaId) + { + if (areaId == "jobSpecsButton") + { + for (var component in CuraApplication.additionalComponents["jobSpecsButton"]) + { CuraApplication.additionalComponents["jobSpecsButton"][component].parent = additionalComponentsRow } } } - } diff --git a/resources/qml/MachineSelection.qml b/resources/qml/MachineSelection.qml deleted file mode 100644 index 7a8a6b476b..0000000000 --- a/resources/qml/MachineSelection.qml +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) 2017 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.1 - -import UM 1.2 as UM -import Cura 1.0 as Cura -import "Menus" - -ToolButton -{ - id: base - property bool isNetworkPrinter: Cura.MachineManager.activeMachineNetworkKey != "" - property bool printerConnected: Cura.MachineManager.printerConnected - property var printerStatus: Cura.MachineManager.printerConnected ? "connected" : "disconnected" - text: isNetworkPrinter ? Cura.MachineManager.activeMachineNetworkGroupName : Cura.MachineManager.activeMachineName - - tooltip: Cura.MachineManager.activeMachineName - - style: ButtonStyle - { - background: Rectangle - { - color: - { - if (control.pressed) { - return UM.Theme.getColor("sidebar_header_active"); - } - else if (control.hovered) { - return UM.Theme.getColor("sidebar_header_hover"); - } - else { - return UM.Theme.getColor("sidebar_header_bar"); - } - } - Behavior on color { ColorAnimation { duration: 50; } } - - UM.RecolorImage - { - id: downArrow - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width - width: UM.Theme.getSize("standard_arrow").width - height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width - sourceSize.height: width - color: UM.Theme.getColor("text_emphasis") - source: UM.Theme.getIcon("arrow_bottom") - } - - PrinterStatusIcon - { - id: printerStatusIcon - visible: printerConnected || isNetworkPrinter - status: printerStatus - anchors - { - verticalCenter: parent.verticalCenter - left: parent.left - leftMargin: UM.Theme.getSize("sidebar_margin").width - } - } - - Label - { - id: sidebarComboBoxLabel - color: UM.Theme.getColor("sidebar_header_text_active") - text: control.text; - elide: Text.ElideRight; - anchors.left: printerStatusIcon.visible ? printerStatusIcon.right : parent.left; - anchors.leftMargin: printerStatusIcon.visible ? UM.Theme.getSize("sidebar_lining").width : UM.Theme.getSize("sidebar_margin").width - anchors.right: downArrow.left; - anchors.rightMargin: control.rightMargin; - anchors.verticalCenter: parent.verticalCenter; - font: UM.Theme.getFont("medium_bold") - } - } - label: Label {} - } - - menu: PrinterMenu { } -} diff --git a/resources/qml/MainWindow/ApplicationMenu.qml b/resources/qml/MainWindow/ApplicationMenu.qml new file mode 100644 index 0000000000..a694b8e403 --- /dev/null +++ b/resources/qml/MainWindow/ApplicationMenu.qml @@ -0,0 +1,163 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Layouts 1.1 +import QtQuick.Dialogs 1.2 + +import UM 1.3 as UM +import Cura 1.1 as Cura + +import "../Menus" +import "../Dialogs" + +Item +{ + id: menu + width: applicationMenu.width + height: applicationMenu.height + property alias window: applicationMenu.window + + UM.ApplicationMenu + { + id: applicationMenu + + FileMenu { title: catalog.i18nc("@title:menu menubar:toplevel", "&File") } + + Menu + { + title: catalog.i18nc("@title:menu menubar:toplevel", "&Edit") + + MenuItem { action: Cura.Actions.undo } + MenuItem { action: Cura.Actions.redo } + MenuSeparator { } + MenuItem { action: Cura.Actions.selectAll } + MenuItem { action: Cura.Actions.arrangeAll } + MenuItem { action: Cura.Actions.deleteSelection } + MenuItem { action: Cura.Actions.deleteAll } + MenuItem { action: Cura.Actions.resetAllTranslation } + MenuItem { action: Cura.Actions.resetAll } + MenuSeparator { } + MenuItem { action: Cura.Actions.groupObjects } + MenuItem { action: Cura.Actions.mergeObjects } + MenuItem { action: Cura.Actions.unGroupObjects } + } + + ViewMenu { title: catalog.i18nc("@title:menu menubar:toplevel", "&View") } + + SettingsMenu { title: catalog.i18nc("@title:menu menubar:toplevel", "&Settings") } + + Menu + { + id: extensionMenu + title: catalog.i18nc("@title:menu menubar:toplevel", "E&xtensions") + + Instantiator + { + id: extensions + model: UM.ExtensionModel { } + + Menu + { + id: sub_menu + title: model.name; + visible: actions != null + enabled: actions != null + Instantiator + { + model: actions + MenuItem + { + text: model.text + onTriggered: extensions.model.subMenuTriggered(name, model.text) + } + onObjectAdded: sub_menu.insertItem(index, object) + onObjectRemoved: sub_menu.removeItem(object) + } + } + + onObjectAdded: extensionMenu.insertItem(index, object) + onObjectRemoved: extensionMenu.removeItem(object) + } + } + + Menu + { + id: preferencesMenu + title: catalog.i18nc("@title:menu menubar:toplevel", "P&references") + + MenuItem { action: Cura.Actions.preferences } + } + + Menu + { + id: helpMenu + title: catalog.i18nc("@title:menu menubar:toplevel", "&Help") + + MenuItem { action: Cura.Actions.showProfileFolder } + MenuItem { action: Cura.Actions.documentation } + MenuItem { action: Cura.Actions.reportBug } + MenuSeparator { } + MenuItem { action: Cura.Actions.about } + } + } + + // ############################################################################################### + // Definition of other components that are linked to the menus + // ############################################################################################### + + WorkspaceSummaryDialog + { + id: saveWorkspaceDialog + property var args + onYes: UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args) + } + + MessageDialog + { + id: newProjectDialog + modality: Qt.ApplicationModal + title: catalog.i18nc("@title:window", "New project") + text: catalog.i18nc("@info:question", "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings.") + standardButtons: StandardButton.Yes | StandardButton.No + icon: StandardIcon.Question + onYes: + { + CuraApplication.deleteAll(); + Cura.Actions.resetProfile.trigger(); + } + } + + UM.ExtensionModel + { + id: curaExtensions + } + + // ############################################################################################### + // Definition of all the connections + // ############################################################################################### + + Connections + { + target: Cura.Actions.newProject + onTriggered: + { + if(Printer.platformActivity || Cura.MachineManager.hasUserSettings) + { + newProjectDialog.visible = true + } + } + } + + // show the plugin browser dialog + Connections + { + target: Cura.Actions.browsePackages + onTriggered: + { + curaExtensions.callExtensionMethod("Toolbox", "browsePackages") + } + } +} \ No newline at end of file diff --git a/resources/qml/MainWindow/MainWindowHeader.qml b/resources/qml/MainWindow/MainWindowHeader.qml new file mode 100644 index 0000000000..3e296ead40 --- /dev/null +++ b/resources/qml/MainWindow/MainWindowHeader.qml @@ -0,0 +1,129 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.0 as Controls2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.1 + +import UM 1.4 as UM +import Cura 1.0 as Cura +import QtGraphicalEffects 1.0 + +import "../Account" + +Item +{ + id: base + + implicitHeight: UM.Theme.getSize("main_window_header").height + implicitWidth: UM.Theme.getSize("main_window_header").width + + Image + { + id: logo + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.verticalCenter + + source: UM.Theme.getImage("logo") + width: UM.Theme.getSize("logo").width + height: UM.Theme.getSize("logo").height + + sourceSize.width: width + sourceSize.height: height + } + + Row + { + id: stagesListContainer + spacing: Math.round(UM.Theme.getSize("default_margin").width / 2) + + anchors + { + horizontalCenter: parent.horizontalCenter + verticalCenter: parent.verticalCenter + leftMargin: UM.Theme.getSize("default_margin").width + } + + // The main window header is dynamically filled with all available stages + Repeater + { + id: stagesHeader + + model: UM.StageModel { } + + delegate: Button + { + text: model.name.toUpperCase() + checkable: true + checked: UM.Controller.activeStage !== null && model.id == UM.Controller.activeStage.stageId + + anchors.verticalCenter: parent.verticalCenter + exclusiveGroup: mainWindowHeaderMenuGroup + style: UM.Theme.styles.main_window_header_tab + height: UM.Theme.getSize("main_window_header_button").height + iconSource: model.stage.iconSource + + property color overlayColor: "transparent" + property string overlayIconSource: "" + + // This is a trick to assure the activeStage is correctly changed. It doesn't work propertly if done in the onClicked (see CURA-6028) + MouseArea + { + anchors.fill: parent + onClicked: UM.Controller.setActiveStage(model.id) + } + } + } + + ExclusiveGroup { id: mainWindowHeaderMenuGroup } + } + + // Shortcut button to quick access the Toolbox + Controls2.Button + { + id: marketplaceButton + text: catalog.i18nc("@action:button", "Marketplace") + height: Math.round(0.5 * UM.Theme.getSize("main_window_header").height) + onClicked: Cura.Actions.browsePackages.trigger() + + hoverEnabled: true + + background: Rectangle + { + radius: UM.Theme.getSize("action_button_radius").width + color: marketplaceButton.hovered ? UM.Theme.getColor("primary_text") : UM.Theme.getColor("main_window_header_background") + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("primary_text") + } + + contentItem: Label + { + id: label + text: marketplaceButton.text + font: UM.Theme.getFont("default") + color: marketplaceButton.hovered ? UM.Theme.getColor("main_window_header_background") : UM.Theme.getColor("primary_text") + width: contentWidth + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + } + + anchors + { + right: accountWidget.left + rightMargin: UM.Theme.getSize("default_margin").width + verticalCenter: parent.verticalCenter + } + } + + AccountWidget + { + id: accountWidget + anchors + { + right: parent.right + rightMargin: UM.Theme.getSize("default_margin").width + } + } +} diff --git a/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml b/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml new file mode 100644 index 0000000000..18409dd43a --- /dev/null +++ b/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml @@ -0,0 +1,39 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.0 + +import UM 1.3 as UM +import Cura 1.0 as Cura + +Item +{ + width: parent.width + height: childrenRect.height + + Label + { + id: header + text: catalog.i18nc("@header", "Configurations") + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("small_button_text") + height: contentHeight + renderType: Text.NativeRendering + + anchors + { + left: parent.left + right: parent.right + } + } + + ConfigurationListView + { + anchors.top: header.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").width + width: parent.width + + outputDevice: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null + } +} \ No newline at end of file diff --git a/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml index 942dd81d9c..058c1ff4c2 100644 --- a/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml +++ b/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml @@ -7,51 +7,153 @@ import QtQuick.Controls 2.0 import UM 1.2 as UM import Cura 1.0 as Cura -Rectangle +Button { id: configurationItem property var configuration: null - property var selected: false - signal activateConfiguration() + hoverEnabled: isValidMaterial - height: childrenRect.height - border.width: UM.Theme.getSize("default_lining").width - border.color: updateBorderColor() - color: selected ? UM.Theme.getColor("configuration_item_active") : UM.Theme.getColor("configuration_item") - property var textColor: selected ? UM.Theme.getColor("configuration_item_text_active") : UM.Theme.getColor("configuration_item_text") - - function updateBorderColor() + property bool isValidMaterial: { - border.color = selected ? UM.Theme.getColor("configuration_item_border_active") : UM.Theme.getColor("configuration_item_border") + var extruderConfigurations = configuration.extruderConfigurations + + for (var index in extruderConfigurations) + { + var name = extruderConfigurations[index].material ? extruderConfigurations[index].material.name : "" + + if (name == "" || name == "Unknown") + { + return false + } + } + return true } - Column + background: Rectangle + { + color: parent.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button") + border.color: parent.checked ? UM.Theme.getColor("primary") : UM.Theme.getColor("lining") + border.width: UM.Theme.getSize("default_lining").width + radius: UM.Theme.getSize("default_radius").width + } + + contentItem: Column { id: contentColumn width: parent.width padding: UM.Theme.getSize("default_margin").width - spacing: Math.round(UM.Theme.getSize("default_margin").height / 2) + spacing: UM.Theme.getSize("narrow_margin").height Row { id: extruderRow - width: parent.width - 2 * parent.padding + anchors + { + left: parent.left + leftMargin: UM.Theme.getSize("wide_margin").width + right: parent.right + rightMargin: UM.Theme.getSize("wide_margin").width + } height: childrenRect.height - spacing: UM.Theme.getSize("default_margin").width Repeater { id: repeater - height: childrenRect.height model: configuration.extruderConfigurations + delegate: PrintCoreConfiguration { width: Math.round(parent.width / 2) printCoreConfiguration: modelData - mainColor: textColor + visible: configurationItem.isValidMaterial + } + } + + // Unknown material + Item + { + id: unknownMaterial + height: unknownMaterialMessage.height + UM.Theme.getSize("thin_margin").width / 2 + width: parent.width + + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("thin_margin").width / 2 + + visible: !configurationItem.isValidMaterial + + UM.RecolorImage + { + id: icon + anchors.verticalCenter: unknownMaterialMessage.verticalCenter + + source: UM.Theme.getIcon("warning") + color: UM.Theme.getColor("warning") + width: UM.Theme.getSize("section_icon").width + height: width + } + + Label + { + id: unknownMaterialMessage + text: + { + var extruderConfigurations = configuration.extruderConfigurations + var unknownMaterials = [] + for (var index in extruderConfigurations) + { + var name = extruderConfigurations[index].material ? extruderConfigurations[index].material.name : "" + if (name == "" || name == "Unknown") + { + var materialType = extruderConfigurations[index].material.type + if (extruderConfigurations[index].material.type == "") + { + materialType = "Unknown" + } + + var brand = extruderConfigurations[index].material.brand + if (brand == "") + { + brand = "Unknown" + } + + name = materialType + " (" + brand + ")" + unknownMaterials.push(name) + } + } + + unknownMaterials = "" + unknownMaterials + "" + var draftResult = catalog.i18nc("@label", "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile."); + var result = draftResult.arg(unknownMaterials).arg("" + catalog.i18nc("@label","Marketplace") + " ") + + return result + } + width: extruderRow.width + + anchors.left: icon.right + anchors.right: unknownMaterial.right + anchors.leftMargin: UM.Theme.getSize("wide_margin").height + anchors.top: unknownMaterial.top + + wrapMode: Text.WordWrap + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter + linkColor: UM.Theme.getColor("text_link") + + onLinkActivated: + { + Cura.Actions.browsePackages.trigger() + } + } + + MouseArea + { + anchors.fill: parent + cursorShape: unknownMaterialMessage.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor + acceptedButtons: Qt.NoButton } } } @@ -62,63 +164,38 @@ Rectangle id: separator visible: buildplateInformation.visible - width: parent.width - 2 * parent.padding - height: visible ? Math.round(UM.Theme.getSize("sidebar_lining_thin").height / 2) : 0 - color: textColor + anchors + { + left: parent.left + leftMargin: UM.Theme.getSize("wide_margin").width + right: parent.right + rightMargin: UM.Theme.getSize("wide_margin").width + } + height: visible ? Math.round(UM.Theme.getSize("default_lining").height / 2) : 0 + color: UM.Theme.getColor("lining") } Item { id: buildplateInformation - width: parent.width - 2 * parent.padding - height: childrenRect.height - visible: configuration.buildplateConfiguration != "" - UM.RecolorImage { - id: buildplateIcon - anchors.left: parent.left - width: UM.Theme.getSize("topbar_button_icon").width - height: UM.Theme.getSize("topbar_button_icon").height - sourceSize.width: width - sourceSize.height: height - source: UM.Theme.getIcon("buildplate") - color: textColor + anchors + { + left: parent.left + leftMargin: UM.Theme.getSize("wide_margin").width + right: parent.right + rightMargin: UM.Theme.getSize("wide_margin").width } + height: childrenRect.height + visible: configuration.buildplateConfiguration != "" && false //Buildplate is disabled as long as we have no printers that properly support buildplate swapping (so we can't test). - Label + // Show the type of buildplate. The first letter is capitalized + Cura.IconWithText { id: buildplateLabel - anchors.left: buildplateIcon.right - anchors.verticalCenter: buildplateIcon.verticalCenter - anchors.leftMargin: Math.round(UM.Theme.getSize("default_margin").height / 2) - text: configuration.buildplateConfiguration - renderType: Text.NativeRendering - color: textColor - } - } - } - - MouseArea - { - id: mouse - anchors.fill: parent - onClicked: activateConfiguration() - cursorShape: Qt.PointingHandCursor - hoverEnabled: true - onEntered: - { - parent.border.color = UM.Theme.getColor("configuration_item_border_hover") - if (configurationItem.selected == false) - { - configurationItem.color = UM.Theme.getColor("sidebar_lining") - } - } - onExited: - { - updateBorderColor() - if (configurationItem.selected == false) - { - configurationItem.color = UM.Theme.getColor("configuration_item") + source: UM.Theme.getIcon("buildplate") + text: configuration.buildplateConfiguration.charAt(0).toUpperCase() + configuration.buildplateConfiguration.substr(1) + anchors.left: parent.left } } } @@ -126,24 +203,22 @@ Rectangle Connections { target: Cura.MachineManager - onCurrentConfigurationChanged: { - configurationItem.selected = Cura.MachineManager.matchesConfiguration(configuration) - updateBorderColor() + onCurrentConfigurationChanged: + { + configurationItem.checked = Cura.MachineManager.matchesConfiguration(configuration) } } Component.onCompleted: { - configurationItem.selected = Cura.MachineManager.matchesConfiguration(configuration) - updateBorderColor() + configurationItem.checked = Cura.MachineManager.matchesConfiguration(configuration) } - onVisibleChanged: + onClicked: { - if(visible) + if(isValidMaterial) { - // I cannot trigger function updateBorderColor() after visibility change - color = selected ? UM.Theme.getColor("configuration_item_active") : UM.Theme.getColor("configuration_item") + Cura.MachineManager.applyRemoteConfiguration(configuration); } } -} \ No newline at end of file +} diff --git a/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml index 7aaf87b4df..e57b21cb78 100644 --- a/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml +++ b/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml @@ -2,85 +2,117 @@ // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls 2.3 import UM 1.2 as UM import Cura 1.0 as Cura -Column +Item { id: base property var outputDevice: null - property var computedHeight: container.height + configurationListHeading.height + 3 * padding - height: childrenRect.height + 2 * padding - padding: UM.Theme.getSize("default_margin").width - spacing: Math.round(UM.Theme.getSize("default_margin").height / 2) + height: childrenRect.height function forceModelUpdate() { - // FIXME For now the model should be removed and then created again, otherwise changes in the printer don't automatically update the UI + // FIXME For now the model has to be removed and then created again, otherwise changes in the printer don't automatically update the UI configurationList.model = [] - if(outputDevice) + if (outputDevice) { configurationList.model = outputDevice.uniqueConfigurations } } - Label + // This component will appear when there is no configurations (e.g. when losing connection) + Item { - id: configurationListHeading - text: catalog.i18nc("@label:header configurations", "Available configurations") - font: UM.Theme.getFont("large") - width: parent.width - 2 * parent.padding - color: UM.Theme.getColor("configuration_item_text") - } + width: parent.width + visible: configurationList.model.length == 0 + height: label.height + UM.Theme.getSize("wide_margin").height + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("default_margin").height - Component - { - id: sectionHeading - Rectangle + UM.RecolorImage { - height: childrenRect.height + UM.Theme.getSize("default_margin").height - Label - { - text: section - font: UM.Theme.getFont("default_bold") - color: UM.Theme.getColor("configuration_item_text") - } + id: icon + + anchors.left: parent.left + anchors.verticalCenter: label.verticalCenter + + source: UM.Theme.getIcon("warning") + color: UM.Theme.getColor("warning") + width: UM.Theme.getSize("section_icon").width + height: width + } + + Label + { + id: label + anchors.left: icon.right + anchors.right: parent.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@label", "Downloading the configurations from the remote printer") + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + wrapMode: Text.WordWrap } } ScrollView { id: container - width: parent.width - parent.padding - height: Math.min(configurationList.contentHeight, 350 * screenScaleFactor) + width: parent.width + readonly property int maximumHeight: 350 * screenScaleFactor + height: Math.round(Math.min(configurationList.height, maximumHeight)) + contentHeight: configurationList.height + clip: true - style: UM.Theme.styles.scrollview - __wheelAreaScrollSpeed: 75 // Scroll three lines in one scroll event + ScrollBar.vertical.policy: (configurationList.height > maximumHeight) ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff //The AsNeeded policy also hides it when the cursor is away, and we don't want that. + ScrollBar.vertical.background: Rectangle + { + implicitWidth: UM.Theme.getSize("scrollbar").width + radius: width / 2 + color: UM.Theme.getColor("scrollbar_background") + } + ScrollBar.vertical.contentItem: Rectangle + { + implicitWidth: UM.Theme.getSize("scrollbar").width + radius: width / 2 + color: UM.Theme.getColor(parent.pressed ? "scrollbar_handle_down" : parent.hovered ? "scrollbar_handle_hover" : "scrollbar_handle") + } + + ButtonGroup + { + buttons: configurationList.children + } ListView { id: configurationList - spacing: Math.round(UM.Theme.getSize("default_margin").height / 2) - width: container.width - contentHeight: childrenRect.height + spacing: UM.Theme.getSize("narrow_margin").height + width: container.width - ((height > container.maximumHeight) ? container.ScrollBar.vertical.background.width : 0) //Make room for scroll bar if there is any. + height: childrenRect.height section.property: "modelData.printerType" section.criteria: ViewSection.FullString - section.delegate: sectionHeading + section.delegate: Item + { + height: printerTypeLabel.height + UM.Theme.getSize("wide_margin").height //Causes a default margin above the label and a default margin below the label. + Cura.PrinterTypeLabel + { + id: printerTypeLabel + text: Cura.MachineManager.getAbbreviatedMachineName(section) + anchors.verticalCenter: parent.verticalCenter //One default margin above and one below. + } + } model: (outputDevice != null) ? outputDevice.uniqueConfigurations : [] + delegate: ConfigurationItem { - width: parent.width - UM.Theme.getSize("default_margin").width + width: parent.width configuration: modelData - onActivateConfiguration: - { - switchPopupState() - Cura.MachineManager.applyRemoteConfiguration(configuration) - } } } } @@ -102,4 +134,4 @@ Column forceModelUpdate() } } -} \ No newline at end of file +} diff --git a/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml new file mode 100644 index 0000000000..3001efac54 --- /dev/null +++ b/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml @@ -0,0 +1,237 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Controls.Styles 1.4 + +import UM 1.2 as UM +import Cura 1.0 as Cura + + +/** + * Menu that allows you to select the configuration of the current printer, such + * as the nozzle sizes and materials in each extruder. + */ +Cura.ExpandablePopup +{ + id: base + + property var extrudersModel: CuraApplication.getExtrudersModel() + + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + enum ConfigurationMethod + { + Auto, + Custom + } + + contentPadding: UM.Theme.getSize("default_lining").width + enabled: Cura.MachineManager.hasMaterials || Cura.MachineManager.hasVariants || Cura.MachineManager.hasVariantBuildplates; //Only let it drop down if there is any configuration that you could change. + + headerItem: Item + { + // Horizontal list that shows the extruders and their materials + ListView + { + id: extrudersList + + orientation: ListView.Horizontal + anchors.fill: parent + model: extrudersModel + visible: Cura.MachineManager.hasMaterials + + delegate: Item + { + height: parent.height + width: Math.round(ListView.view.width / extrudersModel.count) + + // Extruder icon. Shows extruder index and has the same color as the active material. + Cura.ExtruderIcon + { + id: extruderIcon + materialColor: model.color + extruderEnabled: model.enabled + height: parent.height + width: height + } + + // Label for the brand of the material + Label + { + id: brandNameLabel + + text: model.material_brand + elide: Text.ElideRight + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text_inactive") + renderType: Text.NativeRendering + + anchors + { + left: extruderIcon.right + leftMargin: UM.Theme.getSize("default_margin").width + right: parent.right + rightMargin: UM.Theme.getSize("default_margin").width + } + } + + // Label that shows the name of the material + Label + { + text: model.material + elide: Text.ElideRight + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + + anchors + { + left: extruderIcon.right + leftMargin: UM.Theme.getSize("default_margin").width + right: parent.right + rightMargin: UM.Theme.getSize("default_margin").width + top: brandNameLabel.bottom + } + } + } + } + + //Placeholder text if there is a configuration to select but no materials (so we can't show the materials per extruder). + Label + { + text: catalog.i18nc("@label", "Select configuration") + elide: Text.ElideRight + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + + visible: !Cura.MachineManager.hasMaterials && (Cura.MachineManager.hasVariants || Cura.MachineManager.hasVariantBuildplates) + + anchors + { + left: parent.left + leftMargin: UM.Theme.getSize("default_margin").width + verticalCenter: parent.verticalCenter + } + } + } + + contentItem: Column + { + id: popupItem + width: UM.Theme.getSize("configuration_selector").width + height: implicitHeight // Required because ExpandableComponent will try to use this to determine the size of the background of the pop-up. + padding: UM.Theme.getSize("default_margin").height + spacing: UM.Theme.getSize("default_margin").height + + property bool is_connected: false // If current machine is connected to a printer. Only evaluated upon making popup visible. + property int configuration_method: ConfigurationMenu.ConfigurationMethod.Custom // Type of configuration being used. Only evaluated upon making popup visible. + property int manual_selected_method: -1 // It stores the configuration method selected by the user. By default the selected method is + + onVisibleChanged: + { + is_connected = Cura.MachineManager.activeMachineHasRemoteConnection && Cura.MachineManager.printerConnected //Re-evaluate. + + // If the printer is not connected, we switch always to the custom mode. If is connected instead, the auto mode + // or the previous state is selected + configuration_method = is_connected ? (manual_selected_method == -1 ? ConfigurationMenu.ConfigurationMethod.Auto : manual_selected_method) : ConfigurationMenu.ConfigurationMethod.Custom + } + + Item + { + width: parent.width - 2 * parent.padding + height: + { + var height = 0 + if (autoConfiguration.visible) + { + height += autoConfiguration.height + } + if (customConfiguration.visible) + { + height += customConfiguration.height + } + return height + } + + AutoConfiguration + { + id: autoConfiguration + visible: popupItem.configuration_method == ConfigurationMenu.ConfigurationMethod.Auto + } + + CustomConfiguration + { + id: customConfiguration + visible: popupItem.configuration_method == ConfigurationMenu.ConfigurationMethod.Custom + } + } + + Rectangle + { + id: separator + visible: buttonBar.visible + x: -parent.padding + + width: parent.width + height: UM.Theme.getSize("default_lining").height + + color: UM.Theme.getColor("lining") + } + + //Allow switching between custom and auto. + Item + { + id: buttonBar + visible: popupItem.is_connected //Switching only makes sense if the "auto" part is possible. + + width: parent.width - 2 * parent.padding + height: childrenRect.height + + Cura.SecondaryButton + { + id: goToCustom + visible: popupItem.configuration_method == ConfigurationMenu.ConfigurationMethod.Auto + text: catalog.i18nc("@label", "Custom") + + anchors.right: parent.right + + iconSource: UM.Theme.getIcon("arrow_right") + isIconOnRightSide: true + + onClicked: + { + popupItem.configuration_method = ConfigurationMenu.ConfigurationMethod.Custom + popupItem.manual_selected_method = popupItem.configuration_method + } + } + + Cura.SecondaryButton + { + id: goToAuto + visible: popupItem.configuration_method == ConfigurationMenu.ConfigurationMethod.Custom + text: catalog.i18nc("@label", "Configurations") + + iconSource: UM.Theme.getIcon("arrow_left") + + onClicked: + { + popupItem.configuration_method = ConfigurationMenu.ConfigurationMethod.Auto + popupItem.manual_selected_method = popupItem.configuration_method + } + } + } + } + + Connections + { + target: Cura.MachineManager + onGlobalContainerChanged: popupItem.manual_selected_method = -1 // When switching printers, reset the value of the manual selected method + } +} diff --git a/resources/qml/Menus/ConfigurationMenu/ConfigurationSelection.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationSelection.qml deleted file mode 100644 index d7ee2c68ee..0000000000 --- a/resources/qml/Menus/ConfigurationMenu/ConfigurationSelection.qml +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 2.0 -import QtQuick.Controls.Styles 1.4 - -import UM 1.2 as UM -import Cura 1.0 as Cura - -Item -{ - id: configurationSelector - property var connectedDevice: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null - property var panelWidth: control.width - - function switchPopupState() - { - popup.visible ? popup.close() : popup.open() - } - - SyncButton - { - id: syncButton - onClicked: switchPopupState() - outputDevice: connectedDevice - } - - Popup - { - // TODO Change once updating to Qt5.10 - The 'opened' property is in 5.10 but the behavior is now implemented with the visible property - id: popup - clip: true - closePolicy: Popup.CloseOnPressOutsideParent - y: configurationSelector.height - UM.Theme.getSize("default_lining").height - x: configurationSelector.width - width - width: panelWidth - visible: false - padding: UM.Theme.getSize("default_lining").width - transformOrigin: Popup.Top - contentItem: ConfigurationListView - { - id: configList - width: panelWidth - 2 * popup.padding - outputDevice: connectedDevice - } - background: Rectangle - { - color: UM.Theme.getColor("setting_control") - border.color: UM.Theme.getColor("setting_control_border") - } - exit: Transition - { - // This applies a default NumberAnimation to any changes a state change makes to x or y properties - NumberAnimation { property: "visible"; duration: 75; } - } - enter: Transition - { - // This applies a default NumberAnimation to any changes a state change makes to x or y properties - NumberAnimation { property: "visible"; duration: 75; } - } - onClosed: visible = false - onOpened: visible = true - } -} \ No newline at end of file diff --git a/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml b/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml new file mode 100644 index 0000000000..5cecda4e5c --- /dev/null +++ b/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml @@ -0,0 +1,293 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.6 +import QtQuick.Controls 2.0 +import QtQuick.Controls 1.1 as OldControls + +import Cura 1.0 as Cura +import UM 1.3 as UM + +Item +{ + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + width: parent.width + height: childrenRect.height + + Label + { + id: header + text: catalog.i18nc("@header", "Custom") + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("small_button_text") + height: contentHeight + renderType: Text.NativeRendering + + anchors + { + top: parent.top + left: parent.left + right: parent.right + } + } + + //Printer type selector. + Item + { + id: printerTypeSelectorRow + visible: + { + return Cura.MachineManager.printerOutputDevices.length >= 1 //If connected... + && Cura.MachineManager.printerOutputDevices[0].connectedPrintersTypeCount != null //...and we have configuration information... + && Cura.MachineManager.printerOutputDevices[0].connectedPrintersTypeCount.length > 1; //...and there is more than one type of printer in the configuration list. + } + height: visible ? childrenRect.height : 0 + + anchors + { + left: parent.left + right: parent.right + top: header.bottom + topMargin: visible ? UM.Theme.getSize("default_margin").height : 0 + } + + Label + { + text: catalog.i18nc("@label", "Printer") + width: Math.round(parent.width * 0.3) - UM.Theme.getSize("default_margin").width + height: contentHeight + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + anchors.verticalCenter: printerTypeSelector.verticalCenter + anchors.left: parent.left + } + + OldControls.ToolButton + { + id: printerTypeSelector + text: Cura.MachineManager.activeMachineDefinitionName + tooltip: Cura.MachineManager.activeMachineDefinitionName + height: UM.Theme.getSize("print_setup_big_item").height + width: Math.round(parent.width * 0.7) + UM.Theme.getSize("default_margin").width + anchors.right: parent.right + style: UM.Theme.styles.print_setup_header_button + + menu: Cura.PrinterTypeMenu { } + } + } + + UM.TabRow + { + id: tabBar + anchors.top: printerTypeSelectorRow.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + visible: extrudersModel.count > 1 + + Repeater + { + id: repeater + model: extrudersModel + delegate: UM.TabRowButton + { + contentItem: Item + { + Cura.ExtruderIcon + { + anchors.horizontalCenter: parent.horizontalCenter + materialColor: model.color + extruderEnabled: model.enabled + width: parent.height + height: parent.height + } + } + onClicked: + { + Cura.ExtruderManager.setActiveExtruderIndex(tabBar.currentIndex) + } + } + } + + //When active extruder changes for some other reason, switch tabs. + //Don't directly link currentIndex to Cura.ExtruderManager.activeExtruderIndex! + //This causes a segfault in Qt 5.11. Something with VisualItemModel removing index -1. We have to use setCurrentIndex instead. + Connections + { + target: Cura.ExtruderManager + onActiveExtruderChanged: + { + tabBar.setCurrentIndex(Cura.ExtruderManager.activeExtruderIndex); + } + } + + //When the model of the extruders is rebuilt, the list of extruders is briefly emptied and rebuilt. + //This causes the currentIndex of the tab to be in an invalid position which resets it to 0. + //Therefore we need to change it back to what it was: The active extruder index. + Connections + { + target: repeater.model + onModelChanged: + { + tabBar.setCurrentIndex(Cura.ExtruderManager.activeExtruderIndex) + } + } + } + + Rectangle + { + width: parent.width + height: childrenRect.height + anchors.top: tabBar.bottom + + radius: tabBar.visible ? UM.Theme.getSize("default_radius").width : 0 + border.width: tabBar.visible ? UM.Theme.getSize("default_lining").width : 0 + border.color: UM.Theme.getColor("lining") + color: UM.Theme.getColor("main_background") + + //Remove rounding and lining at the top. + Rectangle + { + width: parent.width + height: parent.radius + anchors.top: parent.top + color: UM.Theme.getColor("lining") + visible: tabBar.visible + Rectangle + { + anchors + { + left: parent.left + leftMargin: parent.parent.border.width + right: parent.right + rightMargin: parent.parent.border.width + top: parent.top + } + height: parent.parent.radius + color: parent.parent.color + } + } + + Column + { + id: selectors + padding: UM.Theme.getSize("default_margin").width + spacing: UM.Theme.getSize("default_margin").height + + property var model: extrudersModel.items[tabBar.currentIndex] + + readonly property real paddedWidth: parent.width - padding * 2 + property real textWidth: Math.round(paddedWidth * 0.3) + property real controlWidth: paddedWidth - textWidth + + Row + { + height: UM.Theme.getSize("print_setup_item").height + visible: extrudersModel.count > 1 // If there is only one extruder, there is no point to enable/disable that. + + Label + { + text: catalog.i18nc("@label", "Enabled") + verticalAlignment: Text.AlignVCenter + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + height: parent.height + width: selectors.textWidth + renderType: Text.NativeRendering + } + + OldControls.CheckBox + { + checked: Cura.MachineManager.activeStack != null ? Cura.MachineManager.activeStack.isEnabled : false + enabled: !checked || Cura.MachineManager.numberExtrudersEnabled > 1 //Disable if it's the last enabled extruder. + height: UM.Theme.getSize("setting_control").height + style: UM.Theme.styles.checkbox + + /* Use a MouseArea to process the click on this checkbox. + This is necessary because actually clicking the checkbox + causes the "checked" property to be overwritten. After + it's been overwritten, the original link that made it + depend on the active extruder stack is broken. */ + MouseArea + { + anchors.fill: parent + onClicked: Cura.MachineManager.setExtruderEnabled(Cura.ExtruderManager.activeExtruderIndex, !parent.checked) + enabled: parent.enabled + } + } + } + + Row + { + height: UM.Theme.getSize("print_setup_big_item").height + visible: Cura.MachineManager.hasMaterials + + Label + { + text: catalog.i18nc("@label", "Material") + verticalAlignment: Text.AlignVCenter + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + height: parent.height + width: selectors.textWidth + renderType: Text.NativeRendering + } + + OldControls.ToolButton + { + id: materialSelection + + property bool valueError: Cura.MachineManager.activeStack != null ? Cura.ContainerManager.getContainerMetaDataEntry(Cura.MachineManager.activeStack.material.id, "compatible", "") != "True" : true + property bool valueWarning: !Cura.MachineManager.isActiveQualitySupported + + text: Cura.MachineManager.activeStack != null ? Cura.MachineManager.activeStack.material.name : "" + tooltip: text + + height: UM.Theme.getSize("print_setup_big_item").height + width: selectors.controlWidth + + style: UM.Theme.styles.print_setup_header_button + activeFocusOnPress: true + menu: Cura.MaterialMenu + { + extruderIndex: Cura.ExtruderManager.activeExtruderIndex + } + } + } + + Row + { + height: UM.Theme.getSize("print_setup_big_item").height + visible: Cura.MachineManager.hasVariants + + Label + { + text: Cura.MachineManager.activeDefinitionVariantsName + verticalAlignment: Text.AlignVCenter + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + height: parent.height + width: selectors.textWidth + renderType: Text.NativeRendering + } + + OldControls.ToolButton + { + id: variantSelection + text: Cura.MachineManager.activeVariantName + tooltip: Cura.MachineManager.activeVariantName + + height: UM.Theme.getSize("print_setup_big_item").height + width: selectors.controlWidth + style: UM.Theme.styles.print_setup_header_button + activeFocusOnPress: true; + + menu: Cura.NozzleMenu { extruderIndex: Cura.ExtruderManager.activeExtruderIndex } + } + } + } + } +} diff --git a/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml b/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml index 97b5bee745..db6a97aa65 100644 --- a/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml +++ b/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml @@ -5,87 +5,50 @@ import QtQuick 2.7 import QtQuick.Controls 2.0 import UM 1.2 as UM +import Cura 1.0 as Cura - -Column +Row { id: extruderInfo property var printCoreConfiguration - property var mainColor: "black" - spacing: Math.round(UM.Theme.getSize("default_margin").height / 2) - height: childrenRect.height + height: information.height + spacing: UM.Theme.getSize("default_margin").width - Item + //Extruder icon. + Cura.ExtruderIcon { - id: extruder - width: parent.width - height: childrenRect.height + materialColor: printCoreConfiguration.material.color + anchors.verticalCenter: parent.verticalCenter + extruderEnabled: printCoreConfiguration.material.brand !== "" && printCoreConfiguration.hotendID !== "" + } + Column + { + id: information Label { - id: extruderLabel - text: catalog.i18nc("@label:extruder label", "Extruder") + text: printCoreConfiguration.material.brand ? printCoreConfiguration.material.brand : " " //Use space so that the height is still correct. renderType: Text.NativeRendering elide: Text.ElideRight - anchors.left: parent.left font: UM.Theme.getFont("default") - color: mainColor + color: UM.Theme.getColor("text_inactive") } - - // Rounded item to show the extruder number - Item + Label { - id: extruderIconItem - anchors.verticalCenter: extruderLabel.verticalCenter - anchors.left: extruderLabel.right - anchors.leftMargin: Math.round(UM.Theme.getSize("default_margin").width / 2) - - width: UM.Theme.getSize("section_icon").width - height: UM.Theme.getSize("section_icon").height - - UM.RecolorImage { - id: mainCircle - anchors.fill: parent - - anchors.centerIn: parent - sourceSize.width: parent.width - sourceSize.height: parent.height - source: UM.Theme.getIcon("extruder_button") - color: mainColor - } - - Label - { - id: extruderNumberText - anchors.centerIn: parent - text: printCoreConfiguration.position + 1 - renderType: Text.NativeRendering - font: UM.Theme.getFont("default") - color: mainColor - } + text: printCoreConfiguration.material.brand ? printCoreConfiguration.material.name : " " //Use space so that the height is still correct. + renderType: Text.NativeRendering + elide: Text.ElideRight + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + } + Label + { + text: printCoreConfiguration.hotendID ? printCoreConfiguration.hotendID : " " //Use space so that the height is still correct. + renderType: Text.NativeRendering + elide: Text.ElideRight + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text_inactive") } - } - - Label - { - id: materialLabel - text: printCoreConfiguration.material.name - renderType: Text.NativeRendering - elide: Text.ElideRight - width: parent.width - font: UM.Theme.getFont("default_bold") - color: mainColor - } - - Label - { - id: printCoreTypeLabel - text: printCoreConfiguration.hotendID - renderType: Text.NativeRendering - elide: Text.ElideRight - width: parent.width - font: UM.Theme.getFont("default") - color: mainColor } } diff --git a/resources/qml/Menus/ConfigurationMenu/SyncButton.qml b/resources/qml/Menus/ConfigurationMenu/SyncButton.qml deleted file mode 100644 index 3099d684c1..0000000000 --- a/resources/qml/Menus/ConfigurationMenu/SyncButton.qml +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 - -import UM 1.2 as UM -import Cura 1.0 as Cura - -Button -{ - id: base - property var outputDevice: null - property var matched: updateOnSync() - text: matched == true ? catalog.i18nc("@label:extruder label", "Yes") : catalog.i18nc("@label:extruder label", "No") - width: parent.width - height: parent.height - - function updateOnSync() - { - if (outputDevice != undefined) - { - for (var index in outputDevice.uniqueConfigurations) - { - var configuration = outputDevice.uniqueConfigurations[index] - if (Cura.MachineManager.matchesConfiguration(configuration)) - { - base.matched = true; - return; - } - } - } - base.matched = false; - } - - style: ButtonStyle - { - background: Rectangle - { - color: - { - if(control.pressed) - { - return UM.Theme.getColor("sidebar_header_active"); - } - else if(control.hovered) - { - return UM.Theme.getColor("sidebar_header_hover"); - } - else - { - return UM.Theme.getColor("sidebar_header_bar"); - } - } - Behavior on color { ColorAnimation { duration: 50; } } - - UM.RecolorImage - { - id: downArrow - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width - width: UM.Theme.getSize("standard_arrow").width - height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width - sourceSize.height: height - color: UM.Theme.getColor("text_emphasis") - source: UM.Theme.getIcon("arrow_bottom") - } - UM.RecolorImage - { - id: sidebarComboBoxLabel - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.verticalCenter: parent.verticalCenter; - - width: UM.Theme.getSize("printer_sync_icon").width - height: UM.Theme.getSize("printer_sync_icon").height - - color: control.matched ? UM.Theme.getColor("printer_config_matched") : UM.Theme.getColor("printer_config_mismatch") - source: UM.Theme.getIcon("tab_status_connected") - sourceSize.width: width - sourceSize.height: height - } - } - label: Label {} - } - - Connections - { - target: outputDevice - onUniqueConfigurationsChanged: updateOnSync() - } - - Connections - { - target: Cura.MachineManager - onCurrentConfigurationChanged: updateOnSync() - onOutputDevicesChanged: updateOnSync() - } -} \ No newline at end of file diff --git a/resources/qml/Menus/ContextMenu.qml b/resources/qml/Menus/ContextMenu.qml index 1ea402d815..cb10d50ce8 100644 --- a/resources/qml/Menus/ContextMenu.qml +++ b/resources/qml/Menus/ContextMenu.qml @@ -27,7 +27,7 @@ Menu MenuItem { id: extruderHeader; text: catalog.i18ncp("@label", "Print Selected Model With:", "Print Selected Models With:", UM.Selection.selectionCount); enabled: false; visible: base.shouldShowExtruders } Instantiator { - model: Cura.ExtrudersModel { id: extrudersModel } + model: CuraApplication.getExtrudersModel() MenuItem { text: "%1: %2 - %3".arg(model.name).arg(model.material).arg(model.variant) visible: base.shouldShowExtruders diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml new file mode 100644 index 0000000000..955ac89693 --- /dev/null +++ b/resources/qml/Menus/FileMenu.qml @@ -0,0 +1,81 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.1 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +Menu +{ + id: base + title: catalog.i18nc("@title:menu menubar:toplevel", "&File") + + MenuItem + { + id: newProjectMenu + action: Cura.Actions.newProject + } + + MenuItem + { + id: openMenu + action: Cura.Actions.open + } + + RecentFilesMenu { } + + MenuItem + { + id: saveWorkspaceMenu + text: catalog.i18nc("@title:menu menubar:file", "&Save...") + onTriggered: + { + var args = { "filter_by_machine": false, "file_type": "workspace", "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml" }; + if(UM.Preferences.getValue("cura/dialog_on_project_save")) + { + saveWorkspaceDialog.args = args + saveWorkspaceDialog.open() + } + else + { + UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args) + } + } + } + + MenuSeparator { } + + MenuItem + { + id: saveAsMenu + text: catalog.i18nc("@title:menu menubar:file", "&Export...") + onTriggered: + { + var localDeviceId = "local_file" + UM.OutputDeviceManager.requestWriteToDevice(localDeviceId, PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"}) + } + } + + MenuItem + { + id: exportSelectionMenu + text: catalog.i18nc("@action:inmenu menubar:file", "Export Selection...") + enabled: UM.Selection.hasSelection + iconName: "document-save-as" + onTriggered: UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file", PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"}) + } + + MenuSeparator { } + + MenuItem + { + id: reloadAllMenu + action: Cura.Actions.reloadAll + } + + MenuSeparator { } + + MenuItem { action: Cura.Actions.quit } +} \ No newline at end of file diff --git a/resources/qml/Menus/LocalPrinterMenu.qml b/resources/qml/Menus/LocalPrinterMenu.qml index 0bdd4f33b9..4da1de2abf 100644 --- a/resources/qml/Menus/LocalPrinterMenu.qml +++ b/resources/qml/Menus/LocalPrinterMenu.qml @@ -7,16 +7,18 @@ import QtQuick.Controls 1.4 import UM 1.2 as UM import Cura 1.0 as Cura -Instantiator { - model: UM.ContainerStacksModel { - filter: {"type": "machine", "um_network_key": null} - } - MenuItem { - text: model.name; - checkable: true; +Instantiator +{ + model: Cura.GlobalStacksModel {} + + MenuItem + { + text: model.name + checkable: true checked: Cura.MachineManager.activeMachineId == model.id - exclusiveGroup: group; - onTriggered: Cura.MachineManager.setActiveMachine(model.id); + exclusiveGroup: group + visible: !model.hasRemoteConnection + onTriggered: Cura.MachineManager.setActiveMachine(model.id) } onObjectAdded: menu.insertItem(index, object) onObjectRemoved: menu.removeItem(object) diff --git a/resources/qml/Menus/NetworkPrinterMenu.qml b/resources/qml/Menus/NetworkPrinterMenu.qml index 07a22202e4..3cb0aae016 100644 --- a/resources/qml/Menus/NetworkPrinterMenu.qml +++ b/resources/qml/Menus/NetworkPrinterMenu.qml @@ -7,18 +7,17 @@ import QtQuick.Controls 1.4 import UM 1.2 as UM import Cura 1.0 as Cura -Instantiator { - model: UM.ContainerStacksModel { - filter: {"type": "machine", "um_network_key": "*", "hidden": "False"} - } - MenuItem { - // TODO: Use printer_group icon when it's a cluster. Not use it for now since it doesn't look as expected -// iconSource: UM.Theme.getIcon("printer_single") +Instantiator +{ + model: Cura.GlobalStacksModel {} + MenuItem + { text: model.metadata["connect_group_name"] - checkable: true; + checkable: true + visible: model.hasRemoteConnection checked: Cura.MachineManager.activeMachineNetworkGroupName == model.metadata["connect_group_name"] - exclusiveGroup: group; - onTriggered: Cura.MachineManager.setActiveMachine(model.id); + exclusiveGroup: group + onTriggered: Cura.MachineManager.setActiveMachine(model.id) } onObjectAdded: menu.insertItem(index, object) onObjectRemoved: menu.removeItem(object) diff --git a/resources/qml/Menus/PrinterStatusIcon.qml b/resources/qml/Menus/PrinterStatusIcon.qml deleted file mode 100644 index 6ff6b07af8..0000000000 --- a/resources/qml/Menus/PrinterStatusIcon.qml +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) 2017 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 - -import UM 1.2 as UM -import Cura 1.0 as Cura - -Item -{ - property var status: "disconnected" - width: childrenRect.width - height: childrenRect.height - UM.RecolorImage - { - id: statusIcon - width: UM.Theme.getSize("printer_status_icon").width - height: UM.Theme.getSize("printer_status_icon").height - sourceSize.width: width - sourceSize.height: width - color: UM.Theme.getColor("tab_status_" + parent.status) - source: UM.Theme.getIcon(parent.status) - } -} - - - diff --git a/resources/qml/Menus/ProfileMenu.qml b/resources/qml/Menus/ProfileMenu.qml index ffd3c556b6..bf950aa409 100644 --- a/resources/qml/Menus/ProfileMenu.qml +++ b/resources/qml/Menus/ProfileMenu.qml @@ -17,24 +17,27 @@ Menu MenuItem { - text: (model.layer_height != "") ? model.name + " - " + model.layer_height + model.layer_height_unit : model.name + text: + { + var full_text = (model.layer_height != "") ? model.name + " - " + model.layer_height + model.layer_height_unit : model.name + full_text += model.is_experimental ? " - Experimental" : "" + return full_text + } checkable: true checked: Cura.MachineManager.activeQualityOrQualityChangesName == model.name exclusiveGroup: group - onTriggered: { - Cura.MachineManager.setQualityGroup(model.quality_group) - } + onTriggered: Cura.MachineManager.setQualityGroup(model.quality_group) visible: model.available } - onObjectAdded: menu.insertItem(index, object); - onObjectRemoved: menu.removeItem(object); + onObjectAdded: menu.insertItem(index, object) + onObjectRemoved: menu.removeItem(object) } MenuSeparator { id: customSeparator - visible: Cura.CustomQualityProfilesDropDownMenuModel.rowCount > 0 + visible: Cura.CustomQualityProfilesDropDownMenuModel.count > 0 } Instantiator @@ -45,7 +48,7 @@ Menu Connections { target: Cura.CustomQualityProfilesDropDownMenuModel - onModelReset: customSeparator.visible = Cura.CustomQualityProfilesDropDownMenuModel.rowCount() > 0 + onModelReset: customSeparator.visible = Cura.CustomQualityProfilesDropDownMenuModel.count > 0 } MenuItem @@ -59,12 +62,12 @@ Menu onObjectAdded: { - customSeparator.visible = model.rowCount() > 0; + customSeparator.visible = model.count > 0; menu.insertItem(index, object); } onObjectRemoved: { - customSeparator.visible = model.rowCount() > 0; + customSeparator.visible = model.count > 0; menu.removeItem(object); } } diff --git a/resources/qml/Menus/RecentFilesMenu.qml b/resources/qml/Menus/RecentFilesMenu.qml index 12f53fb517..0f1f67b6fa 100644 --- a/resources/qml/Menus/RecentFilesMenu.qml +++ b/resources/qml/Menus/RecentFilesMenu.qml @@ -7,6 +7,8 @@ import QtQuick.Controls 1.1 import UM 1.3 as UM import Cura 1.0 as Cura +import "../Dialogs" + Menu { id: menu diff --git a/resources/qml/Menus/SettingsMenu.qml b/resources/qml/Menus/SettingsMenu.qml new file mode 100644 index 0000000000..4ea3a4d71a --- /dev/null +++ b/resources/qml/Menus/SettingsMenu.qml @@ -0,0 +1,70 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.1 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +Menu +{ + id: base + title: catalog.i18nc("@title:menu menubar:toplevel", "&Settings") + + PrinterMenu { title: catalog.i18nc("@title:menu menubar:settings", "&Printer") } + + Instantiator + { + model: Cura.MachineManager.activeMachine.extruderList + + Menu + { + title: modelData.name + + NozzleMenu { title: Cura.MachineManager.activeDefinitionVariantsName; visible: Cura.MachineManager.hasVariants; extruderIndex: index } + MaterialMenu { title: catalog.i18nc("@title:menu", "&Material"); visible: Cura.MachineManager.hasMaterials; extruderIndex: index } + + MenuSeparator + { + visible: Cura.MachineManager.hasVariants || Cura.MachineManager.hasMaterials + } + + MenuItem + { + text: catalog.i18nc("@action:inmenu", "Set as Active Extruder") + onTriggered: Cura.MachineManager.setExtruderIndex(model.index) + } + + MenuItem + { + text: catalog.i18nc("@action:inmenu", "Enable Extruder") + onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, true) + visible: !Cura.MachineManager.getExtruder(model.index).isEnabled + } + + MenuItem + { + text: catalog.i18nc("@action:inmenu", "Disable Extruder") + onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, false) + visible: Cura.MachineManager.getExtruder(model.index).isEnabled + enabled: Cura.MachineManager.numberExtrudersEnabled > 1 + } + + } + onObjectAdded: base.insertItem(index, object) + onObjectRemoved: base.removeItem(object) + } + + // TODO Only show in dev mode. Remove check when feature ready + BuildplateMenu + { + title: catalog.i18nc("@title:menu", "&Build plate") + visible: CuraSDKVersion == "dev" && Cura.MachineManager.hasVariantBuildplates + } + ProfileMenu { title: catalog.i18nc("@title:settings", "&Profile") } + + MenuSeparator { } + + MenuItem { action: Cura.Actions.configureSettingVisibility } +} \ No newline at end of file diff --git a/resources/qml/Menus/ViewMenu.qml b/resources/qml/Menus/ViewMenu.qml index 12d4ffd7dd..217975c803 100644 --- a/resources/qml/Menus/ViewMenu.qml +++ b/resources/qml/Menus/ViewMenu.qml @@ -11,32 +11,10 @@ Menu { title: catalog.i18nc("@title:menu menubar:toplevel", "&View") id: base + enabled: !PrintInformation.preSliced property var multiBuildPlateModel: CuraApplication.getMultiBuildPlateModel() - // main views - Instantiator - { - model: UM.ViewModel{} - MenuItem - { - text: model.name - checkable: true - checked: model.active - exclusiveGroup: group - onTriggered: UM.Controller.setActiveView(model.id) - enabled: !PrintInformation.preSliced - } - onObjectAdded: base.insertItem(index, object) - onObjectRemoved: base.removeItem(object) - } - ExclusiveGroup - { - id: group - } - - MenuSeparator {} - Menu { title: catalog.i18nc("@action:inmenu menubar:view","&Camera position"); @@ -80,12 +58,6 @@ Menu MenuSeparator {} - MenuItem - { - action: Cura.Actions.expandSidebar - } - - MenuSeparator {} MenuItem { action: Cura.Actions.toggleFullScreen diff --git a/resources/qml/MonitorButton.qml b/resources/qml/MonitorButton.qml index aa40de11e4..99640b1059 100644 --- a/resources/qml/MonitorButton.qml +++ b/resources/qml/MonitorButton.qml @@ -13,9 +13,9 @@ import Cura 1.0 as Cura Item { id: base; - UM.I18nCatalog { id: catalog; name:"cura"} + UM.I18nCatalog { id: catalog; name: "cura"} - height: childrenRect.height + UM.Theme.getSize("sidebar_margin").height + height: childrenRect.height + UM.Theme.getSize("thick_margin").height property bool printerConnected: Cura.MachineManager.printerConnected property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands @@ -162,13 +162,13 @@ Item Label { id: statusLabel - width: parent.width - 2 * UM.Theme.getSize("sidebar_margin").width + width: parent.width - 2 * UM.Theme.getSize("thick_margin").width anchors.top: parent.top anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width + anchors.leftMargin: UM.Theme.getSize("thick_margin").width color: base.statusColor - font: UM.Theme.getFont("large") + font: UM.Theme.getFont("large_bold") text: statusText } @@ -179,7 +179,7 @@ Item anchors.right: progressBar.right color: base.statusColor - font: UM.Theme.getFont("large") + font: UM.Theme.getFont("large_bold") text: Math.round(progress) + "%" visible: showProgress } @@ -224,12 +224,12 @@ Item property string backgroundColor: UM.Theme.getColor("progressbar_background"); property string controlColor: base.statusColor; - width: parent.width - 2 * UM.Theme.getSize("sidebar_margin").width; + width: parent.width - 2 * UM.Theme.getSize("thick_margin").width; height: UM.Theme.getSize("progressbar").height; anchors.top: statusLabel.bottom; - anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height / 4); + anchors.topMargin: Math.round(UM.Theme.getSize("thick_margin").height / 4); anchors.left: parent.left; - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width; + anchors.leftMargin: UM.Theme.getSize("thick_margin").width; } Row @@ -237,9 +237,9 @@ Item id: buttonsRow height: abortButton.height anchors.top: progressBar.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.topMargin: UM.Theme.getSize("thick_margin").height anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width + anchors.rightMargin: UM.Theme.getSize("thick_margin").width spacing: UM.Theme.getSize("default_margin").width Row @@ -309,7 +309,7 @@ Item } } - style: UM.Theme.styles.sidebar_action_button + style: UM.Theme.styles.print_setup_action_button } Button @@ -325,7 +325,7 @@ Item text: catalog.i18nc("@label", "Abort Print") onClicked: confirmationDialog.visible = true - style: UM.Theme.styles.sidebar_action_button + style: UM.Theme.styles.print_setup_action_button } MessageDialog diff --git a/resources/qml/MonitorSidebar.qml b/resources/qml/MonitorSidebar.qml deleted file mode 100644 index 80bd5c1a2e..0000000000 --- a/resources/qml/MonitorSidebar.qml +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright (c) 2017 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 2.0 -import QtQuick.Layouts 1.3 - -import UM 1.2 as UM -import Cura 1.0 as Cura -import "Menus" -import "Menus/ConfigurationMenu" - -Rectangle -{ - id: base - - property int currentModeIndex - property bool hideSettings: PrintInformation.preSliced - property bool hideView: Cura.MachineManager.activeMachineName == "" - - // Is there an output device for this printer? - property bool isNetworkPrinter: Cura.MachineManager.activeMachineNetworkKey != "" - property bool printerConnected: Cura.MachineManager.printerConnected - property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands - property var connectedPrinter: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null - - property variant printDuration: PrintInformation.currentPrintTime - property variant printMaterialLengths: PrintInformation.materialLengths - property variant printMaterialWeights: PrintInformation.materialWeights - property variant printMaterialCosts: PrintInformation.materialCosts - property variant printMaterialNames: PrintInformation.materialNames - - color: UM.Theme.getColor("sidebar") - UM.I18nCatalog { id: catalog; name:"cura"} - - Timer { - id: tooltipDelayTimer - interval: 500 - repeat: false - property var item - property string text - - onTriggered: - { - base.showTooltip(base, {x: 0, y: item.y}, text); - } - } - - function showTooltip(item, position, text) - { - tooltip.text = text; - position = item.mapToItem(base, position.x - UM.Theme.getSize("default_arrow").width, position.y); - tooltip.show(position); - } - - function hideTooltip() - { - tooltip.hide(); - } - - function strPadLeft(string, pad, length) { - return (new Array(length + 1).join(pad) + string).slice(-length); - } - - function getPrettyTime(time) - { - var hours = Math.floor(time / 3600) - time -= hours * 3600 - var minutes = Math.floor(time / 60); - time -= minutes * 60 - var seconds = Math.floor(time); - - var finalTime = strPadLeft(hours, "0", 2) + ':' + strPadLeft(minutes,'0',2)+ ':' + strPadLeft(seconds,'0',2); - return finalTime; - } - - MouseArea - { - anchors.fill: parent - acceptedButtons: Qt.AllButtons - - onWheel: - { - wheel.accepted = true; - } - } - - MachineSelection - { - id: machineSelection - width: base.width - configSelection.width - separator.width - height: UM.Theme.getSize("sidebar_header").height - anchors.top: base.top - anchors.left: parent.left - } - - Rectangle - { - id: separator - visible: configSelection.visible - width: visible ? Math.round(UM.Theme.getSize("sidebar_lining_thin").height / 2) : 0 - height: UM.Theme.getSize("sidebar_header").height - color: UM.Theme.getColor("sidebar_lining_thin") - anchors.left: machineSelection.right - } - - ConfigurationSelection - { - id: configSelection - visible: isNetworkPrinter && printerConnected - width: visible ? Math.round(base.width * 0.15) : 0 - height: UM.Theme.getSize("sidebar_header").height - anchors.top: base.top - anchors.right: parent.right - panelWidth: base.width - } - - Loader - { - id: controlItem - anchors.bottom: footerSeparator.top - anchors.top: machineSelection.bottom - anchors.left: base.left - anchors.right: base.right - sourceComponent: - { - if(connectedPrinter != null) - { - if(connectedPrinter.controlItem != null) - { - return connectedPrinter.controlItem - } - } - return null - } - } - - Loader - { - anchors.bottom: footerSeparator.top - anchors.top: machineSelection.bottom - anchors.left: base.left - anchors.right: base.right - source: - { - if(controlItem.sourceComponent == null) - { - return "PrintMonitor.qml" - } - else - { - return "" - } - } - } - - Rectangle - { - id: footerSeparator - width: parent.width - height: UM.Theme.getSize("sidebar_lining").height - color: UM.Theme.getColor("sidebar_lining") - anchors.bottom: monitorButton.top - anchors.bottomMargin: UM.Theme.getSize("sidebar_margin").height - } - - // MonitorButton is actually the bottom footer panel. - MonitorButton - { - id: monitorButton - implicitWidth: base.width - anchors.bottom: parent.bottom - } - - SidebarTooltip - { - id: tooltip - } - - UM.SettingPropertyProvider - { - id: machineExtruderCount - - containerStack: Cura.MachineManager.activeMachine - key: "machine_extruder_count" - watchedProperties: [ "value" ] - storeIndex: 0 - } - - UM.SettingPropertyProvider - { - id: machineHeatedBed - - containerStack: Cura.MachineManager.activeMachine - key: "machine_heated_bed" - watchedProperties: [ "value" ] - storeIndex: 0 - } - - // Make the ConfigurationSelector react when the global container changes, otherwise if Cura is not connected to the printer, - // switching printers make no reaction - Connections - { - target: Cura.MachineManager - onGlobalContainerChanged: - { - base.isNetworkPrinter = Cura.MachineManager.activeMachineNetworkKey != "" - base.printerConnected = Cura.MachineManager.printerOutputDevices.length != 0 - } - } -} diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index 8c8eaa16ae..fd5175fce2 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2017 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -55,7 +55,6 @@ Rectangle { width: control.width height: control.height - sourceSize.width: width sourceSize.height: width color: UM.Theme.getColor("setting_control_text") source: collapsed ? UM.Theme.getIcon("arrow_left") : UM.Theme.getIcon("arrow_bottom") @@ -225,7 +224,7 @@ Rectangle { id: arrangeAllBuildPlatesButton; text: catalog.i18nc("@action:button","Arrange to all build plates"); - style: UM.Theme.styles.sidebar_action_button + style: UM.Theme.styles.print_setup_action_button height: UM.Theme.getSize("objects_menu_button").height; tooltip: ''; anchors @@ -245,7 +244,7 @@ Rectangle { id: arrangeBuildPlateButton; text: catalog.i18nc("@action:button","Arrange current build plate"); - style: UM.Theme.styles.sidebar_action_button + style: UM.Theme.styles.print_setup_action_button height: UM.Theme.getSize("objects_menu_button").height; tooltip: ''; anchors diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 64c1246929..5ff5f567ea 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2017 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.1 @@ -134,7 +134,7 @@ UM.PreferencesPage UM.PluginsModel { id: plugins } //: Language selection label - UM.I18nCatalog{id: catalog; name:"cura"} + UM.I18nCatalog{id: catalog; name: "cura"} Label { @@ -151,7 +151,6 @@ UM.PreferencesPage { id: languageLabel text: catalog.i18nc("@label","Language:") - anchors.verticalCenter: languageComboBox.verticalCenter } ComboBox @@ -171,7 +170,7 @@ UM.PreferencesPage append({ text: "日本語", code: "ja_JP" }) append({ text: "한국어", code: "ko_KR" }) append({ text: "Nederlands", code: "nl_NL" }) - append({ text: "Polski", code: "pl_PL" }) + //Polish is disabled for being incomplete: append({ text: "Polski", code: "pl_PL" }) append({ text: "Português do Brasil", code: "pt_BR" }) append({ text: "Português", code: "pt_PT" }) append({ text: "Русский", code: "ru_RU" }) @@ -219,7 +218,6 @@ UM.PreferencesPage { id: currencyLabel text: catalog.i18nc("@label","Currency:") - anchors.verticalCenter: currencyField.verticalCenter } TextField @@ -233,7 +231,6 @@ UM.PreferencesPage { id: themeLabel text: catalog.i18nc("@label","Theme:") - anchors.verticalCenter: themeComboBox.verticalCenter } ComboBox diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index 4dc5465dc6..d5ecb10658 100644 --- a/resources/qml/Preferences/MachinesPage.qml +++ b/resources/qml/Preferences/MachinesPage.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 @@ -21,8 +21,10 @@ UM.ManagementPage function activeMachineIndex() { - for(var i = 0; i < model.rowCount(); i++) { - if (model.getItem(i).id == Cura.MachineManager.activeMachineId) { + for(var i = 0; i < model.count; i++) + { + if (model.getItem(i).id == Cura.MachineManager.activeMachineId) + { return i; } } @@ -47,7 +49,7 @@ UM.ManagementPage { text: catalog.i18nc("@action:button", "Remove"); iconName: "list-remove"; - enabled: base.currentItem != null && model.rowCount() > 1 + enabled: base.currentItem != null && model.count > 1 onClicked: confirmDialog.open(); }, Button @@ -68,7 +70,7 @@ UM.ManagementPage { id: machineName text: base.currentItem && base.currentItem.name ? base.currentItem.name : "" - font: UM.Theme.getFont("large") + font: UM.Theme.getFont("large_bold") width: parent.width elide: Text.ElideRight } @@ -89,7 +91,7 @@ UM.ManagementPage Item { - width: childrenRect.width + 2 * screenScaleFactor + width: Math.round(childrenRect.width + 2 * screenScaleFactor) height: childrenRect.height Button { diff --git a/resources/qml/Preferences/Materials/MaterialsBrandSection.qml b/resources/qml/Preferences/Materials/MaterialsBrandSection.qml index c8f391dfb0..c976233805 100644 --- a/resources/qml/Preferences/Materials/MaterialsBrandSection.qml +++ b/resources/qml/Preferences/Materials/MaterialsBrandSection.qml @@ -1,5 +1,5 @@ // Copyright (c) 2018 Ultimaker B.V. -// Uranium is released under the terms of the LGPLv3 or higher. +// Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 import QtQuick.Controls 1.4 @@ -10,7 +10,7 @@ import QtQuick.Dialogs 1.2 import UM 1.2 as UM import Cura 1.0 as Cura -Rectangle +Item { id: brand_section @@ -55,7 +55,8 @@ Rectangle text: "" implicitWidth: UM.Theme.getSize("favorites_button").width implicitHeight: UM.Theme.getSize("favorites_button").height - UM.RecolorImage { + UM.RecolorImage + { anchors { verticalCenter: parent.verticalCenter @@ -63,18 +64,12 @@ Rectangle } width: UM.Theme.getSize("standard_arrow").width height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width - sourceSize.height: height color: "black" source: brand_section.expanded ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left") } style: ButtonStyle { - background: Rectangle - { - anchors.fill: parent - color: "transparent" - } + background: Item { } } } } diff --git a/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml b/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml index 92970f40e2..eb4a63250f 100644 --- a/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml +++ b/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml @@ -65,7 +65,7 @@ Item Label { text: materialProperties.name - font: UM.Theme.getFont("large") + font: UM.Theme.getFont("large_bold") } } diff --git a/resources/qml/Preferences/Materials/MaterialsList.qml b/resources/qml/Preferences/Materials/MaterialsList.qml index 00bead9650..61f92db84c 100644 --- a/resources/qml/Preferences/Materials/MaterialsList.qml +++ b/resources/qml/Preferences/Materials/MaterialsList.qml @@ -57,7 +57,7 @@ Item var currentItemId = base.currentItem == null ? "" : base.currentItem.root_material_id search_root_id = currentItemId } - for (var material_idx = 0; material_idx < genericMaterialsModel.rowCount(); material_idx++) + for (var material_idx = 0; material_idx < genericMaterialsModel.count; material_idx++) { var material = genericMaterialsModel.getItem(material_idx) if (material.root_material_id == search_root_id) @@ -72,15 +72,15 @@ Item return true } } - for (var brand_idx = 0; brand_idx < materialsModel.rowCount(); brand_idx++) + for (var brand_idx = 0; brand_idx < materialsModel.count; brand_idx++) { var brand = materialsModel.getItem(brand_idx) var types_model = brand.material_types - for (var type_idx = 0; type_idx < types_model.rowCount(); type_idx++) + for (var type_idx = 0; type_idx < types_model.count; type_idx++) { var type = types_model.getItem(type_idx) var colors_model = type.colors - for (var material_idx = 0; material_idx < colors_model.rowCount(); material_idx++) + for (var material_idx = 0; material_idx < colors_model.count; material_idx++) { var material = colors_model.getItem(material_idx) if (material.root_material_id == search_root_id) diff --git a/resources/qml/Preferences/Materials/MaterialsSlot.qml b/resources/qml/Preferences/Materials/MaterialsSlot.qml index a5af17f47a..2f4847103b 100644 --- a/resources/qml/Preferences/Materials/MaterialsSlot.qml +++ b/resources/qml/Preferences/Materials/MaterialsSlot.qml @@ -1,5 +1,5 @@ // Copyright (c) 2018 Ultimaker B.V. -// Uranium is released under the terms of the LGPLv3 or higher. +// Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 import QtQuick.Controls 1.4 @@ -15,7 +15,7 @@ Rectangle id: materialSlot property var material: null property var hovered: false - property var is_favorite: material != null ? material.is_favorite : false + property var is_favorite: material != null && material.is_favorite height: UM.Theme.getSize("favorites_row").height width: parent.width @@ -70,24 +70,20 @@ Rectangle } onClicked: { - if (materialSlot.is_favorite) { + if (materialSlot.is_favorite) + { base.materialManager.removeFavorite(material.root_material_id) - materialSlot.is_favorite = false return } base.materialManager.addFavorite(material.root_material_id) - materialSlot.is_favorite = true return } style: ButtonStyle { - background: Rectangle - { - anchors.fill: parent - color: "transparent" - } + background: Item { } } - UM.RecolorImage { + UM.RecolorImage + { anchors { verticalCenter: favorite_button.verticalCenter @@ -95,8 +91,6 @@ Rectangle } width: UM.Theme.getSize("favorites_button_icon").width height: UM.Theme.getSize("favorites_button_icon").height - sourceSize.width: width - sourceSize.height: height color: { if (favorite_button.hovered) diff --git a/resources/qml/Preferences/Materials/MaterialsTypeSection.qml b/resources/qml/Preferences/Materials/MaterialsTypeSection.qml index f62fc4ee16..8f34217cce 100644 --- a/resources/qml/Preferences/Materials/MaterialsTypeSection.qml +++ b/resources/qml/Preferences/Materials/MaterialsTypeSection.qml @@ -10,7 +10,7 @@ import QtQuick.Dialogs 1.2 import UM 1.2 as UM import Cura 1.0 as Cura -Rectangle +Item { id: material_type_section property var materialType @@ -74,8 +74,6 @@ Rectangle } width: UM.Theme.getSize("standard_arrow").width height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width - sourceSize.height: height color: "black" source: material_type_section.expanded ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left") } diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index ba0c2848a5..d9b679e344 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -16,7 +16,7 @@ Item property QtObject qualityManager: CuraApplication.getQualityManager() property var resetEnabled: false // Keep PreferencesDialog happy - property var extrudersModel: Cura.ExtrudersModel {} + property var extrudersModel: CuraApplication.getExtrudersModel() UM.I18nCatalog { id: catalog; name: "cura"; } @@ -188,21 +188,27 @@ Item Connections { target: qualitiesModel - onItemsChanged: { + onItemsChanged: + { var toSelectItemName = base.currentItem == null ? "" : base.currentItem.name; - if (newQualityNameToSelect != "") { + if (newQualityNameToSelect != "") + { toSelectItemName = newQualityNameToSelect; } var newIdx = -1; // Default to nothing if nothing can be found - if (toSelectItemName != "") { + if (toSelectItemName != "") + { // Select the required quality name if given - for (var idx = 0; idx < qualitiesModel.rowCount(); ++idx) { + for (var idx = 0; idx < qualitiesModel.count; ++idx) + { var item = qualitiesModel.getItem(idx); - if (item.name == toSelectItemName) { + if (item.name == toSelectItemName) + { // Switch to the newly created profile if needed newIdx = idx; - if (base.toActivateNewQuality) { + if (base.toActivateNewQuality) + { // Activate this custom quality if required Cura.MachineManager.setQualityChangesGroup(item.quality_changes_group); } @@ -382,9 +388,11 @@ Item var selectedItemName = Cura.MachineManager.activeQualityOrQualityChangesName; // Select the required quality name if given - for (var idx = 0; idx < qualitiesModel.rowCount(); idx++) { + for (var idx = 0; idx < qualitiesModel.count; idx++) + { var item = qualitiesModel.getItem(idx); - if (item.name == selectedItemName) { + if (item.name == selectedItemName) + { currentIndex = idx; break; } @@ -400,7 +408,7 @@ Item { anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_lining").width - text: section == "true" ? catalog.i18nc("@label", "Protected profiles") : catalog.i18nc("@label", "Custom profiles") + text: section == "true" ? catalog.i18nc("@label", "Default profiles") : catalog.i18nc("@label", "Custom profiles") font.bold: true } } @@ -463,7 +471,7 @@ Item Label { text: base.currentItemName - font: UM.Theme.getFont("large") + font: UM.Theme.getFont("large_bold") } } diff --git a/resources/qml/Preferences/SettingVisibilityPage.qml b/resources/qml/Preferences/SettingVisibilityPage.qml index 8896d0611e..3f7571a170 100644 --- a/resources/qml/Preferences/SettingVisibilityPage.qml +++ b/resources/qml/Preferences/SettingVisibilityPage.qml @@ -25,11 +25,7 @@ UM.PreferencesPage function reset() { - UM.Preferences.resetPreference("general/visible_settings") - - // After calling this function update Setting visibility preset combobox. - // Reset should set default setting preset ("Basic") - visibilityPreset.currentIndex = 1 + settingVisibilityPresetsModel.setActivePreset("basic") } resetEnabled: true; @@ -54,7 +50,7 @@ UM.PreferencesPage { return Qt.Unchecked } - else if(definitionsModel.visibleCount == definitionsModel.rowCount(null)) + else if(definitionsModel.visibleCount == definitionsModel.count) { return Qt.Checked } @@ -115,21 +111,22 @@ UM.PreferencesPage currentIndex: { + var idx = -1; for(var i = 0; i < settingVisibilityPresetsModel.items.length; ++i) { - if(settingVisibilityPresetsModel.items[i].id == settingVisibilityPresetsModel.activePreset) + if(settingVisibilityPresetsModel.items[i].presetId == settingVisibilityPresetsModel.activePreset) { - currentIndex = i; - return; + idx = i; + break; } } - return -1 + return idx; } onActivated: { - var preset_id = settingVisibilityPresetsModel.items[index].id; - settingVisibilityPresetsModel.setActivePreset(preset_id); + var preset_id = settingVisibilityPresetsModel.items[index].presetId + settingVisibilityPresetsModel.setActivePreset(preset_id) } } diff --git a/resources/qml/PrepareSidebar.qml b/resources/qml/PrepareSidebar.qml deleted file mode 100644 index fe0fb033f7..0000000000 --- a/resources/qml/PrepareSidebar.qml +++ /dev/null @@ -1,616 +0,0 @@ -// Copyright (c) 2017 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 2.0 -import QtQuick.Layouts 1.3 - -import UM 1.2 as UM -import Cura 1.0 as Cura -import "Menus" -import "Menus/ConfigurationMenu" - -Rectangle -{ - id: base - - property int currentModeIndex: -1 - property bool hideSettings: PrintInformation.preSliced - property bool hideView: Cura.MachineManager.activeMachineName == "" - - // Is there an output device for this printer? - property bool isNetworkPrinter: Cura.MachineManager.activeMachineNetworkKey != "" - property bool printerConnected: Cura.MachineManager.printerConnected - property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands - property var connectedPrinter: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null - - property variant printDuration: PrintInformation.currentPrintTime - property variant printMaterialLengths: PrintInformation.materialLengths - property variant printMaterialWeights: PrintInformation.materialWeights - property variant printMaterialCosts: PrintInformation.materialCosts - property variant printMaterialNames: PrintInformation.materialNames - - color: UM.Theme.getColor("sidebar") - UM.I18nCatalog { id: catalog; name:"cura"} - - Timer { - id: tooltipDelayTimer - interval: 500 - repeat: false - property var item - property string text - - onTriggered: - { - base.showTooltip(base, {x: 0, y: item.y}, text); - } - } - - function showTooltip(item, position, text) - { - tooltip.text = text; - position = item.mapToItem(base, position.x - UM.Theme.getSize("default_arrow").width, position.y); - tooltip.show(position); - } - - function hideTooltip() - { - tooltip.hide(); - } - - function strPadLeft(string, pad, length) { - return (new Array(length + 1).join(pad) + string).slice(-length); - } - - function getPrettyTime(time) - { - var hours = Math.floor(time / 3600) - time -= hours * 3600 - var minutes = Math.floor(time / 60); - time -= minutes * 60 - var seconds = Math.floor(time); - - var finalTime = strPadLeft(hours, "0", 2) + ':' + strPadLeft(minutes,'0',2)+ ':' + strPadLeft(seconds,'0',2); - return finalTime; - } - - MouseArea - { - anchors.fill: parent - acceptedButtons: Qt.AllButtons - - onWheel: - { - wheel.accepted = true; - } - } - - MachineSelection - { - id: machineSelection - width: base.width - configSelection.width - separator.width - height: UM.Theme.getSize("sidebar_header").height - anchors.top: base.top - anchors.left: parent.left - } - - Rectangle - { - id: separator - visible: configSelection.visible - width: visible ? Math.round(UM.Theme.getSize("sidebar_lining_thin").height / 2) : 0 - height: UM.Theme.getSize("sidebar_header").height - color: UM.Theme.getColor("sidebar_lining_thin") - anchors.left: machineSelection.right - } - - ConfigurationSelection - { - id: configSelection - visible: isNetworkPrinter && printerConnected - width: visible ? Math.round(base.width * 0.15) : 0 - height: UM.Theme.getSize("sidebar_header").height - anchors.top: base.top - anchors.right: parent.right - panelWidth: base.width - } - - SidebarHeader { - id: header - width: parent.width - visible: !hideSettings && (machineExtruderCount.properties.value > 1 || Cura.MachineManager.hasMaterials || Cura.MachineManager.hasVariants) - anchors.top: machineSelection.bottom - - onShowTooltip: base.showTooltip(item, location, text) - onHideTooltip: base.hideTooltip() - } - - Rectangle { - id: headerSeparator - width: parent.width - visible: settingsModeSelection.visible && header.visible - height: visible ? UM.Theme.getSize("sidebar_lining").height : 0 - color: UM.Theme.getColor("sidebar_lining") - anchors.top: header.bottom - anchors.topMargin: visible ? UM.Theme.getSize("sidebar_margin").height : 0 - } - - onCurrentModeIndexChanged: - { - UM.Preferences.setValue("cura/active_mode", currentModeIndex); - if(modesListModel.count > base.currentModeIndex) - { - sidebarContents.replace(modesListModel.get(base.currentModeIndex).item, { "replace": true }) - } - } - - Label - { - id: settingsModeLabel - text: !hideSettings ? catalog.i18nc("@label:listbox", "Print Setup") : catalog.i18nc("@label:listbox", "Print Setup disabled\nG-code files cannot be modified") - renderType: Text.NativeRendering - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - anchors.top: hideSettings ? machineSelection.bottom : headerSeparator.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - width: Math.round(parent.width * 0.45) - font: UM.Theme.getFont("large") - color: UM.Theme.getColor("text") - visible: !hideView - } - - // Settings mode selection toggle - Rectangle - { - id: settingsModeSelection - color: "transparent" - - width: Math.round(parent.width * 0.55) - height: UM.Theme.getSize("sidebar_header_mode_toggle").height - - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - anchors.top: - { - if (settingsModeLabel.contentWidth >= parent.width - width - UM.Theme.getSize("sidebar_margin").width * 2) - { - return settingsModeLabel.bottom; - } - else - { - return headerSeparator.bottom; - } - } - - visible: !hideSettings && !hideView - - Component - { - id: wizardDelegate - - Button - { - id: control - - height: settingsModeSelection.height - width: Math.round(parent.width / 2) - - anchors.left: parent.left - anchors.leftMargin: model.index * Math.round(settingsModeSelection.width / 2) - anchors.verticalCenter: parent.verticalCenter - - ButtonGroup.group: modeMenuGroup - - checkable: true - checked: base.currentModeIndex == index - onClicked: base.currentModeIndex = index - - onHoveredChanged: - { - if (hovered) - { - tooltipDelayTimer.item = settingsModeSelection - tooltipDelayTimer.text = model.tooltipText - tooltipDelayTimer.start() - } - else - { - tooltipDelayTimer.stop() - base.hideTooltip() - } - } - - background: Rectangle - { - border.width: control.checked ? UM.Theme.getSize("default_lining").width * 2 : UM.Theme.getSize("default_lining").width - border.color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_border") : control.hovered ? UM.Theme.getColor("action_button_hovered_border"): UM.Theme.getColor("action_button_border") - - // for some reason, QtQuick decided to use the color of the background property as text color for the contentItem, so here it is - color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active") : control.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button") - } - - contentItem: Label - { - text: model.text - font: UM.Theme.getFont("default") - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - renderType: Text.NativeRendering - elide: Text.ElideRight - color: - { - if(control.pressed) - { - return UM.Theme.getColor("action_button_active_text"); - } - else if(control.hovered) - { - return UM.Theme.getColor("action_button_hovered_text"); - } - return UM.Theme.getColor("action_button_text"); - } - } - } - } - - ButtonGroup - { - id: modeMenuGroup - } - - ListView - { - id: modesList - model: modesListModel - delegate: wizardDelegate - anchors.top: parent.top - anchors.left: parent.left - width: parent.width - } - } - - StackView - { - id: sidebarContents - - anchors.bottom: footerSeparator.top - anchors.top: settingsModeSelection.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - anchors.left: base.left - anchors.right: base.right - visible: !hideSettings - - replaceEnter: Transition { - PropertyAnimation { - property: "opacity" - from: 0 - to:1 - duration: 100 - } - } - - replaceExit: Transition { - PropertyAnimation { - property: "opacity" - from: 1 - to:0 - duration: 100 - } - } - } - - Loader - { - anchors.bottom: footerSeparator.top - anchors.top: headerSeparator.bottom - anchors.left: base.left - anchors.right: base.right - source: "SidebarContents.qml" - } - - Rectangle - { - id: footerSeparator - width: parent.width - height: UM.Theme.getSize("sidebar_lining").height - color: UM.Theme.getColor("sidebar_lining") - anchors.bottom: printSpecs.top - anchors.bottomMargin: Math.round(UM.Theme.getSize("sidebar_margin").height * 2 + UM.Theme.getSize("progressbar").height + UM.Theme.getFont("default_bold").pixelSize) - } - - Item - { - id: printSpecs - anchors.left: parent.left - anchors.bottom: parent.bottom - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - anchors.bottomMargin: UM.Theme.getSize("sidebar_margin").height - height: timeDetails.height + costSpec.height - width: base.width - (saveButton.buttonRowWidth + UM.Theme.getSize("sidebar_margin").width) - clip: true - - Label - { - id: timeDetails - anchors.left: parent.left - anchors.bottom: costSpec.top - font: UM.Theme.getFont("large") - color: UM.Theme.getColor("text_subtext") - text: (!base.printDuration || !base.printDuration.valid) ? catalog.i18nc("@label Hours and minutes", "00h 00min") : base.printDuration.getDisplayString(UM.DurationFormat.Short) - renderType: Text.NativeRendering - - MouseArea - { - id: timeDetailsMouseArea - anchors.fill: parent - hoverEnabled: true - - onEntered: - { - if(base.printDuration.valid && !base.printDuration.isTotalDurationZero) - { - // All the time information for the different features is achieved - var print_time = PrintInformation.getFeaturePrintTimes(); - var total_seconds = parseInt(base.printDuration.getDisplayString(UM.DurationFormat.Seconds)) - - // A message is created and displayed when the user hover the time label - var tooltip_html = "%1
".arg(catalog.i18nc("@tooltip", "Time specification")); - for(var feature in print_time) - { - if(!print_time[feature].isTotalDurationZero) - { - tooltip_html += "" + - "".arg(print_time[feature].getDisplayString(UM.DurationFormat.ISO8601).slice(0,-3)) + - "".arg(Math.round(100 * parseInt(print_time[feature].getDisplayString(UM.DurationFormat.Seconds)) / total_seconds)) + - ""; - } - } - tooltip_html += "
" + feature + ":  %1  %1%
"; - - base.showTooltip(parent, Qt.point(-UM.Theme.getSize("sidebar_margin").width, 0), tooltip_html); - } - } - onExited: - { - base.hideTooltip(); - } - } - } - - Label - { - function formatRow(items) - { - var row_html = ""; - for(var item = 0; item < items.length; item++) - { - if (item == 0) - { - row_html += "%1".arg(items[item]); - } - else - { - row_html += "  %1".arg(items[item]); - } - } - row_html += ""; - return row_html; - } - - function getSpecsData() - { - var lengths = []; - var total_length = 0; - var weights = []; - var total_weight = 0; - var costs = []; - var total_cost = 0; - var some_costs_known = false; - var names = []; - if(base.printMaterialLengths) - { - for(var index = 0; index < base.printMaterialLengths.length; index++) - { - if(base.printMaterialLengths[index] > 0) - { - names.push(base.printMaterialNames[index]); - lengths.push(base.printMaterialLengths[index].toFixed(2)); - weights.push(String(Math.round(base.printMaterialWeights[index]))); - var cost = base.printMaterialCosts[index] == undefined ? 0 : base.printMaterialCosts[index].toFixed(2); - costs.push(cost); - if(cost > 0) - { - some_costs_known = true; - } - - total_length += base.printMaterialLengths[index]; - total_weight += base.printMaterialWeights[index]; - total_cost += base.printMaterialCosts[index]; - } - } - } - if(lengths.length == 0) - { - lengths = ["0.00"]; - weights = ["0"]; - costs = ["0.00"]; - } - - var tooltip_html = "%1
".arg(catalog.i18nc("@label", "Cost specification")); - for(var index = 0; index < lengths.length; index++) - { - tooltip_html += formatRow([ - "%1:".arg(names[index]), - catalog.i18nc("@label m for meter", "%1m").arg(lengths[index]), - catalog.i18nc("@label g for grams", "%1g").arg(weights[index]), - "%1 %2".arg(UM.Preferences.getValue("cura/currency")).arg(costs[index]), - ]); - } - if(lengths.length > 1) - { - tooltip_html += formatRow([ - catalog.i18nc("@label", "Total:"), - catalog.i18nc("@label m for meter", "%1m").arg(total_length.toFixed(2)), - catalog.i18nc("@label g for grams", "%1g").arg(Math.round(total_weight)), - "%1 %2".arg(UM.Preferences.getValue("cura/currency")).arg(total_cost.toFixed(2)), - ]); - } - tooltip_html += "
"; - tooltipText = tooltip_html; - - return tooltipText - } - - id: costSpec - anchors.left: parent.left - anchors.bottom: parent.bottom - font: UM.Theme.getFont("very_small") - renderType: Text.NativeRendering - color: UM.Theme.getColor("text_subtext") - elide: Text.ElideMiddle - width: parent.width - property string tooltipText - text: - { - var lengths = []; - var weights = []; - var costs = []; - var someCostsKnown = false; - if(base.printMaterialLengths) { - for(var index = 0; index < base.printMaterialLengths.length; index++) - { - if(base.printMaterialLengths[index] > 0) - { - lengths.push(base.printMaterialLengths[index].toFixed(2)); - weights.push(String(Math.round(base.printMaterialWeights[index]))); - var cost = base.printMaterialCosts[index] == undefined ? 0 : base.printMaterialCosts[index].toFixed(2); - costs.push(cost); - if(cost > 0) - { - someCostsKnown = true; - } - } - } - } - if(lengths.length == 0) - { - lengths = ["0.00"]; - weights = ["0"]; - costs = ["0.00"]; - } - var result = lengths.join(" + ") + "m / ~ " + weights.join(" + ") + "g"; - if(someCostsKnown) - { - result += " / ~ " + costs.join(" + ") + " " + UM.Preferences.getValue("cura/currency"); - } - return result; - } - MouseArea - { - id: costSpecMouseArea - anchors.fill: parent - hoverEnabled: true - - onEntered: - { - - if(base.printDuration.valid && !base.printDuration.isTotalDurationZero) - { - var show_data = costSpec.getSpecsData() - - base.showTooltip(parent, Qt.point(-UM.Theme.getSize("sidebar_margin").width, 0), show_data); - } - } - onExited: - { - base.hideTooltip(); - } - } - } - } - - // SaveButton is actually the bottom footer panel. - SaveButton - { - id: saveButton - implicitWidth: base.width - anchors.top: footerSeparator.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - anchors.bottom: parent.bottom - } - - SidebarTooltip - { - id: tooltip - } - - // Setting mode: Recommended or Custom - ListModel - { - id: modesListModel - } - - SidebarSimple - { - id: sidebarSimple - visible: false - - onShowTooltip: base.showTooltip(item, location, text) - onHideTooltip: base.hideTooltip() - } - - SidebarAdvanced - { - id: sidebarAdvanced - visible: false - - onShowTooltip: base.showTooltip(item, location, text) - onHideTooltip: base.hideTooltip() - } - - Component.onCompleted: - { - modesListModel.append({ - text: catalog.i18nc("@title:tab", "Recommended"), - tooltipText: catalog.i18nc("@tooltip", "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality."), - item: sidebarSimple - }) - modesListModel.append({ - text: catalog.i18nc("@title:tab", "Custom"), - tooltipText: catalog.i18nc("@tooltip", "Custom Print Setup

Print with finegrained control over every last bit of the slicing process."), - item: sidebarAdvanced - }) - - var index = Math.round(UM.Preferences.getValue("cura/active_mode")) - - if(index != null && !isNaN(index)) - { - currentModeIndex = index; - } - else - { - currentModeIndex = 0; - } - } - - UM.SettingPropertyProvider - { - id: machineExtruderCount - - containerStack: Cura.MachineManager.activeMachine - key: "machine_extruder_count" - watchedProperties: [ "value" ] - storeIndex: 0 - } - - UM.SettingPropertyProvider - { - id: machineHeatedBed - - containerStack: Cura.MachineManager.activeMachine - key: "machine_heated_bed" - watchedProperties: [ "value" ] - storeIndex: 0 - } -} diff --git a/resources/qml/PrimaryButton.qml b/resources/qml/PrimaryButton.qml new file mode 100644 index 0000000000..fca63d2cdb --- /dev/null +++ b/resources/qml/PrimaryButton.qml @@ -0,0 +1,20 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 + +import UM 1.4 as UM +import Cura 1.1 as Cura + + +Cura.ActionButton +{ + shadowEnabled: true + shadowColor: enabled ? UM.Theme.getColor("primary_button_shadow"): UM.Theme.getColor("action_button_disabled_shadow") + color: UM.Theme.getColor("primary_button") + textColor: UM.Theme.getColor("primary_button_text") + outlineColor: "transparent" + disabledColor: UM.Theme.getColor("action_button_disabled") + textDisabledColor: UM.Theme.getColor("action_button_disabled_text") + hoverColor: UM.Theme.getColor("primary_button_hover") +} \ No newline at end of file diff --git a/resources/qml/PrintMonitor.qml b/resources/qml/PrintMonitor.qml index 12e95d1e89..d44acf0adb 100644 --- a/resources/qml/PrintMonitor.qml +++ b/resources/qml/PrintMonitor.qml @@ -11,136 +11,176 @@ import Cura 1.0 as Cura import "PrinterOutput" -Column + +Item { - id: printMonitor + id: base + UM.I18nCatalog { id: catalog; name: "cura"} + + function showTooltip(item, position, text) + { + tooltip.text = text; + position = item.mapToItem(base, position.x - UM.Theme.getSize("default_arrow").width, position.y); + tooltip.show(position); + } + + function hideTooltip() + { + tooltip.hide(); + } + + function strPadLeft(string, pad, length) { + return (new Array(length + 1).join(pad) + string).slice(-length); + } + + function getPrettyTime(time) + { + var hours = Math.floor(time / 3600) + time -= hours * 3600 + var minutes = Math.floor(time / 60); + time -= minutes * 60 + var seconds = Math.floor(time); + + var finalTime = strPadLeft(hours, "0", 2) + ":" + strPadLeft(minutes, "0", 2) + ":" + strPadLeft(seconds, "0", 2); + return finalTime; + } + property var connectedDevice: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null property var activePrinter: connectedDevice != null ? connectedDevice.activePrinter : null property var activePrintJob: activePrinter != null ? activePrinter.activePrintJob: null - Cura.ExtrudersModel + PrintSetupTooltip { - id: extrudersModel - simpleNames: true + id: tooltip } - OutputDeviceHeader + Column { - outputDevice: connectedDevice - } + id: printMonitor - Rectangle - { - color: UM.Theme.getColor("sidebar_lining") - width: parent.width - height: childrenRect.height + anchors.fill: parent - Flow + property var extrudersModel: CuraApplication.getExtrudersModel() + + OutputDeviceHeader { - id: extrudersGrid - spacing: UM.Theme.getSize("sidebar_lining_thin").width + outputDevice: connectedDevice + } + + Rectangle + { + color: UM.Theme.getColor("wide_lining") width: parent.width + height: childrenRect.height - Repeater + Flow { - id: extrudersRepeater - model: activePrinter != null ? activePrinter.extruders : null + id: extrudersGrid + spacing: UM.Theme.getSize("thick_lining").width + width: parent.width - ExtruderBox + Repeater { - color: UM.Theme.getColor("sidebar") - width: index == machineExtruderCount.properties.value - 1 && index % 2 == 0 ? extrudersGrid.width : Math.round(extrudersGrid.width / 2 - UM.Theme.getSize("sidebar_lining_thin").width / 2) - extruderModel: modelData + id: extrudersRepeater + model: activePrinter != null ? activePrinter.extruders : null + + ExtruderBox + { + color: UM.Theme.getColor("main_background") + width: index == machineExtruderCount.properties.value - 1 && index % 2 == 0 ? extrudersGrid.width : Math.round(extrudersGrid.width / 2 - UM.Theme.getSize("thick_lining").width / 2) + extruderModel: modelData + } } } } - } - Rectangle - { - color: UM.Theme.getColor("sidebar_lining") - width: parent.width - height: UM.Theme.getSize("sidebar_lining_thin").width - } - - HeatedBedBox - { - visible: { - if(activePrinter != null && activePrinter.bedTemperature != -1) - { - return true - } - return false - } - printerModel: activePrinter - } - - UM.SettingPropertyProvider - { - id: bedTemperature - containerStack: Cura.MachineManager.activeMachine - key: "material_bed_temperature" - watchedProperties: ["value", "minimum_value", "maximum_value", "resolve"] - storeIndex: 0 - - property var resolve: Cura.MachineManager.activeStack != Cura.MachineManager.activeMachine ? properties.resolve : "None" - } - - UM.SettingPropertyProvider - { - id: machineExtruderCount - containerStack: Cura.MachineManager.activeMachine - key: "machine_extruder_count" - watchedProperties: ["value"] - } - - ManualPrinterControl - { - printerModel: activePrinter - visible: activePrinter != null ? activePrinter.canControlManually : false - } - - - MonitorSection - { - label: catalog.i18nc("@label", "Active print") - width: base.width - visible: activePrinter != null - } - - - MonitorItem - { - label: catalog.i18nc("@label", "Job Name") - value: activePrintJob != null ? activePrintJob.name : "" - width: base.width - visible: activePrinter != null - } - - MonitorItem - { - label: catalog.i18nc("@label", "Printing Time") - value: activePrintJob != null ? getPrettyTime(activePrintJob.timeTotal) : "" - width: base.width - visible: activePrinter != null - } - - MonitorItem - { - label: catalog.i18nc("@label", "Estimated time left") - value: activePrintJob != null ? getPrettyTime(activePrintJob.timeTotal - activePrintJob.timeElapsed) : "" - visible: + Rectangle { - if(activePrintJob == null) + color: UM.Theme.getColor("wide_lining") + width: parent.width + height: UM.Theme.getSize("thick_lining").width + } + + HeatedBedBox + { + visible: { + if(activePrinter != null && activePrinter.bedTemperature != -1) + { + return true + } return false } - - return (activePrintJob.state == "printing" || - activePrintJob.state == "resuming" || - activePrintJob.state == "pausing" || - activePrintJob.state == "paused") + printerModel: activePrinter + } + + UM.SettingPropertyProvider + { + id: bedTemperature + containerStack: Cura.MachineManager.activeMachine + key: "material_bed_temperature" + watchedProperties: ["value", "minimum_value", "maximum_value", "resolve"] + storeIndex: 0 + + property var resolve: Cura.MachineManager.activeStack != Cura.MachineManager.activeMachine ? properties.resolve : "None" + } + + UM.SettingPropertyProvider + { + id: machineExtruderCount + containerStack: Cura.MachineManager.activeMachine + key: "machine_extruder_count" + watchedProperties: ["value"] + } + + ManualPrinterControl + { + printerModel: activePrinter + visible: activePrinter != null ? activePrinter.canControlManually : false + } + + + MonitorSection + { + label: catalog.i18nc("@label", "Active print") + width: base.width + visible: activePrinter != null + } + + + MonitorItem + { + label: catalog.i18nc("@label", "Job Name") + value: activePrintJob != null ? activePrintJob.name : "" + width: base.width + visible: activePrinter != null + } + + MonitorItem + { + label: catalog.i18nc("@label", "Printing Time") + value: activePrintJob != null ? getPrettyTime(activePrintJob.timeTotal) : "" + width: base.width + visible: activePrinter != null + } + + MonitorItem + { + label: catalog.i18nc("@label", "Estimated time left") + value: activePrintJob != null ? getPrettyTime(activePrintJob.timeTotal - activePrintJob.timeElapsed) : "" + visible: + { + if(activePrintJob == null) + { + return false + } + + return (activePrintJob.state == "printing" || + activePrintJob.state == "resuming" || + activePrintJob.state == "pausing" || + activePrintJob.state == "paused") + } + width: base.width } - width: base.width } -} +} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml b/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml new file mode 100644 index 0000000000..98bb5c0405 --- /dev/null +++ b/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml @@ -0,0 +1,131 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.0 + +import UM 1.3 as UM +import Cura 1.0 as Cura + + +Item +{ + id: customPrintSetup + + property real padding: UM.Theme.getSize("default_margin").width + property bool multipleExtruders: extrudersModel.count > 1 + + property var extrudersModel: CuraApplication.getExtrudersModel() + + // Profile selector row + GlobalProfileSelector + { + id: globalProfileRow + anchors + { + top: parent.top + topMargin: parent.padding + left: parent.left + leftMargin: parent.padding + right: parent.right + rightMargin: parent.padding + } + } + + UM.TabRow + { + id: tabBar + + visible: multipleExtruders // The tab row is only visible when there are more than 1 extruder + + anchors + { + top: globalProfileRow.bottom + topMargin: UM.Theme.getSize("default_margin").height + left: parent.left + leftMargin: parent.padding + right: parent.right + rightMargin: parent.padding + } + + Repeater + { + id: repeater + model: extrudersModel + delegate: UM.TabRowButton + { + contentItem: Item + { + Cura.ExtruderIcon + { + anchors.horizontalCenter: parent.horizontalCenter + materialColor: model.color + extruderEnabled: model.enabled + } + } + onClicked: + { + Cura.ExtruderManager.setActiveExtruderIndex(tabBar.currentIndex) + } + } + } + + //When active extruder changes for some other reason, switch tabs. + //Don't directly link currentIndex to Cura.ExtruderManager.activeExtruderIndex! + //This causes a segfault in Qt 5.11. Something with VisualItemModel removing index -1. We have to use setCurrentIndex instead. + Connections + { + target: Cura.ExtruderManager + onActiveExtruderChanged: + { + tabBar.setCurrentIndex(Cura.ExtruderManager.activeExtruderIndex); + } + } + + //When the model of the extruders is rebuilt, the list of extruders is briefly emptied and rebuilt. + //This causes the currentIndex of the tab to be in an invalid position which resets it to 0. + //Therefore we need to change it back to what it was: The active extruder index. + Connections + { + target: repeater.model + onModelChanged: + { + tabBar.setCurrentIndex(Cura.ExtruderManager.activeExtruderIndex) + } + } + } + + Rectangle + { + anchors + { + top: tabBar.visible ? tabBar.bottom : globalProfileRow.bottom + topMargin: -UM.Theme.getSize("default_lining").width + left: parent.left + leftMargin: parent.padding + right: parent.right + rightMargin: parent.padding + bottom: parent.bottom + } + z: tabBar.z - 1 + // Don't show the border when only one extruder + + border.color: tabBar.visible ? UM.Theme.getColor("lining") : "transparent" + border.width: UM.Theme.getSize("default_lining").width + + color: UM.Theme.getColor("main_background") + Cura.SettingView + { + anchors + { + fill: parent + topMargin: UM.Theme.getSize("default_margin").height + leftMargin: UM.Theme.getSize("default_margin").width + // Small space for the scrollbar + rightMargin: UM.Theme.getSize("narrow_margin").width + // Compensate for the negative margin in the parent + bottomMargin: UM.Theme.getSize("default_lining").width + } + } + } +} diff --git a/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml b/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml new file mode 100644 index 0000000000..32c07a52a6 --- /dev/null +++ b/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml @@ -0,0 +1,100 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 1.1 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Layouts 1.2 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +Item +{ + id: globalProfileRow + height: childrenRect.height + + Label + { + id: globalProfileLabel + anchors + { + top: parent.top + bottom: parent.bottom + left: parent.left + right: globalProfileSelection.left + } + text: catalog.i18nc("@label", "Profile") + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter + } + + ToolButton + { + id: globalProfileSelection + + text: generateActiveQualityText() + width: UM.Theme.getSize("print_setup_big_item").width + height: UM.Theme.getSize("print_setup_big_item").height + anchors + { + top: parent.top + right: parent.right + } + tooltip: Cura.MachineManager.activeQualityOrQualityChangesName + style: UM.Theme.styles.print_setup_header_button + activeFocusOnPress: true + menu: Cura.ProfileMenu { } + + function generateActiveQualityText() + { + var result = Cura.MachineManager.activeQualityOrQualityChangesName + if (Cura.MachineManager.isActiveQualityExperimental) + { + result += " (Experimental)" + } + + if (Cura.MachineManager.isActiveQualitySupported) + { + if (Cura.MachineManager.activeQualityLayerHeight > 0) + { + result += " " + result += " - " + result += Cura.MachineManager.activeQualityLayerHeight + "mm" + result += "" + } + } + + return result + } + + UM.SimpleButton + { + id: customisedSettings + + visible: Cura.MachineManager.hasUserSettings + width: UM.Theme.getSize("print_setup_icon").width + height: UM.Theme.getSize("print_setup_icon").height + + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: Math.round(UM.Theme.getSize("setting_preferences_button_margin").width - UM.Theme.getSize("thick_margin").width) + + color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button"); + iconSource: UM.Theme.getIcon("star") + + onClicked: + { + forceActiveFocus(); + Cura.Actions.manageProfiles.trigger() + } + onEntered: + { + var content = catalog.i18nc("@tooltip","Some setting/override values are different from the values stored in the profile.\n\nClick to open the profile manager.") + base.showTooltip(globalProfileRow, Qt.point(-UM.Theme.getSize("default_margin").width, 0), content) + } + onExited: base.hideTooltip() + } + } +} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/PrintSetupSelector.qml b/resources/qml/PrintSetupSelector/PrintSetupSelector.qml new file mode 100644 index 0000000000..48ac07679d --- /dev/null +++ b/resources/qml/PrintSetupSelector/PrintSetupSelector.qml @@ -0,0 +1,35 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.0 + +import UM 1.3 as UM +import Cura 1.0 as Cura + +Cura.ExpandableComponent +{ + id: printSetupSelector + + property bool preSlicedData: PrintInformation.preSliced + + contentPadding: UM.Theme.getSize("default_lining").width + contentHeaderTitle: catalog.i18nc("@label", "Print settings") + enabled: !preSlicedData + disabledText: catalog.i18nc("@label shown when we load a Gcode file", "Print setup disabled. G code file can not be modified.") + + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + headerItem: PrintSetupSelectorHeader {} + + property var extrudersModel: CuraApplication.getExtrudersModel() + + contentItem: PrintSetupSelectorContents {} + + onExpandedChanged: UM.Preferences.setValue("view/settings_visible", expanded) + Component.onCompleted: expanded = UM.Preferences.getValue("view/settings_visible") +} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml b/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml new file mode 100644 index 0000000000..35c5f008b6 --- /dev/null +++ b/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml @@ -0,0 +1,181 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.0 as Cura + +import "Recommended" +import "Custom" + +Item +{ + id: content + + width: UM.Theme.getSize("print_setup_widget").width - 2 * UM.Theme.getSize("default_margin").width + height: contents.height + buttonRow.height + + enum Mode + { + Recommended = 0, + Custom = 1 + } + + // Set the current mode index to the value that is stored in the preferences or Recommended mode otherwise. + property int currentModeIndex: + { + var index = Math.round(UM.Preferences.getValue("cura/active_mode")) + + if (index != null && !isNaN(index)) + { + return index + } + return PrintSetupSelectorContents.Mode.Recommended + } + onCurrentModeIndexChanged: UM.Preferences.setValue("cura/active_mode", currentModeIndex) + + Item + { + id: contents + // Use the visible property instead of checking the currentModeIndex. That creates a binding that + // evaluates the new height every time the visible property changes. + height: recommendedPrintSetup.visible ? recommendedPrintSetup.height : customPrintSetup.height + + anchors + { + top: parent.top + left: parent.left + right: parent.right + } + + RecommendedPrintSetup + { + id: recommendedPrintSetup + anchors + { + left: parent.left + right: parent.right + top: parent.top + } + visible: currentModeIndex == PrintSetupSelectorContents.Mode.Recommended + } + + CustomPrintSetup + { + id: customPrintSetup + anchors + { + left: parent.left + right: parent.right + top: parent.top + } + height: UM.Preferences.getValue("view/settings_list_height") - UM.Theme.getSize("default_margin").height + Connections + { + target: UM.Preferences + onPreferenceChanged: + { + customPrintSetup.height = UM.Preferences.getValue("view/settings_list_height"); + } + } + visible: currentModeIndex == PrintSetupSelectorContents.Mode.Custom + } + } + + Rectangle + { + id: buttonsSeparator + + // The buttonsSeparator is inside the contents. This is to avoid a double line in the bottom + anchors.bottom: contents.bottom + width: parent.width + height: UM.Theme.getSize("default_lining").height + color: UM.Theme.getColor("lining") + } + + Item + { + id: buttonRow + property real padding: UM.Theme.getSize("default_margin").width + height: childrenRect.height + 2 * padding + + anchors + { + bottom: parent.bottom + left: parent.left + right: parent.right + } + + Cura.SecondaryButton + { + id: recommendedButton + anchors.top: parent.top + anchors.left: parent.left + anchors.margins: parent.padding + leftPadding: UM.Theme.getSize("default_margin").width + rightPadding: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@button", "Recommended") + iconSource: UM.Theme.getIcon("arrow_left") + visible: currentModeIndex == PrintSetupSelectorContents.Mode.Custom + onClicked: currentModeIndex = PrintSetupSelectorContents.Mode.Recommended + } + + Cura.SecondaryButton + { + anchors.top: parent.top + anchors.right: parent.right + anchors.margins: UM.Theme.getSize("default_margin").width + leftPadding: UM.Theme.getSize("default_margin").width + rightPadding: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@button", "Custom") + iconSource: UM.Theme.getIcon("arrow_right") + isIconOnRightSide: true + visible: currentModeIndex == PrintSetupSelectorContents.Mode.Recommended + onClicked: currentModeIndex = PrintSetupSelectorContents.Mode.Custom + } + + //Invisible area at the bottom with which you can resize the panel. + MouseArea + { + anchors + { + left: parent.left + right: parent.right + bottom: parent.bottom + top: recommendedButton.bottom + topMargin: UM.Theme.getSize("default_lining").height + } + cursorShape: Qt.SplitVCursor + visible: currentModeIndex == PrintSetupSelectorContents.Mode.Custom + drag + { + target: parent + axis: Drag.YAxis + } + onMouseYChanged: + { + if(drag.active) + { + // position of mouse relative to dropdown align vertical centre of mouse area to cursor + // v------------------------------v v------------v + var h = mouseY + buttonRow.y + content.y - height / 2 | 0; + if(h < 200 * screenScaleFactor) //Enforce a minimum size. + { + h = 200 * screenScaleFactor; + } + + //Absolute mouse Y position in the window, to prevent it from going outside the window. + var mouse_absolute_y = mapToGlobal(mouseX, mouseY).y - UM.Preferences.getValue("general/window_top"); + if(mouse_absolute_y > base.height) + { + h -= mouse_absolute_y - base.height; + } + + UM.Preferences.setValue("view/settings_list_height", h); + } + } + } + } +} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml b/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml new file mode 100644 index 0000000000..5ae9488cd3 --- /dev/null +++ b/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml @@ -0,0 +1,87 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 + +import UM 1.3 as UM +import Cura 1.0 as Cura + +RowLayout +{ + property string enabledText: catalog.i18nc("@label:Should be short", "On") + property string disabledText: catalog.i18nc("@label:Should be short", "Off") + + Cura.IconWithText + { + source: UM.Theme.getIcon("category_layer_height") + text: + { + if (Cura.MachineManager.activeStack) + { + var text = Cura.MachineManager.activeQualityOrQualityChangesName + if (!Cura.MachineManager.hasNotSupportedQuality) + { + text += " " + layerHeight.properties.value + "mm" + } + return text + } + return "" + } + font: UM.Theme.getFont("medium") + + UM.SettingPropertyProvider + { + id: layerHeight + containerStack: Cura.MachineManager.activeStack + key: "layer_height" + watchedProperties: ["value"] + } + } + + Cura.IconWithText + { + source: UM.Theme.getIcon("category_infill") + text: Cura.MachineManager.activeStack ? parseInt(infillDensity.properties.value) + "%" : "0%" + font: UM.Theme.getFont("medium") + + UM.SettingPropertyProvider + { + id: infillDensity + containerStack: Cura.MachineManager.activeStack + key: "infill_sparse_density" + watchedProperties: ["value"] + } + } + + Cura.IconWithText + { + source: UM.Theme.getIcon("category_support") + text: supportEnabled.properties.value == "True" ? enabledText : disabledText + font: UM.Theme.getFont("medium") + + UM.SettingPropertyProvider + { + id: supportEnabled + containerStack: Cura.MachineManager.activeMachine + key: "support_enable" + watchedProperties: ["value"] + } + } + + Cura.IconWithText + { + source: UM.Theme.getIcon("category_adhesion") + text: platformAdhesionType.properties.value != "skirt" && platformAdhesionType.properties.value != "none" ? enabledText : disabledText + font: UM.Theme.getFont("medium") + + UM.SettingPropertyProvider + { + id: platformAdhesionType + containerStack: Cura.MachineManager.activeMachine + key: "adhesion_type" + watchedProperties: [ "value"] + } + } +} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml new file mode 100644 index 0000000000..941199707c --- /dev/null +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml @@ -0,0 +1,101 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +import UM 1.2 as UM +import Cura 1.0 as Cura + + +// +// Adhesion +// +Item +{ + id: enableAdhesionRow + height: childrenRect.height + + property real labelColumnWidth: Math.round(width / 3) + + Cura.IconWithText + { + id: enableAdhesionRowTitle + anchors.top: parent.top + anchors.left: parent.left + source: UM.Theme.getIcon("category_adhesion") + text: catalog.i18nc("@label", "Adhesion") + font: UM.Theme.getFont("medium") + width: labelColumnWidth + } + + Item + { + id: enableAdhesionContainer + height: enableAdhesionCheckBox.height + + anchors + { + left: enableAdhesionRowTitle.right + right: parent.right + verticalCenter: enableAdhesionRowTitle.verticalCenter + } + + CheckBox + { + id: enableAdhesionCheckBox + anchors.verticalCenter: parent.verticalCenter + + property alias _hovered: adhesionMouseArea.containsMouse + + //: Setting enable printing build-plate adhesion helper checkbox + style: UM.Theme.styles.checkbox + enabled: recommendedPrintSetup.settingsEnabled + + visible: platformAdhesionType.properties.enabled == "True" + checked: platformAdhesionType.properties.value != "skirt" && platformAdhesionType.properties.value != "none" + + MouseArea + { + id: adhesionMouseArea + anchors.fill: parent + hoverEnabled: true + + onClicked: + { + var adhesionType = "skirt" + if (!parent.checked) + { + // Remove the "user" setting to see if the rest of the stack prescribes a brim or a raft + platformAdhesionType.removeFromContainer(0) + adhesionType = platformAdhesionType.properties.value + if(adhesionType == "skirt" || adhesionType == "none") + { + // If the rest of the stack doesn't prescribe an adhesion-type, default to a brim + adhesionType = "brim" + } + } + platformAdhesionType.setPropertyValue("value", adhesionType) + } + + onEntered: + { + base.showTooltip(enableAdhesionCheckBox, Qt.point(-enableAdhesionContainer.x - UM.Theme.getSize("thick_margin").width, 0), + catalog.i18nc("@label", "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards.")); + } + onExited: base.hideTooltip() + } + } + } + + UM.SettingPropertyProvider + { + id: platformAdhesionType + containerStack: Cura.MachineManager.activeMachine + removeUnusedValue: false //Doesn't work with settings that are resolved. + key: "adhesion_type" + watchedProperties: [ "value", "enabled" ] + storeIndex: 0 + } +} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml new file mode 100644 index 0000000000..19f199fea6 --- /dev/null +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml @@ -0,0 +1,255 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +import UM 1.2 as UM +import Cura 1.0 as Cura + + +// +// Infill +// +Item +{ + id: infillRow + height: childrenRect.height + + property real labelColumnWidth: Math.round(width / 3) + + // Create a binding to update the icon when the infill density changes + Binding + { + target: infillRowTitle + property: "source" + value: + { + var density = parseInt(infillDensity.properties.value) + if (parseInt(infillSteps.properties.value) != 0) + { + return UM.Theme.getIcon("gradual") + } + if (density <= 0) + { + return UM.Theme.getIcon("hollow") + } + if (density < 40) + { + return UM.Theme.getIcon("sparse") + } + if (density < 90) + { + return UM.Theme.getIcon("dense") + } + return UM.Theme.getIcon("solid") + } + } + + // We use a binding to make sure that after manually setting infillSlider.value it is still bound to the property provider + Binding + { + target: infillSlider + property: "value" + value: parseInt(infillDensity.properties.value) + } + + // Here are the elements that are shown in the left column + Cura.IconWithText + { + id: infillRowTitle + anchors.top: parent.top + anchors.left: parent.left + source: UM.Theme.getIcon("category_infill") + text: catalog.i18nc("@label", "Infill") + " (%)" + font: UM.Theme.getFont("medium") + width: labelColumnWidth + } + + Item + { + id: infillSliderContainer + height: childrenRect.height + + anchors + { + left: infillRowTitle.right + right: parent.right + verticalCenter: infillRowTitle.verticalCenter + } + + Slider + { + id: infillSlider + + width: parent.width + height: UM.Theme.getSize("print_setup_slider_handle").height // The handle is the widest element of the slider + + minimumValue: 0 + maximumValue: 100 + stepSize: 1 + tickmarksEnabled: true + + // disable slider when gradual support is enabled + enabled: parseInt(infillSteps.properties.value) == 0 + + // set initial value from stack + value: parseInt(infillDensity.properties.value) + + style: SliderStyle + { + //Draw line + groove: Item + { + Rectangle + { + height: UM.Theme.getSize("print_setup_slider_groove").height + width: control.width - UM.Theme.getSize("print_setup_slider_handle").width + anchors.horizontalCenter: parent.horizontalCenter + anchors.verticalCenter: parent.verticalCenter + color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + } + } + + handle: Rectangle + { + id: handleButton + color: control.enabled ? UM.Theme.getColor("primary") : UM.Theme.getColor("quality_slider_unavailable") + implicitWidth: UM.Theme.getSize("print_setup_slider_handle").width + implicitHeight: implicitWidth + radius: Math.round(implicitWidth / 2) + } + + tickmarks: Repeater + { + id: repeater + model: control.maximumValue / control.stepSize + 1 + + Rectangle + { + color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + implicitWidth: UM.Theme.getSize("print_setup_slider_tickmarks").width + implicitHeight: UM.Theme.getSize("print_setup_slider_tickmarks").height + anchors.verticalCenter: parent.verticalCenter + + // Do not use Math.round otherwise the tickmarks won't be aligned + x: ((styleData.handleWidth / 2) - (implicitWidth / 2) + (index * ((repeater.width - styleData.handleWidth) / (repeater.count-1)))) + radius: Math.round(implicitWidth / 2) + visible: (index % 10) == 0 // Only show steps of 10% + + Label + { + text: index + font: UM.Theme.getFont("default") + visible: (index % 20) == 0 // Only show steps of 20% + anchors.horizontalCenter: parent.horizontalCenter + y: UM.Theme.getSize("thin_margin").height + renderType: Text.NativeRendering + color: UM.Theme.getColor("quality_slider_available") + } + } + } + } + + onValueChanged: + { + // Don't round the value if it's already the same + if (parseInt(infillDensity.properties.value) == infillSlider.value) + { + return + } + + // Round the slider value to the nearest multiple of 10 (simulate step size of 10) + var roundedSliderValue = Math.round(infillSlider.value / 10) * 10 + + // Update the slider value to represent the rounded value + infillSlider.value = roundedSliderValue + + // Update value only if the Recomended mode is Active, + // Otherwise if I change the value in the Custom mode the Recomended view will try to repeat + // same operation + var active_mode = UM.Preferences.getValue("cura/active_mode") + + if (active_mode == 0 || active_mode == "simple") + { + Cura.MachineManager.setSettingForAllExtruders("infill_sparse_density", "value", roundedSliderValue) + Cura.MachineManager.resetSettingForAllExtruders("infill_line_distance") + } + } + } + } + + // Gradual Support Infill Checkbox + CheckBox + { + id: enableGradualInfillCheckBox + property alias _hovered: enableGradualInfillMouseArea.containsMouse + + anchors.top: infillSliderContainer.bottom + anchors.topMargin: UM.Theme.getSize("wide_margin").height + anchors.left: infillSliderContainer.left + + text: catalog.i18nc("@label", "Gradual infill") + style: UM.Theme.styles.checkbox + enabled: recommendedPrintSetup.settingsEnabled + visible: infillSteps.properties.enabled == "True" + checked: parseInt(infillSteps.properties.value) > 0 + + MouseArea + { + id: enableGradualInfillMouseArea + + anchors.fill: parent + hoverEnabled: true + enabled: true + + property var previousInfillDensity: parseInt(infillDensity.properties.value) + + onClicked: + { + // Set to 90% only when enabling gradual infill + var newInfillDensity; + if (parseInt(infillSteps.properties.value) == 0) + { + previousInfillDensity = parseInt(infillDensity.properties.value) + newInfillDensity = 90 + } else { + newInfillDensity = previousInfillDensity + } + Cura.MachineManager.setSettingForAllExtruders("infill_sparse_density", "value", String(newInfillDensity)) + + var infill_steps_value = 0 + if (parseInt(infillSteps.properties.value) == 0) + { + infill_steps_value = 5 + } + + Cura.MachineManager.setSettingForAllExtruders("gradual_infill_steps", "value", infill_steps_value) + } + + onEntered: base.showTooltip(enableGradualInfillCheckBox, Qt.point(-infillSliderContainer.x - UM.Theme.getSize("thick_margin").width, 0), + catalog.i18nc("@label", "Gradual infill will gradually increase the amount of infill towards the top.")) + + onExited: base.hideTooltip() + } + } + + UM.SettingPropertyProvider + { + id: infillDensity + containerStackId: Cura.MachineManager.activeStackId + key: "infill_sparse_density" + watchedProperties: [ "value" ] + storeIndex: 0 + } + + UM.SettingPropertyProvider + { + id: infillSteps + containerStackId: Cura.MachineManager.activeStackId + key: "gradual_infill_steps" + watchedProperties: ["value", "enabled"] + storeIndex: 0 + } +} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml new file mode 100644 index 0000000000..6885f8c041 --- /dev/null +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml @@ -0,0 +1,81 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +Item +{ + id: recommendedPrintSetup + + height: childrenRect.height + 2 * padding + + property Action configureSettings + + property bool settingsEnabled: Cura.ExtruderManager.activeExtruderStackId || extrudersEnabledCount.properties.value == 1 + property real padding: UM.Theme.getSize("thick_margin").width + + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + Column + { + width: parent.width - 2 * parent.padding + spacing: UM.Theme.getSize("wide_margin").height + + anchors + { + left: parent.left + right: parent.right + top: parent.top + margins: parent.padding + } + + // TODO + property real firstColumnWidth: Math.round(width / 3) + + RecommendedQualityProfileSelector + { + width: parent.width + // TODO Create a reusable component with these properties to not define them separately for each component + labelColumnWidth: parent.firstColumnWidth + } + + RecommendedInfillDensitySelector + { + width: parent.width + // TODO Create a reusable component with these properties to not define them separately for each component + labelColumnWidth: parent.firstColumnWidth + } + + RecommendedSupportSelector + { + width: parent.width + // TODO Create a reusable component with these properties to not define them separately for each component + labelColumnWidth: parent.firstColumnWidth + } + + RecommendedAdhesionSelector + { + width: parent.width + // TODO Create a reusable component with these properties to not define them separately for each component + labelColumnWidth: parent.firstColumnWidth + } + } + + UM.SettingPropertyProvider + { + id: extrudersEnabledCount + containerStack: Cura.MachineManager.activeMachine + key: "extruders_enabled_count" + watchedProperties: [ "value" ] + storeIndex: 0 + } +} diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml new file mode 100644 index 0000000000..801e76382b --- /dev/null +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml @@ -0,0 +1,455 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +import UM 1.2 as UM +import Cura 1.0 as Cura + + +// +// Quality profile +// +Item +{ + id: qualityRow + height: childrenRect.height + + property real labelColumnWidth: Math.round(width / 3) + property real settingsColumnWidth: width - labelColumnWidth + + Timer + { + id: qualitySliderChangeTimer + interval: 50 + running: false + repeat: false + onTriggered: + { + var item = Cura.QualityProfilesDropDownMenuModel.getItem(qualitySlider.value); + Cura.MachineManager.activeQualityGroup = item.quality_group; + } + } + + Component.onCompleted: qualityModel.update() + + Connections + { + target: Cura.QualityProfilesDropDownMenuModel + onItemsChanged: qualityModel.update() + } + + Connections { + target: base + onVisibleChanged: + { + // update needs to be called when the widgets are visible, otherwise the step width calculation + // will fail because the width of an invisible item is 0. + if (visible) + { + qualityModel.update(); + } + } + } + + ListModel + { + id: qualityModel + + property var totalTicks: 0 + property var availableTotalTicks: 0 + property var existingQualityProfile: 0 + + property var qualitySliderActiveIndex: 0 + property var qualitySliderStepWidth: 0 + property var qualitySliderAvailableMin: 0 + property var qualitySliderAvailableMax: 0 + property var qualitySliderMarginRight: 0 + + function update () + { + reset() + + var availableMin = -1 + var availableMax = -1 + + for (var i = 0; i < Cura.QualityProfilesDropDownMenuModel.rowCount(); i++) + { + var qualityItem = Cura.QualityProfilesDropDownMenuModel.getItem(i) + + // Add each quality item to the UI quality model + qualityModel.append(qualityItem) + + // Set selected value + if (Cura.MachineManager.activeQualityType == qualityItem.quality_type) + { + // set to -1 when switching to user created profile so all ticks are clickable + if (Cura.MachineManager.hasCustomQuality) + { + qualityModel.qualitySliderActiveIndex = -1 + } + else + { + qualityModel.qualitySliderActiveIndex = i + } + + qualityModel.existingQualityProfile = 1 + } + + // Set min available + if (qualityItem.available && availableMin == -1) + { + availableMin = i + } + + // Set max available + if (qualityItem.available) + { + availableMax = i + } + } + + // Set total available ticks for active slider part + if (availableMin != -1) + { + qualityModel.availableTotalTicks = availableMax - availableMin + 1 + } + + // Calculate slider values + calculateSliderStepWidth(qualityModel.totalTicks) + calculateSliderMargins(availableMin, availableMax, qualityModel.totalTicks) + + qualityModel.qualitySliderAvailableMin = availableMin + qualityModel.qualitySliderAvailableMax = availableMax + } + + function calculateSliderStepWidth (totalTicks) + { + // Do not use Math.round otherwise the tickmarks won't be aligned + qualityModel.qualitySliderStepWidth = totalTicks != 0 ? + ((settingsColumnWidth - UM.Theme.getSize("print_setup_slider_handle").width) / (totalTicks)) : 0 + } + + function calculateSliderMargins (availableMin, availableMax, totalTicks) + { + if (availableMin == -1 || (availableMin == 0 && availableMax == 0)) + { + // Do not use Math.round otherwise the tickmarks won't be aligned + qualityModel.qualitySliderMarginRight = settingsColumnWidth + } + else if (availableMin == availableMax) + { + // Do not use Math.round otherwise the tickmarks won't be aligned + qualityModel.qualitySliderMarginRight = (totalTicks - availableMin) * qualitySliderStepWidth + } + else + { + // Do not use Math.round otherwise the tickmarks won't be aligned + qualityModel.qualitySliderMarginRight = (totalTicks - availableMax) * qualitySliderStepWidth + } + } + + function reset () { + qualityModel.clear() + qualityModel.availableTotalTicks = 0 + qualityModel.existingQualityProfile = 0 + + // check, the ticks count cannot be less than zero + qualityModel.totalTicks = Math.max(0, Cura.QualityProfilesDropDownMenuModel.rowCount() - 1) + } + } + + // Here are the elements that are shown in the left column + Item + { + id: titleRow + width: labelColumnWidth + height: childrenRect.height + + Cura.IconWithText + { + id: qualityRowTitle + source: UM.Theme.getIcon("category_layer_height") + text: catalog.i18nc("@label", "Layer Height") + font: UM.Theme.getFont("medium") + anchors.left: parent.left + anchors.right: customisedSettings.left + } + + UM.SimpleButton + { + id: customisedSettings + + visible: Cura.SimpleModeSettingsManager.isProfileCustomized || Cura.MachineManager.hasCustomQuality + height: visible ? UM.Theme.getSize("print_setup_icon").height : 0 + width: height + anchors + { + right: parent.right + rightMargin: UM.Theme.getSize("default_margin").width + leftMargin: UM.Theme.getSize("default_margin").width + verticalCenter: parent.verticalCenter + } + + color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button") + iconSource: UM.Theme.getIcon("reset") + + onClicked: + { + // if the current profile is user-created, switch to a built-in quality + Cura.MachineManager.resetToUseDefaultQuality() + } + onEntered: + { + var tooltipContent = catalog.i18nc("@tooltip","You have modified some profile settings. If you want to change these go to custom mode.") + base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("thick_margin").width, 0), tooltipContent) + } + onExited: base.hideTooltip() + } + } + + // Show titles for the each quality slider ticks + Item + { + anchors.left: speedSlider.left + anchors.top: speedSlider.bottom + height: childrenRect.height + + Repeater + { + model: qualityModel + + Label + { + anchors.verticalCenter: parent.verticalCenter + anchors.top: parent.top + // The height has to be set manually, otherwise it's not automatically calculated in the repeater + height: UM.Theme.getSize("default_margin").height + color: (Cura.MachineManager.activeMachine != null && Cura.QualityProfilesDropDownMenuModel.getItem(index).available) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + text: + { + var result = "" + if(Cura.MachineManager.activeMachine != null) + { + result = Cura.QualityProfilesDropDownMenuModel.getItem(index).layer_height + + if(result == undefined) + { + result = ""; + } + else + { + result = Number(Math.round(result + "e+2") + "e-2"); //Round to 2 decimals. Javascript makes this difficult... + if (result == undefined || result != result) //Parse failure. + { + result = ""; + } + } + } + return result + } + + x: + { + // Make sure the text aligns correctly with each tick + if (qualityModel.totalTicks == 0) + { + // If there is only one tick, align it centrally + return Math.round(((settingsColumnWidth) - width) / 2) + } + else if (index == 0) + { + return Math.round(settingsColumnWidth / qualityModel.totalTicks) * index + } + else if (index == qualityModel.totalTicks) + { + return Math.round(settingsColumnWidth / qualityModel.totalTicks) * index - width + } + else + { + return Math.round((settingsColumnWidth / qualityModel.totalTicks) * index - (width / 2)) + } + } + font: UM.Theme.getFont("default") + } + } + } + + // Print speed slider + // Two sliders are created, one at the bottom with the unavailable qualities + // and the other at the top with the available quality profiles and so the handle to select them. + Item + { + id: speedSlider + height: childrenRect.height + + anchors + { + left: titleRow.right + right: parent.right + verticalCenter: titleRow.verticalCenter + } + + // Draw unavailable slider + Slider + { + id: unavailableSlider + + width: parent.width + height: qualitySlider.height // Same height as the slider that is on top + updateValueWhileDragging : false + tickmarksEnabled: true + + minimumValue: 0 + // maximumValue must be greater than minimumValue to be able to see the handle. While the value is strictly + // speaking not always correct, it seems to have the correct behavior (switching from 0 available to 1 available) + maximumValue: qualityModel.totalTicks + stepSize: 1 + + style: SliderStyle + { + //Draw Unvailable line + groove: Item + { + Rectangle + { + height: UM.Theme.getSize("print_setup_slider_groove").height + width: control.width - UM.Theme.getSize("print_setup_slider_handle").width + anchors.horizontalCenter: parent.horizontalCenter + anchors.verticalCenter: parent.verticalCenter + color: UM.Theme.getColor("quality_slider_unavailable") + } + } + + handle: Item {} + + tickmarks: Repeater + { + id: qualityRepeater + model: qualityModel.totalTicks > 0 ? qualityModel : 0 + + Rectangle + { + color: Cura.QualityProfilesDropDownMenuModel.getItem(index).available ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + implicitWidth: UM.Theme.getSize("print_setup_slider_tickmarks").width + implicitHeight: UM.Theme.getSize("print_setup_slider_tickmarks").height + anchors.verticalCenter: parent.verticalCenter + + // Do not use Math.round otherwise the tickmarks won't be aligned + x: ((UM.Theme.getSize("print_setup_slider_handle").width / 2) - (implicitWidth / 2) + (qualityModel.qualitySliderStepWidth * index)) + radius: Math.round(implicitWidth / 2) + } + } + } + + // Create a mouse area on top of the unavailable profiles to show a specific tooltip + MouseArea + { + anchors.fill: parent + hoverEnabled: true + enabled: !Cura.MachineManager.hasCustomQuality + onEntered: + { + var tooltipContent = catalog.i18nc("@tooltip", "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile") + base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("thick_margin").width, customisedSettings.height), tooltipContent) + } + onExited: base.hideTooltip() + } + } + + // Draw available slider + Slider + { + id: qualitySlider + + width: qualityModel.qualitySliderStepWidth * (qualityModel.availableTotalTicks - 1) + UM.Theme.getSize("print_setup_slider_handle").width + height: UM.Theme.getSize("print_setup_slider_handle").height // The handle is the widest element of the slider + enabled: qualityModel.totalTicks > 0 && !Cura.SimpleModeSettingsManager.isProfileCustomized + visible: qualityModel.availableTotalTicks > 0 + updateValueWhileDragging : false + + anchors + { + right: parent.right + rightMargin: qualityModel.qualitySliderMarginRight + } + + minimumValue: qualityModel.qualitySliderAvailableMin >= 0 ? qualityModel.qualitySliderAvailableMin : 0 + // maximumValue must be greater than minimumValue to be able to see the handle. While the value is strictly + // speaking not always correct, it seems to have the correct behavior (switching from 0 available to 1 available) + maximumValue: qualityModel.qualitySliderAvailableMax >= 1 ? qualityModel.qualitySliderAvailableMax : 1 + stepSize: 1 + + value: qualityModel.qualitySliderActiveIndex + + style: SliderStyle + { + // Draw Available line + groove: Item + { + Rectangle + { + height: UM.Theme.getSize("print_setup_slider_groove").height + width: control.width - UM.Theme.getSize("print_setup_slider_handle").width + anchors.verticalCenter: parent.verticalCenter + + // Do not use Math.round otherwise the tickmarks won't be aligned + x: UM.Theme.getSize("print_setup_slider_handle").width / 2 + color: UM.Theme.getColor("quality_slider_available") + } + } + + handle: Rectangle + { + id: qualityhandleButton + color: UM.Theme.getColor("primary") + implicitWidth: UM.Theme.getSize("print_setup_slider_handle").width + implicitHeight: implicitWidth + radius: Math.round(implicitWidth / 2) + visible: !Cura.SimpleModeSettingsManager.isProfileCustomized && !Cura.MachineManager.hasCustomQuality && qualityModel.existingQualityProfile + } + } + + onValueChanged: + { + // only change if an active machine is set and the slider is visible at all. + if (Cura.MachineManager.activeMachine != null && visible) + { + // prevent updating during view initializing. Trigger only if the value changed by user + if (qualitySlider.value != qualityModel.qualitySliderActiveIndex && qualityModel.qualitySliderActiveIndex != -1) + { + // start updating with short delay + qualitySliderChangeTimer.start() + } + } + } + + // This mouse area is only used to capture the onHover state and don't propagate it to the unavailable mouse area + MouseArea + { + anchors.fill: parent + hoverEnabled: true + acceptedButtons: Qt.NoButton + enabled: !Cura.MachineManager.hasCustomQuality + } + } + + // This mouse area will only take the mouse events and show a tooltip when the profile in use is + // a user created profile + MouseArea + { + anchors.fill: parent + hoverEnabled: true + visible: Cura.MachineManager.hasCustomQuality + + onEntered: + { + var tooltipContent = catalog.i18nc("@tooltip", "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab") + base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("thick_margin").width, customisedSettings.height), tooltipContent) + } + onExited: base.hideTooltip() + } + } +} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml new file mode 100644 index 0000000000..0e834ac4df --- /dev/null +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml @@ -0,0 +1,206 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +import UM 1.2 as UM +import Cura 1.0 as Cura + + +// +// Enable support +// +Item +{ + id: enableSupportRow + height: childrenRect.height + + property real labelColumnWidth: Math.round(width / 3) + + Cura.IconWithText + { + id: enableSupportRowTitle + anchors.top: parent.top + anchors.left: parent.left + visible: enableSupportCheckBox.visible + source: UM.Theme.getIcon("category_support") + text: catalog.i18nc("@label", "Support") + font: UM.Theme.getFont("medium") + width: labelColumnWidth + } + + Item + { + id: enableSupportContainer + height: enableSupportCheckBox.height + + anchors + { + left: enableSupportRowTitle.right + right: parent.right + verticalCenter: enableSupportRowTitle.verticalCenter + } + + CheckBox + { + id: enableSupportCheckBox + anchors.verticalCenter: parent.verticalCenter + + property alias _hovered: enableSupportMouseArea.containsMouse + + style: UM.Theme.styles.checkbox + enabled: recommendedPrintSetup.settingsEnabled + + visible: supportEnabled.properties.enabled == "True" + checked: supportEnabled.properties.value == "True" + + MouseArea + { + id: enableSupportMouseArea + anchors.fill: parent + hoverEnabled: true + + onClicked: supportEnabled.setPropertyValue("value", supportEnabled.properties.value != "True") + + onEntered: + { + base.showTooltip(enableSupportCheckBox, Qt.point(-enableSupportContainer.x - UM.Theme.getSize("thick_margin").width, 0), + catalog.i18nc("@label", "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing.")) + } + onExited: base.hideTooltip() + } + } + + ComboBox + { + id: supportExtruderCombobox + + height: UM.Theme.getSize("print_setup_big_item").height + anchors + { + left: enableSupportCheckBox.right + right: parent.right + leftMargin: UM.Theme.getSize("thick_margin").width + rightMargin: UM.Theme.getSize("thick_margin").width + verticalCenter: parent.verticalCenter + } + + style: UM.Theme.styles.combobox_color + enabled: recommendedPrintSetup.settingsEnabled + visible: enableSupportCheckBox.visible && (supportEnabled.properties.value == "True") && (extrudersEnabledCount.properties.value > 1) + textRole: "text" // this solves that the combobox isn't populated in the first time Cura is started + + model: extruderModel + + property alias _hovered: supportExtruderMouseArea.containsMouse + property string color_override: "" // for manually setting values + property string color: // is evaluated automatically, but the first time is before extruderModel being filled + { + var current_extruder = extruderModel.get(currentIndex) + color_override = "" + if (current_extruder === undefined) return "" + return (current_extruder.color) ? current_extruder.color : "" + } + + currentIndex: + { + if (supportExtruderNr.properties == null) + { + return Cura.MachineManager.defaultExtruderPosition + } + else + { + var extruder = parseInt(supportExtruderNr.properties.value) + if ( extruder === -1) + { + return Cura.MachineManager.defaultExtruderPosition + } + return extruder; + } + } + + onActivated: supportExtruderNr.setPropertyValue("value", String(index)) + + MouseArea + { + id: supportExtruderMouseArea + anchors.fill: parent + hoverEnabled: true + enabled: recommendedPrintSetup.settingsEnabled + acceptedButtons: Qt.NoButton + onEntered: + { + base.showTooltip(supportExtruderCombobox, Qt.point(-enableSupportContainer.x - supportExtruderCombobox.x - UM.Theme.getSize("thick_margin").width, 0), + catalog.i18nc("@label", "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air.")); + } + onExited: base.hideTooltip() + + } + + function updateCurrentColor() + { + var current_extruder = extruderModel.get(currentIndex) + if (current_extruder !== undefined) + { + supportExtruderCombobox.color_override = current_extruder.color + } + } + } + } + + ListModel + { + id: extruderModel + Component.onCompleted: populateExtruderModel() + } + + //: Model used to populate the extrudelModel + property var extruders: CuraApplication.getExtrudersModel() + Connections + { + target: extruders + onModelChanged: populateExtruderModel() + } + + UM.SettingPropertyProvider + { + id: supportEnabled + containerStack: Cura.MachineManager.activeMachine + key: "support_enable" + watchedProperties: [ "value", "enabled", "description" ] + storeIndex: 0 + } + + UM.SettingPropertyProvider + { + id: supportExtruderNr + containerStack: Cura.MachineManager.activeMachine + key: "support_extruder_nr" + watchedProperties: [ "value" ] + storeIndex: 0 + } + + UM.SettingPropertyProvider + { + id: machineExtruderCount + containerStack: Cura.MachineManager.activeMachine + key: "machine_extruder_count" + watchedProperties: ["value"] + storeIndex: 0 + } + + function populateExtruderModel() + { + extruderModel.clear() + for (var extruderNumber = 0; extruderNumber < extruders.rowCount(); extruderNumber++) + { + extruderModel.append({ + text: extruders.getItem(extruderNumber).name, + color: extruders.getItem(extruderNumber).color + }) + } + supportExtruderCombobox.updateCurrentColor() + } +} \ No newline at end of file diff --git a/resources/qml/SidebarTooltip.qml b/resources/qml/PrintSetupTooltip.qml similarity index 87% rename from resources/qml/SidebarTooltip.qml rename to resources/qml/PrintSetupTooltip.qml index 29199481f6..6b1538d849 100644 --- a/resources/qml/SidebarTooltip.qml +++ b/resources/qml/PrintSetupTooltip.qml @@ -2,9 +2,7 @@ // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.3 import UM 1.0 as UM @@ -36,14 +34,15 @@ UM.PointingRectangle { } } base.opacity = 1; - target = Qt.point(40 , position.y + Math.round(UM.Theme.getSize("tooltip_arrow_margins").height / 2)) + target = Qt.point(position.x + 1, position.y + Math.round(UM.Theme.getSize("tooltip_arrow_margins").height / 2)) } function hide() { base.opacity = 0; } - Label { + Label + { id: label; anchors { top: parent.top; @@ -57,5 +56,6 @@ UM.PointingRectangle { textFormat: Text.RichText font: UM.Theme.getFont("default"); color: UM.Theme.getColor("tooltip_text"); + renderType: Text.NativeRendering } } diff --git a/resources/qml/PrinterOutput/ExtruderBox.qml b/resources/qml/PrinterOutput/ExtruderBox.qml index f0abd4cd6c..a19c02b0dd 100644 --- a/resources/qml/PrinterOutput/ExtruderBox.qml +++ b/resources/qml/PrinterOutput/ExtruderBox.qml @@ -12,8 +12,10 @@ Item property alias color: background.color property var extruderModel property var position: index + property var connectedPrinter: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null + implicitWidth: parent.width - implicitHeight: UM.Theme.getSize("sidebar_extruder_box").height + implicitHeight: UM.Theme.getSize("print_setup_extruder_box").height UM.SettingPropertyProvider { @@ -45,7 +47,7 @@ Item { id: extruderTargetTemperature text: Math.round(extruderModel.targetHotendTemperature) + "°C" - font: UM.Theme.getFont("small") + font: UM.Theme.getFont("default_bold") color: UM.Theme.getColor("text_inactive") anchors.right: parent.right anchors.rightMargin: UM.Theme.getSize("default_margin").width @@ -78,7 +80,7 @@ Item id: extruderCurrentTemperature text: Math.round(extruderModel.hotendTemperature) + "°C" color: UM.Theme.getColor("text") - font: UM.Theme.getFont("large") + font: UM.Theme.getFont("large_bold") anchors.right: extruderTargetTemperature.left anchors.top: parent.top anchors.margins: UM.Theme.getSize("default_margin").width @@ -324,7 +326,7 @@ Item return UM.Theme.getColor("action_button_text"); } } - font: UM.Theme.getFont("action_button") + font: UM.Theme.getFont("medium") text: { if(extruderModel == null) diff --git a/resources/qml/PrinterOutput/HeatedBedBox.qml b/resources/qml/PrinterOutput/HeatedBedBox.qml index 9de66ad0be..77421c8aad 100644 --- a/resources/qml/PrinterOutput/HeatedBedBox.qml +++ b/resources/qml/PrinterOutput/HeatedBedBox.qml @@ -1,10 +1,10 @@ // Copyright (c) 2017 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.1 +import QtQuick 2.10 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Layouts 1.3 import UM 1.2 as UM import Cura 1.0 as Cura @@ -12,12 +12,13 @@ import Cura 1.0 as Cura Item { implicitWidth: parent.width - height: visible ? UM.Theme.getSize("sidebar_extruder_box").height : 0 + height: visible ? UM.Theme.getSize("print_setup_extruder_box").height : 0 property var printerModel + property var connectedPrinter: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null Rectangle { - color: UM.Theme.getColor("sidebar") + color: UM.Theme.getColor("main_background") anchors.fill: parent Label //Build plate label. @@ -34,7 +35,7 @@ Item { id: bedTargetTemperature text: printerModel != null ? printerModel.targetBedTemperature + "°C" : "" - font: UM.Theme.getFont("small") + font: UM.Theme.getFont("default_bold") color: UM.Theme.getColor("text_inactive") anchors.right: parent.right anchors.rightMargin: UM.Theme.getSize("default_margin").width @@ -66,7 +67,7 @@ Item { id: bedCurrentTemperature text: printerModel != null ? printerModel.bedTemperature + "°C" : "" - font: UM.Theme.getFont("large") + font: UM.Theme.getFont("large_bold") color: UM.Theme.getColor("text") anchors.right: bedTargetTemperature.left anchors.top: parent.top @@ -114,7 +115,7 @@ Item { return false; //Can't preheat if not connected. } - if (!connectedPrinter.acceptsCommands) + if (connectedPrinter == null || !connectedPrinter.acceptsCommands) { return false; //Not allowed to do anything. } @@ -319,7 +320,7 @@ Item return UM.Theme.getColor("action_button_text"); } } - font: UM.Theme.getFont("action_button") + font: UM.Theme.getFont("medium") text: { if(printerModel == null) diff --git a/resources/qml/PrinterOutput/ManualPrinterControl.qml b/resources/qml/PrinterOutput/ManualPrinterControl.qml index 70961a2eb2..106ae7db03 100644 --- a/resources/qml/PrinterOutput/ManualPrinterControl.qml +++ b/resources/qml/PrinterOutput/ManualPrinterControl.qml @@ -1,103 +1,26 @@ // Copyright (c) 2017 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.1 +import QtQuick 2.10 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Layouts 1.3 -import UM 1.2 as UM +import UM 1.3 as UM import Cura 1.0 as Cura +import "." + + Item { - property var printerModel + property var printerModel: null property var activePrintJob: printerModel != null ? printerModel.activePrintJob : null + property var connectedPrinter: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null + implicitWidth: parent.width implicitHeight: childrenRect.height - Component - { - id: monitorButtonStyle - - ButtonStyle - { - background: Rectangle - { - border.width: UM.Theme.getSize("default_lining").width - border.color: - { - if(!control.enabled) - { - return UM.Theme.getColor("action_button_disabled_border"); - } - else if(control.pressed) - { - return UM.Theme.getColor("action_button_active_border"); - } - else if(control.hovered) - { - return UM.Theme.getColor("action_button_hovered_border"); - } - return UM.Theme.getColor("action_button_border"); - } - color: - { - if(!control.enabled) - { - return UM.Theme.getColor("action_button_disabled"); - } - else if(control.pressed) - { - return UM.Theme.getColor("action_button_active"); - } - else if(control.hovered) - { - return UM.Theme.getColor("action_button_hovered"); - } - return UM.Theme.getColor("action_button"); - } - Behavior on color - { - ColorAnimation - { - duration: 50 - } - } - } - - label: Item - { - UM.RecolorImage - { - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - width: Math.floor(control.width / 2) - height: Math.floor(control.height / 2) - sourceSize.width: width - sourceSize.height: width - color: - { - if(!control.enabled) - { - return UM.Theme.getColor("action_button_disabled_text"); - } - else if(control.pressed) - { - return UM.Theme.getColor("action_button_active_text"); - } - else if(control.hovered) - { - return UM.Theme.getColor("action_button_hovered_text"); - } - return UM.Theme.getColor("action_button_text"); - } - source: control.iconSource - } - } - } - } - Column { enabled: @@ -180,7 +103,7 @@ Item Layout.preferredWidth: width Layout.preferredHeight: height iconSource: UM.Theme.getIcon("arrow_top"); - style: monitorButtonStyle + style: UM.Theme.styles.monitor_button_style width: height height: UM.Theme.getSize("setting_control").height @@ -197,7 +120,7 @@ Item Layout.preferredWidth: width Layout.preferredHeight: height iconSource: UM.Theme.getIcon("arrow_left"); - style: monitorButtonStyle + style: UM.Theme.styles.monitor_button_style width: height height: UM.Theme.getSize("setting_control").height @@ -214,7 +137,7 @@ Item Layout.preferredWidth: width Layout.preferredHeight: height iconSource: UM.Theme.getIcon("arrow_right"); - style: monitorButtonStyle + style: UM.Theme.styles.monitor_button_style width: height height: UM.Theme.getSize("setting_control").height @@ -231,7 +154,7 @@ Item Layout.preferredWidth: width Layout.preferredHeight: height iconSource: UM.Theme.getIcon("arrow_bottom"); - style: monitorButtonStyle + style: UM.Theme.styles.monitor_button_style width: height height: UM.Theme.getSize("setting_control").height @@ -248,7 +171,7 @@ Item Layout.preferredWidth: width Layout.preferredHeight: height iconSource: UM.Theme.getIcon("home"); - style: monitorButtonStyle + style: UM.Theme.styles.monitor_button_style width: height height: UM.Theme.getSize("setting_control").height @@ -278,7 +201,7 @@ Item Button { iconSource: UM.Theme.getIcon("arrow_top"); - style: monitorButtonStyle + style: UM.Theme.styles.monitor_button_style width: height height: UM.Theme.getSize("setting_control").height @@ -291,7 +214,7 @@ Item Button { iconSource: UM.Theme.getIcon("home"); - style: monitorButtonStyle + style: UM.Theme.styles.monitor_button_style width: height height: UM.Theme.getSize("setting_control").height @@ -304,7 +227,7 @@ Item Button { iconSource: UM.Theme.getIcon("arrow_bottom"); - style: monitorButtonStyle + style: UM.Theme.styles.monitor_button_style width: height height: UM.Theme.getSize("setting_control").height @@ -356,72 +279,7 @@ Item checked: distancesRow.currentDistance == model.value onClicked: distancesRow.currentDistance = model.value - style: ButtonStyle { - background: Rectangle { - border.width: control.checked ? UM.Theme.getSize("default_lining").width * 2 : UM.Theme.getSize("default_lining").width - border.color: - { - if(!control.enabled) - { - return UM.Theme.getColor("action_button_disabled_border"); - } - else if (control.checked || control.pressed) - { - return UM.Theme.getColor("action_button_active_border"); - } - else if(control.hovered) - { - return UM.Theme.getColor("action_button_hovered_border"); - } - return UM.Theme.getColor("action_button_border"); - } - color: - { - if(!control.enabled) - { - return UM.Theme.getColor("action_button_disabled"); - } - else if (control.checked || control.pressed) - { - return UM.Theme.getColor("action_button_active"); - } - else if (control.hovered) - { - return UM.Theme.getColor("action_button_hovered"); - } - return UM.Theme.getColor("action_button"); - } - Behavior on color { ColorAnimation { duration: 50; } } - Label { - anchors.left: parent.left - anchors.right: parent.right - anchors.verticalCenter: parent.verticalCenter - anchors.leftMargin: UM.Theme.getSize("default_lining").width * 2 - anchors.rightMargin: UM.Theme.getSize("default_lining").width * 2 - color: - { - if(!control.enabled) - { - return UM.Theme.getColor("action_button_disabled_text"); - } - else if (control.checked || control.pressed) - { - return UM.Theme.getColor("action_button_active_text"); - } - else if (control.hovered) - { - return UM.Theme.getColor("action_button_hovered_text"); - } - return UM.Theme.getColor("action_button_text"); - } - font: UM.Theme.getFont("default") - text: control.text - horizontalAlignment: Text.AlignHCenter - elide: Text.ElideMiddle - } - } - label: Item { } - } + style: UM.Theme.styles.monitor_checkable_button_style } } } @@ -462,7 +320,7 @@ Item if (printerModel == null) { return false // Can't send custom commands if not connected. } - if (!connectedPrinter.acceptsCommands) { + if (connectedPrinter == null || !connectedPrinter.acceptsCommands) { return false // Not allowed to do anything } if (connectedPrinter.jobState == "printing" || connectedPrinter.jobState == "pre_print" || connectedPrinter.jobState == "resuming" || connectedPrinter.jobState == "pausing" || connectedPrinter.jobState == "paused" || connectedPrinter.jobState == "error" || connectedPrinter.jobState == "offline") { @@ -551,4 +409,4 @@ Item } ExclusiveGroup { id: distanceGroup } } -} \ No newline at end of file +} diff --git a/resources/qml/PrinterOutput/MonitorItem.qml b/resources/qml/PrinterOutput/MonitorItem.qml index cad8d2f7f3..a26ec20f64 100644 --- a/resources/qml/PrinterOutput/MonitorItem.qml +++ b/resources/qml/PrinterOutput/MonitorItem.qml @@ -15,6 +15,8 @@ Item property string value: "" height: childrenRect.height; + property var connectedPrinter: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null + Row { height: UM.Theme.getSize("setting_control").height diff --git a/resources/qml/PrinterOutput/MonitorSection.qml b/resources/qml/PrinterOutput/MonitorSection.qml index 6ed762362d..1d9df777b6 100644 --- a/resources/qml/PrinterOutput/MonitorSection.qml +++ b/resources/qml/PrinterOutput/MonitorSection.qml @@ -1,10 +1,10 @@ // Copyright (c) 2017 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.1 +import QtQuick 2.10 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Layouts 1.3 import UM 1.2 as UM import Cura 1.0 as Cura @@ -13,7 +13,8 @@ Item { id: base property string label - height: childrenRect.height; + height: childrenRect.height + Rectangle { color: UM.Theme.getColor("setting_category") @@ -26,8 +27,8 @@ Item anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width text: label - font: UM.Theme.getFont("setting_category") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("setting_category_text") } } -} \ No newline at end of file +} diff --git a/resources/qml/PrinterOutput/OutputDeviceHeader.qml b/resources/qml/PrinterOutput/OutputDeviceHeader.qml index b5ed1b7b4e..47f855266b 100644 --- a/resources/qml/PrinterOutput/OutputDeviceHeader.qml +++ b/resources/qml/PrinterOutput/OutputDeviceHeader.qml @@ -31,7 +31,7 @@ Item Label { id: outputDeviceNameLabel - font: UM.Theme.getFont("large") + font: UM.Theme.getFont("large_bold") color: UM.Theme.getColor("text") anchors.left: parent.left anchors.top: parent.top @@ -43,10 +43,10 @@ Item { id: outputDeviceAddressLabel text: (outputDevice != null && outputDevice.address != null) ? outputDevice.address : "" - font: UM.Theme.getFont("small") + font: UM.Theme.getFont("default_bold") color: UM.Theme.getColor("text_inactive") - anchors.top: parent.top - anchors.right: parent.right + anchors.top: outputDeviceNameLabel.bottom + anchors.left: parent.left anchors.margins: UM.Theme.getSize("default_margin").width } @@ -54,7 +54,7 @@ Item { text: outputDevice != null ? "" : catalog.i18nc("@info:status", "The printer is not connected.") color: outputDevice != null && outputDevice.acceptsCommands ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_disabled_text") - font: UM.Theme.getFont("very_small") + font: UM.Theme.getFont("default") wrapMode: Text.WordWrap anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width diff --git a/resources/qml/PrinterSelector/MachineSelector.qml b/resources/qml/PrinterSelector/MachineSelector.qml new file mode 100644 index 0000000000..9f0d3b4ac6 --- /dev/null +++ b/resources/qml/PrinterSelector/MachineSelector.qml @@ -0,0 +1,157 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.3 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +Cura.ExpandablePopup +{ + id: machineSelector + + property bool isNetworkPrinter: Cura.MachineManager.activeMachineHasRemoteConnection + property bool isPrinterConnected: Cura.MachineManager.printerConnected + property var outputDevice: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null + + contentPadding: UM.Theme.getSize("default_lining").width + contentAlignment: Cura.ExpandablePopup.ContentAlignment.AlignLeft + + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + headerItem: Cura.IconWithText + { + text: isNetworkPrinter ? Cura.MachineManager.activeMachineNetworkGroupName : Cura.MachineManager.activeMachineName + source: + { + if (isNetworkPrinter) + { + if (machineSelector.outputDevice != null && machineSelector.outputDevice.clusterSize > 1) + { + return UM.Theme.getIcon("printer_group") + } + return UM.Theme.getIcon("printer_single") + } + return "" + } + font: UM.Theme.getFont("medium") + iconColor: UM.Theme.getColor("machine_selector_printer_icon") + iconSize: source != "" ? UM.Theme.getSize("machine_selector_icon").width: 0 + + UM.RecolorImage + { + anchors + { + bottom: parent.bottom + left: parent.left + leftMargin: UM.Theme.getSize("thick_margin").width + } + + source: UM.Theme.getIcon("printer_connected") + width: UM.Theme.getSize("printer_status_icon").width + height: UM.Theme.getSize("printer_status_icon").height + + color: UM.Theme.getColor("primary") + visible: isNetworkPrinter && isPrinterConnected + + // Make a themable circle in the background so we can change it in other themes + Rectangle + { + id: iconBackground + anchors.centerIn: parent + // Make it a bit bigger so there is an outline + width: parent.width + 2 * UM.Theme.getSize("default_lining").width + height: parent.height + 2 * UM.Theme.getSize("default_lining").height + radius: Math.round(width / 2) + color: UM.Theme.getColor("main_background") + z: parent.z - 1 + } + } + } + + contentItem: Item + { + id: popup + width: UM.Theme.getSize("machine_selector_widget_content").width + + ScrollView + { + id: scroll + width: parent.width + clip: true + leftPadding: UM.Theme.getSize("default_lining").width + rightPadding: UM.Theme.getSize("default_lining").width + + MachineSelectorList + { + // Can't use parent.width since the parent is the flickable component and not the ScrollView + width: scroll.width - scroll.leftPadding - scroll.rightPadding + property real maximumHeight: UM.Theme.getSize("machine_selector_widget_content").height - buttonRow.height + + // We use an extra property here, since we only want to to be informed about the content size changes. + onContentHeightChanged: + { + scroll.height = Math.min(contentHeight, maximumHeight) + popup.height = scroll.height + buttonRow.height + } + + Component.onCompleted: + { + scroll.height = Math.min(contentHeight, maximumHeight) + popup.height = scroll.height + buttonRow.height + } + + } + } + + Rectangle + { + id: separator + + anchors.top: scroll.bottom + width: parent.width + height: UM.Theme.getSize("default_lining").height + color: UM.Theme.getColor("lining") + } + + Row + { + id: buttonRow + + // The separator is inside the buttonRow. This is to avoid some weird behaviours with the scroll bar. + anchors.top: separator.top + anchors.horizontalCenter: parent.horizontalCenter + padding: UM.Theme.getSize("default_margin").width + spacing: UM.Theme.getSize("default_margin").width + + Cura.SecondaryButton + { + leftPadding: UM.Theme.getSize("default_margin").width + rightPadding: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@button", "Add printer") + onClicked: + { + toggleContent() + Cura.Actions.addMachine.trigger() + } + } + + Cura.SecondaryButton + { + leftPadding: UM.Theme.getSize("default_margin").width + rightPadding: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@button", "Manage printers") + onClicked: + { + toggleContent() + Cura.Actions.configureMachines.trigger() + } + } + } + } +} diff --git a/resources/qml/PrinterSelector/MachineSelectorButton.qml b/resources/qml/PrinterSelector/MachineSelectorButton.qml new file mode 100644 index 0000000000..39e63d27c3 --- /dev/null +++ b/resources/qml/PrinterSelector/MachineSelectorButton.qml @@ -0,0 +1,103 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.1 + +import UM 1.1 as UM +import Cura 1.0 as Cura + +Button +{ + id: machineSelectorButton + + width: parent.width + height: UM.Theme.getSize("action_button").height + leftPadding: UM.Theme.getSize("thick_margin").width + rightPadding: UM.Theme.getSize("thick_margin").width + checkable: true + hoverEnabled: true + + property var outputDevice: null + property var printerTypesList: [] + + function updatePrinterTypesList() + { + printerTypesList = (checked && (outputDevice != null)) ? outputDevice.uniquePrinterTypes : [] + } + + contentItem: Item + { + width: machineSelectorButton.width - machineSelectorButton.leftPadding + height: UM.Theme.getSize("action_button").height + + Label + { + id: buttonText + anchors + { + left: parent.left + right: printerTypes.left + verticalCenter: parent.verticalCenter + } + text: machineSelectorButton.text + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("medium") + visible: text != "" + renderType: Text.NativeRendering + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + + Row + { + id: printerTypes + width: childrenRect.width + + anchors + { + right: parent.right + verticalCenter: parent.verticalCenter + } + spacing: UM.Theme.getSize("narrow_margin").width + + Repeater + { + model: printerTypesList + delegate: Cura.PrinterTypeLabel + { + text: Cura.MachineManager.getAbbreviatedMachineName(modelData) + } + } + } + } + + background: Rectangle + { + id: backgroundRect + color: machineSelectorButton.hovered ? UM.Theme.getColor("action_button_hovered") : "transparent" + radius: UM.Theme.getSize("action_button_radius").width + border.width: UM.Theme.getSize("default_lining").width + border.color: machineSelectorButton.checked ? UM.Theme.getColor("primary") : "transparent" + } + + onClicked: + { + toggleContent() + Cura.MachineManager.setActiveMachine(model.id) + } + + Connections + { + target: outputDevice + onUniqueConfigurationsChanged: updatePrinterTypesList() + } + + Connections + { + target: Cura.MachineManager + onOutputDevicesChanged: updatePrinterTypesList() + } + + Component.onCompleted: updatePrinterTypesList() +} diff --git a/resources/qml/PrinterSelector/MachineSelectorList.qml b/resources/qml/PrinterSelector/MachineSelectorList.qml new file mode 100644 index 0000000000..b9c20d0de1 --- /dev/null +++ b/resources/qml/PrinterSelector/MachineSelectorList.qml @@ -0,0 +1,46 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.3 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +ListView +{ + id: listView + model: Cura.GlobalStacksModel {} + section.property: "hasRemoteConnection" + property real contentHeight: childrenRect.height + + section.delegate: Label + { + text: section == "true" ? catalog.i18nc("@label", "Connected printers") : catalog.i18nc("@label", "Preset printers") + width: parent.width + height: UM.Theme.getSize("action_button").height + leftPadding: UM.Theme.getSize("default_margin").width + renderType: Text.NativeRendering + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text_medium") + verticalAlignment: Text.AlignVCenter + } + + delegate: MachineSelectorButton + { + text: model.name + width: listView.width + outputDevice: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null + + checked: + { + // If the machine has a remote connection + var result = Cura.MachineManager.activeMachineId == model.id + if (Cura.MachineManager.activeMachineHasRemoteConnection) + { + result |= Cura.MachineManager.activeMachineNetworkGroupName == model.metadata["connect_group_name"] + } + return result + } + } +} \ No newline at end of file diff --git a/resources/qml/PrinterTypeLabel.qml b/resources/qml/PrinterTypeLabel.qml new file mode 100644 index 0000000000..cfc9e56513 --- /dev/null +++ b/resources/qml/PrinterTypeLabel.qml @@ -0,0 +1,35 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.1 + +import UM 1.1 as UM + +// This component creates a label with the abbreviated name of a printer, with a rectangle surrounding the label. +// It is created in a separated place in order to be reused whenever needed. +Item +{ + property alias text: printerTypeLabel.text + + width: UM.Theme.getSize("printer_type_label").width + height: UM.Theme.getSize("printer_type_label").height + + Rectangle + { + anchors.fill: parent + color: UM.Theme.getColor("printer_type_label_background") + radius: UM.Theme.getSize("checkbox_radius").width + } + + Label + { + id: printerTypeLabel + text: "CFFFP" // As an abbreviated name of the Custom FFF Printer + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + renderType: Text.NativeRendering + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + } +} \ No newline at end of file diff --git a/resources/qml/RoundedRectangle.qml b/resources/qml/RoundedRectangle.qml new file mode 100644 index 0000000000..3ca05e2125 --- /dev/null +++ b/resources/qml/RoundedRectangle.qml @@ -0,0 +1,72 @@ +import QtQuick 2.7 + +import UM 1.2 as UM + +// The rounded rectangle works mostly like a regular rectangle, but provides the option to have rounded corners on only one side of the rectangle. +Item +{ + id: roundedRectangle + // As per the regular rectangle + property color color: "transparent" + + // As per regular rectangle + property int radius: UM.Theme.getSize("default_radius").width + + // On what side should the corners be shown 5 can be used if no radius is needed. + // 1 is down, 2 is left, 3 is up and 4 is right. + property int cornerSide: RoundedRectangle.Direction.None + + // Simple object to ensure that border.width and border.color work + property BorderGroup border: BorderGroup {} + + enum Direction + { + None = 0, + Down = 1, + Left = 2, + Up = 3, + Right = 4, + All = 5 + } + + Rectangle + { + id: background + anchors.fill: parent + radius: cornerSide != RoundedRectangle.Direction.None ? parent.radius : 0 + color: parent.color + border.width: parent.border.width + border.color: parent.border.color + } + + // The item that covers 2 of the corners to make them not rounded. + Rectangle + { + visible: cornerSide != RoundedRectangle.Direction.None && cornerSide != RoundedRectangle.Direction.All + height: cornerSide % 2 ? parent.radius: parent.height + width: cornerSide % 2 ? parent.width : parent.radius + color: parent.color + anchors + { + right: cornerSide == RoundedRectangle.Direction.Left ? parent.right: undefined + bottom: cornerSide == RoundedRectangle.Direction.Up ? parent.bottom: undefined + } + + border.width: parent.border.width + border.color: parent.border.color + + Rectangle + { + color: roundedRectangle.color + height: cornerSide % 2 ? roundedRectangle.border.width: roundedRectangle.height - 2 * roundedRectangle.border.width + width: cornerSide % 2 ? roundedRectangle.width - 2 * roundedRectangle.border.width: roundedRectangle.border.width + anchors + { + right: cornerSide == RoundedRectangle.Direction.Right ? parent.right : undefined + bottom: cornerSide == RoundedRectangle.Direction.Down ? parent.bottom: undefined + horizontalCenter: cornerSide % 2 ? parent.horizontalCenter: undefined + verticalCenter: cornerSide % 2 ? undefined: parent.verticalCenter + } + } + } +} diff --git a/resources/qml/SaveButton.qml b/resources/qml/SaveButton.qml deleted file mode 100644 index 2a0a523026..0000000000 --- a/resources/qml/SaveButton.qml +++ /dev/null @@ -1,409 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.1 - -import UM 1.1 as UM -import Cura 1.0 as Cura - -Item { - id: base; - UM.I18nCatalog { id: catalog; name:"cura"} - - property real progress: UM.Backend.progress - property int backendState: UM.Backend.state - property bool activity: CuraApplication.platformActivity - - property alias buttonRowWidth: saveRow.width - - property string fileBaseName - property string statusText: - { - if(!activity) - { - return catalog.i18nc("@label:PrintjobStatus", "Please load a 3D model"); - } - - if (base.backendState == "undefined") { - return "" - } - - switch(base.backendState) - { - case 1: - return catalog.i18nc("@label:PrintjobStatus", "Ready to slice"); - case 2: - return catalog.i18nc("@label:PrintjobStatus", "Slicing..."); - case 3: - return catalog.i18nc("@label:PrintjobStatus %1 is target operation","Ready to %1").arg(UM.OutputDeviceManager.activeDeviceShortDescription); - case 4: - return catalog.i18nc("@label:PrintjobStatus", "Unable to Slice"); - case 5: - return catalog.i18nc("@label:PrintjobStatus", "Slicing unavailable"); - default: - return ""; - } - } - - function sliceOrStopSlicing() { - try { - if ([1, 5].indexOf(base.backendState) != -1) { - CuraApplication.backend.forceSlice(); - } else { - CuraApplication.backend.stopSlicing(); - } - } catch (e) { - console.log('Could not start or stop slicing', e) - } - } - - Label { - id: statusLabel - width: parent.width - 2 * UM.Theme.getSize("sidebar_margin").width - anchors.top: parent.top - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - - color: UM.Theme.getColor("text") - font: UM.Theme.getFont("default_bold") - text: statusText; - } - - Rectangle { - id: progressBar - width: parent.width - 2 * UM.Theme.getSize("sidebar_margin").width - height: UM.Theme.getSize("progressbar").height - anchors.top: statusLabel.bottom - anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height / 4) - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - radius: UM.Theme.getSize("progressbar_radius").width - color: UM.Theme.getColor("progressbar_background") - - Rectangle { - width: Math.max(parent.width * base.progress) - height: parent.height - color: UM.Theme.getColor("progressbar_control") - radius: UM.Theme.getSize("progressbar_radius").width - visible: (base.backendState != "undefined" && base.backendState == 2) ? true : false - } - } - - // Shortcut for "save as/print/..." - Action { - shortcut: "Ctrl+P" - onTriggered: - { - // only work when the button is enabled - if (saveToButton.enabled) { - saveToButton.clicked(); - } - // prepare button - if (prepareButton.enabled) { - sliceOrStopSlicing(); - } - } - } - - Item { - id: saveRow - width: { - // using childrenRect.width directly causes a binding loop, because setting the width affects the childrenRect - var children_width = UM.Theme.getSize("default_margin").width; - for (var index in children) - { - var child = children[index]; - if(child.visible) - { - children_width += child.width + child.anchors.rightMargin; - } - } - return Math.min(children_width, base.width - UM.Theme.getSize("sidebar_margin").width); - } - height: saveToButton.height - anchors.bottom: parent.bottom - anchors.bottomMargin: UM.Theme.getSize("sidebar_margin").height - anchors.right: parent.right - clip: true - - Row { - id: additionalComponentsRow - anchors.top: parent.top - anchors.right: saveToButton.visible ? saveToButton.left : (prepareButton.visible ? prepareButton.left : parent.right) - anchors.rightMargin: UM.Theme.getSize("default_margin").width - - spacing: UM.Theme.getSize("default_margin").width - } - - Component.onCompleted: { - saveRow.addAdditionalComponents("saveButton") - } - - Connections { - target: CuraApplication - onAdditionalComponentsChanged: saveRow.addAdditionalComponents("saveButton") - } - - function addAdditionalComponents (areaId) { - if(areaId == "saveButton") { - for (var component in CuraApplication.additionalComponents["saveButton"]) { - CuraApplication.additionalComponents["saveButton"][component].parent = additionalComponentsRow - } - } - } - - Connections { - target: UM.Preferences - onPreferenceChanged: - { - var autoSlice = UM.Preferences.getValue("general/auto_slice"); - prepareButton.autoSlice = autoSlice; - saveToButton.autoSlice = autoSlice; - } - } - - // Prepare button, only shows if auto_slice is off - Button { - id: prepareButton - - tooltip: [1, 5].indexOf(base.backendState) != -1 ? catalog.i18nc("@info:tooltip","Slice current printjob") : catalog.i18nc("@info:tooltip","Cancel slicing process") - // 1 = not started, 2 = Processing - enabled: base.backendState != "undefined" && ([1, 2].indexOf(base.backendState) != -1) && base.activity - visible: base.backendState != "undefined" && !autoSlice && ([1, 2, 4].indexOf(base.backendState) != -1) && base.activity - property bool autoSlice - height: UM.Theme.getSize("save_button_save_to_button").height - - anchors.top: parent.top - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width - - // 1 = not started, 4 = error, 5 = disabled - text: [1, 4, 5].indexOf(base.backendState) != -1 ? catalog.i18nc("@label:Printjob", "Prepare") : catalog.i18nc("@label:Printjob", "Cancel") - onClicked: - { - sliceOrStopSlicing(); - } - - style: ButtonStyle { - background: Rectangle - { - border.width: UM.Theme.getSize("default_lining").width - border.color: - { - if(!control.enabled) - return UM.Theme.getColor("action_button_disabled_border"); - else if(control.pressed) - return UM.Theme.getColor("action_button_active_border"); - else if(control.hovered) - return UM.Theme.getColor("action_button_hovered_border"); - else - return UM.Theme.getColor("action_button_border"); - } - color: - { - if(!control.enabled) - return UM.Theme.getColor("action_button_disabled"); - else if(control.pressed) - return UM.Theme.getColor("action_button_active"); - else if(control.hovered) - return UM.Theme.getColor("action_button_hovered"); - else - return UM.Theme.getColor("action_button"); - } - - Behavior on color { ColorAnimation { duration: 50; } } - - implicitWidth: actualLabel.contentWidth + (UM.Theme.getSize("sidebar_margin").width * 2) - - Label { - id: actualLabel - anchors.centerIn: parent - color: - { - if(!control.enabled) - return UM.Theme.getColor("action_button_disabled_text"); - else if(control.pressed) - return UM.Theme.getColor("action_button_active_text"); - else if(control.hovered) - return UM.Theme.getColor("action_button_hovered_text"); - else - return UM.Theme.getColor("action_button_text"); - } - font: UM.Theme.getFont("action_button") - text: control.text; - } - } - label: Item { } - } - } - - Button { - id: saveToButton - - tooltip: UM.OutputDeviceManager.activeDeviceDescription; - // 3 = done, 5 = disabled - enabled: base.backendState != "undefined" && (base.backendState == 3 || base.backendState == 5) && base.activity == true - visible: base.backendState != "undefined" && autoSlice || ((base.backendState == 3 || base.backendState == 5) && base.activity == true) - property bool autoSlice - height: UM.Theme.getSize("save_button_save_to_button").height - - anchors.top: parent.top - anchors.right: deviceSelectionMenu.visible ? deviceSelectionMenu.left : parent.right - anchors.rightMargin: deviceSelectionMenu.visible ? -3 * UM.Theme.getSize("default_lining").width : UM.Theme.getSize("sidebar_margin").width - - text: UM.OutputDeviceManager.activeDeviceShortDescription - onClicked: - { - forceActiveFocus(); - UM.OutputDeviceManager.requestWriteToDevice(UM.OutputDeviceManager.activeDevice, PrintInformation.jobName, - { "filter_by_machine": true, "preferred_mimetypes": Cura.MachineManager.activeMachine.preferred_output_file_formats }); - } - - style: ButtonStyle { - background: Rectangle - { - border.width: UM.Theme.getSize("default_lining").width - border.color: - { - if(!control.enabled) - return UM.Theme.getColor("action_button_disabled_border"); - else if(control.pressed) - return UM.Theme.getColor("print_button_ready_pressed_border"); - else if(control.hovered) - return UM.Theme.getColor("print_button_ready_hovered_border"); - else - return UM.Theme.getColor("print_button_ready_border"); - } - color: - { - if(!control.enabled) - return UM.Theme.getColor("action_button_disabled"); - else if(control.pressed) - return UM.Theme.getColor("print_button_ready_pressed"); - else if(control.hovered) - return UM.Theme.getColor("print_button_ready_hovered"); - else - return UM.Theme.getColor("print_button_ready"); - } - - Behavior on color { ColorAnimation { duration: 50; } } - - implicitWidth: actualLabel.contentWidth + (UM.Theme.getSize("sidebar_margin").width * 2) - - Label { - id: actualLabel - anchors.centerIn: parent - color: - { - if(!control.enabled) - return UM.Theme.getColor("action_button_disabled_text"); - else if(control.pressed) - return UM.Theme.getColor("print_button_ready_text"); - else if(control.hovered) - return UM.Theme.getColor("print_button_ready_text"); - else - return UM.Theme.getColor("print_button_ready_text"); - } - font: UM.Theme.getFont("action_button") - text: control.text; - } - } - label: Item { } - } - } - - Button { - id: deviceSelectionMenu - tooltip: catalog.i18nc("@info:tooltip","Select the active output device"); - anchors.top: parent.top - anchors.right: parent.right - - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width - width: UM.Theme.getSize("save_button_save_to_button").height - height: UM.Theme.getSize("save_button_save_to_button").height - // 3 = Done, 5 = Disabled - enabled: base.backendState != "undefined" && (base.backendState == 3 || base.backendState == 5) && base.activity == true - visible: base.backendState != "undefined" && (devicesModel.deviceCount > 1) && (base.backendState == 3 || base.backendState == 5) && base.activity == true - - - style: ButtonStyle { - background: Rectangle { - id: deviceSelectionIcon - border.width: UM.Theme.getSize("default_lining").width - border.color: - { - if(!control.enabled) - return UM.Theme.getColor("action_button_disabled_border"); - else if(control.pressed) - return UM.Theme.getColor("print_button_ready_pressed_border"); - else if(control.hovered) - return UM.Theme.getColor("print_button_ready_hovered_border"); - else - return UM.Theme.getColor("print_button_ready_border"); - } - color: - { - if(!control.enabled) - return UM.Theme.getColor("action_button_disabled"); - else if(control.pressed) - return UM.Theme.getColor("print_button_ready_pressed"); - else if(control.hovered) - return UM.Theme.getColor("print_button_ready_hovered"); - else - return UM.Theme.getColor("print_button_ready"); - } - Behavior on color { ColorAnimation { duration: 50; } } - anchors.left: parent.left - anchors.leftMargin: Math.round(UM.Theme.getSize("save_button_text_margin").width / 2); - width: parent.height - height: parent.height - - UM.RecolorImage { - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - width: UM.Theme.getSize("standard_arrow").width - height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width - sourceSize.height: height - color: - { - if(!control.enabled) - return UM.Theme.getColor("action_button_disabled_text"); - else if(control.pressed) - return UM.Theme.getColor("print_button_ready_text"); - else if(control.hovered) - return UM.Theme.getColor("print_button_ready_text"); - else - return UM.Theme.getColor("print_button_ready_text"); - } - source: UM.Theme.getIcon("arrow_bottom"); - } - } - label: Label{ } - } - - menu: Menu { - id: devicesMenu; - Instantiator { - model: devicesModel; - MenuItem { - text: model.description - checkable: true; - checked: model.id == UM.OutputDeviceManager.activeDevice; - exclusiveGroup: devicesMenuGroup; - onTriggered: { - UM.OutputDeviceManager.setActiveDevice(model.id); - } - } - onObjectAdded: devicesMenu.insertItem(index, object) - onObjectRemoved: devicesMenu.removeItem(object) - } - ExclusiveGroup { id: devicesMenuGroup; } - } - } - UM.OutputDevicesModel { id: devicesModel; } - } -} diff --git a/resources/qml/SecondaryButton.qml b/resources/qml/SecondaryButton.qml new file mode 100644 index 0000000000..f03d8acdfa --- /dev/null +++ b/resources/qml/SecondaryButton.qml @@ -0,0 +1,20 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 + +import UM 1.4 as UM +import Cura 1.1 as Cura + + +Cura.ActionButton +{ + shadowEnabled: true + shadowColor: enabled ? UM.Theme.getColor("secondary_button_shadow"): UM.Theme.getColor("action_button_disabled_shadow") + color: UM.Theme.getColor("secondary_button") + textColor: UM.Theme.getColor("secondary_button_text") + outlineColor: "transparent" + disabledColor: UM.Theme.getColor("action_button_disabled") + textDisabledColor: UM.Theme.getColor("action_button_disabled_text") + hoverColor: UM.Theme.getColor("secondary_button_hover") +} \ No newline at end of file diff --git a/resources/qml/Settings/SettingCategory.qml b/resources/qml/Settings/SettingCategory.qml index e3202323eb..1e88867889 100644 --- a/resources/qml/Settings/SettingCategory.qml +++ b/resources/qml/Settings/SettingCategory.qml @@ -12,48 +12,39 @@ Button id: base anchors.left: parent.left anchors.right: parent.right - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width + // To avoid overlaping with the scrollBars + anchors.rightMargin: 2 * UM.Theme.getSize("thin_margin").width + hoverEnabled: true + background: Rectangle { id: backgroundRectangle implicitHeight: UM.Theme.getSize("section").height - color: { - if (base.color) { - return base.color; - } else if (!base.enabled) { - return UM.Theme.getColor("setting_category_disabled"); - } else if (base.hovered && base.checkable && base.checked) { - return UM.Theme.getColor("setting_category_active_hover"); - } else if (base.pressed || (base.checkable && base.checked)) { - return UM.Theme.getColor("setting_category_active"); - } else if (base.hovered) { - return UM.Theme.getColor("setting_category_hover"); - } else { - return UM.Theme.getColor("setting_category"); + color: + { + if (base.color) + { + return base.color } + else if (!base.enabled) + { + return UM.Theme.getColor("setting_category_disabled") + } + else if (base.hovered && base.checkable && base.checked) + { + return UM.Theme.getColor("setting_category_active_hover") + } + else if (base.pressed || (base.checkable && base.checked)) + { + return UM.Theme.getColor("setting_category_active") + } + else if (base.hovered) + { + return UM.Theme.getColor("setting_category_hover") + } + return UM.Theme.getColor("setting_category") } Behavior on color { ColorAnimation { duration: 50; } } - Rectangle - { - id: backgroundLiningRectangle - height: UM.Theme.getSize("default_lining").height - width: parent.width - anchors.bottom: parent.bottom - color: { - if (!base.enabled) { - return UM.Theme.getColor("setting_category_disabled_border"); - } else if ((base.hovered || base.activeFocus) && base.checkable && base.checked) { - return UM.Theme.getColor("setting_category_active_hover_border"); - } else if (base.pressed || (base.checkable && base.checked)) { - return UM.Theme.getColor("setting_category_active_border"); - } else if (base.hovered || base.activeFocus) { - return UM.Theme.getColor("setting_category_hover_border"); - } else { - return UM.Theme.getColor("setting_category_border"); - } - } - } } signal showTooltip(string text) @@ -65,40 +56,47 @@ Button property var focusItem: base - contentItem: Item { + contentItem: Item + { anchors.fill: parent - anchors.left: parent.left - Label { + Label + { id: settingNameLabel anchors { left: parent.left leftMargin: 2 * UM.Theme.getSize("default_margin").width + UM.Theme.getSize("section_icon").width - right: parent.right; - verticalCenter: parent.verticalCenter; + right: parent.right + verticalCenter: parent.verticalCenter } text: definition.label textFormat: Text.PlainText renderType: Text.NativeRendering - font: UM.Theme.getFont("setting_category") + font: UM.Theme.getFont("medium_bold") color: { - if (!base.enabled) { - return UM.Theme.getColor("setting_category_disabled_text"); - } else if ((base.hovered || base.activeFocus) && base.checkable && base.checked) { - return UM.Theme.getColor("setting_category_active_hover_text"); - } else if (base.pressed || (base.checkable && base.checked)) { - return UM.Theme.getColor("setting_category_active_text"); - } else if (base.hovered || base.activeFocus) { - return UM.Theme.getColor("setting_category_hover_text"); - } else { - return UM.Theme.getColor("setting_category_text"); + if (!base.enabled) + { + return UM.Theme.getColor("setting_category_disabled_text") + } else if ((base.hovered || base.activeFocus) && base.checkable && base.checked) + { + return UM.Theme.getColor("setting_category_active_hover_text") + } else if (base.pressed || (base.checkable && base.checked)) + { + return UM.Theme.getColor("setting_category_active_text") + } else if (base.hovered || base.activeFocus) + { + return UM.Theme.getColor("setting_category_hover_text") + } else + { + return UM.Theme.getColor("setting_category_text") } } fontSizeMode: Text.HorizontalFit minimumPointSize: 8 } + UM.RecolorImage { id: category_arrow @@ -107,22 +105,8 @@ Button anchors.rightMargin: UM.Theme.getSize("default_margin").width width: UM.Theme.getSize("standard_arrow").width height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width sourceSize.height: width - color: - { - if (!base.enabled) { - return UM.Theme.getColor("setting_category_disabled_text"); - } else if ((base.hovered || base.activeFocus) && base.checkable && base.checked) { - return UM.Theme.getColor("setting_category_active_hover_text"); - } else if (base.pressed || (base.checkable && base.checked)) { - return UM.Theme.getColor("setting_category_active_text"); - } else if (base.hovered || base.activeFocus) { - return UM.Theme.getColor("setting_category_hover_text"); - } else { - return UM.Theme.getColor("setting_category_text"); - } - } + color: UM.Theme.getColor("setting_control_button") source: base.checked ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left") } } @@ -132,24 +116,30 @@ Button id: icon anchors.verticalCenter: parent.verticalCenter anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.leftMargin: UM.Theme.getSize("thin_margin").width color: { - if (!base.enabled) { - return UM.Theme.getColor("setting_category_disabled_text"); - } else if((base.hovered || base.activeFocus) && base.checkable && base.checked) { - return UM.Theme.getColor("setting_category_active_hover_text"); - } else if(base.pressed || (base.checkable && base.checked)) { - return UM.Theme.getColor("setting_category_active_text"); - } else if(base.hovered || base.activeFocus) { - return UM.Theme.getColor("setting_category_hover_text"); - } else { - return UM.Theme.getColor("setting_category_text"); + if (!base.enabled) + { + return UM.Theme.getColor("setting_category_disabled_text") } + else if((base.hovered || base.activeFocus) && base.checkable && base.checked) + { + return UM.Theme.getColor("setting_category_active_hover_text") + } + else if(base.pressed || (base.checkable && base.checked)) + { + return UM.Theme.getColor("setting_category_active_text") + } + else if(base.hovered || base.activeFocus) + { + return UM.Theme.getColor("setting_category_hover_text") + } + return UM.Theme.getColor("setting_category_text") } source: UM.Theme.getIcon(definition.icon) - width: UM.Theme.getSize("section_icon").width; - height: UM.Theme.getSize("section_icon").height; + width: UM.Theme.getSize("section_icon").width + height: UM.Theme.getSize("section_icon").height sourceSize.width: width + 15 * screenScaleFactor sourceSize.height: width + 15 * screenScaleFactor } @@ -159,31 +149,28 @@ Button onClicked: { - if (definition.expanded) { - settingDefinitionsModel.collapse(definition.key); - } else { - settingDefinitionsModel.expandRecursive(definition.key); + if (definition.expanded) + { + settingDefinitionsModel.collapse(definition.key) + } + else + { + settingDefinitionsModel.expandRecursive(definition.key) } //Set focus so that tab navigation continues from this point on. //NB: This must be set AFTER collapsing/expanding the category so that the scroll position is correct. - forceActiveFocus(); + forceActiveFocus() } onActiveFocusChanged: { - if(activeFocus) + if (activeFocus) { - base.focusReceived(); + base.focusReceived() } } - Keys.onTabPressed: - { - base.setActiveFocusToNextSetting(true) - } - Keys.onBacktabPressed: - { - base.setActiveFocusToNextSetting(false) - } + Keys.onTabPressed: base.setActiveFocusToNextSetting(true) + Keys.onBacktabPressed: base.setActiveFocusToNextSetting(false) UM.SimpleButton { @@ -193,9 +180,10 @@ Button height: Math.round(base.height * 0.6) width: Math.round(base.height * 0.6) - anchors { + anchors + { right: inheritButton.visible ? inheritButton.left : parent.right - // use 1.9 as the factor because there is a 0.1 difference between the settings and inheritance warning icons + // Use 1.9 as the factor because there is a 0.1 difference between the settings and inheritance warning icons rightMargin: inheritButton.visible ? Math.round(UM.Theme.getSize("default_margin").width / 2) : category_arrow.width + Math.round(UM.Theme.getSize("default_margin").width * 1.9) verticalCenter: parent.verticalCenter } @@ -204,9 +192,7 @@ Button hoverColor: UM.Theme.getColor("setting_control_button_hover") iconSource: UM.Theme.getIcon("settings") - onClicked: { - Cura.Actions.configureSettingVisibility.trigger(definition) - } + onClicked: Cura.Actions.configureSettingVisibility.trigger(definition) } UM.SimpleButton @@ -239,24 +225,18 @@ Button onClicked: { - settingDefinitionsModel.expandRecursive(definition.key); - base.checked = true; - base.showAllHiddenInheritedSettings(definition.key); + settingDefinitionsModel.expandRecursive(definition.key) + base.checked = true + base.showAllHiddenInheritedSettings(definition.key) } color: UM.Theme.getColor("setting_control_button") hoverColor: UM.Theme.getColor("setting_control_button_hover") iconSource: UM.Theme.getIcon("notice") - onEntered: - { - base.showTooltip(catalog.i18nc("@label","Some hidden settings use values different from their normal calculated value.\n\nClick to make these settings visible.")) - } + onEntered: base.showTooltip(catalog.i18nc("@label","Some hidden settings use values different from their normal calculated value.\n\nClick to make these settings visible.")) - onExited: - { - base.hideTooltip(); - } + onExited: base.hideTooltip() UM.I18nCatalog { id: catalog; name: "cura" } } diff --git a/resources/qml/Settings/SettingCheckBox.qml b/resources/qml/Settings/SettingCheckBox.qml index d37754d27c..0c7321d08a 100644 --- a/resources/qml/Settings/SettingCheckBox.qml +++ b/resources/qml/Settings/SettingCheckBox.qml @@ -28,37 +28,40 @@ SettingItem // 3: material -> user changed material in materials page // 4: variant // 5: machine - var value; - if ((base.resolve != "None") && (stackLevel != 0) && (stackLevel != 1)) { + var value + if ((base.resolve != "None") && (stackLevel != 0) && (stackLevel != 1)) + { // We have a resolve function. Indicates that the setting is not settable per extruder and that // we have to choose between the resolved value (default) and the global value // (if user has explicitly set this). - value = base.resolve; - } else { - value = propertyProvider.properties.value; + value = base.resolve + } + else + { + value = propertyProvider.properties.value } switch(value) { case "True": - return true; + return true case "False": - return false; + return false default: - return value; + return value } } Keys.onSpacePressed: { - forceActiveFocus(); - propertyProvider.setPropertyValue("value", !checked); + forceActiveFocus() + propertyProvider.setPropertyValue("value", !checked) } onClicked: { - forceActiveFocus(); - propertyProvider.setPropertyValue("value", !checked); + forceActiveFocus() + propertyProvider.setPropertyValue("value", !checked) } Keys.onTabPressed: @@ -72,9 +75,9 @@ SettingItem onActiveFocusChanged: { - if(activeFocus) + if (activeFocus) { - base.focusReceived(); + base.focusReceived() } } @@ -90,37 +93,38 @@ SettingItem color: { - if(!enabled) + if (!enabled) { return UM.Theme.getColor("setting_control_disabled") } - if(control.containsMouse || control.activeFocus) + if (control.containsMouse || control.activeFocus) { return UM.Theme.getColor("setting_control_highlight") } return UM.Theme.getColor("setting_control") } + radius: UM.Theme.getSize("setting_control_radius").width border.width: UM.Theme.getSize("default_lining").width border.color: { - if(!enabled) + if (!enabled) { return UM.Theme.getColor("setting_control_disabled_border") } - if(control.containsMouse || control.activeFocus) + if (control.containsMouse || control.activeFocus) { return UM.Theme.getColor("setting_control_border_highlight") } return UM.Theme.getColor("setting_control_border") } - UM.RecolorImage { + UM.RecolorImage + { anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter width: Math.round(parent.width / 2.5) height: Math.round(parent.height / 2.5) - sourceSize.width: width sourceSize.height: width color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text"); source: UM.Theme.getIcon("check") diff --git a/resources/qml/Settings/SettingComboBox.qml b/resources/qml/Settings/SettingComboBox.qml index 76d458e427..a287e0c3ce 100644 --- a/resources/qml/Settings/SettingComboBox.qml +++ b/resources/qml/Settings/SettingComboBox.qml @@ -35,6 +35,7 @@ SettingItem return UM.Theme.getColor("setting_control") } + radius: UM.Theme.getSize("setting_control_radius").width border.width: UM.Theme.getSize("default_lining").width border.color: { @@ -62,7 +63,7 @@ SettingItem sourceSize.width: width + 5 * screenScaleFactor sourceSize.height: width + 5 * screenScaleFactor - color: UM.Theme.getColor("setting_control_text") + color: UM.Theme.getColor("setting_control_button") } contentItem: Label diff --git a/resources/qml/Settings/SettingExtruder.qml b/resources/qml/Settings/SettingExtruder.qml index a9427f863a..6d39192de7 100644 --- a/resources/qml/Settings/SettingExtruder.qml +++ b/resources/qml/Settings/SettingExtruder.qml @@ -17,10 +17,16 @@ SettingItem id: control anchors.fill: parent - model: Cura.ExtrudersModel + property var extrudersModel: CuraApplication.getExtrudersModel() + + model: extrudersModel + + Connections { - onModelChanged: { - control.color = getItem(control.currentIndex).color; + target: extrudersModel + onModelChanged: + { + control.color = extrudersModel.getItem(control.currentIndex).color } } @@ -104,7 +110,7 @@ SettingItem sourceSize.width: width + 5 * screenScaleFactor sourceSize.height: width + 5 * screenScaleFactor - color: UM.Theme.getColor("setting_control_text"); + color: UM.Theme.getColor("setting_control_button"); } background: Rectangle @@ -113,14 +119,15 @@ SettingItem { if (!enabled) { - return UM.Theme.getColor("setting_control_disabled"); + return UM.Theme.getColor("setting_control_disabled") } if (control.hovered || base.activeFocus) { - return UM.Theme.getColor("setting_control_highlight"); + return UM.Theme.getColor("setting_control_highlight") } - return UM.Theme.getColor("setting_control"); + return UM.Theme.getColor("setting_control") } + radius: UM.Theme.getSize("setting_control_radius").width border.width: UM.Theme.getSize("default_lining").width border.color: { @@ -153,20 +160,18 @@ SettingItem elide: Text.ElideLeft verticalAlignment: Text.AlignVCenter - background: Rectangle + background: UM.RecolorImage { id: swatch - height: Math.round(UM.Theme.getSize("setting_control").height / 2) + height: Math.round(parent.height / 2) width: height - anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter - anchors.margins: Math.round(UM.Theme.getSize("default_margin").width / 4) - - border.width: UM.Theme.getSize("default_lining").width - border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border") - radius: Math.round(width / 2) + anchors.rightMargin: UM.Theme.getSize("thin_margin").width + sourceSize.width: width + sourceSize.height: height + source: UM.Theme.getIcon("extruder_button") color: control.color } } @@ -219,20 +224,18 @@ SettingItem verticalAlignment: Text.AlignVCenter rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width - background: Rectangle + background: UM.RecolorImage { id: swatch - height: Math.round(UM.Theme.getSize("setting_control").height / 2) + height: Math.round(parent.height / 2) width: height - anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter - anchors.margins: Math.round(UM.Theme.getSize("default_margin").width / 4) - - border.width: UM.Theme.getSize("default_lining").width - border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border") - radius: Math.round(width / 2) + anchors.rightMargin: UM.Theme.getSize("thin_margin").width + sourceSize.width: width + sourceSize.height: height + source: UM.Theme.getIcon("extruder_button") color: control.model.getItem(index).color } } diff --git a/resources/qml/Settings/SettingItem.qml b/resources/qml/Settings/SettingItem.qml index 785562cff5..4dd53f8663 100644 --- a/resources/qml/Settings/SettingItem.qml +++ b/resources/qml/Settings/SettingItem.qml @@ -10,10 +10,15 @@ import Cura 1.0 as Cura import "." -Item { - id: base; +Item +{ + id: base height: UM.Theme.getSize("section").height + anchors.left: parent.left + anchors.right: parent.right + // To avoid overlaping with the scrollBars + anchors.rightMargin: 2 * UM.Theme.getSize("thin_margin").width property alias contents: controlContainer.children property alias hovered: mouse.containsMouse @@ -43,25 +48,25 @@ Item { var affected_by = settingDefinitionsModel.getRequires(definition.key, "value") var affected_by_list = "" - for(var i in affected_by) + for (var i in affected_by) { affected_by_list += "
  • %1
  • \n".arg(affected_by[i].label) } var affects_list = "" - for(var i in affects) + for (var i in affects) { affects_list += "
  • %1
  • \n".arg(affects[i].label) } var tooltip = "%1\n

    %2

    ".arg(definition.label).arg(definition.description) - if(affects_list != "") + if (affects_list != "") { tooltip += "
    %1\n
      \n%2
    ".arg(catalog.i18nc("@label Header for list of settings.", "Affects")).arg(affects_list) } - if(affected_by_list != "") + if (affected_by_list != "") { tooltip += "
    %1\n
      \n%2
    ".arg(catalog.i18nc("@label Header for list of settings.", "Affected By")).arg(affected_by_list) } @@ -71,53 +76,57 @@ Item { MouseArea { - id: mouse; + id: mouse - anchors.fill: parent; + anchors.fill: parent - acceptedButtons: Qt.RightButton; + acceptedButtons: Qt.RightButton hoverEnabled: true; - onClicked: base.contextMenuRequested(); + onClicked: base.contextMenuRequested() - onEntered: { - hoverTimer.start(); + onEntered: + { + hoverTimer.start() } - onExited: { - if(controlContainer.item && controlContainer.item.hovered) { - return; + onExited: + { + if (controlContainer.item && controlContainer.item.hovered) + { + return } - hoverTimer.stop(); - base.hideTooltip(); + hoverTimer.stop() + base.hideTooltip() } - Timer { - id: hoverTimer; - interval: 500; - repeat: false; + Timer + { + id: hoverTimer + interval: 500 + repeat: false onTriggered: { - base.showTooltip(base.tooltipText); + base.showTooltip(base.tooltipText) } } Label { - id: label; + id: label - anchors.left: parent.left; - anchors.leftMargin: doDepthIndentation ? Math.round((UM.Theme.getSize("section_icon_column").width + 5) + ((definition.depth - 1) * UM.Theme.getSize("setting_control_depth_margin").width)) : 0 - anchors.right: settingControls.left; + anchors.left: parent.left + anchors.leftMargin: doDepthIndentation ? Math.round(UM.Theme.getSize("thin_margin").width + ((definition.depth - 1) * UM.Theme.getSize("setting_control_depth_margin").width)) : 0 + anchors.right: settingControls.left anchors.verticalCenter: parent.verticalCenter text: definition.label - elide: Text.ElideMiddle; + elide: Text.ElideMiddle renderType: Text.NativeRendering textFormat: Text.PlainText - color: UM.Theme.getColor("setting_control_text"); + color: UM.Theme.getColor("setting_control_text") opacity: (definition.visible) ? 1 : 0.5 // emphasize the setting if it has a value in the user or quality profile font: base.doQualityUserSettingEmphasis && base.stackLevel != undefined && base.stackLevel <= 1 ? UM.Theme.getFont("default_italic") : UM.Theme.getFont("default") @@ -128,11 +137,12 @@ Item { id: settingControls height: Math.round(parent.height / 2) - spacing: Math.round(UM.Theme.getSize("sidebar_margin").height / 2) + spacing: Math.round(UM.Theme.getSize("thick_margin").height / 2) - anchors { + anchors + { right: controlContainer.left - rightMargin: Math.round(UM.Theme.getSize("sidebar_margin").width / 2) + rightMargin: Math.round(UM.Theme.getSize("thick_margin").width / 2) verticalCenter: parent.verticalCenter } @@ -150,112 +160,123 @@ Item { iconSource: UM.Theme.getIcon("link") - onEntered: { - hoverTimer.stop(); - var tooltipText = catalog.i18nc("@label", "This setting is always shared between all extruders. Changing it here will change the value for all extruders."); - if ((resolve != "None") && (stackLevel != 0)) { + onEntered: + { + hoverTimer.stop() + var tooltipText = catalog.i18nc("@label", "This setting is always shared between all extruders. Changing it here will change the value for all extruders.") + if ((resolve != "None") && (stackLevel != 0)) + { // We come here if a setting has a resolve and the setting is not manually edited. - tooltipText += " " + catalog.i18nc("@label", "The value is resolved from per-extruder values ") + "[" + Cura.ExtruderManager.getInstanceExtruderValues(definition.key) + "]."; + tooltipText += " " + catalog.i18nc("@label", "The value is resolved from per-extruder values ") + "[" + Cura.ExtruderManager.getInstanceExtruderValues(definition.key) + "]." } - base.showTooltip(tooltipText); + base.showTooltip(tooltipText) } - onExited: base.showTooltip(base.tooltipText); + onExited: base.showTooltip(base.tooltipText) } UM.SimpleButton { - id: revertButton; + id: revertButton visible: base.stackLevel == 0 && base.showRevertButton - height: parent.height; - width: height; + height: parent.height + width: height color: UM.Theme.getColor("setting_control_button") hoverColor: UM.Theme.getColor("setting_control_button_hover") iconSource: UM.Theme.getIcon("reset") - onClicked: { + onClicked: + { revertButton.focus = true - if (externalResetHandler) { + if (externalResetHandler) + { externalResetHandler(propertyProvider.key) - } else { + } + else + { Cura.MachineManager.clearUserSettingAllCurrentStacks(propertyProvider.key) } } - onEntered: { hoverTimer.stop(); base.showTooltip(catalog.i18nc("@label", "This setting has a value that is different from the profile.\n\nClick to restore the value of the profile.")) } - onExited: base.showTooltip(base.tooltipText); + onEntered: + { + hoverTimer.stop() + base.showTooltip(catalog.i18nc("@label", "This setting has a value that is different from the profile.\n\nClick to restore the value of the profile.")) + } + onExited: base.showTooltip(base.tooltipText) } UM.SimpleButton { // This button shows when the setting has an inherited function, but is overriden by profile. - id: inheritButton; + id: inheritButton // Inherit button needs to be visible if; // - User made changes that override any loaded settings // - This setting item uses inherit button at all // - The type of the value of any deeper container is an "object" (eg; is a function) visible: { - if(!base.showInheritButton) + if (!base.showInheritButton) { - return false; + return false } - if(!propertyProvider.properties.enabled) + if (!propertyProvider.properties.enabled) { // Note: This is not strictly necessary since a disabled setting is hidden anyway. // But this will cause the binding to be re-evaluated when the enabled property changes. - return false; + return false } // There are no settings with any warning. - if(Cura.SettingInheritanceManager.settingsWithInheritanceWarning.length == 0) + if (Cura.SettingInheritanceManager.settingsWithInheritanceWarning.length == 0) { - return false; + return false } // This setting has a resolve value, so an inheritance warning doesn't do anything. - if(resolve != "None") + if (resolve != "None") { return false } // If the setting does not have a limit_to_extruder property (or is -1), use the active stack. - if(globalPropertyProvider.properties.limit_to_extruder == null || String(globalPropertyProvider.properties.limit_to_extruder) == "-1") + if (globalPropertyProvider.properties.limit_to_extruder == null || String(globalPropertyProvider.properties.limit_to_extruder) == "-1") { - return Cura.SettingInheritanceManager.settingsWithInheritanceWarning.indexOf(definition.key) >= 0; + return Cura.SettingInheritanceManager.settingsWithInheritanceWarning.indexOf(definition.key) >= 0 } // Setting does have a limit_to_extruder property, so use that one instead. if (definition.key === undefined) { // Observed when loading workspace, probably when SettingItems are removed. - return false; + return false } - return Cura.SettingInheritanceManager.getOverridesForExtruder(definition.key, String(globalPropertyProvider.properties.limit_to_extruder)).indexOf(definition.key) >= 0; + return Cura.SettingInheritanceManager.getOverridesForExtruder(definition.key, String(globalPropertyProvider.properties.limit_to_extruder)).indexOf(definition.key) >= 0 } - height: parent.height; - width: height; + height: parent.height + width: height - onClicked: { - focus = true; + onClicked: + { + focus = true // Get the most shallow function value (eg not a number) that we can find. var last_entry = propertyProvider.stackLevels[propertyProvider.stackLevels.length - 1] for (var i = 1; i < base.stackLevels.length; i++) { - var has_setting_function = typeof(propertyProvider.getPropertyValue("value", base.stackLevels[i])) == "object"; + var has_setting_function = typeof(propertyProvider.getPropertyValue("value", base.stackLevels[i])) == "object" if(has_setting_function) { last_entry = propertyProvider.stackLevels[i] - break; + break } } - if((last_entry == 4 || last_entry == 11) && base.stackLevel == 0 && base.stackLevels.length == 2) + if ((last_entry == 4 || last_entry == 11) && base.stackLevel == 0 && base.stackLevels.length == 2) { // Special case of the inherit reset. If only the definition (4th or 11th) container) and the first // entry (user container) are set, we can simply remove the container. @@ -276,23 +297,22 @@ Item { color: UM.Theme.getColor("setting_control_button") hoverColor: UM.Theme.getColor("setting_control_button_hover") - iconSource: UM.Theme.getIcon("formula"); + iconSource: UM.Theme.getIcon("formula") onEntered: { hoverTimer.stop(); base.showTooltip(catalog.i18nc("@label", "This setting is normally calculated, but it currently has an absolute value set.\n\nClick to restore the calculated value.")) } - onExited: base.showTooltip(base.tooltipText); + onExited: base.showTooltip(base.tooltipText) } } Item { - id: controlContainer; + id: controlContainer enabled: propertyProvider.isValueUsed - anchors.right: parent.right; - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width - anchors.verticalCenter: parent.verticalCenter; - width: UM.Theme.getSize("setting_control").width; + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + width: UM.Theme.getSize("setting_control").width height: UM.Theme.getSize("setting_control").height } } diff --git a/resources/qml/Settings/SettingOptionalExtruder.qml b/resources/qml/Settings/SettingOptionalExtruder.qml index a3c1422b30..b73c7498ae 100644 --- a/resources/qml/Settings/SettingOptionalExtruder.qml +++ b/resources/qml/Settings/SettingOptionalExtruder.qml @@ -1,5 +1,5 @@ -// Copyright (c) 2016 Ultimaker B.V. -// Uranium is released under the terms of the LGPLv3 or higher. +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 import QtQuick.Controls 2.0 @@ -12,15 +12,24 @@ SettingItem id: base property var focusItem: control + // Somehow if we directory set control.model to CuraApplication.getExtrudersModelWithOptional() + // and in the Connections.onModelChanged use control.model as a reference, it will complain about + // non-existing properties such as "onModelChanged" and "getItem". I guess if we access the model + // via "control.model", it gives back a generic/abstract model instance. To avoid this, we add + // this extra property to keep the ExtrudersModel and use this in the rest of the code. + property var extrudersWithOptionalModel: CuraApplication.getExtrudersModelWithOptional() + contents: ComboBox { id: control anchors.fill: parent - model: Cura.ExtrudersModel + model: base.extrudersWithOptionalModel + + Connections { - onModelChanged: control.color = getItem(control.currentIndex).color - addOptionalExtruder: true + target: base.extrudersWithOptionalModel + onModelChanged: control.color = base.extrudersWithOptionalModel.getItem(control.currentIndex).color } textRole: "name" @@ -31,12 +40,15 @@ SettingItem { forceActiveFocus(); propertyProvider.setPropertyValue("value", model.getItem(index).index); - } else + } + else { if (propertyProvider.properties.value == -1) { - control.currentIndex = model.rowCount() - 1; // we know the last item is "Not overriden" - } else { + control.currentIndex = model.count - 1; // we know the last item is "Not overriden" + } + else + { control.currentIndex = propertyProvider.properties.value; // revert to the old value } } @@ -99,7 +111,7 @@ SettingItem sourceSize.width: width + 5 * screenScaleFactor sourceSize.height: width + 5 * screenScaleFactor - color: UM.Theme.getColor("setting_control_text"); + color: UM.Theme.getColor("setting_control_button"); } background: Rectangle @@ -116,6 +128,7 @@ SettingItem } return UM.Theme.getColor("setting_control"); } + radius: UM.Theme.getSize("setting_control_radius").width border.width: UM.Theme.getSize("default_lining").width border.color: { @@ -148,20 +161,18 @@ SettingItem elide: Text.ElideRight verticalAlignment: Text.AlignVCenter - background: Rectangle + background: UM.RecolorImage { id: swatch - height: Math.round(UM.Theme.getSize("setting_control").height / 2) + height: Math.round(parent.height / 2) width: height - anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter - anchors.margins: Math.round(UM.Theme.getSize("default_margin").width / 4) - - border.width: UM.Theme.getSize("default_lining").width - border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border") - radius: Math.round(width / 2) + anchors.rightMargin: UM.Theme.getSize("thin_margin").width + sourceSize.width: width + sourceSize.height: height + source: UM.Theme.getIcon("extruder_button") color: control.color } } @@ -215,20 +226,18 @@ SettingItem verticalAlignment: Text.AlignVCenter rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width - background: Rectangle + background: UM.RecolorImage { id: swatch - height: Math.round(UM.Theme.getSize("setting_control").height / 2) + height: Math.round(parent.height / 2) width: height - anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter - anchors.margins: Math.round(UM.Theme.getSize("default_margin").width / 4) - - border.width: UM.Theme.getSize("default_lining").width - border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border") - radius: Math.round(width / 2) + anchors.rightMargin: UM.Theme.getSize("thin_margin").width + sourceSize.width: width + sourceSize.height: height + source: UM.Theme.getIcon("extruder_button") color: control.model.getItem(index).color } } diff --git a/resources/qml/Settings/SettingTextField.qml b/resources/qml/Settings/SettingTextField.qml index 9ec9338316..770ef53900 100644 --- a/resources/qml/Settings/SettingTextField.qml +++ b/resources/qml/Settings/SettingTextField.qml @@ -32,6 +32,7 @@ SettingItem anchors.fill: parent + radius: UM.Theme.getSize("setting_control_radius").width border.width: Math.round(UM.Theme.getSize("default_lining").width) border.color: { @@ -81,10 +82,10 @@ SettingItem Rectangle { - anchors.fill: parent; - anchors.margins: Math.round(UM.Theme.getSize("default_lining").width); + anchors.fill: parent + anchors.margins: Math.round(UM.Theme.getSize("default_lining").width) color: UM.Theme.getColor("setting_control_highlight") - opacity: !control.hovered ? 0 : propertyProvider.properties.validationState == "ValidatorState.Valid" ? 1.0 : 0.35; + opacity: !control.hovered ? 0 : propertyProvider.properties.validationState == "ValidatorState.Valid" ? 1.0 : 0.35 } Label @@ -145,11 +146,11 @@ SettingItem } color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text") - font: UM.Theme.getFont("default"); + font: UM.Theme.getFont("default") - selectByMouse: true; + selectByMouse: true - maximumLength: (definition.type == "str" || definition.type == "[int]") ? -1 : 10; + maximumLength: (definition.type == "str" || definition.type == "[int]") ? -1 : 10 clip: true; //Hide any text that exceeds the width of the text box. validator: RegExpValidator { regExp: (definition.type == "[int]") ? /^\[?(\s*-?[0-9]{0,9}\s*,)*(\s*-?[0-9]{0,9})\s*\]?$/ : (definition.type == "int") ? /^-?[0-9]{0,10}$/ : (definition.type == "float") ? /^-?[0-9]{0,9}[.,]?[0-9]{0,3}$/ : /^.*$/ } // definition.type property from parent loader used to disallow fractional number entry @@ -158,7 +159,8 @@ SettingItem { target: input property: "text" - value: { + value: + { // Stacklevels // 0: user -> unsaved change // 1: quality changes -> saved change @@ -167,13 +169,15 @@ SettingItem // 4: variant // 5: machine_changes // 6: machine - if ((base.resolve != "None" && base.resolve) && (stackLevel != 0) && (stackLevel != 1)) { + if ((base.resolve != "None" && base.resolve) && (stackLevel != 0) && (stackLevel != 1)) + { // We have a resolve function. Indicates that the setting is not settable per extruder and that // we have to choose between the resolved value (default) and the global value // (if user has explicitly set this). - return base.resolve; - } else { - return propertyProvider.properties.value; + return base.resolve + } + else { + return propertyProvider.properties.value } } when: !input.activeFocus @@ -182,16 +186,17 @@ SettingItem MouseArea { id: mouseArea - anchors.fill: parent; + anchors.fill: parent cursorShape: Qt.IBeamCursor onPressed: { - if(!input.activeFocus) { - base.focusGainedByClick = true; - input.forceActiveFocus(); + if (!input.activeFocus) + { + base.focusGainedByClick = true + input.forceActiveFocus() } - mouse.accepted = false; + mouse.accepted = false } } } diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index da50b430ac..972cbcdbb1 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -1,5 +1,5 @@ -// Copyright (c) 2017 Ultimaker B.V. -// Uranium is released under the terms of the LGPLv3 or higher. +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 import QtQuick.Controls 1.1 @@ -13,156 +13,28 @@ import "../Menus" Item { - id: base; + id: settingsView property QtObject settingVisibilityPresetsModel: CuraApplication.getSettingVisibilityPresetsModel() property Action configureSettings property bool findingSettings - signal showTooltip(Item item, point location, string text) - signal hideTooltip() - - Item - { - id: globalProfileRow - height: UM.Theme.getSize("sidebar_setup").height - visible: !sidebar.hideSettings - - anchors - { - top: parent.top - left: parent.left - leftMargin: Math.round(UM.Theme.getSize("sidebar_margin").width) - right: parent.right - rightMargin: Math.round(UM.Theme.getSize("sidebar_margin").width) - } - - Label - { - id: globalProfileLabel - text: catalog.i18nc("@label","Profile:") - textFormat: Text.PlainText - width: Math.round(parent.width * 0.45 - UM.Theme.getSize("sidebar_margin").width - 2) - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - verticalAlignment: Text.AlignVCenter - anchors.top: parent.top - anchors.bottom: parent.bottom - } - - ToolButton - { - id: globalProfileSelection - - text: generateActiveQualityText() - enabled: !header.currentExtruderVisible || header.currentExtruderIndex > -1 - width: Math.round(parent.width * 0.55) - height: UM.Theme.getSize("setting_control").height - anchors.left: globalProfileLabel.right - anchors.right: parent.right - tooltip: Cura.MachineManager.activeQualityOrQualityChangesName - style: UM.Theme.styles.sidebar_header_button - activeFocusOnPress: true - menu: ProfileMenu { } - - function generateActiveQualityText () { - var result = Cura.MachineManager.activeQualityOrQualityChangesName; - - if (Cura.MachineManager.isActiveQualitySupported) { - if (Cura.MachineManager.activeQualityLayerHeight > 0) { - result += " " - result += " - " - result += Cura.MachineManager.activeQualityLayerHeight + "mm" - result += "" - } - } - - return result - } - - UM.SimpleButton - { - id: customisedSettings - - visible: Cura.MachineManager.hasUserSettings - height: Math.round(parent.height * 0.6) - width: Math.round(parent.height * 0.6) - - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: Math.round(UM.Theme.getSize("setting_preferences_button_margin").width - UM.Theme.getSize("sidebar_margin").width) - - color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button"); - iconSource: UM.Theme.getIcon("star"); - - onClicked: - { - forceActiveFocus(); - Cura.Actions.manageProfiles.trigger() - } - onEntered: - { - var content = catalog.i18nc("@tooltip","Some setting/override values are different from the values stored in the profile.\n\nClick to open the profile manager.") - base.showTooltip(globalProfileRow, Qt.point(-UM.Theme.getSize("sidebar_margin").width, 0), content) - } - onExited: base.hideTooltip() - } - } - } - - ToolButton - { - id: settingVisibilityMenu - - width: height - height: UM.Theme.getSize("setting_control").height - anchors - { - top: globalProfileRow.bottom - topMargin: UM.Theme.getSize("sidebar_margin").height - right: parent.right - rightMargin: UM.Theme.getSize("sidebar_margin").width - } - style: ButtonStyle - { - background: Item { - UM.RecolorImage { - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - width: UM.Theme.getSize("standard_arrow").width - height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width - sourceSize.height: width - color: control.enabled ? UM.Theme.getColor("setting_category_text") : UM.Theme.getColor("setting_category_disabled_text") - source: UM.Theme.getIcon("menu") - } - } - label: Label{} - } - menu: SettingVisibilityPresetsMenu - { - onShowAllSettings: - { - definitionsModel.setAllVisible(true); - filter.updateDefinitionModel(); - } - } - } Rectangle { id: filterContainer visible: true + radius: UM.Theme.getSize("setting_control_radius").width border.width: Math.round(UM.Theme.getSize("default_lining").width) border.color: { - if(hoverMouseArea.containsMouse || clearFilterButton.containsMouse) + if (hoverMouseArea.containsMouse || clearFilterButton.containsMouse) { - return UM.Theme.getColor("setting_control_border_highlight"); + return UM.Theme.getColor("setting_control_border_highlight") } else { - return UM.Theme.getColor("setting_control_border"); + return UM.Theme.getColor("setting_control_border") } } @@ -170,16 +42,12 @@ Item anchors { - top: globalProfileRow.bottom - topMargin: UM.Theme.getSize("sidebar_margin").height + top: parent.top left: parent.left - leftMargin: UM.Theme.getSize("sidebar_margin").width right: settingVisibilityMenu.left - rightMargin: Math.floor(UM.Theme.getSize("default_margin").width / 2) + rightMargin: UM.Theme.getSize("default_margin").width } - height: visible ? UM.Theme.getSize("setting_control").height : 0 - Behavior on height { NumberAnimation { duration: 100 } } - + height: UM.Theme.getSize("print_setup_big_item").height Timer { id: settingsSearchTimer @@ -191,19 +59,19 @@ Item TextField { - id: filter; + id: filter height: parent.height anchors.left: parent.left anchors.right: clearFilterButton.left - anchors.rightMargin: Math.round(UM.Theme.getSize("sidebar_margin").width) + anchors.rightMargin: Math.round(UM.Theme.getSize("thick_margin").width) - placeholderText: catalog.i18nc("@label:textbox", "Search...") + placeholderText: "" + "
    " + catalog.i18nc("@label:textbox", "search settings") style: TextFieldStyle { - textColor: UM.Theme.getColor("setting_control_text"); - placeholderTextColor: UM.Theme.getColor("setting_control_text") - font: UM.Theme.getFont("default"); + textColor: UM.Theme.getColor("setting_control_text") + placeholderTextColor: UM.Theme.getColor("setting_filter_field") + font: UM.Theme.getFont("default_italic") background: Item {} } @@ -217,38 +85,38 @@ Item onEditingFinished: { - definitionsModel.filter = {"i18n_label": "*" + text}; - findingSettings = (text.length > 0); - if(findingSettings != lastFindingSettings) + definitionsModel.filter = {"i18n_label": "*" + text} + findingSettings = (text.length > 0) + if (findingSettings != lastFindingSettings) { - updateDefinitionModel(); - lastFindingSettings = findingSettings; + updateDefinitionModel() + lastFindingSettings = findingSettings } } Keys.onEscapePressed: { - filter.text = ""; + filter.text = "" } function updateDefinitionModel() { - if(findingSettings) + if (findingSettings) { - expandedCategories = definitionsModel.expanded.slice(); - definitionsModel.expanded = [""]; // keep categories closed while to prevent render while making settings visible one by one - definitionsModel.showAncestors = true; - definitionsModel.showAll = true; - definitionsModel.expanded = ["*"]; + expandedCategories = definitionsModel.expanded.slice() + definitionsModel.expanded = [""] // keep categories closed while to prevent render while making settings visible one by one + definitionsModel.showAncestors = true + definitionsModel.showAll = true + definitionsModel.expanded = ["*"] } else { - if(expandedCategories) + if (expandedCategories) { - definitionsModel.expanded = expandedCategories; + definitionsModel.expanded = expandedCategories } - definitionsModel.showAncestors = false; - definitionsModel.showAll = false; + definitionsModel.showAncestors = false + definitionsModel.showAll = false } } } @@ -280,41 +148,93 @@ Item onClicked: { - filter.text = ""; - filter.forceActiveFocus(); + filter.text = "" + filter.forceActiveFocus() } } } + ToolButton + { + id: settingVisibilityMenu + + anchors + { + top: filterContainer.top + bottom: filterContainer.bottom + right: parent.right + rightMargin: UM.Theme.getSize("wide_margin").width + } + + style: ButtonStyle + { + background: Item + { + UM.RecolorImage + { + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + sourceSize.width: width + sourceSize.height: height + color: control.hovered ? UM.Theme.getColor("small_button_text_hover") : UM.Theme.getColor("small_button_text") + source: UM.Theme.getIcon("menu") + } + } + label: Label {} + } + + menu: SettingVisibilityPresetsMenu + { + onShowAllSettings: + { + definitionsModel.setAllVisible(true) + filter.updateDefinitionModel() + } + } + } + + // Mouse area that gathers the scroll events to not propagate it to the main view. + MouseArea + { + anchors.fill: scrollView + acceptedButtons: Qt.AllButtons + onWheel: wheel.accepted = true + } + ScrollView { - anchors.top: filterContainer.bottom; - anchors.bottom: parent.bottom; - anchors.right: parent.right; - anchors.left: parent.left; - anchors.topMargin: filterContainer.visible ? UM.Theme.getSize("sidebar_margin").height : 0 - Behavior on anchors.topMargin { NumberAnimation { duration: 100 } } + id: scrollView + anchors + { + top: filterContainer.bottom + topMargin: UM.Theme.getSize("default_margin").height + bottom: parent.bottom + right: parent.right + left: parent.left + } - style: UM.Theme.styles.scrollview; - flickableItem.flickableDirection: Flickable.VerticalFlick; - __wheelAreaScrollSpeed: 75; // Scroll three lines in one scroll event + style: UM.Theme.styles.scrollview + flickableItem.flickableDirection: Flickable.VerticalFlick + __wheelAreaScrollSpeed: 75 // Scroll three lines in one scroll event ListView { id: contents - spacing: Math.round(UM.Theme.getSize("default_lining").height); - cacheBuffer: 1000000; // Set a large cache to effectively just cache every list item. + spacing: UM.Theme.getSize("default_lining").height + cacheBuffer: 1000000 // Set a large cache to effectively just cache every list item. model: UM.SettingDefinitionsModel { - id: definitionsModel; + id: definitionsModel containerId: Cura.MachineManager.activeDefinitionId visibilityHandler: UM.SettingPreferenceVisibilityHandler { } exclude: ["machine_settings", "command_line_settings", "infill_mesh", "infill_mesh_order", "cutting_mesh", "support_mesh", "anti_overhang_mesh"] // TODO: infill_mesh settigns are excluded hardcoded, but should be based on the fact that settable_globally, settable_per_meshgroup and settable_per_extruder are false. expanded: CuraApplication.expandedCategories onExpandedChanged: { - if(!findingSettings) + if (!findingSettings) { // Do not change expandedCategories preference while filtering settings // because all categories are expanded while filtering @@ -330,7 +250,7 @@ Item { id: delegate - width: Math.round(UM.Theme.getSize("sidebar").width); + width: scrollView.width height: provider.properties.enabled == "True" ? UM.Theme.getSize("section").height : - contents.spacing Behavior on height { NumberAnimation { duration: 100 } } opacity: provider.properties.enabled == "True" ? 1 : 0 @@ -400,17 +320,17 @@ Item // machine gets changed. var activeMachineId = Cura.MachineManager.activeMachineId; - if(!model.settable_per_extruder) + if (!model.settable_per_extruder) { //Not settable per extruder or there only is global, so we must pick global. return activeMachineId; } - if(inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0) + if (inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0) { //We have limit_to_extruder, so pick that stack. return Cura.ExtruderManager.extruderIds[String(inheritStackProvider.properties.limit_to_extruder)]; } - if(Cura.ExtruderManager.activeExtruderStackId) + if (Cura.ExtruderManager.activeExtruderStackId) { //We're on an extruder tab. Pick the current extruder. return Cura.ExtruderManager.activeExtruderStackId; @@ -451,7 +371,7 @@ Item contextMenu.provider = provider contextMenu.popup(); } - onShowTooltip: base.showTooltip(delegate, { x: -UM.Theme.getSize("default_arrow").width, y: Math.round(delegate.height / 2) }, text) + onShowTooltip: base.showTooltip(delegate, Qt.point(- settingsView.x - UM.Theme.getSize("default_margin").width, 0), text) onHideTooltip: base.hideTooltip() onShowAllHiddenInheritedSettings: { @@ -472,14 +392,14 @@ Item } onSetActiveFocusToNextSetting: { - if(forward == undefined || forward) + if (forward == undefined || forward) { contents.currentIndex = contents.indexWithFocus + 1; while(contents.currentItem && contents.currentItem.height <= 0) { contents.currentIndex++; } - if(contents.currentItem) + if (contents.currentItem) { contents.currentItem.item.focusItem.forceActiveFocus(); } @@ -491,7 +411,7 @@ Item { contents.currentIndex--; } - if(contents.currentItem) + if (contents.currentItem) { contents.currentItem.item.focusItem.forceActiveFocus(); } @@ -638,17 +558,6 @@ Item onTriggered: Cura.Actions.configureSettingVisibility.trigger(contextMenu); } - MenuSeparator {} - MenuItem - { - text: catalog.i18nc("@action:inmenu", "Collapse All") - onTriggered: definitionsModel.collapseAll() - } - MenuItem - { - text: catalog.i18nc("@action:inmenu", "Expand All") - onTriggered: definitionsModel.expandRecursive() - } } UM.SettingPropertyProvider diff --git a/resources/qml/SidebarAdvanced.qml b/resources/qml/SidebarAdvanced.qml deleted file mode 100644 index ff5f545c80..0000000000 --- a/resources/qml/SidebarAdvanced.qml +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) 2015 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 2.0 - -import "Settings" - -SettingView { -} diff --git a/resources/qml/SidebarContents.qml b/resources/qml/SidebarContents.qml deleted file mode 100644 index 0b19bfe3c1..0000000000 --- a/resources/qml/SidebarContents.qml +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) 2016 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.1 - -import UM 1.2 as UM -import Cura 1.0 as Cura - -StackView -{ - id: sidebarContents - - delegate: StackViewDelegate - { - function transitionFinished(properties) - { - properties.exitItem.opacity = 1 - } - - pushTransition: StackViewTransition - { - PropertyAnimation - { - target: enterItem - property: "opacity" - from: 0 - to: 1 - duration: 100 - } - PropertyAnimation - { - target: exitItem - property: "opacity" - from: 1 - to: 0 - duration: 100 - } - } - } -} \ No newline at end of file diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml deleted file mode 100644 index df4f493ea5..0000000000 --- a/resources/qml/SidebarHeader.qml +++ /dev/null @@ -1,617 +0,0 @@ -// Copyright (c) 2017 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 - -import UM 1.2 as UM -import Cura 1.0 as Cura - -import "Menus" - -Column -{ - id: base; - - property int currentExtruderIndex: Cura.ExtruderManager.activeExtruderIndex; - property bool currentExtruderVisible: extrudersList.visible; - property bool printerConnected: Cura.MachineManager.printerConnected - property bool hasManyPrinterTypes: - { - if (printerConnected) - { - if (Cura.MachineManager.printerOutputDevices[0].connectedPrintersTypeCount != null) - { - return Cura.MachineManager.printerOutputDevices[0].connectedPrintersTypeCount.length > 1; - } - } - return false; - } - property bool buildplateCompatibilityError: !Cura.MachineManager.variantBuildplateCompatible && !Cura.MachineManager.variantBuildplateUsable - property bool buildplateCompatibilityWarning: Cura.MachineManager.variantBuildplateUsable - - spacing: Math.round(UM.Theme.getSize("sidebar_margin").width * 0.9) - - signal showTooltip(Item item, point location, string text) - signal hideTooltip() - - Item - { - id: initialSeparator - anchors - { - left: parent.left - right: parent.right - } - visible: printerTypeSelectionRow.visible || buildplateRow.visible || extruderSelectionRow.visible - height: UM.Theme.getSize("default_lining").height - width: height - } - - // Printer Type Row - Item - { - id: printerTypeSelectionRow - height: UM.Theme.getSize("sidebar_setup").height - visible: printerConnected && hasManyPrinterTypes && !sidebar.hideSettings - - anchors - { - left: parent.left - leftMargin: UM.Theme.getSize("sidebar_margin").width - right: parent.right - rightMargin: UM.Theme.getSize("sidebar_margin").width - } - - Label - { - id: configurationLabel - text: catalog.i18nc("@label", "Printer type"); - width: Math.round(parent.width * 0.4 - UM.Theme.getSize("default_margin").width) - height: parent.height - verticalAlignment: Text.AlignVCenter - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); - } - - ToolButton - { - id: printerTypeSelection - text: Cura.MachineManager.activeMachineDefinitionName - tooltip: Cura.MachineManager.activeMachineDefinitionName - height: UM.Theme.getSize("setting_control").height - width: Math.round(parent.width * 0.7) + UM.Theme.getSize("sidebar_margin").width - anchors.right: parent.right - style: UM.Theme.styles.sidebar_header_button - activeFocusOnPress: true; - - menu: PrinterTypeMenu { } - } - } - - Rectangle { - id: headerSeparator - width: parent.width - visible: printerTypeSelectionRow.visible - height: visible ? UM.Theme.getSize("sidebar_lining").height : 0 - color: UM.Theme.getColor("sidebar_lining") - } - - // Extruder Row - Item - { - id: extruderSelectionRow - width: parent.width - height: Math.round(UM.Theme.getSize("sidebar_tabs").height * 2 / 3) - visible: machineExtruderCount.properties.value > 1 - - anchors - { - left: parent.left - leftMargin: Math.round(UM.Theme.getSize("sidebar_margin").width * 0.7) - right: parent.right - rightMargin: Math.round(UM.Theme.getSize("sidebar_margin").width * 0.7) - topMargin: UM.Theme.getSize("sidebar_margin").height - } - - ListView - { - id: extrudersList - property var index: 0 - - height: UM.Theme.getSize("sidebar_header_mode_tabs").height - width: Math.round(parent.width) - boundsBehavior: Flickable.StopAtBounds - - anchors - { - left: parent.left - leftMargin: Math.round(UM.Theme.getSize("default_margin").width / 2) - right: parent.right - rightMargin: Math.round(UM.Theme.getSize("default_margin").width / 2) - verticalCenter: parent.verticalCenter - } - - ExclusiveGroup { id: extruderMenuGroup; } - - orientation: ListView.Horizontal - - model: Cura.ExtrudersModel { id: extrudersModel; } - - Connections - { - target: Cura.MachineManager - onGlobalContainerChanged: forceActiveFocus() // Changing focus applies the currently-being-typed values so it can change the displayed setting values. - } - - delegate: Button - { - height: ListView.view.height - width: Math.round(ListView.view.width / extrudersModel.rowCount()) - - text: model.name - tooltip: model.name - exclusiveGroup: extruderMenuGroup - checked: base.currentExtruderIndex == index - - property bool extruder_enabled: true - - MouseArea - { - anchors.fill: parent - acceptedButtons: Qt.LeftButton | Qt.RightButton - onClicked: { - switch (mouse.button) { - case Qt.LeftButton: - extruder_enabled = Cura.MachineManager.getExtruder(model.index).isEnabled - if (extruder_enabled) - { - forceActiveFocus(); // Changing focus applies the currently-being-typed values so it can change the displayed setting values. - Cura.ExtruderManager.setActiveExtruderIndex(index); - } - break; - case Qt.RightButton: - extruder_enabled = Cura.MachineManager.getExtruder(model.index).isEnabled - extruderMenu.popup(); - break; - } - - } - } - - Menu - { - id: extruderMenu - - MenuItem { - text: catalog.i18nc("@action:inmenu", "Enable Extruder") - onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, true) - visible: !extruder_enabled // using an intermediate variable prevents an empty popup that occured now and then - } - - MenuItem { - text: catalog.i18nc("@action:inmenu", "Disable Extruder") - onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, false) - visible: extruder_enabled - enabled: Cura.MachineManager.numberExtrudersEnabled > 1 - } - } - - style: ButtonStyle - { - background: Item - { - function buttonBackgroundColor(index) - { - var extruder = Cura.MachineManager.getExtruder(index) - if (extruder.isEnabled) { - return (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active") : - control.hovered ? UM.Theme.getColor("action_button_hovered") : - UM.Theme.getColor("action_button") - } else { - return UM.Theme.getColor("action_button_disabled") - } - } - - function buttonBorderColor(index) - { - var extruder = Cura.MachineManager.getExtruder(index) - if (extruder.isEnabled) { - return (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_border") : - control.hovered ? UM.Theme.getColor("action_button_hovered_border") : - UM.Theme.getColor("action_button_border") - } else { - return UM.Theme.getColor("action_button_disabled_border") - } - } - - function buttonColor(index) { - var extruder = Cura.MachineManager.getExtruder(index); - if (extruder.isEnabled) - { - return ( - control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_text") : - control.hovered ? UM.Theme.getColor("action_button_hovered_text") : - UM.Theme.getColor("action_button_text"); - } else { - return UM.Theme.getColor("action_button_disabled_text"); - } - } - - Rectangle - { - anchors.fill: parent - border.width: control.checked ? UM.Theme.getSize("default_lining").width * 2 : UM.Theme.getSize("default_lining").width - border.color: buttonBorderColor(index) - color: buttonBackgroundColor(index) - Behavior on color { ColorAnimation { duration: 50; } } - } - - Item - { - id: extruderButtonFace - anchors.centerIn: parent - - width: { - var extruderTextWidth = extruderStaticText.visible ? extruderStaticText.width : 0; - var iconWidth = extruderIconItem.width; - return Math.round(extruderTextWidth + iconWidth + UM.Theme.getSize("default_margin").width / 2); - } - - // Static text "Extruder" - Label - { - id: extruderStaticText - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - - color: buttonColor(index) - - font: UM.Theme.getFont("large_nonbold") - text: catalog.i18nc("@label", "Extruder") - visible: width < (control.width - extruderIconItem.width - UM.Theme.getSize("default_margin").width) - elide: Text.ElideRight - } - - // Everything for the extruder icon - Item - { - id: extruderIconItem - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - - property var sizeToUse: - { - var minimumWidth = control.width < UM.Theme.getSize("button").width ? control.width : UM.Theme.getSize("button").width; - var minimumHeight = control.height < UM.Theme.getSize("button").height ? control.height : UM.Theme.getSize("button").height; - var minimumSize = minimumWidth < minimumHeight ? minimumWidth : minimumHeight; - minimumSize -= Math.round(UM.Theme.getSize("default_margin").width / 2); - return minimumSize; - } - - width: sizeToUse - height: sizeToUse - - UM.RecolorImage { - id: mainCircle - anchors.fill: parent - - sourceSize.width: parent.width - sourceSize.height: parent.width - source: UM.Theme.getIcon("extruder_button") - - color: extruderNumberText.color - } - - Label - { - id: extruderNumberText - anchors.centerIn: parent - text: index + 1; - color: buttonColor(index) - font: UM.Theme.getFont("default_bold") - } - - // Material colour circle - // Only draw the filling colour of the material inside the SVG border. - Rectangle - { - id: materialColorCircle - - anchors - { - right: parent.right - top: parent.top - rightMargin: Math.round(parent.sizeToUse * 0.01) - topMargin: Math.round(parent.sizeToUse * 0.05) - } - - color: model.color - - width: Math.round(parent.width * 0.35) - height: Math.round(parent.height * 0.35) - radius: Math.round(width / 2) - - border.width: 1 - border.color: UM.Theme.getColor("extruder_button_material_border") - - opacity: !control.checked ? 0.6 : 1.0 - } - } - } - } - label: Item {} - } - } - } - } - - Item - { - id: variantRowSpacer - height: Math.round(UM.Theme.getSize("sidebar_margin").height / 4) - width: height - visible: !extruderSelectionRow.visible && !initialSeparator.visible - } - - // Material Row - Item - { - id: materialRow - height: UM.Theme.getSize("sidebar_setup").height - visible: Cura.MachineManager.hasMaterials && !sidebar.hideSettings - - anchors - { - left: parent.left - leftMargin: UM.Theme.getSize("sidebar_margin").width - right: parent.right - rightMargin: UM.Theme.getSize("sidebar_margin").width - } - - Label - { - id: materialLabel - text: catalog.i18nc("@label", "Material"); - width: Math.round(parent.width * 0.45 - UM.Theme.getSize("default_margin").width) - height: parent.height - verticalAlignment: Text.AlignVCenter - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); - } - - ToolButton - { - id: materialSelection - - property var activeExtruder: Cura.MachineManager.activeStack - property var hasActiveExtruder: activeExtruder != null - property var currentRootMaterialName: hasActiveExtruder ? activeExtruder.material.name : "" - - text: currentRootMaterialName - tooltip: currentRootMaterialName - visible: Cura.MachineManager.hasMaterials - enabled: !extrudersList.visible || base.currentExtruderIndex > -1 - height: UM.Theme.getSize("setting_control").height - width: Math.round(parent.width * 0.7) + UM.Theme.getSize("sidebar_margin").width - anchors.right: parent.right - style: UM.Theme.styles.sidebar_header_button - activeFocusOnPress: true; - menu: MaterialMenu - { - extruderIndex: base.currentExtruderIndex - } - - property var valueError: !isMaterialSupported() - property var valueWarning: ! Cura.MachineManager.isActiveQualitySupported - - function isMaterialSupported () - { - if (!hasActiveExtruder) - { - return false; - } - return Cura.ContainerManager.getContainerMetaDataEntry(activeExtruder.material.id, "compatible", "") == "True" - } - } - } - - //Variant row - Item - { - id: variantRow - height: UM.Theme.getSize("sidebar_setup").height - visible: Cura.MachineManager.hasVariants && !sidebar.hideSettings - - anchors - { - left: parent.left - leftMargin: UM.Theme.getSize("sidebar_margin").width - right: parent.right - rightMargin: UM.Theme.getSize("sidebar_margin").width - } - - Label - { - id: variantLabel - text: Cura.MachineManager.activeDefinitionVariantsName; - width: Math.round(parent.width * 0.45 - UM.Theme.getSize("default_margin").width) - height: parent.height - verticalAlignment: Text.AlignVCenter - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); - } - - ToolButton - { - id: variantSelection - text: Cura.MachineManager.activeVariantName - tooltip: Cura.MachineManager.activeVariantName; - visible: Cura.MachineManager.hasVariants - - height: UM.Theme.getSize("setting_control").height - width: Math.round(parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width) - anchors.right: parent.right - style: UM.Theme.styles.sidebar_header_button - activeFocusOnPress: true; - - menu: NozzleMenu { extruderIndex: base.currentExtruderIndex } - } - } - - Rectangle - { - id: buildplateSeparator - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - width: parent.width - 2 * UM.Theme.getSize("sidebar_margin").width - visible: buildplateRow.visible - height: visible ? UM.Theme.getSize("sidebar_lining_thin").height : 0 - color: UM.Theme.getColor("sidebar_lining") - } - - //Buildplate row - Item - { - id: buildplateRow - height: UM.Theme.getSize("sidebar_setup").height - // TODO Only show in dev mode. Remove check when feature ready - visible: CuraSDKVersion == "dev" ? Cura.MachineManager.hasVariantBuildplates && !sidebar.hideSettings : false - - anchors - { - left: parent.left - leftMargin: UM.Theme.getSize("sidebar_margin").width - right: parent.right - rightMargin: UM.Theme.getSize("sidebar_margin").width - } - - Label - { - id: bulidplateLabel - text: catalog.i18nc("@label", "Build plate"); - width: Math.floor(parent.width * 0.45 - UM.Theme.getSize("default_margin").width) - height: parent.height - verticalAlignment: Text.AlignVCenter - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); - } - - ToolButton - { - id: buildplateSelection - text: Cura.MachineManager.activeVariantBuildplateName - tooltip: Cura.MachineManager.activeVariantBuildplateName - visible: Cura.MachineManager.hasVariantBuildplates - - height: UM.Theme.getSize("setting_control").height - width: Math.floor(parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width) - anchors.right: parent.right - style: UM.Theme.styles.sidebar_header_button - activeFocusOnPress: true; - - menu: BuildplateMenu {} - - property var valueError: !Cura.MachineManager.variantBuildplateCompatible && !Cura.MachineManager.variantBuildplateUsable - property var valueWarning: Cura.MachineManager.variantBuildplateUsable - } - } - - // Material info row - Item - { - id: materialInfoRow - height: Math.round(UM.Theme.getSize("sidebar_setup").height / 2) - visible: (Cura.MachineManager.hasVariants || Cura.MachineManager.hasMaterials || Cura.MachineManager.hasVariantBuildplates) && !sidebar.hideSettings - - anchors - { - left: parent.left - leftMargin: UM.Theme.getSize("sidebar_margin").width - right: parent.right - rightMargin: UM.Theme.getSize("sidebar_margin").width - } - - // TODO This was added to replace the buildplate selector. Remove this component when the feature is ready - Label - { - id: materialCompatibilityLabel - y: -Math.round(UM.Theme.getSize("sidebar_margin").height / 3) - anchors.left: parent.left - width: parent.width - materialCompatibilityLink.width - text: catalog.i18nc("@label", "Use glue with this material combination") - font: UM.Theme.getFont("very_small") - color: UM.Theme.getColor("text") - visible: CuraSDKVersion == "dev" ? false : buildplateCompatibilityError || buildplateCompatibilityWarning - wrapMode: Text.WordWrap - opacity: 0.5 - } - - Item - { - id: materialCompatibilityLink - height: UM.Theme.getSize("sidebar_setup").height - anchors.right: parent.right - width: childrenRect.width + UM.Theme.getSize("default_margin").width - - UM.RecolorImage { - id: warningImage - anchors.right: materialInfoLabel.left - anchors.rightMargin: UM.Theme.getSize("default_margin").width - anchors.verticalCenter: parent.Bottom - source: UM.Theme.getIcon("warning") - width: UM.Theme.getSize("section_icon").width - height: UM.Theme.getSize("section_icon").height - sourceSize.width: width - sourceSize.height: height - color: UM.Theme.getColor("material_compatibility_warning") - visible: !Cura.MachineManager.isCurrentSetupSupported || buildplateCompatibilityError || buildplateCompatibilityWarning - } - - Label { - id: materialInfoLabel - wrapMode: Text.WordWrap - text: "" + catalog.i18nc("@label", "Check compatibility") + "" - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - linkColor: UM.Theme.getColor("text_link") - verticalAlignment: Text.AlignTop - anchors.top: parent.top - anchors.right: parent.right - anchors.bottom: parent.bottom - - MouseArea { - anchors.fill: parent - hoverEnabled: true - onClicked: { - // open the material URL with web browser - var url = "https://ultimaker.com/incoming-links/cura/material-compatibilty" - Qt.openUrlExternally(url); - } - onEntered: { - var content = catalog.i18nc("@tooltip", "Click to check the material compatibility on Ultimaker.com."); - base.showTooltip( - materialInfoRow, - Qt.point(-UM.Theme.getSize("sidebar_margin").width, 0), - catalog.i18nc("@tooltip", content) - ); - } - onExited: base.hideTooltip(); - } - } - } - } - - UM.SettingPropertyProvider - { - id: machineExtruderCount - - containerStack: Cura.MachineManager.activeMachine - key: "machine_extruder_count" - watchedProperties: [ "value" ] - storeIndex: 0 - } - - UM.I18nCatalog { id: catalog; name:"cura" } -} diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml deleted file mode 100644 index ec673f2823..0000000000 --- a/resources/qml/SidebarSimple.qml +++ /dev/null @@ -1,1167 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 -import QtQuick.Layouts 1.3 - -import UM 1.2 as UM -import Cura 1.0 as Cura - -Item -{ - id: base - - signal showTooltip(Item item, point location, string text); - signal hideTooltip(); - - property Action configureSettings; - property variant minimumPrintTime: PrintInformation.minimumPrintTime; - property variant maximumPrintTime: PrintInformation.maximumPrintTime; - property bool settingsEnabled: Cura.ExtruderManager.activeExtruderStackId || extrudersEnabledCount.properties.value == 1 - Component.onCompleted: PrintInformation.enabled = true - Component.onDestruction: PrintInformation.enabled = false - UM.I18nCatalog { id: catalog; name: "cura" } - - ScrollView - { - visible: Cura.MachineManager.activeMachineName != "" // If no printers added then the view is invisible - anchors.fill: parent - style: UM.Theme.styles.scrollview - flickableItem.flickableDirection: Flickable.VerticalFlick - - Rectangle - { - width: childrenRect.width - height: childrenRect.height - color: UM.Theme.getColor("sidebar") - - // - // Quality profile - // - Item - { - id: qualityRow - - height: UM.Theme.getSize("sidebar_margin").height - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - anchors.right: parent.right - - Timer - { - id: qualitySliderChangeTimer - interval: 50 - running: false - repeat: false - onTriggered: - { - var item = Cura.QualityProfilesDropDownMenuModel.getItem(qualitySlider.value); - Cura.MachineManager.activeQualityGroup = item.quality_group; - } - } - - Component.onCompleted: qualityModel.update() - - Connections - { - target: Cura.QualityProfilesDropDownMenuModel - onItemsChanged: qualityModel.update() - } - - Connections { - target: base - onVisibleChanged: - { - // update needs to be called when the widgets are visible, otherwise the step width calculation - // will fail because the width of an invisible item is 0. - if (visible) - { - qualityModel.update(); - } - } - } - - ListModel - { - id: qualityModel - - property var totalTicks: 0 - property var availableTotalTicks: 0 - property var existingQualityProfile: 0 - - property var qualitySliderActiveIndex: 0 - property var qualitySliderStepWidth: 0 - property var qualitySliderAvailableMin: 0 - property var qualitySliderAvailableMax: 0 - property var qualitySliderMarginRight: 0 - - function update () - { - reset() - - var availableMin = -1 - var availableMax = -1 - - for (var i = 0; i < Cura.QualityProfilesDropDownMenuModel.rowCount(); i++) - { - var qualityItem = Cura.QualityProfilesDropDownMenuModel.getItem(i) - - // Add each quality item to the UI quality model - qualityModel.append(qualityItem) - - // Set selected value - if (Cura.MachineManager.activeQualityType == qualityItem.quality_type) - { - // set to -1 when switching to user created profile so all ticks are clickable - if (Cura.SimpleModeSettingsManager.isProfileUserCreated) - { - qualityModel.qualitySliderActiveIndex = -1 - } - else - { - qualityModel.qualitySliderActiveIndex = i - } - - qualityModel.existingQualityProfile = 1 - } - - // Set min available - if (qualityItem.available && availableMin == -1) - { - availableMin = i - } - - // Set max available - if (qualityItem.available) - { - availableMax = i - } - } - - // Set total available ticks for active slider part - if (availableMin != -1) - { - qualityModel.availableTotalTicks = availableMax - availableMin + 1 - } - - // Calculate slider values - calculateSliderStepWidth(qualityModel.totalTicks) - calculateSliderMargins(availableMin, availableMax, qualityModel.totalTicks) - - qualityModel.qualitySliderAvailableMin = availableMin - qualityModel.qualitySliderAvailableMax = availableMax - } - - function calculateSliderStepWidth (totalTicks) - { - qualityModel.qualitySliderStepWidth = totalTicks != 0 ? Math.round((base.width * 0.55) / (totalTicks)) : 0 - } - - function calculateSliderMargins (availableMin, availableMax, totalTicks) - { - if (availableMin == -1 || (availableMin == 0 && availableMax == 0)) - { - qualityModel.qualitySliderMarginRight = Math.round(base.width * 0.55) - } - else if (availableMin == availableMax) - { - qualityModel.qualitySliderMarginRight = Math.round((totalTicks - availableMin) * qualitySliderStepWidth) - } - else - { - qualityModel.qualitySliderMarginRight = Math.round((totalTicks - availableMax) * qualitySliderStepWidth) - } - } - - function reset () { - qualityModel.clear() - qualityModel.availableTotalTicks = 0 - qualityModel.existingQualityProfile = 0 - - // check, the ticks count cannot be less than zero - qualityModel.totalTicks = Math.max(0, Cura.QualityProfilesDropDownMenuModel.rowCount() - 1) - } - } - - Label - { - id: qualityRowTitle - text: catalog.i18nc("@label", "Layer Height") - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - } - - // Show titles for the each quality slider ticks - Item - { - y: -5; - anchors.left: speedSlider.left - Repeater - { - model: qualityModel - - Label - { - anchors.verticalCenter: parent.verticalCenter - anchors.top: parent.top - anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height / 2) - color: (Cura.MachineManager.activeMachine != null && Cura.QualityProfilesDropDownMenuModel.getItem(index).available) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - text: - { - var result = "" - if(Cura.MachineManager.activeMachine != null) - { - result = Cura.QualityProfilesDropDownMenuModel.getItem(index).layer_height - - if(result == undefined) - { - result = ""; - } - else - { - result = Number(Math.round(result + "e+2") + "e-2"); //Round to 2 decimals. Javascript makes this difficult... - if (result == undefined || result != result) //Parse failure. - { - result = ""; - } - } - } - return result - } - - x: - { - // Make sure the text aligns correctly with each tick - if (qualityModel.totalTicks == 0) - { - // If there is only one tick, align it centrally - return Math.round(((base.width * 0.55) - width) / 2) - } - else if (index == 0) - { - return Math.round(base.width * 0.55 / qualityModel.totalTicks) * index - } - else if (index == qualityModel.totalTicks) - { - return Math.round(base.width * 0.55 / qualityModel.totalTicks) * index - width - } - else - { - return Math.round((base.width * 0.55 / qualityModel.totalTicks) * index - (width / 2)) - } - } - } - } - } - - //Print speed slider - Item - { - id: speedSlider - width: Math.round(base.width * 0.55) - height: UM.Theme.getSize("sidebar_margin").height - anchors.right: parent.right - anchors.top: parent.top - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - - // This Item is used only for tooltip, for slider area which is unavailable - Item - { - function showTooltip (showTooltip) - { - if (showTooltip) - { - var content = catalog.i18nc("@tooltip", "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile") - base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("sidebar_margin").width, customisedSettings.height), content) - } - else - { - base.hideTooltip() - } - } - - id: unavailableLineToolTip - height: 20 * screenScaleFactor // hovered area height - z: parent.z + 1 // should be higher, otherwise the area can be hovered - x: 0 - anchors.verticalCenter: qualitySlider.verticalCenter - - Rectangle - { - id: leftArea - width: - { - if (qualityModel.availableTotalTicks == 0) - { - return qualityModel.qualitySliderStepWidth * qualityModel.totalTicks - } - return qualityModel.qualitySliderStepWidth * qualityModel.qualitySliderAvailableMin - 10 - } - height: parent.height - color: "transparent" - - MouseArea - { - anchors.fill: parent - hoverEnabled: true - enabled: Cura.SimpleModeSettingsManager.isProfileUserCreated == false - onEntered: unavailableLineToolTip.showTooltip(true) - onExited: unavailableLineToolTip.showTooltip(false) - } - } - - Rectangle - { - id: rightArea - width: - { - if(qualityModel.availableTotalTicks == 0) - return 0 - - return qualityModel.qualitySliderMarginRight - 10 - } - height: parent.height - color: "transparent" - x: - { - if (qualityModel.availableTotalTicks == 0) - { - return 0 - } - - var leftUnavailableArea = qualityModel.qualitySliderStepWidth * qualityModel.qualitySliderAvailableMin - var totalGap = qualityModel.qualitySliderStepWidth * (qualityModel.availableTotalTicks -1) + leftUnavailableArea + 10 - - return totalGap - } - - MouseArea - { - anchors.fill: parent - hoverEnabled: true - enabled: Cura.SimpleModeSettingsManager.isProfileUserCreated == false - onEntered: unavailableLineToolTip.showTooltip(true) - onExited: unavailableLineToolTip.showTooltip(false) - } - } - } - - // Draw Unavailable line - Rectangle - { - id: groovechildrect - width: Math.round(base.width * 0.55) - height: 2 * screenScaleFactor - color: UM.Theme.getColor("quality_slider_unavailable") - anchors.verticalCenter: qualitySlider.verticalCenter - x: 0 - } - - // Draw ticks - Repeater - { - id: qualityRepeater - model: qualityModel.totalTicks > 0 ? qualityModel : 0 - - Rectangle - { - anchors.verticalCenter: parent.verticalCenter - color: Cura.QualityProfilesDropDownMenuModel.getItem(index).available ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - width: 1 * screenScaleFactor - height: 6 * screenScaleFactor - y: 0 - x: Math.round(qualityModel.qualitySliderStepWidth * index) - } - } - - Slider - { - id: qualitySlider - height: UM.Theme.getSize("sidebar_margin").height - anchors.bottom: speedSlider.bottom - enabled: qualityModel.totalTicks > 0 && !Cura.SimpleModeSettingsManager.isProfileCustomized - visible: qualityModel.availableTotalTicks > 0 - updateValueWhileDragging : false - - minimumValue: qualityModel.qualitySliderAvailableMin >= 0 ? qualityModel.qualitySliderAvailableMin : 0 - // maximumValue must be greater than minimumValue to be able to see the handle. While the value is strictly - // speaking not always correct, it seems to have the correct behavior (switching from 0 available to 1 available) - maximumValue: qualityModel.qualitySliderAvailableMax >= 1 ? qualityModel.qualitySliderAvailableMax : 1 - stepSize: 1 - - value: qualityModel.qualitySliderActiveIndex - - width: qualityModel.qualitySliderStepWidth * (qualityModel.availableTotalTicks - 1) - - anchors.right: parent.right - anchors.rightMargin: qualityModel.qualitySliderMarginRight - - style: SliderStyle - { - //Draw Available line - groove: Rectangle - { - implicitHeight: 2 * screenScaleFactor - color: UM.Theme.getColor("quality_slider_available") - radius: Math.round(height / 2) - } - handle: Item - { - Rectangle - { - id: qualityhandleButton - anchors.centerIn: parent - color: UM.Theme.getColor("quality_slider_available") - implicitWidth: 10 * screenScaleFactor - implicitHeight: implicitWidth - radius: Math.round(implicitWidth / 2) - visible: !Cura.SimpleModeSettingsManager.isProfileCustomized && !Cura.SimpleModeSettingsManager.isProfileUserCreated && qualityModel.existingQualityProfile - } - } - } - - onValueChanged: - { - // only change if an active machine is set and the slider is visible at all. - if (Cura.MachineManager.activeMachine != null && visible) - { - // prevent updating during view initializing. Trigger only if the value changed by user - if (qualitySlider.value != qualityModel.qualitySliderActiveIndex && qualityModel.qualitySliderActiveIndex != -1) - { - // start updating with short delay - qualitySliderChangeTimer.start() - } - } - } - } - - MouseArea - { - id: speedSliderMouseArea - anchors.fill: parent - hoverEnabled: true - enabled: Cura.SimpleModeSettingsManager.isProfileUserCreated - - onEntered: - { - var content = catalog.i18nc("@tooltip","A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab") - base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("sidebar_margin").width, customisedSettings.height), content) - } - onExited: - { - base.hideTooltip(); - } - } - } - - Label - { - id: speedLabel - anchors.top: speedSlider.bottom - - anchors.left: parent.left - - text: catalog.i18nc("@label", "Print Speed") - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - width: Math.round(UM.Theme.getSize("sidebar").width * 0.35) - elide: Text.ElideRight - } - - Label - { - anchors.bottom: speedLabel.bottom - anchors.left: speedSlider.left - - text: catalog.i18nc("@label", "Slower") - font: UM.Theme.getFont("default") - color: (qualityModel.availableTotalTicks > 1) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - horizontalAlignment: Text.AlignLeft - } - - Label - { - anchors.bottom: speedLabel.bottom - anchors.right: speedSlider.right - - text: catalog.i18nc("@label", "Faster") - font: UM.Theme.getFont("default") - color: (qualityModel.availableTotalTicks > 1) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - horizontalAlignment: Text.AlignRight - } - - UM.SimpleButton - { - id: customisedSettings - - visible: Cura.SimpleModeSettingsManager.isProfileCustomized || Cura.SimpleModeSettingsManager.isProfileUserCreated - height: Math.round(speedSlider.height * 0.8) - width: Math.round(speedSlider.height * 0.8) - - anchors.verticalCenter: speedSlider.verticalCenter - anchors.right: speedSlider.left - anchors.rightMargin: Math.round(UM.Theme.getSize("sidebar_margin").width / 2) - - color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button"); - iconSource: UM.Theme.getIcon("reset"); - - onClicked: - { - // if the current profile is user-created, switch to a built-in quality - Cura.MachineManager.resetToUseDefaultQuality() - } - onEntered: - { - var content = catalog.i18nc("@tooltip","You have modified some profile settings. If you want to change these go to custom mode.") - base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("sidebar_margin").width, customisedSettings.height), content) - } - onExited: base.hideTooltip() - } - } - - // - // Infill - // - Item - { - id: infillCellLeft - - anchors.top: qualityRow.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 2 - anchors.left: parent.left - - width: Math.round(UM.Theme.getSize("sidebar").width * .45) - UM.Theme.getSize("sidebar_margin").width - - Label - { - id: infillLabel - text: catalog.i18nc("@label", "Infill") - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - - anchors.top: parent.top - anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height * 1.7) - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - } - } - - Item - { - id: infillCellRight - - height: infillSlider.height + UM.Theme.getSize("sidebar_margin").height + enableGradualInfillCheckBox.visible * (enableGradualInfillCheckBox.height + UM.Theme.getSize("sidebar_margin").height) - width: Math.round(UM.Theme.getSize("sidebar").width * .55) - - anchors.left: infillCellLeft.right - anchors.top: infillCellLeft.top - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - - Label { - id: selectedInfillRateText - - //anchors.top: parent.top - anchors.left: infillSlider.left - anchors.leftMargin: Math.round((infillSlider.value / infillSlider.stepSize) * (infillSlider.width / (infillSlider.maximumValue / infillSlider.stepSize)) - 10 * screenScaleFactor) - anchors.right: parent.right - - text: parseInt(infillDensity.properties.value) + "%" - horizontalAlignment: Text.AlignLeft - - color: infillSlider.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - } - - // We use a binding to make sure that after manually setting infillSlider.value it is still bound to the property provider - Binding { - target: infillSlider - property: "value" - value: parseInt(infillDensity.properties.value) - } - - Slider - { - id: infillSlider - - anchors.top: selectedInfillRateText.bottom - anchors.left: parent.left - anchors.right: infillIcon.left - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width - - height: UM.Theme.getSize("sidebar_margin").height - width: parseInt(infillCellRight.width - UM.Theme.getSize("sidebar_margin").width - style.handleWidth) - - minimumValue: 0 - maximumValue: 100 - stepSize: 1 - tickmarksEnabled: true - - // disable slider when gradual support is enabled - enabled: parseInt(infillSteps.properties.value) == 0 - - // set initial value from stack - value: parseInt(infillDensity.properties.value) - - onValueChanged: { - - // Don't round the value if it's already the same - if (parseInt(infillDensity.properties.value) == infillSlider.value) { - return - } - - // Round the slider value to the nearest multiple of 10 (simulate step size of 10) - var roundedSliderValue = Math.round(infillSlider.value / 10) * 10 - - // Update the slider value to represent the rounded value - infillSlider.value = roundedSliderValue - - // Update value only if the Recomended mode is Active, - // Otherwise if I change the value in the Custom mode the Recomended view will try to repeat - // same operation - var active_mode = UM.Preferences.getValue("cura/active_mode") - - if (active_mode == 0 || active_mode == "simple") - { - Cura.MachineManager.setSettingForAllExtruders("infill_sparse_density", "value", roundedSliderValue) - Cura.MachineManager.resetSettingForAllExtruders("infill_line_distance") - } - } - - style: SliderStyle - { - groove: Rectangle { - id: groove - implicitWidth: 200 * screenScaleFactor - implicitHeight: 2 * screenScaleFactor - color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - radius: 1 - } - - handle: Item { - Rectangle { - id: handleButton - anchors.centerIn: parent - color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - implicitWidth: 10 * screenScaleFactor - implicitHeight: 10 * screenScaleFactor - radius: 10 * screenScaleFactor - } - } - - tickmarks: Repeater { - id: repeater - model: control.maximumValue / control.stepSize + 1 - - // check if a tick should be shown based on it's index and wether the infill density is a multiple of 10 (slider step size) - function shouldShowTick (index) { - if (index % 10 == 0) { - return true - } - return false - } - - Rectangle { - anchors.verticalCenter: parent.verticalCenter - color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - width: 1 * screenScaleFactor - height: 6 * screenScaleFactor - y: 0 - x: Math.round(styleData.handleWidth / 2 + index * ((repeater.width - styleData.handleWidth) / (repeater.count-1))) - visible: shouldShowTick(index) - } - } - } - } - - Rectangle - { - id: infillIcon - - width: Math.round((parent.width / 5) - (UM.Theme.getSize("sidebar_margin").width)) - height: width - - anchors.right: parent.right - anchors.top: parent.top - anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height / 2) - - // we loop over all density icons and only show the one that has the current density and steps - Repeater - { - id: infillIconList - model: infillModel - anchors.fill: parent - - function activeIndex () { - for (var i = 0; i < infillModel.count; i++) { - var density = Math.round(infillDensity.properties.value) - var steps = Math.round(infillSteps.properties.value) - var infillModelItem = infillModel.get(i) - - if (infillModelItem != "undefined" - && density >= infillModelItem.percentageMin - && density <= infillModelItem.percentageMax - && steps >= infillModelItem.stepsMin - && steps <= infillModelItem.stepsMax - ){ - return i - } - } - return -1 - } - - Rectangle - { - anchors.fill: parent - visible: infillIconList.activeIndex() == index - - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("quality_slider_unavailable") - - UM.RecolorImage { - anchors.fill: parent - anchors.margins: 2 * screenScaleFactor - sourceSize.width: width - sourceSize.height: width - source: UM.Theme.getIcon(model.icon) - color: UM.Theme.getColor("quality_slider_unavailable") - } - } - } - } - - // Gradual Support Infill Checkbox - CheckBox { - id: enableGradualInfillCheckBox - property alias _hovered: enableGradualInfillMouseArea.containsMouse - - anchors.top: infillSlider.bottom - anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height / 2) // closer to slider since it belongs to the same category - anchors.left: infillCellRight.left - - style: UM.Theme.styles.checkbox - enabled: base.settingsEnabled - visible: infillSteps.properties.enabled == "True" - checked: parseInt(infillSteps.properties.value) > 0 - - MouseArea { - id: enableGradualInfillMouseArea - - anchors.fill: parent - hoverEnabled: true - enabled: true - - property var previousInfillDensity: parseInt(infillDensity.properties.value) - - onClicked: { - // Set to 90% only when enabling gradual infill - var newInfillDensity; - if (parseInt(infillSteps.properties.value) == 0) { - previousInfillDensity = parseInt(infillDensity.properties.value) - newInfillDensity = 90; - } else { - newInfillDensity = previousInfillDensity; - } - Cura.MachineManager.setSettingForAllExtruders("infill_sparse_density", "value", String(newInfillDensity)) - - var infill_steps_value = 0; - if (parseInt(infillSteps.properties.value) == 0) - infill_steps_value = 5; - - Cura.MachineManager.setSettingForAllExtruders("gradual_infill_steps", "value", infill_steps_value) - } - - onEntered: { - base.showTooltip(enableGradualInfillCheckBox, Qt.point(-infillCellRight.x, 0), - catalog.i18nc("@label", "Gradual infill will gradually increase the amount of infill towards the top.")) - } - - onExited: { - base.hideTooltip() - } - } - - Label { - id: gradualInfillLabel - height: parent.height - anchors.left: enableGradualInfillCheckBox.right - anchors.leftMargin: Math.round(UM.Theme.getSize("sidebar_margin").width / 2) - verticalAlignment: Text.AlignVCenter; - text: catalog.i18nc("@label", "Enable gradual") - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - } - } - - // Infill list model for mapping icon - ListModel - { - id: infillModel - Component.onCompleted: - { - infillModel.append({ - percentageMin: -1, - percentageMax: 0, - stepsMin: -1, - stepsMax: 0, - icon: "hollow" - }) - infillModel.append({ - percentageMin: 0, - percentageMax: 40, - stepsMin: -1, - stepsMax: 0, - icon: "sparse" - }) - infillModel.append({ - percentageMin: 40, - percentageMax: 89, - stepsMin: -1, - stepsMax: 0, - icon: "dense" - }) - infillModel.append({ - percentageMin: 90, - percentageMax: 9999999999, - stepsMin: -1, - stepsMax: 0, - icon: "solid" - }) - infillModel.append({ - percentageMin: 0, - percentageMax: 9999999999, - stepsMin: 1, - stepsMax: 9999999999, - icon: "gradual" - }) - } - } - } - - // - // Enable support - // - Label - { - id: enableSupportLabel - visible: enableSupportCheckBox.visible - - anchors.top: infillCellRight.bottom - anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height * 1.5) - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - anchors.right: infillCellLeft.right - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width - anchors.verticalCenter: enableSupportCheckBox.verticalCenter - - text: catalog.i18nc("@label", "Generate Support"); - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); - elide: Text.ElideRight - } - - CheckBox - { - id: enableSupportCheckBox - property alias _hovered: enableSupportMouseArea.containsMouse - - anchors.top: enableSupportLabel.top - anchors.left: infillCellRight.left - - style: UM.Theme.styles.checkbox; - enabled: base.settingsEnabled - - visible: supportEnabled.properties.enabled == "True" - checked: supportEnabled.properties.value == "True"; - - MouseArea - { - id: enableSupportMouseArea - anchors.fill: parent - hoverEnabled: true - enabled: true - onClicked: - { - // The value is a string "True" or "False" - supportEnabled.setPropertyValue("value", supportEnabled.properties.value != "True"); - } - onEntered: - { - base.showTooltip(enableSupportCheckBox, Qt.point(-enableSupportCheckBox.x, 0), - catalog.i18nc("@label", "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing.")); - } - onExited: - { - base.hideTooltip(); - } - } - } - - ComboBox - { - id: supportExtruderCombobox - visible: enableSupportCheckBox.visible && (supportEnabled.properties.value == "True") && (extrudersEnabledCount.properties.value > 1) - model: extruderModel - - property string color_override: "" // for manually setting values - property string color: // is evaluated automatically, but the first time is before extruderModel being filled - { - var current_extruder = extruderModel.get(currentIndex); - color_override = ""; - if (current_extruder === undefined) return "" - return (current_extruder.color) ? current_extruder.color : ""; - } - - textRole: "text" // this solves that the combobox isn't populated in the first time Cura is started - - anchors.top: enableSupportCheckBox.top - //anchors.topMargin: ((supportEnabled.properties.value === "True") && (machineExtruderCount.properties.value > 1)) ? UM.Theme.getSize("sidebar_margin").height : 0 - anchors.left: enableSupportCheckBox.right - anchors.leftMargin: Math.round(UM.Theme.getSize("sidebar_margin").width / 2) - - width: Math.round(UM.Theme.getSize("sidebar").width * .55) - Math.round(UM.Theme.getSize("sidebar_margin").width / 2) - enableSupportCheckBox.width - height: ((supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1)) ? UM.Theme.getSize("setting_control").height : 0 - - Behavior on height { NumberAnimation { duration: 100 } } - - style: UM.Theme.styles.combobox_color - enabled: base.settingsEnabled - property alias _hovered: supportExtruderMouseArea.containsMouse - - currentIndex: - { - if (supportExtruderNr.properties == null) - { - return Cura.MachineManager.defaultExtruderPosition; - } - else - { - var extruder = parseInt(supportExtruderNr.properties.value); - if ( extruder === -1) - { - return Cura.MachineManager.defaultExtruderPosition; - } - return extruder; - } - } - - onActivated: - { - // Send the extruder nr as a string. - supportExtruderNr.setPropertyValue("value", String(index)); - } - MouseArea - { - id: supportExtruderMouseArea - anchors.fill: parent - hoverEnabled: true - enabled: base.settingsEnabled - acceptedButtons: Qt.NoButton - onEntered: - { - base.showTooltip(supportExtruderCombobox, Qt.point(-supportExtruderCombobox.x, 0), - catalog.i18nc("@label", "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air.")); - } - onExited: - { - base.hideTooltip(); - } - } - - function updateCurrentColor() - { - var current_extruder = extruderModel.get(currentIndex); - if (current_extruder !== undefined) { - supportExtruderCombobox.color_override = current_extruder.color; - } - } - - } - - Label - { - id: adhesionHelperLabel - visible: adhesionCheckBox.visible - - text: catalog.i18nc("@label", "Build Plate Adhesion") - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - elide: Text.ElideRight - - anchors { - left: parent.left - leftMargin: UM.Theme.getSize("sidebar_margin").width - right: infillCellLeft.right - rightMargin: UM.Theme.getSize("sidebar_margin").width - verticalCenter: adhesionCheckBox.verticalCenter - } - } - - CheckBox - { - id: adhesionCheckBox - property alias _hovered: adhesionMouseArea.containsMouse - - anchors.top: enableSupportCheckBox.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - anchors.left: infillCellRight.left - - //: Setting enable printing build-plate adhesion helper checkbox - style: UM.Theme.styles.checkbox; - enabled: base.settingsEnabled - - visible: platformAdhesionType.properties.enabled == "True" - checked: platformAdhesionType.properties.value != "skirt" && platformAdhesionType.properties.value != "none" - - MouseArea - { - id: adhesionMouseArea - anchors.fill: parent - hoverEnabled: true - enabled: base.settingsEnabled - onClicked: - { - var adhesionType = "skirt"; - if(!parent.checked) - { - // Remove the "user" setting to see if the rest of the stack prescribes a brim or a raft - platformAdhesionType.removeFromContainer(0); - adhesionType = platformAdhesionType.properties.value; - if(adhesionType == "skirt" || adhesionType == "none") - { - // If the rest of the stack doesn't prescribe an adhesion-type, default to a brim - adhesionType = "brim"; - } - } - platformAdhesionType.setPropertyValue("value", adhesionType); - } - onEntered: - { - base.showTooltip(adhesionCheckBox, Qt.point(-adhesionCheckBox.x, 0), - catalog.i18nc("@label", "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards.")); - } - onExited: - { - base.hideTooltip(); - } - } - } - - ListModel - { - id: extruderModel - Component.onCompleted: populateExtruderModel() - } - - //: Model used to populate the extrudelModel - Cura.ExtrudersModel - { - id: extruders - onModelChanged: populateExtruderModel() - } - - Item - { - id: tipsCell - anchors.top: adhesionCheckBox.visible ? adhesionCheckBox.bottom : (enableSupportCheckBox.visible ? supportExtruderCombobox.bottom : infillCellRight.bottom) - anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height * 2) - anchors.left: parent.left - width: parent.width - height: tipsText.contentHeight * tipsText.lineCount - - Label - { - id: tipsText - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width - anchors.top: parent.top - wrapMode: Text.WordWrap - text: catalog.i18nc("@label", "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides").arg("https://ultimaker.com/en/troubleshooting") - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); - linkColor: UM.Theme.getColor("text_link") - onLinkActivated: Qt.openUrlExternally(link) - } - } - - UM.SettingPropertyProvider - { - id: infillExtruderNumber - containerStackId: Cura.MachineManager.activeStackId - key: "infill_extruder_nr" - watchedProperties: [ "value" ] - storeIndex: 0 - } - - UM.SettingPropertyProvider - { - id: infillDensity - containerStackId: Cura.MachineManager.activeStackId - key: "infill_sparse_density" - watchedProperties: [ "value" ] - storeIndex: 0 - } - - UM.SettingPropertyProvider - { - id: infillSteps - containerStackId: Cura.MachineManager.activeStackId - key: "gradual_infill_steps" - watchedProperties: ["value", "enabled"] - storeIndex: 0 - } - - UM.SettingPropertyProvider - { - id: platformAdhesionType - containerStack: Cura.MachineManager.activeMachine - key: "adhesion_type" - watchedProperties: [ "value", "enabled" ] - storeIndex: 0 - } - - UM.SettingPropertyProvider - { - id: supportEnabled - containerStack: Cura.MachineManager.activeMachine - key: "support_enable" - watchedProperties: [ "value", "enabled", "description" ] - storeIndex: 0 - } - - UM.SettingPropertyProvider - { - id: extrudersEnabledCount - containerStack: Cura.MachineManager.activeMachine - key: "extruders_enabled_count" - watchedProperties: [ "value" ] - storeIndex: 0 - } - - UM.SettingPropertyProvider - { - id: supportExtruderNr - containerStack: Cura.MachineManager.activeMachine - key: "support_extruder_nr" - watchedProperties: [ "value" ] - storeIndex: 0 - } - } - } - - function populateExtruderModel() - { - extruderModel.clear(); - for(var extruderNumber = 0; extruderNumber < extruders.rowCount() ; extruderNumber++) - { - extruderModel.append({ - text: extruders.getItem(extruderNumber).name, - color: extruders.getItem(extruderNumber).color - }) - } - supportExtruderCombobox.updateCurrentColor(); - } -} diff --git a/resources/qml/ToolTip.qml b/resources/qml/ToolTip.qml new file mode 100644 index 0000000000..e82caf01b2 --- /dev/null +++ b/resources/qml/ToolTip.qml @@ -0,0 +1,63 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.3 + +import UM 1.0 as UM +import Cura 1.0 as Cura + +ToolTip +{ + enum ContentAlignment + { + AlignLeft, + AlignRight + } + + // Defines the alignment of the content, by default to the left + property int contentAlignment: Cura.ToolTip.ContentAlignment.AlignRight + + property alias tooltipText: tooltip.text + property var targetPoint: Qt.point(parent.x, y + Math.round(height/2)) + + id: tooltip + text: "" + delay: 500 + font: UM.Theme.getFont("default") + + // If the text is not set, just set the height to 0 to prevent it from showing + height: text != "" ? label.contentHeight + 2 * UM.Theme.getSize("thin_margin").width: 0 + + x: + { + if (contentAlignment == Cura.ToolTip.ContentAlignment.AlignLeft) + { + return (label.width + Math.round(UM.Theme.getSize("default_arrow").width * 1.2) + padding * 2) * -1 + } + return parent.width + Math.round(UM.Theme.getSize("default_arrow").width * 1.2 + padding) + } + + y: Math.round(parent.height / 2 - label.height / 2 ) - padding + + padding: UM.Theme.getSize("thin_margin").width + + background: UM.PointingRectangle + { + id: backgroundRect + color: UM.Theme.getColor("tooltip") + target: Qt.point(targetPoint.x - tooltip.x, targetPoint.y - tooltip.y) + arrowSize: UM.Theme.getSize("default_arrow").width + } + + contentItem: Label + { + id: label + text: tooltip.text + font: tooltip.font + wrapMode: Text.Wrap + textFormat: Text.RichText + color: UM.Theme.getColor("tooltip_text") + renderType: Text.NativeRendering + } +} \ No newline at end of file diff --git a/resources/qml/Toolbar.qml b/resources/qml/Toolbar.qml index a04b3650df..33481b9183 100644 --- a/resources/qml/Toolbar.qml +++ b/resources/qml/Toolbar.qml @@ -2,96 +2,159 @@ // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.3 import UM 1.2 as UM import Cura 1.0 as Cura Item { - id: base; + id: base - width: buttons.width; + width: buttons.width height: buttons.height property int activeY - Column + Item { - id: buttons; + id: buttons + width: parent.visible ? toolButtons.width : 0 + height: childrenRect.height - anchors.bottom: parent.bottom - anchors.left: parent.left - spacing: UM.Theme.getSize("button_lining").width + Behavior on width { NumberAnimation { duration: 100 } } - Repeater + // Used to create a rounded rectangle behind the toolButtons + Rectangle { - id: repeat - - model: UM.ToolModel { } - width: childrenRect.width - height: childrenRect.height - Button + anchors { - text: model.name + (model.shortcut ? (" (" + model.shortcut + ")") : "") - iconSource: (UM.Theme.getIcon(model.icon) != "") ? UM.Theme.getIcon(model.icon) : "file:///" + model.location + "/" + model.icon - checkable: true - checked: model.active - enabled: model.enabled && UM.Selection.hasSelection && UM.Controller.toolsEnabled - style: UM.Theme.styles.tool_button + fill: toolButtons + leftMargin: -radius - border.width + rightMargin: -border.width + topMargin: -border.width + bottomMargin: -border.width + } + radius: UM.Theme.getSize("default_radius").width + color: UM.Theme.getColor("lining") + } - onCheckedChanged: + Column + { + id: toolButtons + + anchors.top: parent.top + anchors.right: parent.right + spacing: UM.Theme.getSize("default_lining").height + + Repeater + { + id: repeat + + model: UM.ToolModel { id: toolsModel } + width: childrenRect.width + height: childrenRect.height + + delegate: ToolbarButton { - if (checked) + text: model.name + (model.shortcut ? (" (" + model.shortcut + ")") : "") + checkable: true + checked: model.active + enabled: model.enabled && UM.Selection.hasSelection && UM.Controller.toolsEnabled + + isTopElement: toolsModel.getItem(0).id == model.id + isBottomElement: toolsModel.getItem(toolsModel.count - 1).id == model.id + + toolItem: UM.RecolorImage { - base.activeY = y; + source: UM.Theme.getIcon(model.icon) != "" ? UM.Theme.getIcon(model.icon) : "file:///" + model.location + "/" + model.icon + color: UM.Theme.getColor("icon") + + sourceSize: UM.Theme.getSize("button_icon") } - } - //Workaround since using ToolButton's onClicked would break the binding of the checked property, instead - //just catch the click so we do not trigger that behaviour. - MouseArea - { - anchors.fill: parent; - onClicked: + onCheckedChanged: { - forceActiveFocus() //First grab focus, so all the text fields are updated - if(parent.checked) + if (checked) { - UM.Controller.setActiveTool(null); + base.activeY = y; } - else + } + + //Workaround since using ToolButton's onClicked would break the binding of the checked property, instead + //just catch the click so we do not trigger that behaviour. + MouseArea + { + anchors.fill: parent; + onClicked: { - UM.Controller.setActiveTool(model.id); + forceActiveFocus() //First grab focus, so all the text fields are updated + if(parent.checked) + { + UM.Controller.setActiveTool(null); + } + else + { + UM.Controller.setActiveTool(model.id); + } } } } } } - Item { height: UM.Theme.getSize("default_margin").height; width: UM.Theme.getSize("default_lining").width; visible: extruders.count > 0 } - - Repeater + // Used to create a rounded rectangle behind the extruderButtons + Rectangle { - id: extruders - width: childrenRect.width - height: childrenRect.height - property var _model: Cura.ExtrudersModel { id: extrudersModel } - model: _model.items.length > 1 ? _model : 0 - ExtruderButton { extruder: model } + anchors + { + fill: extruderButtons + leftMargin: -radius - border.width + rightMargin: -border.width + topMargin: -border.width + bottomMargin: -border.width + } + radius: UM.Theme.getSize("default_radius").width + color: UM.Theme.getColor("lining") + visible: extrudersModel.items.length > 1 + } + + Column + { + id: extruderButtons + + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.top: toolButtons.bottom + anchors.right: parent.right + spacing: UM.Theme.getSize("default_lining").height + + Repeater + { + id: extruders + width: childrenRect.width + height: childrenRect.height + model: extrudersModel.items.length > 1 ? extrudersModel : 0 + + delegate: ExtruderButton + { + extruder: model + isTopElement: extrudersModel.getItem(0).id == model.id + isBottomElement: extrudersModel.getItem(extrudersModel.rowCount() - 1).id == model.id + } + } } } + property var extrudersModel: CuraApplication.getExtrudersModel() + UM.PointingRectangle { - id: panelBorder; + id: panelBorder - anchors.left: parent.right; - anchors.leftMargin: UM.Theme.getSize("default_margin").width; - anchors.top: base.top; + anchors.left: parent.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.top: base.top anchors.topMargin: base.activeY - z: buttons.z -1 + z: buttons.z - 1 target: Qt.point(parent.right, base.activeY + Math.round(UM.Theme.getSize("button").height/2)) arrowSize: UM.Theme.getSize("default_arrow").width @@ -100,14 +163,14 @@ Item { if (panel.item && panel.width > 0) { - return Math.max(panel.width + 2 * UM.Theme.getSize("default_margin").width); + return Math.max(panel.width + 2 * UM.Theme.getSize("default_margin").width) } else { return 0; } } - height: panel.item ? panel.height + 2 * UM.Theme.getSize("default_margin").height : 0; + height: panel.item ? panel.height + 2 * UM.Theme.getSize("default_margin").height : 0 opacity: panel.item && panel.width > 0 ? 1 : 0 Behavior on opacity { NumberAnimation { duration: 100 } } @@ -125,11 +188,11 @@ Item { id: panel - x: UM.Theme.getSize("default_margin").width; - y: UM.Theme.getSize("default_margin").height; + x: UM.Theme.getSize("default_margin").width + y: UM.Theme.getSize("default_margin").height source: UM.ActiveTool.valid ? UM.ActiveTool.activeToolPanel : "" - enabled: UM.Controller.toolsEnabled; + enabled: UM.Controller.toolsEnabled } } diff --git a/resources/qml/ToolbarButton.qml b/resources/qml/ToolbarButton.qml new file mode 100644 index 0000000000..b3f84bba1d --- /dev/null +++ b/resources/qml/ToolbarButton.qml @@ -0,0 +1,106 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.3 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +Button +{ + id: base + + property alias toolItem: contentItemLoader.sourceComponent + + // These two properties indicate whether the toolbar button is at the top of the toolbar column or at the bottom. + // If it is somewhere in the middle, then both has to be false. If there is only one element in the column, then + // both properties have to be set to true. This is used to create a rounded corner. + property bool isTopElement: false + property bool isBottomElement: false + + hoverEnabled: true + + background: Rectangle + { + implicitWidth: UM.Theme.getSize("button").width + implicitHeight: UM.Theme.getSize("button").height + color: + { + if (base.checked && base.hovered) + { + return UM.Theme.getColor("toolbar_button_active_hover") + } + else if (base.checked) + { + return UM.Theme.getColor("toolbar_button_active") + } + else if(base.hovered) + { + return UM.Theme.getColor("toolbar_button_hover") + } + return UM.Theme.getColor("toolbar_background") + } + radius: UM.Theme.getSize("default_radius").width + + Rectangle + { + id: topSquare + anchors + { + left: parent.left + right: parent.right + top: parent.top + } + height: parent.radius + color: parent.color + visible: !base.isTopElement + } + + Rectangle + { + id: bottomSquare + anchors + { + left: parent.left + right: parent.right + bottom: parent.bottom + } + height: parent.radius + color: parent.color + visible: !base.isBottomElement + } + + Rectangle + { + id: leftSquare + anchors + { + left: parent.left + top: parent.top + bottom: parent.bottom + } + width: parent.radius + color: parent.color + } + } + + contentItem: Item + { + opacity: parent.enabled ? 1.0 : 0.2 + Loader + { + id: contentItemLoader + anchors.centerIn: parent + width: UM.Theme.getSize("button_icon").width + height: UM.Theme.getSize("button_icon").height + } + } + + Cura.ToolTip + { + id: tooltip + tooltipText: base.text + visible: base.hovered + } +} diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml deleted file mode 100644 index 17819dbd27..0000000000 --- a/resources/qml/Topbar.qml +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright (c) 2017 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.1 - -import UM 1.4 as UM -import Cura 1.0 as Cura -import "Menus" - -Rectangle -{ - id: base - anchors.left: parent.left - anchors.right: parent.right - height: UM.Theme.getSize("sidebar_header").height - color: UM.Controller.activeStage.stageId == "MonitorStage" ? UM.Theme.getColor("topbar_background_color_monitoring") : UM.Theme.getColor("topbar_background_color") - - property bool printerConnected: Cura.MachineManager.printerConnected - property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands - - property int rightMargin: UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width; - property int allItemsWidth: 0; - - function updateMarginsAndSizes() { - if (UM.Preferences.getValue("cura/sidebar_collapsed")) - { - rightMargin = UM.Theme.getSize("default_margin").width; - } - else - { - rightMargin = UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width; - } - allItemsWidth = ( - logo.width + UM.Theme.getSize("topbar_logo_right_margin").width + - UM.Theme.getSize("topbar_logo_right_margin").width + stagesMenuContainer.width + - UM.Theme.getSize("default_margin").width + viewModeButton.width + - rightMargin); - } - - UM.I18nCatalog - { - id: catalog - name:"cura" - } - - Image - { - id: logo - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.verticalCenter: parent.verticalCenter - - source: UM.Theme.getImage("logo"); - width: UM.Theme.getSize("logo").width; - height: UM.Theme.getSize("logo").height; - - sourceSize.width: width; - sourceSize.height: height; - } - - Row - { - id: stagesMenuContainer - anchors.left: logo.right - anchors.leftMargin: UM.Theme.getSize("topbar_logo_right_margin").width - spacing: UM.Theme.getSize("default_margin").width - - // The topbar is dynamically filled with all available stages - Repeater - { - id: stagesMenu - - model: UM.StageModel{} - - delegate: Button - { - text: model.name - checkable: true - checked: model.active - exclusiveGroup: topbarMenuGroup - style: (model.stage.iconSource != "") ? UM.Theme.styles.topbar_header_tab_no_overlay : UM.Theme.styles.topbar_header_tab - height: UM.Theme.getSize("sidebar_header").height - onClicked: UM.Controller.setActiveStage(model.id) - iconSource: model.stage.iconSource - - property color overlayColor: "transparent" - property string overlayIconSource: "" - } - } - - ExclusiveGroup { id: topbarMenuGroup } - } - - // View orientation Item - Row - { - id: viewOrientationControl - height: 30 - - spacing: 2 - visible: UM.Controller.activeStage.stageId != "MonitorStage" - - anchors - { - verticalCenter: base.verticalCenter - right: viewModeButton.left - rightMargin: UM.Theme.getSize("default_margin").width - } - - // #1 3d view - Button - { - iconSource: UM.Theme.getIcon("view_3d") - style: UM.Theme.styles.small_tool_button - anchors.verticalCenter: viewOrientationControl.verticalCenter - onClicked:UM.Controller.rotateView("3d", 0) - visible: base.width - allItemsWidth - 4 * this.width > 0 - } - - // #2 Front view - Button - { - iconSource: UM.Theme.getIcon("view_front") - style: UM.Theme.styles.small_tool_button - anchors.verticalCenter: viewOrientationControl.verticalCenter - onClicked: UM.Controller.rotateView("home", 0); - visible: base.width - allItemsWidth - 3 * this.width > 0 - } - - // #3 Top view - Button - { - iconSource: UM.Theme.getIcon("view_top") - style: UM.Theme.styles.small_tool_button - anchors.verticalCenter: viewOrientationControl.verticalCenter - onClicked: UM.Controller.rotateView("y", 90) - visible: base.width - allItemsWidth - 2 * this.width > 0 - } - - // #4 Left view - Button - { - iconSource: UM.Theme.getIcon("view_left") - style: UM.Theme.styles.small_tool_button - anchors.verticalCenter: viewOrientationControl.verticalCenter - onClicked: UM.Controller.rotateView("x", 90) - visible: base.width - allItemsWidth - 1 * this.width > 0 - } - - // #5 Right view - Button - { - iconSource: UM.Theme.getIcon("view_right") - style: UM.Theme.styles.small_tool_button - anchors.verticalCenter: viewOrientationControl.verticalCenter - onClicked: UM.Controller.rotateView("x", -90) - visible: base.width - allItemsWidth > 0 - } - } - - ComboBox - { - id: viewModeButton - - anchors { - verticalCenter: parent.verticalCenter - right: parent.right - rightMargin: rightMargin - } - - style: UM.Theme.styles.combobox - visible: UM.Controller.activeStage.stageId != "MonitorStage" - - model: UM.ViewModel { } - textRole: "name" - - // update the model's active index - function updateItemActiveFlags () { - currentIndex = getActiveIndex() - for (var i = 0; i < model.rowCount(); i++) { - model.getItem(i).active = (i == currentIndex) - } - } - - // get the index of the active model item on start - function getActiveIndex () { - for (var i = 0; i < model.rowCount(); i++) { - if (model.getItem(i).active) { - return i - } - } - return 0 - } - - // set the active index - function setActiveIndex (index) { - UM.Controller.setActiveView(index) - // the connection to UM.ActiveView will trigger update so there is no reason to call it manually here - } - - onCurrentIndexChanged: - { - if (model.getItem(currentIndex).id != undefined) - viewModeButton.setActiveIndex(model.getItem(currentIndex).id) - } - currentIndex: getActiveIndex() - - // watch the active view proxy for changes made from the menu item - Connections - { - target: UM.ActiveView - onActiveViewChanged: viewModeButton.updateItemActiveFlags() - } - } - - Loader - { - id: view_panel - - anchors.top: viewModeButton.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - anchors.right: viewModeButton.right - - property var buttonTarget: Qt.point(viewModeButton.x + Math.round(viewModeButton.width / 2), viewModeButton.y + Math.round(viewModeButton.height / 2)) - - height: childrenRect.height - width: childrenRect.width - - source: UM.ActiveView.valid ? UM.ActiveView.activeViewPanel : ""; - } - - // Expand or collapse sidebar - Connections - { - target: Cura.Actions.expandSidebar - onTriggered: updateMarginsAndSizes() - } - - Component.onCompleted: - { - updateMarginsAndSizes(); - } - -} diff --git a/resources/qml/ViewOrientationButton.qml b/resources/qml/ViewOrientationButton.qml new file mode 100644 index 0000000000..5d72de9a8d --- /dev/null +++ b/resources/qml/ViewOrientationButton.qml @@ -0,0 +1,15 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 + +import UM 1.4 as UM + +UM.SimpleButton +{ + width: UM.Theme.getSize("small_button").width + height: UM.Theme.getSize("small_button").height + hoverColor: UM.Theme.getColor("small_button_text_hover") + color: UM.Theme.getColor("small_button_text") + iconMargin: UM.Theme.getSize("thick_lining").width +} \ No newline at end of file diff --git a/resources/qml/ViewOrientationControls.qml b/resources/qml/ViewOrientationControls.qml new file mode 100644 index 0000000000..51ed6e3dcb --- /dev/null +++ b/resources/qml/ViewOrientationControls.qml @@ -0,0 +1,48 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.1 +import QtQuick.Controls.Styles 1.1 + +import UM 1.4 as UM + +// A row of buttons that control the view direction +Row +{ + id: viewOrientationControl + + spacing: UM.Theme.getSize("narrow_margin").width + height: childrenRect.height + width: childrenRect.width + + ViewOrientationButton + { + iconSource: UM.Theme.getIcon("view_3d") + onClicked: UM.Controller.rotateView("3d", 0) + } + + ViewOrientationButton + { + iconSource: UM.Theme.getIcon("view_front") + onClicked: UM.Controller.rotateView("home", 0) + } + + ViewOrientationButton + { + iconSource: UM.Theme.getIcon("view_top") + onClicked: UM.Controller.rotateView("y", 90) + } + + ViewOrientationButton + { + iconSource: UM.Theme.getIcon("view_left") + onClicked: UM.Controller.rotateView("x", 90) + } + + ViewOrientationButton + { + iconSource: UM.Theme.getIcon("view_right") + onClicked: UM.Controller.rotateView("x", -90) + } +} diff --git a/resources/qml/ViewsSelector.qml b/resources/qml/ViewsSelector.qml new file mode 100644 index 0000000000..0e9be649db --- /dev/null +++ b/resources/qml/ViewsSelector.qml @@ -0,0 +1,133 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.3 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +Cura.ExpandablePopup +{ + id: viewSelector + + contentPadding: UM.Theme.getSize("default_lining").width + contentAlignment: Cura.ExpandablePopup.ContentAlignment.AlignLeft + + property var viewModel: UM.ViewModel + { + onDataChanged: updateActiveView() + } + + property var activeView: null + + function updateActiveView() + { + for (var index in viewModel.items) + { + if (viewModel.items[index].active) + { + activeView = viewModel.items[index] + return + } + } + activeView = null + } + + Component.onCompleted: + { + if (activeView == null) + { + UM.Controller.setActiveView(viewModel.getItem(0).id) + } + } + + headerItem: Item + { + Label + { + id: title + text: catalog.i18nc("@label", "View types") + verticalAlignment: Text.AlignVCenter + height: parent.height + elide: Text.ElideRight + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text_medium") + renderType: Text.NativeRendering + } + + Label + { + text: viewSelector.activeView ? viewSelector.activeView.name : "" + verticalAlignment: Text.AlignVCenter + anchors + { + left: title.right + leftMargin: UM.Theme.getSize("default_margin").width + right: parent.right + } + height: parent.height + elide: Text.ElideRight + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + } + + contentItem: Column + { + id: viewSelectorPopup + width: viewSelector.width - 2 * viewSelector.contentPadding + + // For some reason the height/width of the column gets set to 0 if this is not set... + Component.onCompleted: + { + height = implicitHeight + width = viewSelector.width - 2 * viewSelector.contentPadding + } + + Repeater + { + id: viewsList + model: viewSelector.viewModel + + delegate: Button + { + id: viewsSelectorButton + text: model.name + width: parent.width - viewSelectorPopup.leftPadding - viewSelectorPopup.rightPadding + height: UM.Theme.getSize("action_button").height + leftPadding: UM.Theme.getSize("default_margin").width + rightPadding: UM.Theme.getSize("default_margin").width + checkable: true + checked: viewSelector.activeView != null ? viewSelector.activeView.id == id : false + + contentItem: Label + { + id: buttonText + text: viewsSelectorButton.text + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("medium") + renderType: Text.NativeRendering + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + + background: Rectangle + { + id: backgroundRect + color: viewsSelectorButton.hovered ? UM.Theme.getColor("action_button_hovered") : "transparent" + radius: UM.Theme.getSize("action_button_radius").width + border.width: UM.Theme.getSize("default_lining").width + border.color: viewsSelectorButton.checked ? UM.Theme.getColor("primary") : "transparent" + } + + onClicked: + { + toggleContent() + UM.Controller.setActiveView(id) + } + } + } + } +} \ No newline at end of file diff --git a/resources/qml/qmldir b/resources/qml/qmldir new file mode 100644 index 0000000000..80e0f8be46 --- /dev/null +++ b/resources/qml/qmldir @@ -0,0 +1,18 @@ +module Cura + +MachineSelector 1.0 MachineSelector.qml +CustomConfigurationSelector 1.0 CustomConfigurationSelector.qml +PrintSetupSelector 1.0 PrintSetupSelector.qml +ActionButton 1.0 ActionButton.qml +MaterialMenu 1.0 MaterialMenu.qml +NozzleMenu 1.0 NozzleMenu.qml +ActionPanelWidget 1.0 ActionPanelWidget.qml +IconWithText 1.0 IconWithText.qml +OutputDevicesActionButton 1.0 OutputDevicesActionButton.qml +ExpandableComponent 1.0 ExpandableComponent.qml +PrinterTypeLabel 1.0 PrinterTypeLabel.qml +ViewsSelector 1.0 ViewsSelector.qml +ToolbarButton 1.0 ToolbarButton.qml +SettingView 1.0 SettingView.qml +ProfileMenu 1.0 ProfileMenu.qml +ToolTip 1.0 ToolTip.qml \ No newline at end of file diff --git a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg index 1d406e4387..1ca2674e1f 100644 --- a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg @@ -4,10 +4,10 @@ name = Fine definition = abax_pri3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = -1 +weight = 0 material = generic_pla [values] diff --git a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg index 20d2c024aa..e9e8d53a03 100644 --- a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = abax_pri3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg index 0a4d1f1c62..40399c9548 100644 --- a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_pri3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg index 6d0fdd40d2..c6d20f70da 100644 --- a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg @@ -4,10 +4,10 @@ name = Fine definition = abax_pri5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = -1 +weight = 0 material = generic_pla [values] diff --git a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg index 212c92e7d1..99bd10d654 100644 --- a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = abax_pri5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg index 8a1338f28c..55e0a7755a 100644 --- a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_pri5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg index 71740ede84..6a2a49b555 100644 --- a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg @@ -4,10 +4,10 @@ name = Fine definition = abax_titan [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = -1 +weight = 0 material = generic_pla [values] diff --git a/resources/quality/abax_titan/atitan_pla_high.inst.cfg b/resources/quality/abax_titan/atitan_pla_high.inst.cfg index 73cd31f3fd..7dd5833297 100644 --- a/resources/quality/abax_titan/atitan_pla_high.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = abax_titan [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg index c356e197ce..b6aae46c6d 100644 --- a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_titan [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_draft.inst.cfg b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_draft.inst.cfg index f5baa55029..e12954b6bc 100644 --- a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_draft.inst.cfg +++ b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_draft.inst.cfg @@ -4,10 +4,10 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = 0 +weight = -2 material = generic_abs [values] diff --git a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_high.inst.cfg b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_high.inst.cfg index bd613c6aad..0218b87a63 100644 --- a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_high.inst.cfg +++ b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_high.inst.cfg @@ -4,10 +4,10 @@ name = High definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 2 +weight = 1 material = generic_abs [values] diff --git a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_normal.inst.cfg b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_normal.inst.cfg index 7cff1db4d2..f686855364 100644 --- a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_normal.inst.cfg +++ b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 1 +weight = 0 material = generic_abs [values] diff --git a/resources/quality/anycubic_4max/anycubic_4max_draft.inst.cfg b/resources/quality/anycubic_4max/anycubic_4max_draft.inst.cfg index c0114e3d6c..d9dc632c16 100644 --- a/resources/quality/anycubic_4max/anycubic_4max_draft.inst.cfg +++ b/resources/quality/anycubic_4max/anycubic_4max_draft.inst.cfg @@ -4,10 +4,10 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = 0 +weight = -2 global_quality = True [values] diff --git a/resources/quality/anycubic_4max/anycubic_4max_high.inst.cfg b/resources/quality/anycubic_4max/anycubic_4max_high.inst.cfg index 4a0993412a..55b5833c3f 100644 --- a/resources/quality/anycubic_4max/anycubic_4max_high.inst.cfg +++ b/resources/quality/anycubic_4max/anycubic_4max_high.inst.cfg @@ -4,10 +4,10 @@ name = High definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 2 +weight = 1 global_quality = True [values] diff --git a/resources/quality/anycubic_4max/anycubic_4max_normal.inst.cfg b/resources/quality/anycubic_4max/anycubic_4max_normal.inst.cfg index eeb1d699e4..45c6f19f8b 100644 --- a/resources/quality/anycubic_4max/anycubic_4max_normal.inst.cfg +++ b/resources/quality/anycubic_4max/anycubic_4max_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 1 +weight = 0 global_quality = True [values] diff --git a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_draft.inst.cfg b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_draft.inst.cfg index 3cd0226bd4..97c19b7083 100644 --- a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_draft.inst.cfg +++ b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_draft.inst.cfg @@ -4,10 +4,10 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = 0 +weight = -2 material = generic_hips [values] diff --git a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_high.inst.cfg b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_high.inst.cfg index ff5c6bee2f..cfa727bcb8 100644 --- a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_high.inst.cfg +++ b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_high.inst.cfg @@ -4,10 +4,10 @@ name = High definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 2 +weight = 1 material = generic_hips [values] diff --git a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_normal.inst.cfg b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_normal.inst.cfg index c4701ae246..f4372939f5 100644 --- a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_normal.inst.cfg +++ b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 1 +weight = 0 material = generic_hips [values] diff --git a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_draft.inst.cfg b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_draft.inst.cfg index 5e0c3e204a..124bd487b0 100644 --- a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_draft.inst.cfg +++ b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_draft.inst.cfg @@ -4,10 +4,10 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = 0 +weight = -2 material = generic_petg [values] diff --git a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_high.inst.cfg b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_high.inst.cfg index 57a89c4ec2..eeaaac6270 100644 --- a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_high.inst.cfg +++ b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_high.inst.cfg @@ -4,10 +4,10 @@ name = High definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 2 +weight = 1 material = generic_petg [values] diff --git a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_normal.inst.cfg b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_normal.inst.cfg index 14a4607ceb..ec0579015a 100644 --- a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_normal.inst.cfg +++ b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 1 +weight = 0 material = generic_petg [values] diff --git a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_draft.inst.cfg b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_draft.inst.cfg index eae9e3b5ef..b72ce43e29 100644 --- a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_draft.inst.cfg +++ b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_draft.inst.cfg @@ -4,10 +4,10 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = 0 +weight = -2 material = generic_pla [values] diff --git a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_high.inst.cfg b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_high.inst.cfg index c856fc66a7..4386159a66 100644 --- a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_high.inst.cfg +++ b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_high.inst.cfg @@ -4,10 +4,10 @@ name = High definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 2 +weight = 1 material = generic_pla [values] diff --git a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_normal.inst.cfg b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_normal.inst.cfg index be33bfe53a..9998fff2ad 100644 --- a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_normal.inst.cfg +++ b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 1 +weight = 0 material = generic_pla [values] diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg index bb47f68574..ba99d30de6 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg @@ -4,10 +4,11 @@ name = Draft definition = anycubic_i3_mega [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = 0 +weight = -2 +global_quality = True [values] acceleration_enabled = True diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg index a3ae98deba..b1092b115c 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg @@ -4,10 +4,11 @@ name = High definition = anycubic_i3_mega [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 2 +weight = 1 +global_quality = True [values] acceleration_enabled = True diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg index 13846b9702..d088d650a0 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg @@ -4,10 +4,11 @@ name = Normal definition = anycubic_i3_mega [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 1 +weight = 0 +global_quality = True [values] acceleration_enabled = True diff --git a/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg index 10c8bc553f..491d24c919 100644 --- a/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg index b09ceb8872..3ff0f07ac1 100644 --- a/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg index c2425a6d86..cf67185706 100644 --- a/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg index 038fd02fff..aedb45a2b1 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg index e9512e30f8..08fb395a36 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg index fb6ec6c89f..008de91758 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg index 572e83d4b3..0e2c26812b 100644 --- a/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg index f4a45dd43a..8217ca9156 100644 --- a/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg index d927ab0851..48b2df0cae 100644 --- a/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg index fc877df05d..6834cbb2c4 100644 --- a/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg index 586133a500..9fc5426cf9 100644 --- a/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg index e84b2eaa87..161bee24df 100644 --- a/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg index f661e58b6d..149b938bac 100644 --- a/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg index 31b9c094df..ba310a0890 100644 --- a/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg index 8c3ca85124..4ab949957f 100644 --- a/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg index a1d80774a1..9a85c924ee 100644 --- a/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg index 465ea6090a..ca2f8c843f 100644 --- a/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg index e872561b90..3b24f9963d 100644 --- a/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg index 5626ed58de..f19635331d 100644 --- a/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg index f74918ef4f..14babfa93d 100644 --- a/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_abs variant = 0.25mm thermoplastic extruder diff --git a/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg index d4dd85b09d..99e1290c77 100644 --- a/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg index ab72092035..32c306ba71 100644 --- a/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_abs variant = 0.4mm thermoplastic extruder diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg index d15efb770f..5496468fd6 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg index 7467da765f..360397ddc9 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg index caa6b71a4a..82e0afa853 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg index 9eea2177a8..20ba9b777d 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_abs variant = 0.8mm thermoplastic extruder diff --git a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg index 17f2acd8d1..fa89b4c3aa 100644 --- a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg +++ b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg index 8215eb2f50..63abbf1cc5 100644 --- a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg +++ b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = dsm_arnitel2045_175 variant = 0.4mm thermoplastic extruder diff --git a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg index f92fc49981..7ce1111dd8 100644 --- a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg index 1681e83279..0369c74e2a 100644 --- a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extra coarse weight = -4 diff --git a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg index 95d1f3b37e..dafe5ef621 100644 --- a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg index 6bb348282e..100da3c70a 100644 --- a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg index 3e212b2446..93e04e1514 100644 --- a/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg index 0cf82847a0..ba3f88ce13 100644 --- a/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_hips variant = 0.25mm thermoplastic extruder diff --git a/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg index a9664cf9d1..91b1627650 100644 --- a/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg index 8101fb6dd8..a2f817aef2 100644 --- a/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_hips variant = 0.4mm thermoplastic extruder diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg index f009383ad8..6b84c5e864 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg index 1adbbb0fb9..16f299813b 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg index d3e6df227f..686759bc4d 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg index 0b019d555f..654564f291 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_hips variant = 0.8mm thermoplastic extruder diff --git a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg index 9eb5d5c4e9..bd2dca940f 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg index e0100d37ec..55d22623bb 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_nylon variant = 0.25mm thermoplastic extruder diff --git a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg index d4b261b99f..05e9abbe8f 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg index 7d899ae927..51327c844a 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_nylon variant = 0.4mm thermoplastic extruder diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg index 21e6d357b0..279e2d98bf 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg index 15128584e1..69f9a8caad 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg index 1d78bd0f1d..ff4d152ef2 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg index 95be159ff2..f181244796 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_nylon variant = 0.8mm thermoplastic extruder diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg index c45194e18b..15c7f17451 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg index 248517d769..91676e65f0 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_pc variant = 0.25mm thermoplastic extruder diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg index 8c46693c91..73e1ff6bc5 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg index a0b71f1f0a..d217756cb4 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_pc variant = 0.4mm thermoplastic extruder diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg index 04f01db6ba..cba868e95e 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg index 53e21ec4d0..4aff24ed02 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg index 0b2b9dcb26..f00e83f63e 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg index 173ad406f3..2f8ed80751 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_pc variant = 0.8mm thermoplastic extruder diff --git a/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg index 9dc7adfc88..3c8dcc7af6 100644 --- a/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg index 019af9d905..7aedc76af9 100644 --- a/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_petg variant = 0.25mm thermoplastic extruder diff --git a/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg index 93388787e6..3788a4dd51 100644 --- a/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg index ed17ccce31..4805ca55bb 100644 --- a/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_petg variant = 0.4mm thermoplastic extruder diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg index 754c55caf5..d7d6e35a3c 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg index 81b1de32a2..784bd0d6af 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg index 86e93c8a32..bced328a9c 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg index 08f918f59b..2a9da4f164 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_petg variant = 0.8mm thermoplastic extruder diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg index 4841f9f368..15456a0b78 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg index 3ba36f9436..bfa792f133 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg index 7c785a750a..e64b67b59b 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg index b24394daf0..704a974b63 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg index 6443f2d526..b8ff99c256 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg index 51a93f76d9..da613e6e1a 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extra coarse weight = -4 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg index 2f72d9d158..05c0f72686 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg index 431f7c0fff..8434f4abc6 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg index fe21c17e22..7df550917f 100644 --- a/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg index 6525991986..1f1d9549fb 100644 --- a/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_pva variant = 0.25mm thermoplastic extruder diff --git a/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg index cdf8f8cae7..faf1633ce2 100644 --- a/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg index e7267735e4..1dc24190c6 100644 --- a/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_pva variant = 0.4mm thermoplastic extruder diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg index fc35e14fc6..35b2d1690d 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg index 0e1b8b1241..3d41308a5d 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg index 249cf6485e..0293ee9acb 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg index a6c0a89fcc..ae3d51a03f 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = cartesio [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 material = generic_pva variant = 0.8mm thermoplastic extruder diff --git a/resources/quality/coarse.inst.cfg b/resources/quality/coarse.inst.cfg index e9b8156a70..77b9004aa6 100644 --- a/resources/quality/coarse.inst.cfg +++ b/resources/quality/coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = fdmprinter [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg index a302f5b513..b12a92dc1c 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = dagoma_discoeasy200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg index b26eb1d910..055b3e30d6 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = dagoma_discoeasy200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg index 9ec56f696a..7c244b3f18 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg @@ -4,7 +4,7 @@ name = Standard definition = dagoma_discoeasy200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/dagoma/dagoma_global_fast.inst.cfg b/resources/quality/dagoma/dagoma_global_fast.inst.cfg index 28569387f2..f0d312e0a7 100644 --- a/resources/quality/dagoma/dagoma_global_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_global_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = dagoma_discoeasy200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/dagoma/dagoma_global_fine.inst.cfg b/resources/quality/dagoma/dagoma_global_fine.inst.cfg index 1f7d577c1b..bf0a173ec3 100644 --- a/resources/quality/dagoma/dagoma_global_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_global_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = dagoma_discoeasy200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/dagoma/dagoma_global_standard.inst.cfg b/resources/quality/dagoma/dagoma_global_standard.inst.cfg index 167062c1d7..afeb925e96 100644 --- a/resources/quality/dagoma/dagoma_global_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_global_standard.inst.cfg @@ -4,7 +4,7 @@ name = Standard definition = dagoma_discoeasy200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg index d87c913eb6..8387ff2401 100644 --- a/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = dagoma_magis [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg index d046726e0e..60c0cae7ec 100644 --- a/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = dagoma_magis [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg index 39961ea93b..b406d43cb1 100644 --- a/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg @@ -4,7 +4,7 @@ name = Standard definition = dagoma_magis [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg index efdf2f7d32..c0e8d7fe94 100644 --- a/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = dagoma_neva [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg index 50915db112..b6d6966c81 100644 --- a/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = dagoma_neva [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg index ed67800eac..eff587c908 100644 --- a/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg @@ -4,7 +4,7 @@ name = Standard definition = dagoma_neva [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/deltacomb/deltacomb_abs_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_Draft_Quality.inst.cfg index f540400575..9316a84175 100644 --- a/resources/quality/deltacomb/deltacomb_abs_Draft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast (beta) definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/deltacomb/deltacomb_abs_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_Fast_Quality.inst.cfg index 2214813913..a2c67ff890 100644 --- a/resources/quality/deltacomb/deltacomb_abs_Fast_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal (beta) definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/deltacomb/deltacomb_abs_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_High_Quality.inst.cfg index c196209553..be428bb8f4 100644 --- a/resources/quality/deltacomb/deltacomb_abs_High_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_High_Quality.inst.cfg @@ -4,10 +4,10 @@ name = Extra Fine (beta) definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 0 +weight = 1 material = generic_abs [values] diff --git a/resources/quality/deltacomb/deltacomb_abs_Normal_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_Normal_Quality.inst.cfg index 332e1890c6..1f4184f3ad 100644 --- a/resources/quality/deltacomb/deltacomb_abs_Normal_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine (beta) definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_abs_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_Verydraft_Quality.inst.cfg index 674174c0bd..37925e0e4c 100644 --- a/resources/quality/deltacomb/deltacomb_abs_Verydraft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast (beta) definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/deltacomb/deltacomb_global_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_Draft_Quality.inst.cfg index f8887810d5..072f0435f6 100755 --- a/resources/quality/deltacomb/deltacomb_global_Draft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/deltacomb/deltacomb_global_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_Fast_Quality.inst.cfg index 99030a084b..eef96e35b8 100755 --- a/resources/quality/deltacomb/deltacomb_global_Fast_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/deltacomb/deltacomb_global_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_High_Quality.inst.cfg index d6d853466a..becd10ea65 100755 --- a/resources/quality/deltacomb/deltacomb_global_High_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_High_Quality.inst.cfg @@ -4,10 +4,10 @@ name = Extra Fine definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 0 +weight = 1 global_quality = True [values] diff --git a/resources/quality/deltacomb/deltacomb_global_Normal_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_Normal_Quality.inst.cfg index a3bafadeec..4c95c74cfa 100755 --- a/resources/quality/deltacomb/deltacomb_global_Normal_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_global_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_Verydraft_Quality.inst.cfg index 84c6e66f61..0ba6ca588f 100755 --- a/resources/quality/deltacomb/deltacomb_global_Verydraft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/deltacomb/deltacomb_pla_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_Draft_Quality.inst.cfg index c4f884486e..e0e695570d 100644 --- a/resources/quality/deltacomb/deltacomb_pla_Draft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/deltacomb/deltacomb_pla_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_Fast_Quality.inst.cfg index 714d4e3517..3f43871a8f 100644 --- a/resources/quality/deltacomb/deltacomb_pla_Fast_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/deltacomb/deltacomb_pla_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_High_Quality.inst.cfg index 774b8969c0..b3924431af 100644 --- a/resources/quality/deltacomb/deltacomb_pla_High_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_High_Quality.inst.cfg @@ -4,10 +4,10 @@ name = Extra Fine definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 0 +weight = 1 material = generic_pla [values] diff --git a/resources/quality/deltacomb/deltacomb_pla_Normal_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_Normal_Quality.inst.cfg index 58470ed650..98ec4f46cd 100644 --- a/resources/quality/deltacomb/deltacomb_pla_Normal_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_pla_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_Verydraft_Quality.inst.cfg index 9c00877c24..f67a2d8a26 100644 --- a/resources/quality/deltacomb/deltacomb_pla_Verydraft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = deltacomb [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/draft.inst.cfg b/resources/quality/draft.inst.cfg index ac1d9ec52f..a605b9c83c 100644 --- a/resources/quality/draft.inst.cfg +++ b/resources/quality/draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = fdmprinter [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/extra_coarse.inst.cfg b/resources/quality/extra_coarse.inst.cfg index 2a1a203d22..bf22b7ac3c 100644 --- a/resources/quality/extra_coarse.inst.cfg +++ b/resources/quality/extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = fdmprinter [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extra coarse weight = -4 diff --git a/resources/quality/extra_fast.inst.cfg b/resources/quality/extra_fast.inst.cfg index da890f1653..eb1e7b3a42 100644 --- a/resources/quality/extra_fast.inst.cfg +++ b/resources/quality/extra_fast.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = fdmprinter [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg index f2628e16df..036d49a94f 100644 --- a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg @@ -4,11 +4,11 @@ definition = fabtotum name = Fast Quality [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 -material = fabtotum_abs +material = generic_abs [values] adhesion_type = raft diff --git a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg index d750eb98a3..f3d6f33952 100644 --- a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg @@ -4,11 +4,11 @@ definition = fabtotum name = High Quality [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 -material = fabtotum_abs +material = generic_abs [values] adhesion_type = raft diff --git a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg index 7db9682c8a..d01599a392 100644 --- a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg @@ -4,11 +4,11 @@ definition = fabtotum name = Normal Quality [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 -material = fabtotum_abs +material = generic_abs [values] adhesion_type = raft diff --git a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg index b6629d1fac..1f0c050126 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg @@ -4,11 +4,11 @@ name = Fast Quality definition = fabtotum [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 -material = fabtotum_nylon +material = generic_nylon [values] adhesion_type = raft diff --git a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg index f819f2bbd5..4e234f62f8 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg @@ -4,11 +4,11 @@ name = High Quality definition = fabtotum [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 -material = fabtotum_nylon +material = generic_nylon [values] adhesion_type = raft diff --git a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg index 8e0ed4f93c..67998dea38 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg @@ -4,11 +4,11 @@ name = Normal Quality definition = fabtotum [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 -material = fabtotum_nylon +material = generic_nylon [values] adhesion_type = raft diff --git a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg index dce262216a..e27477e8de 100644 --- a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg @@ -4,11 +4,11 @@ definition = fabtotum name = Fast Quality [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 -material = fabtotum_pla +material = generic_pla [values] adhesion_type = skirt diff --git a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg index 2dce693235..bab6d5fc82 100644 --- a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg @@ -4,11 +4,11 @@ definition = fabtotum name = High Quality [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 -material = fabtotum_pla +material = generic_pla [values] adhesion_type = skirt diff --git a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg index 01f730c2e8..7bd3bc024e 100644 --- a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg @@ -4,11 +4,11 @@ definition = fabtotum name = Normal Quality [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 -material = fabtotum_pla +material = generic_pla [values] adhesion_type = skirt diff --git a/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg index be8d2e3e3a..5668d4a5b9 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg @@ -5,8 +5,8 @@ name = Fast Quality [metadata] type = quality -setting_version = 5 -material = fabtotum_tpu +setting_version = 6 +material = generic_tpu quality_type = fast weight = -1 diff --git a/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg index 2dcaa15bd3..6af9e88f00 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg @@ -5,8 +5,8 @@ name = High Quality [metadata] type = quality -setting_version = 5 -material = fabtotum_tpu +setting_version = 6 +material = generic_tpu quality_type = high weight = 1 diff --git a/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg index e680038e26..13faf5bc2f 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg @@ -5,8 +5,8 @@ name = Normal Quality [metadata] type = quality -setting_version = 5 -material = fabtotum_TPU +setting_version = 6 +material = generic_tpu quality_type = normal weight = 0 diff --git a/resources/quality/fast.inst.cfg b/resources/quality/fast.inst.cfg index 7568c42e8f..94a7961320 100644 --- a/resources/quality/fast.inst.cfg +++ b/resources/quality/fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = fdmprinter [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/gmax15plus/gmax15plus_pla_dual_normal.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg similarity index 96% rename from resources/quality/gmax15plus/gmax15plus_pla_dual_normal.inst.cfg rename to resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg index 7fd2ab2296..3c9c9c0dfd 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_dual_normal.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg @@ -4,10 +4,11 @@ name = gMax 1.5+ Dual Normal Layers definition = gmax15plus_dual [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = -1 +weight = 0 +global_quality = True [values] layer_height = 0.2 @@ -64,7 +65,6 @@ ooze_shield_enabled = True prime_tower_enable = False prime_tower_position_x = 350 prime_tower_position_y = 350 -prime_tower_min_volume = 18 switch_extruder_retraction_amount = 6 switch_extruder_retraction_speeds = 60 diff --git a/resources/quality/gmax15plus/gmax15plus_pla_dual_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg similarity index 96% rename from resources/quality/gmax15plus/gmax15plus_pla_dual_thick.inst.cfg rename to resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg index 30a99ef243..24740362af 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_dual_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg @@ -4,10 +4,11 @@ name = gMax 1.5+ Dual Thick Layers definition = gmax15plus_dual [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = course weight = -2 +global_quality = True [values] layer_height = 0.28 @@ -64,7 +65,6 @@ ooze_shield_enabled = True prime_tower_enable = False prime_tower_position_x = 350 prime_tower_position_y = 350 -prime_tower_min_volume = 18 switch_extruder_retraction_amount = 6 switch_extruder_retraction_speeds = 60 diff --git a/resources/quality/gmax15plus/gmax15plus_pla_dual_thin.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg similarity index 96% rename from resources/quality/gmax15plus/gmax15plus_pla_dual_thin.inst.cfg rename to resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg index decafac241..845a1c2c39 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_dual_thin.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg @@ -4,10 +4,11 @@ name = gMax 1.5+ Dual Thin Layers definition = gmax15plus_dual [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 0 +weight = 1 +global_quality = True [values] layer_height = 0.16 @@ -64,7 +65,6 @@ ooze_shield_enabled = True prime_tower_enable = False prime_tower_position_x = 350 prime_tower_position_y = 350 -prime_tower_min_volume = 18 switch_extruder_retraction_amount = 6 switch_extruder_retraction_speeds = 60 diff --git a/resources/quality/gmax15plus/gmax15plus_pla_dual_very_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg similarity index 96% rename from resources/quality/gmax15plus/gmax15plus_pla_dual_very_thick.inst.cfg rename to resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg index a74bdfdd78..4dbd81255a 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_dual_very_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg @@ -4,10 +4,11 @@ name = gMax 1.5+ Dual Very Thick Layers definition = gmax15plus_dual [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extra_course weight = -3 +global_quality = True [values] layer_height = 0.32 @@ -63,7 +64,6 @@ ooze_shield_enabled = True prime_tower_enable = False prime_tower_position_x = 350 prime_tower_position_y = 350 -prime_tower_min_volume = 18 switch_extruder_retraction_amount = 6 switch_extruder_retraction_speeds = 60 diff --git a/resources/quality/gmax15plus/gmax15plus_pla_normal.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_normal.inst.cfg similarity index 95% rename from resources/quality/gmax15plus/gmax15plus_pla_normal.inst.cfg rename to resources/quality/gmax15plus/gmax15plus_global_normal.inst.cfg index ddf5a4c491..8b91006184 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_normal.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_normal.inst.cfg @@ -4,10 +4,11 @@ name = gMax 1.5+ Normal Layers definition = gmax15plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = -1 +weight = 0 +global_quality = True [values] layer_height = 0.2 @@ -57,3 +58,5 @@ top_thickness = 1 bottom_layers = 2 wall_line_count = 2 z_seam_corner = z_seam_corner_none + + diff --git a/resources/quality/gmax15plus/gmax15plus_pla_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_thick.inst.cfg similarity index 93% rename from resources/quality/gmax15plus/gmax15plus_pla_thick.inst.cfg rename to resources/quality/gmax15plus/gmax15plus_global_thick.inst.cfg index e6cb2b5854..c5ef9fdf83 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_thick.inst.cfg @@ -4,10 +4,11 @@ name = gMax 1.5+ Thick Layers definition = gmax15plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = course weight = -2 +global_quality = True [values] layer_height = 0.28 @@ -56,4 +57,4 @@ top_layers = 3 top_thickness = 1 bottom_layers = 2 wall_line_count = 2 -z_seam_corner = z_seam_corner_none +z_seam_corner = z_seam_corner_none \ No newline at end of file diff --git a/resources/quality/gmax15plus/gmax15plus_pla_thin.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_thin.inst.cfg similarity index 92% rename from resources/quality/gmax15plus/gmax15plus_pla_thin.inst.cfg rename to resources/quality/gmax15plus/gmax15plus_global_thin.inst.cfg index d119539d32..b3a2ed8d82 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_thin.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_thin.inst.cfg @@ -4,10 +4,11 @@ name = gMax 1.5+ Thin Layers definition = gmax15plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 0 +weight = 1 +global_quality = True [values] layer_height = 0.16 @@ -56,4 +57,4 @@ top_layers = 5 top_thickness = 1 bottom_layers = 3 wall_line_count = 2 -z_seam_corner = z_seam_corner_none +z_seam_corner = z_seam_corner_none \ No newline at end of file diff --git a/resources/quality/gmax15plus/gmax15plus_pla_very_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_very_thick.inst.cfg similarity index 93% rename from resources/quality/gmax15plus/gmax15plus_pla_very_thick.inst.cfg rename to resources/quality/gmax15plus/gmax15plus_global_very_thick.inst.cfg index 884029a4ae..5ebcf5e12d 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_very_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_very_thick.inst.cfg @@ -4,10 +4,11 @@ name = gMax 1.5+ Very Thick Layers definition = gmax15plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extra_course weight = -3 +global_quality = True [values] layer_height = 0.32 @@ -55,4 +56,4 @@ top_layers = 3 top_thickness = 1 bottom_layers = 2 wall_line_count = 2 -z_seam_corner = z_seam_corner_none +z_seam_corner = z_seam_corner_none \ No newline at end of file diff --git a/resources/quality/high.inst.cfg b/resources/quality/high.inst.cfg index 1b687bf5e4..2ef1aba9e1 100644 --- a/resources/quality/high.inst.cfg +++ b/resources/quality/high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = fdmprinter [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg index 6a50e24678..e299e675e0 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg index 2c8a43874a..7123c6440a 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg index 264c95c933..297531f989 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg @@ -4,7 +4,7 @@ name = Medium definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg index dfdfc2458c..d15c4a3b2d 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg @@ -4,7 +4,7 @@ name = Medium definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg index 68eec0c753..9ff4e6d49e 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg index 46f81d0c1a..88635bb56d 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg index f614b7cc3c..89dcca901c 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg index 5525899ea7..c7fd702eeb 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg index 28b4307cea..7f030b53e2 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg @@ -4,7 +4,7 @@ name = Medium definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg index 52a8594505..2759a24a8d 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg @@ -4,7 +4,7 @@ name = Medium definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg index bf3d409050..b74b9434b7 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg @@ -4,7 +4,7 @@ name = UltraFine definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = ultrahigh weight = 2 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg index 676ea84825..21df5445ab 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg @@ -4,7 +4,7 @@ name = UltraFine definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = ultrahigh weight = 2 diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg index 819501c727..1c6ef69145 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg index 0f312aa62d..702c5182c9 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg index 25d0e65d74..87256a9af7 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg @@ -4,7 +4,7 @@ name = Medium definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg index ebe5ab620c..ffa7ed4550 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg @@ -4,7 +4,7 @@ name = UltraFine definition = imade3d_jellybox [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = ultrahigh weight = 2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg index edba5e79ce..e4b6411ef6 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = kemiq_q2_beta [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg index 899af00b78..faeaee854d 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = kemiq_q2_beta [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg index 9b7ae123df..1ee9821018 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = kemiq_q2_beta [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg index 96888821e3..c47239ee4a 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg @@ -4,7 +4,7 @@ name = Low definition = kemiq_q2_beta [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg index c8f27f6a8f..8eac1515ca 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = kemiq_q2_beta [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg index a121d921cc..e51e3f6cd8 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = kemiq_q2_beta [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg index 211da57f0c..f3d9aa9409 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = kemiq_q2_beta [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg index 5879a76012..92d1a98e2b 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = kemiq_q2_beta [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg index 0b437327d8..3fa48b32a6 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg @@ -4,7 +4,7 @@ name = Low definition = kemiq_q2_beta [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg index ca5ac5bd0e..277ddc7ec5 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = kemiq_q2_beta [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg index cd6ee5356e..e73ff9b982 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = kemiq_q2_gama [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg index 345fdc2f0d..0175eb8ffa 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = kemiq_q2_gama [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg index bafc8f0016..415fbef684 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = kemiq_q2_gama [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg index c8aa72def2..94aa963911 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg @@ -4,7 +4,7 @@ name = Low definition = kemiq_q2_gama [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg index 62c43104e1..cc69216ecd 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = kemiq_q2_gama [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg index 5bb967b78a..d54f0071cd 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg index 30641b863a..bdd9a1ccb8 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg index 746b579c70..7a4722d599 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg index e4ab115bc5..4cd3f34466 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg index d8a7607c5c..bd349b6d72 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg index 44cad5a198..a01282748b 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg index 995074f330..ac82e263a7 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg index 373908b2bd..5e3afcb633 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg @@ -4,10 +4,10 @@ name = Low Detail Draft definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft -weight = -4 +weight = -3 material = generic_abs [values] diff --git a/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg index e53aa86a94..aa1f30d0b3 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg index 4379d9fdcb..8cbbdac2e4 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg index a9a5720e14..a56a5771d8 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg index 96b982e86a..f24faf98f0 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg index 0550efd603..ff0d97b1cc 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg index 9a0454fc75..623b48acff 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg index 76eaa3463f..ec04f9055b 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg index 42c670920f..85b5d0df6b 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg @@ -4,10 +4,10 @@ name = Low Detail Draft definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft -weight = -4 +weight = -3 global_quality = True [values] diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg index 96144c193f..6f36402470 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg index f390034a1f..ff14d6a96e 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg index 693c6efc08..74ab347def 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg index 09c5c2b14d..0862f96460 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg index 0faec6b357..df50ebcc42 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg index 988082f783..3697573e0e 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg index 4eb84672e7..c9858b63c7 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg index 2f33760afa..b88d57ab76 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg @@ -4,8 +4,8 @@ name = Low Detail Draft definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft -weight = -4 +weight = -3 material = generic_petg diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg index 9a26d1b2a1..7a3af8285a 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg index ef4d002ce3..f813e062dd 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg index 6ff347a7cc..5fe854ddab 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg index b6aa938b94..cce3508550 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg index 8a4b63691f..477256a933 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg index 98a8363c85..1841b91d3d 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg index 5a334bd9c1..24717cda19 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg index 7d96a9f56d..9e638d67c5 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg @@ -4,10 +4,10 @@ name = Low Detail Draft definition = malyan_m200 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft -weight = -4 +weight = -3 material = generic_pla [values] diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg index ef579a567e..e8959a1235 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg index 33296bf677..256eea1976 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg index e282847f14..6d0250121f 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg index 2979f574a4..88c12a38f0 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg index 2d4d3c7461..2eacd312f4 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg index ed43dec3ae..4b311bcfed 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg index eb556fe862..e9857b76b3 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = thickerdraft weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg index 279f58d64f..aa29220d34 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg @@ -4,10 +4,10 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft -weight = -4 +weight = -3 material = generic_abs [values] diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg index 1d81d7535e..add2590cce 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg index 6a5a041244..2feddbd32a 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg index 65925a1ea4..263bd8544c 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg index 0ac150c117..52e2ec79f3 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg index b02910cf12..dfbd2d4d3d 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg index 46434555ad..f05617c4f0 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg index dfb4942b29..e6d835d683 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg index 79d9c8abb9..f44b085be1 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg @@ -4,10 +4,10 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft -weight = -4 +weight = -3 global_quality = True [values] diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg index 4d7d1cd848..c7701b56d3 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg index 1a18df9651..dbe3b03148 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg index ac0ca29caa..4612b19638 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg index 32c5e33f0d..7b887afb8d 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg index 26f260f861..c696c71fd5 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg index b5bcc7d455..c561bcda04 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg index 6fc41e34b6..e16e044708 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg index 8f568d3948..9bf829c778 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg @@ -4,8 +4,8 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft -weight = -4 +weight = -3 material = generic_nylon diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg index 76b210eba1..6cc27cd3e8 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg index 53a099f42d..95ef667be9 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg index 1a6193fbaf..c874fc5c42 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg index 72e94d1828..62fb4046aa 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg index 13914d07e7..e1c88805e7 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg index d02a793b25..0cec8831bf 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg index 41b3821727..6aaf8680f5 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg index 23b72a3a3b..7a63b896c3 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg @@ -4,10 +4,10 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft -weight = -4 +weight = -3 material = generic_pc [values] diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg index c2c8889127..4e31a46fbd 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg index 881311d395..e0d7d393c5 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg index f9f1e169cb..64451b0788 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg index 026279f012..1f5b6c956c 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg index 3ff71bf416..9b269ee95b 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg index 5524ec59ea..e180b50a89 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg index 99d1da45c7..fe77254c56 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg index 99874f0571..9505b2b15b 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg @@ -4,8 +4,8 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft -weight = -4 +weight = -3 material = generic_petg diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg index a64020a89e..8333cd10ac 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg index 994d6ff0fd..ab83dacbe8 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg index 9f64ce57f0..13f31a614e 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg @@ -4,8 +4,8 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 0 +weight = 1 material = generic_pla diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg index afbc03d5af..57fb63fdea 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg index ec30cfe2b9..77c3a18b54 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg index 916285385d..52b871217b 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg index 5d627b6d35..36ef492905 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg index 9f22fb3692..e1d636b2b1 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 5 +setting_version = 6 type = quality material = generic_pla weight = 0 diff --git a/resources/quality/normal.inst.cfg b/resources/quality/normal.inst.cfg index f32c87bc60..02b9ebf621 100644 --- a/resources/quality/normal.inst.cfg +++ b/resources/quality/normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = fdmprinter [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/peopoly_moai/peopoly_moai_coarse.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_coarse.inst.cfg index ac4f9ee81d..9ca6cec759 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_coarse.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = peopoly_moai [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg index 2d21b1f7e0..72953e5305 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg @@ -4,10 +4,10 @@ name = Draft definition = peopoly_moai [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = 4 +weight = -2 [values] layer_height = 0.1 diff --git a/resources/quality/peopoly_moai/peopoly_moai_extra_high.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_extra_high.inst.cfg index 796c2cff3c..30d41aa7f8 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_extra_high.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_extra_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra High definition = peopoly_moai [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extra_high weight = 0 diff --git a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg index b36163d9f1..37442ed20c 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = peopoly_moai [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg index cf67591ab2..33bb5673ae 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = peopoly_moai [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 [values] layer_height = 0.06 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg index be83533e0b..13f12ef643 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = tevo_blackwidow [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg index 5ca8a6e4ef..0f0ccf64c6 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tevo_blackwidow [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg index f542952fab..ebd5997027 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tevo_blackwidow [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx_k25/tizyx_k25_normal.inst.cfg b/resources/quality/tizyx_k25/tizyx_k25_normal.inst.cfg index 8b066f139f..f259ad1b34 100644 --- a/resources/quality/tizyx_k25/tizyx_k25_normal.inst.cfg +++ b/resources/quality/tizyx_k25/tizyx_k25_normal.inst.cfg @@ -5,7 +5,7 @@ definition = tizyx_k25 [metadata] quality_type = normal -setting_version = 5 +setting_version = 6 type = quality global_quality = True diff --git a/resources/quality/ultimaker2/um2_draft.inst.cfg b/resources/quality/ultimaker2/um2_draft.inst.cfg index 8c34d2c09d..7d38ba6bf4 100644 --- a/resources/quality/ultimaker2/um2_draft.inst.cfg +++ b/resources/quality/ultimaker2/um2_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = ultimaker2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2/um2_fast.inst.cfg b/resources/quality/ultimaker2/um2_fast.inst.cfg index 084ed05f92..39cd4da4ef 100644 --- a/resources/quality/ultimaker2/um2_fast.inst.cfg +++ b/resources/quality/ultimaker2/um2_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2/um2_high.inst.cfg b/resources/quality/ultimaker2/um2_high.inst.cfg index 83bb6bb972..142440d53e 100644 --- a/resources/quality/ultimaker2/um2_high.inst.cfg +++ b/resources/quality/ultimaker2/um2_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2/um2_normal.inst.cfg b/resources/quality/ultimaker2/um2_normal.inst.cfg index febee8581f..b5a87f07f3 100644 --- a/resources/quality/ultimaker2/um2_normal.inst.cfg +++ b/resources/quality/ultimaker2/um2_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg index ff830ae660..d27a136765 100644 --- a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg index 94ea62a7ca..5bc62e5fd0 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg index 03de437ee2..2847ab8c15 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg index 836d866eab..009fcf7877 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg index de55623c0f..7c492f2ec0 100644 --- a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg index c96260d52f..1b6cee0e1d 100644 --- a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg index 886daf58e2..f55567f986 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg index b727acc510..63904632dc 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg index 20e217315b..f76efeb7b2 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg index 853a87c751..fd7dfc86a7 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg index 6d3ef94b9d..aba3222412 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg index 7b39ce966a..23618e2e1d 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg index eca5070eb9..db184abe54 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg @@ -4,10 +4,10 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = -1 +weight = 1 material = generic_cpe variant = 0.25 mm diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg index 1e181e23d1..2dc076b012 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg index 9ffb8a05bb..300d5242e2 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg index ee7101f2ec..17a9f1a579 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg index d2de84eae6..6807a1a86a 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg index 581dc0368d..7a15ed53ec 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg index 7549c0081d..cc68478dd8 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg index b1e5552562..0d0e0e2043 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg index 616f13f110..e08a7fc357 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg index d28dc76af8..7c8589f09e 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg index 1c4fa746ad..1c42d28128 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg index e40d6efc58..072081e092 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Coarse_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Coarse_Quality.inst.cfg index a10cb4030c..2a4fe17a24 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Coarse_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse Quality definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = -4 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Draft_Quality.inst.cfg index 5645bbee0b..bdf79827b2 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Draft Quality definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Extra_Coarse_Quality.inst.cfg index d9afc804ba..e5338c0e34 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Extra_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse Quality definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extra coarse weight = -3 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Fast_Quality.inst.cfg index 7fd6d54c87..453def0668 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_global_High_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_High_Quality.inst.cfg index ade183d14a..20b9e7ba16 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_High_Quality.inst.cfg @@ -4,10 +4,10 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 0 +weight = 1 global_quality = True [values] diff --git a/resources/quality/ultimaker2_plus/um2p_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Normal_Quality.inst.cfg index 76c7b8163c..c901687f22 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg index 2cab693c74..512f9e499b 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg index f61a29a35a..ce607f7a83 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg index 341dc7422f..7b06d5205c 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg index 63bc156e15..b65f694e11 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg index 8aea23fb50..6caa1d2e82 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg index 28ccd6ffcf..3dad97297f 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg index f868313ba9..fe5749aeff 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg index c30d849553..3e16229ad1 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg index 08b60eeb20..0195a6170f 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg index dbc36f0c25..fe15f050c7 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg index 18f299b64d..1268e4f5a5 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg index 9ebb46c4d3..31a55131bd 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg index 47f84fe790..a4b0e7865e 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg index 2c857435c5..9fef7be2f8 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg index 6450d9fe56..cfbd0795ab 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg index 91c990712e..fd24f29c40 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg index 4266bcd46b..8e320bef25 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg index b995c92922..94d7a22965 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg index a9e4917fa2..aee8437e39 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg index 2fec539e2f..f1e709495b 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg index 2bba1be3d4..0e84d2c2e4 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg @@ -4,10 +4,10 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast -weight = -2 +weight = -1 material = generic_pp variant = 0.8 mm diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg index 15f7577bdb..905c147e41 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg @@ -4,10 +4,10 @@ name = Extra Fast definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = -3 +weight = -2 material = generic_pp variant = 0.8 mm diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg index e0c016abee..47bf078c2f 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg index 127f281913..d8543f1f8a 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg index c39ea9cec3..1983878a79 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg index 5139a1fea8..dda9fd3891 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg index 4e81b4f39e..922366d716 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg index 04dc2ec79b..3535bc4cba 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg index e08fa27dc9..f24c53aaee 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg @@ -4,12 +4,13 @@ name = Fine - Experimental definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 material = generic_pc variant = AA 0.25 +is_experimental = True [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg index 8dbca3cd05..a59c404754 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg index 6e9bbdce27..6f9734511b 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg @@ -4,12 +4,13 @@ name = Fine - Experimental definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 material = generic_pp variant = AA 0.25 +is_experimental = True [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg index 768864bfef..af9bea762a 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg index 8877912a33..a6ba0a666b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg index 926cfd6995..4bd04e36af 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg index 9ceab110e9..6ef2fa3cb4 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 @@ -17,6 +17,7 @@ machine_nozzle_cool_down_speed = 0.8 machine_nozzle_heat_up_speed = 1.5 material_standby_temperature = 100 material_print_temperature = =default_material_print_temperature - 5 +material_print_temperature_layer_0 = =material_print_temperature + 15 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 prime_tower_enable = False diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg index e5b699c35f..e0862a137c 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 @@ -14,6 +14,7 @@ variant = AA 0.4 [values] machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 +material_print_temperature_layer_0 = =material_print_temperature + 10 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg index df7f0fdf02..3de7252b86 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg index cf330dc984..28bce4eb15 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg index 705c9c4105..0f15931e59 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg index 4e94789a6b..c27fc027fb 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg index d93915d721..6a035522f1 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg index 082152c50f..3387430d26 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg index 889b94e001..8d0283a20f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg index 1891a274c8..a8d5c26315 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg index e4cfdb67fc..e4b4e2e21b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg index cec4b950cf..3964608aec 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg index 892083b264..b0e7234c90 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg index 2e4b8f8dcc..5bfa29fd61 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg index 9b271c47cd..eaec1cdbdb 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg index 16c0b6febb..7a0a04b6c2 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg index 17661efbb8..8b18ee20df 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg index 96acf403a5..fafb839f17 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg index f9159b5fca..57527f928c 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg index d175e99ad6..37e31c5863 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg index 557a449022..0961b3ccd6 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg index 16626dc544..c24c2cacdf 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg index 7f50a2a6f0..d20a06a94a 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg index 507afc5526..bd365c56ae 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg index 05febab06d..a291357e58 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg index 4efa5199cb..6dbb444454 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg index ad03df5d86..60c304794b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg index d8d51dd716..92d53d6295 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg index 9959a39457..6d8c6690a2 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg index 5c68557e9b..c8fbe827e3 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg index 90556ea487..d1a1bc994c 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg index 9b9dca3a16..13bc7c0b7e 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg index e6233a8184..cb3692a84f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg index e725615854..a5264ce6ec 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg index e71ea07531..474b24a462 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg index 39aa103631..e9c4f9e3e9 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg index 3a08643086..213298653a 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg index 73df9637f7..bb2aa2d6ef 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg @@ -4,12 +4,13 @@ name = Fast - Experimental definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 material = generic_cpe_plus variant = AA 0.8 +is_experimental = True [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg index d59bfe7cea..98086b2bf1 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -4,12 +4,13 @@ name = Sprint - Experimental definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 material = generic_cpe_plus variant = AA 0.8 +is_experimental = True [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg index 368317019f..0684b9ac1e 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -4,12 +4,13 @@ name = Extra Fast - Experimental definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 material = generic_cpe_plus variant = AA 0.8 +is_experimental = True [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg index 170643275c..05294737b6 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg index 5b3cb52f18..555d6da1bf 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg index fff96ba9fc..da71c679ff 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg index e9b0873716..ab11f0fe86 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg index 7518acc7f0..46f5a87a1b 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg index 040632efec..12d96e9f7d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg index 5b81532977..8005618066 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg @@ -4,12 +4,13 @@ name = Fast - Experimental definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = 0 +weight = -2 material = generic_pc variant = AA 0.8 +is_experimental = True [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg index 317b89ea85..601a68ef46 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg @@ -4,12 +4,13 @@ name = Sprint - Experimental definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft -weight = -2 +weight = -4 material = generic_pc variant = AA 0.8 +is_experimental = True [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg index 2fd6bd7609..0d5b579846 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg @@ -4,12 +4,13 @@ name = Extra Fast - Experimental definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft -weight = -1 +weight = -3 material = generic_pc variant = AA 0.8 +is_experimental = True [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg index 9b861030d8..c5000b0a43 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg index 42a499f22c..e03663bc2b 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg index d1f3937244..06bf4cf224 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg index 19496565bc..b577ba8185 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg index aeee3b4e09..c0917a9e8e 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg index fcd4fcd999..00eb39a400 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg index 3f679870fd..30ce94000f 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg index 17dbd1faf9..ea3525c7ee 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg index 624496a9ec..1027f52b38 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index 90b5103f20..83fb56a84d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index a9fab40d4e..36e38654db 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index e2ced0a364..96b1406adb 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg index 7010d292b2..a41b0c0210 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg index 325609362f..d7a8885bf9 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg index a0507299fb..be4eedadc8 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg index 086f811b36..ae576790a8 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg index 28556ca7bf..247e7f12c6 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg index 9ad5499f18..8a4c0cc992 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg index e616214704..c931e6ad5d 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg index a421203220..b95ddb1aa9 100644 --- a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg index 2ecf7526a2..3510a05343 100644 --- a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg index ce5497bd39..55fe2bdfda 100644 --- a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg @@ -4,10 +4,10 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 0 +weight = 1 global_quality = True [values] diff --git a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg index afadda378a..cffacfd312 100644 --- a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg index f88f5df85f..5fd966bb9f 100644 --- a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg index df626dc724..7e65a6c4c4 100644 --- a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_original/umo_global_Coarse_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Coarse_Quality.inst.cfg index 34f3a2a901..6125d0f687 100644 --- a/resources/quality/ultimaker_original/umo_global_Coarse_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse Quality definition = ultimaker_original [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/ultimaker_original/umo_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Draft_Quality.inst.cfg index ed8c0ddb97..ebabe4dd46 100644 --- a/resources/quality/ultimaker_original/umo_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Draft Quality definition = ultimaker_original [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_original/umo_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Extra_Coarse_Quality.inst.cfg index 1ad10ac4db..b625ec45ea 100644 --- a/resources/quality/ultimaker_original/umo_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Extra_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse Quality definition = ultimaker_original [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extra coarse weight = -4 diff --git a/resources/quality/ultimaker_original/umo_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Fast_Quality.inst.cfg index 6c83239164..e2bceeae7e 100644 --- a/resources/quality/ultimaker_original/umo_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_original [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_original/umo_global_High_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_High_Quality.inst.cfg index 19752f07bf..883048f557 100644 --- a/resources/quality/ultimaker_original/umo_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_original [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_original/umo_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Normal_Quality.inst.cfg index a7dedc9b88..2cec4bfbda 100644 --- a/resources/quality/ultimaker_original/umo_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_original [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg index f2e05b08e8..be8e56d133 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg index 2068ed51c0..3eaeda67d5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 @@ -12,6 +12,7 @@ material = generic_cpe variant = AA 0.25 [values] +retraction_combing_max_distance = 50 retraction_extrusion_window = 0.5 speed_infill = =math.ceil(speed_print * 40 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg index 3a8ed8e773..9407fb72b0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg index 55d53c6c71..7cde76a1e1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg @@ -4,12 +4,13 @@ name = Fine - Experimental definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 material = generic_pc variant = AA 0.25 +is_experimental = True [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg index a06f2158fe..ab45d82a3b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg index c925845dc1..1474cad5c1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg @@ -4,12 +4,13 @@ name = Fine - Experimental definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 material = generic_pp variant = AA 0.25 +is_experimental = True [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg index e9628225bc..ea4375b854 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg index b86c61b3a2..6d26c2bb97 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg index f3c099724a..e2e8bd82e5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg index 8d016a2ee4..fc39383f04 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg index 6ce623b66e..8ec7e6453b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg index 254afbc109..93665c36de 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg index 39bedce77f..478df58f43 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Normal_Quality.inst.cfg index c87d590650..e936d0f131 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg index 421fcdf095..da639d22c9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 @@ -29,7 +29,7 @@ material_print_temperature_layer_0 = =material_print_temperature multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing = off +retraction_combing_max_distance = 50 retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg index 536c6c97b8..2c2eb99fb0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 @@ -29,7 +29,7 @@ material_print_temperature_layer_0 = =material_print_temperature multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing = off +retraction_combing_max_distance = 50 retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg index 77182c21e1..20fbcd9430 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 @@ -31,7 +31,7 @@ material_print_temperature_layer_0 = =material_print_temperature multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing = off +retraction_combing_max_distance = 50 retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg index d779baf315..e40949fc7d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 @@ -31,7 +31,7 @@ material_print_temperature_layer_0 = =material_print_temperature multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing = off +retraction_combing_max_distance = 50 retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg index c51e5652e1..7ccfe4f786 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 @@ -15,6 +15,7 @@ variant = AA 0.4 material_print_temperature = =default_material_print_temperature + 10 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 +retraction_combing_max_distance = 50 skin_overlap = 20 speed_print = 60 speed_layer_0 = =math.ceil(speed_print * 20 / 60) @@ -24,5 +25,5 @@ speed_wall_0 = =math.ceil(speed_wall * 35 / 45) wall_thickness = 1 -infill_pattern = zigzag +infill_pattern = triangles speed_infill = =math.ceil(speed_print * 50 / 60) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg index b80d3ccf22..f12c90bc05 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 @@ -16,11 +16,12 @@ cool_min_speed = 7 material_print_temperature = =default_material_print_temperature + 5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 +retraction_combing_max_distance = 50 speed_print = 60 speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 40 / 60) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) -infill_pattern = zigzag +infill_pattern = triangles speed_infill = =math.ceil(speed_print * 50 / 60) \ No newline at end of file diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg index c90eedaec3..04957025f1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 @@ -18,10 +18,11 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 +retraction_combing_max_distance = 50 speed_print = 50 speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) -infill_pattern = zigzag +infill_pattern = triangles speed_infill = =math.ceil(speed_print * 40 / 50) \ No newline at end of file diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg index e098b0ffb4..b0a5fb820f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 @@ -16,10 +16,11 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 +retraction_combing_max_distance = 50 speed_print = 55 speed_layer_0 = =math.ceil(speed_print * 20 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) -infill_pattern = zigzag +infill_pattern = triangles speed_infill = =math.ceil(speed_print * 45 / 55) \ No newline at end of file diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg index 991ad30a5a..1a198f3e03 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg index 695ce2c8fb..e6b882d2af 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg index e55867efe5..292ef73a4c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg index 41e28c51d5..2b71a01e0d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg index 5d03e1c980..e27a6894e3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg index b630ab6232..db1ecee3bc 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg index 1c080c3b47..ca80494f3d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg index 79ce686da5..d2d5171fed 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg index c7a4864328..9bf58d4f39 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg index 42048fa297..017bf46bd8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg index b7ad8bd5c4..314f7fe0bb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg index 911fa9a0a8..2bb0d31d76 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg index 68558bcf93..8b8bdfd999 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg index 1145d1900f..0fd70e5973 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg index c0b094f0a2..0d683a9f87 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg index 280e5c4bfb..df45c190e1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg index 304c170b55..96b77ebca9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg index cd5c598d4f..3a2cf495a3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg index 2522c0f20f..2d93d1e980 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg index 9b4ab52543..30a1e0c29f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg index 35cf66a93b..3b57900a46 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg index 4357d765df..368bfd9e48 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Draft_Print.inst.cfg index c8d64f9dcb..a2b7aa7b87 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Fast_Print.inst.cfg index c7fa604e89..8e82e27210 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_High_Quality.inst.cfg index 187023d3c0..7e4f17cbf1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Normal_Quality.inst.cfg index 81cb27f060..959d9241c7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Draft_Print.inst.cfg index 46e3483a6a..c9083cf2ab 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 @@ -30,7 +30,7 @@ material_print_temperature_layer_0 = =material_print_temperature multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing = off +retraction_combing_max_distance = 50 retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Fast_Print.inst.cfg index 5c235b656a..9d7663b6e1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 @@ -30,7 +30,7 @@ material_print_temperature_layer_0 = =material_print_temperature multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing = off +retraction_combing_max_distance = 50 retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_High_Quality.inst.cfg index 326a730fe4..ba796da940 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 @@ -32,7 +32,7 @@ material_print_temperature_layer_0 = =material_print_temperature multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing = off +retraction_combing_max_distance = 50 retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Normal_Quality.inst.cfg index d40b2db90e..96ec8d9e36 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 @@ -32,7 +32,7 @@ material_print_temperature_layer_0 = =material_print_temperature multiple_mesh_overlap = 0 prime_tower_enable = True prime_tower_wipe_enabled = True -retraction_combing = off +retraction_combing_max_distance = 50 retraction_extrusion_window = 1 retraction_hop = 0.2 retraction_hop_enabled = False diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Draft_Print.inst.cfg index c812066e0c..bae8b09016 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 @@ -16,6 +16,7 @@ buildplate = Aluminum material_print_temperature = =default_material_print_temperature + 10 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 +retraction_combing_max_distance = 50 skin_overlap = 20 speed_print = 60 speed_layer_0 = 20 @@ -25,7 +26,7 @@ speed_wall_0 = =math.ceil(speed_wall * 35 / 45) wall_thickness = 1 -infill_pattern = zigzag +infill_pattern = triangles speed_infill = =math.ceil(speed_print * 50 / 60) prime_tower_purge_volume = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Fast_Print.inst.cfg index ef634316da..f585c2a787 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 @@ -17,13 +17,14 @@ cool_min_speed = 7 material_print_temperature = =default_material_print_temperature + 5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 +retraction_combing_max_distance = 50 speed_print = 60 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 40 / 60) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) -infill_pattern = zigzag +infill_pattern = triangles speed_infill = =math.ceil(speed_print * 50 / 60) prime_tower_purge_volume = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_High_Quality.inst.cfg index cda97e6ab3..a580a27176 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 @@ -19,12 +19,13 @@ machine_nozzle_heat_up_speed = 1.5 material_print_temperature = =default_material_print_temperature - 5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 +retraction_combing_max_distance = 50 speed_print = 50 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) -infill_pattern = zigzag +infill_pattern = triangles speed_infill = =math.ceil(speed_print * 40 / 50) prime_tower_purge_volume = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Normal_Quality.inst.cfg index 5a75f3b6e3..3db4053d2a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 @@ -17,12 +17,13 @@ machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 +retraction_combing_max_distance = 50 speed_print = 55 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) -infill_pattern = zigzag +infill_pattern = triangles speed_infill = =math.ceil(speed_print * 45 / 55) prime_tower_purge_volume = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Draft_Print.inst.cfg index f05ecddc25..e86c3b363b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Fast_Print.inst.cfg index 6103519f1c..0da88626b6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_High_Quality.inst.cfg index 130afb8c91..d7552ba921 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Normal_Quality.inst.cfg index 9e1bf394d4..638ce2323e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Draft_Print.inst.cfg index 6124dff257..c0ca84281d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Fast_Print.inst.cfg index 2791e9f5d5..43b77f6492 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Normal_Quality.inst.cfg index f78b4048fb..04abd0d18b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg index 911fc6e78e..fb786c7759 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg index 0fcdac4a85..cfacaebad0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg index e3346bbd1d..18ce266cd6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg index e78006689b..a4a7a5e08c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg @@ -4,12 +4,13 @@ name = Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 material = generic_cpe_plus variant = AA 0.8 +is_experimental = True [values] brim_width = 14 @@ -22,7 +23,7 @@ material_print_temperature = =default_material_print_temperature - 10 material_print_temperature_layer_0 = =material_print_temperature material_standby_temperature = 100 prime_tower_enable = True -retraction_combing = off +retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg index c6d0962157..e4f330099b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -4,12 +4,13 @@ name = Sprint - Experimental definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 material = generic_cpe_plus variant = AA 0.8 +is_experimental = True [values] brim_width = 14 @@ -22,7 +23,7 @@ material_print_temperature = =default_material_print_temperature - 5 material_print_temperature_layer_0 = =material_print_temperature material_standby_temperature = 100 prime_tower_enable = True -retraction_combing = off +retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg index b80f773594..0685b27b8a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -4,12 +4,13 @@ name = Extra Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 material = generic_cpe_plus variant = AA 0.8 +is_experimental = True [values] brim_width = 14 @@ -22,7 +23,7 @@ material_print_temperature = =default_material_print_temperature - 7 material_print_temperature_layer_0 = =material_print_temperature material_standby_temperature = 100 prime_tower_enable = True -retraction_combing = off +retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg index 532aacabf7..a57bde98b1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 @@ -17,6 +17,7 @@ line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 15 material_standby_temperature = 100 prime_tower_enable = True +retraction_combing_max_distance = 50 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg index 55b9ae8315..2f0851d9fb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 @@ -17,6 +17,7 @@ line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 20 material_standby_temperature = 100 prime_tower_enable = True +retraction_combing_max_distance = 50 speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg index 01761062a4..6ccca75b44 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 @@ -17,6 +17,7 @@ line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 17 material_standby_temperature = 100 prime_tower_enable = True +retraction_combing_max_distance = 50 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg index 2108839d3f..5d04892443 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg index 0702d174a0..5c31e26bd6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg index d02d410ed6..d04482c94c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg index 0ed4e3d994..97afe62e07 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg @@ -4,12 +4,13 @@ name = Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = 0 +weight = -2 material = generic_pc variant = AA 0.8 +is_experimental = True [values] brim_width = 14 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg index 53bf1d3107..3f296c0300 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg @@ -4,12 +4,13 @@ name = Sprint - Experimental definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft -weight = -2 +weight = -4 material = generic_pc variant = AA 0.8 +is_experimental = True [values] brim_width = 14 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg index d9c45c2634..5eec532f22 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg @@ -4,12 +4,13 @@ name = Extra Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft -weight = -1 +weight = -3 material = generic_pc variant = AA 0.8 +is_experimental = True [values] brim_width = 14 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg index 7db4e96311..1410290859 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg index c59f015b5d..2c65968d77 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg index 6fdff8bf8d..9b6e7c2ed9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg index fee58b367d..c5b01ab1b1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg index aaa810e864..5c83f24395 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg index 5b8aa6d2e1..f182d5c6cb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg index 50dead746b..5b39508f3c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg index 0bdb088f8c..b07a78419a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg index c7cb5902a2..46a61bb79f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg index e8276d54c5..088414fa34 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg index 7da73a200d..d74309c476 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg index 60dbbf38e6..deb2b55dbb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Draft_Print.inst.cfg index 37dceff349..062fcfdd5b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Superdraft_Print.inst.cfg index eac339baa8..38c341af28 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Verydraft_Print.inst.cfg index 590496df0f..8a38bb9aa3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Fast_Print.inst.cfg index 3e74390840..d9dd09c7b6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Fast_Print.inst.cfg @@ -4,13 +4,14 @@ name = Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 material = generic_cpe_plus variant = AA 0.8 buildplate = Aluminum +is_experimental = True [values] brim_width = 14 @@ -23,7 +24,7 @@ material_print_temperature = =default_material_print_temperature - 10 material_print_temperature_layer_0 = =material_print_temperature material_standby_temperature = 100 prime_tower_enable = True -retraction_combing = off +retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Superdraft_Print.inst.cfg index 4c1b807430..bc6a04ae55 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 @@ -23,7 +23,7 @@ material_print_temperature = =default_material_print_temperature - 5 material_print_temperature_layer_0 = =material_print_temperature material_standby_temperature = 100 prime_tower_enable = True -retraction_combing = off +retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Verydraft_Print.inst.cfg index 11aefc90cd..b384bd7083 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 @@ -23,7 +23,7 @@ material_print_temperature = =default_material_print_temperature - 7 material_print_temperature_layer_0 = =material_print_temperature material_standby_temperature = 100 prime_tower_enable = True -retraction_combing = off +retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Draft_Print.inst.cfg index 80c0585061..28409d4181 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 @@ -18,6 +18,7 @@ line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 15 material_standby_temperature = 100 prime_tower_enable = True +retraction_combing_max_distance = 50 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Superdraft_Print.inst.cfg index 5dcc454173..33c5d73a59 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 @@ -18,6 +18,7 @@ line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 20 material_standby_temperature = 100 prime_tower_enable = True +retraction_combing_max_distance = 50 speed_print = 45 speed_topbottom = =math.ceil(speed_print * 30 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Verydraft_Print.inst.cfg index 8423e109e8..8db23c11c2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 @@ -18,6 +18,7 @@ line_width = =machine_nozzle_size * 0.875 material_print_temperature = =default_material_print_temperature + 17 material_standby_temperature = 100 prime_tower_enable = True +retraction_combing_max_distance = 50 speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Fast_Print.inst.cfg index 747e2fe8a5..c0af70748a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Fast_Print.inst.cfg @@ -4,13 +4,14 @@ name = Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = 0 +weight = -2 material = generic_pc variant = AA 0.8 buildplate = Aluminum +is_experimental = True [values] brim_width = 10 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Superdraft_Print.inst.cfg index 689652dc06..bba2dfa92f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Superdraft_Print.inst.cfg @@ -4,10 +4,10 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft -weight = -2 +weight = -4 material = generic_pc variant = AA 0.8 buildplate = Aluminum diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Verydraft_Print.inst.cfg index 0480ee5620..3987c01ecc 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Verydraft_Print.inst.cfg @@ -4,10 +4,10 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft -weight = -1 +weight = -3 material = generic_pc variant = AA 0.8 buildplate = Aluminum diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Draft_Print.inst.cfg index b80af1b75f..5a2c3005c9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Superdraft_Print.inst.cfg index 970e0971a9..aaa8cbfcd3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Verydraft_Print.inst.cfg index e51ba3207b..782cadce6b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg index 73639be0b6..34b078278c 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg index 5da25be32d..5677c5931c 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg index 36634af2c8..b9e32cb7c5 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg index f76c4c944a..081ee2261e 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg index e4e3ab772a..0193081db6 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg index 5e78e51014..121b32f903 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg index 5af09aebcc..f0296c9279 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFCPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFCPE_Draft_Print.inst.cfg index 104c385aa3..35da5b113e 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFCPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFCPE_Draft_Print.inst.cfg @@ -4,12 +4,12 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = -3 +weight = -2 material = generic_cffcpe -variant = CC Red 0.6 +variant = CC 0.6 [values] adhesion_type = skirt diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFPA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFPA_Draft_Print.inst.cfg index 14cb93e53b..67400daf9f 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFPA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFPA_Draft_Print.inst.cfg @@ -4,12 +4,12 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = -3 +weight = -2 material = generic_cffpa -variant = CC Red 0.6 +variant = CC 0.6 [values] adhesion_type = skirt diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFCPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFCPE_Draft_Print.inst.cfg index 30c4ea8f51..0c4f55bddf 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFCPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFCPE_Draft_Print.inst.cfg @@ -4,12 +4,12 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = -3 +weight = -2 material = generic_gffcpe -variant = CC Red 0.6 +variant = CC 0.6 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFPA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFPA_Draft_Print.inst.cfg index 5a0640c858..8a6f9d2ac8 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFPA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFPA_Draft_Print.inst.cfg @@ -4,12 +4,12 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft -weight = -3 +weight = -2 material = generic_gffpa -variant = CC Red 0.6 +variant = CC 0.6 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg deleted file mode 100644 index 21e2dd0661..0000000000 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg +++ /dev/null @@ -1,42 +0,0 @@ -[general] -version = 4 -name = Fast -definition = ultimaker_s5 - -[metadata] -setting_version = 5 -type = quality -quality_type = draft -weight = -3 -material = generic_pla -variant = CC Red 0.6 - -[values] -cool_fan_full_at_height = =layer_height_0 + 2 * layer_height -cool_fan_speed_max = =100 -cool_min_speed = 2 -gradual_infill_step_height = =3 * layer_height -infill_line_width = =round(line_width * 0.65 / 0.75, 2) -infill_pattern = triangles -line_width = =machine_nozzle_size * 0.9375 -machine_nozzle_cool_down_speed = 0.75 -machine_nozzle_heat_up_speed = 1.6 -material_final_print_temperature = =max(-273.15, material_print_temperature - 15) -material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) -material_print_temperature = =default_material_print_temperature + 10 -material_standby_temperature = 100 -prime_tower_enable = True -retract_at_layer_change = False -speed_print = 45 -speed_topbottom = =math.ceil(speed_print * 35 / 45) -speed_wall = =math.ceil(speed_print * 40 / 45) -speed_wall_x = =speed_wall -speed_wall_0 = =math.ceil(speed_wall * 35 / 40) -support_angle = 70 -support_line_width = =line_width * 0.75 -support_pattern = triangles -support_xy_distance = =wall_line_width_0 * 1.5 -top_bottom_thickness = =layer_height * 4 -wall_line_width = =round(line_width * 0.75 / 0.75, 2) -wall_line_width_x = =round(wall_line_width * 0.625 / 0.75, 2) -wall_thickness = =wall_line_width_0 + wall_line_width_x diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg deleted file mode 100644 index 1c54089058..0000000000 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg +++ /dev/null @@ -1,42 +0,0 @@ -[general] -version = 4 -name = Normal -definition = ultimaker_s5 - -[metadata] -setting_version = 5 -type = quality -quality_type = fast -weight = -2 -material = generic_pla -variant = CC Red 0.6 - -[values] -cool_fan_full_at_height = =layer_height_0 + 2 * layer_height -cool_fan_speed_max = =100 -cool_min_speed = 2 -gradual_infill_step_height = =3 * layer_height -infill_line_width = =round(line_width * 0.65 / 0.75, 2) -infill_pattern = triangles -line_width = =machine_nozzle_size * 0.9375 -machine_nozzle_cool_down_speed = 0.75 -machine_nozzle_heat_up_speed = 1.6 -material_final_print_temperature = =max(-273.15, material_print_temperature - 15) -material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) -material_print_temperature = =default_material_print_temperature + 10 -material_standby_temperature = 100 -prime_tower_enable = True -retract_at_layer_change = False -speed_print = 45 -speed_topbottom = =math.ceil(speed_print * 35 / 45) -speed_wall = =math.ceil(speed_print * 40 / 45) -speed_wall_x = =speed_wall -speed_wall_0 = =math.ceil(speed_wall * 35 / 40) -support_angle = 70 -support_line_width = =line_width * 0.75 -support_pattern = triangles -support_xy_distance = =wall_line_width_0 * 1.5 -top_bottom_thickness = =layer_height * 4 -wall_line_width = =round(line_width * 0.75 / 0.75, 2) -wall_line_width_x = =round(wall_line_width * 0.625 / 0.75, 2) -wall_thickness = =wall_line_width_0 + wall_line_width_x diff --git a/resources/quality/ultimaker_s5/um_s5_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Draft_Quality.inst.cfg index ed5303637b..f0121fa4d7 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Fast_Quality.inst.cfg index ee9c6a8409..b9bb0beff6 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_global_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_High_Quality.inst.cfg index cd1c269b1d..aa2420e465 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_High_Quality.inst.cfg @@ -4,10 +4,10 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high -weight = 0 +weight = 1 global_quality = True [values] diff --git a/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg index 099ba7c584..8bb8f7f282 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_global_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Superdraft_Quality.inst.cfg index 4c0bd40bd1..ec46668b61 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Superdraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_global_Verydraft_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Verydraft_Quality.inst.cfg index ec4ec910ff..dd6c7bb4b8 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Verydraft_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg index 70aac3f666..370cc149a2 100644 --- a/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg index 564b330132..6c96b47169 100644 --- a/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg index e2f740a60a..19150baab9 100644 --- a/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/vertex_delta_k8800/k8800_Global_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_Global_Extreme_Quality.inst.cfg index 48e80b5512..00d626d72c 100644 --- a/resources/quality/vertex_delta_k8800/k8800_Global_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_Global_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_Global_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_Global_High_Quality.inst.cfg index 496144772c..0bd519affe 100644 --- a/resources/quality/vertex_delta_k8800/k8800_Global_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_Global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_Global_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_Global_Normal_Quality.inst.cfg index 75ae5f15e6..2b18891998 100644 --- a/resources/quality/vertex_delta_k8800/k8800_Global_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_Global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg index 8309106d9f..8715e573ab 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg index 6efaa3299f..0c94cc5ca4 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg index bd3b0c35fb..40698f134d 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg index d10b4c3f8d..f81c82fa9b 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg index ede77b0dfe..e4b4771b0e 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg index a75cff6968..41950da7a1 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg index bee6b3bf11..32077f6cc1 100644 --- a/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg index 8b0f87cc77..a7ef7d8cc8 100644 --- a/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg index bd4e04744f..17a09f366f 100644 --- a/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/zyyx/zyyx_agile_global_fast.inst.cfg b/resources/quality/zyyx/zyyx_agile_global_fast.inst.cfg index 67e350b39e..19cda650d3 100644 --- a/resources/quality/zyyx/zyyx_agile_global_fast.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_global_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = zyyx_agile [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = 1 diff --git a/resources/quality/zyyx/zyyx_agile_global_fine.inst.cfg b/resources/quality/zyyx/zyyx_agile_global_fine.inst.cfg index 58e13b22c5..f2f127f483 100644 --- a/resources/quality/zyyx/zyyx_agile_global_fine.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_global_fine.inst.cfg @@ -4,10 +4,10 @@ name = Fine definition = zyyx_agile [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fine -weight = 3 +weight = 1 global_quality = True [values] diff --git a/resources/quality/zyyx/zyyx_agile_global_normal.inst.cfg b/resources/quality/zyyx/zyyx_agile_global_normal.inst.cfg index cb4e042e7b..d9cbdc691e 100644 --- a/resources/quality/zyyx/zyyx_agile_global_normal.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_global_normal.inst.cfg @@ -4,10 +4,10 @@ name = Normal definition = zyyx_agile [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 +weight = 0 global_quality = True [values] diff --git a/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg index c7d7faf575..d6f715c09f 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg @@ -4,11 +4,11 @@ name = Fast definition = zyyx_agile [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = 1 -material = zyyx_pro_flex +material = generic_tpu [values] layer_height = 0.3 diff --git a/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg index 1e0cc16df0..a0aa1996ac 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg @@ -4,11 +4,11 @@ name = Fine definition = zyyx_agile [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fine -weight = 3 -material = zyyx_pro_flex +weight = 1 +material = generic_tpu [values] layer_height = 0.12 diff --git a/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg index 8f7be7b481..a70b1dd19a 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg @@ -4,11 +4,11 @@ name = Normal definition = zyyx_agile [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 -material = zyyx_pro_flex +weight = 0 +material = generic_tpu [values] layer_height = 0.2 diff --git a/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg index 7ac7dc89b5..5b32c3f07b 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg @@ -4,11 +4,11 @@ name = Fast definition = zyyx_agile [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fast weight = 1 -material = zyyx_pro_pla +material = generic_pla [values] layer_height = 0.3 diff --git a/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg index 98033908f6..a3849bf5e2 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg @@ -4,11 +4,11 @@ name = Fine definition = zyyx_agile [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = fine -weight = 3 -material = zyyx_pro_pla +weight = 1 +material = generic_pla [values] layer_height = 0.1 diff --git a/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg index b694bd9172..d126308660 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg @@ -4,11 +4,11 @@ name = Normal definition = zyyx_agile [metadata] -setting_version = 5 +setting_version = 6 type = quality quality_type = normal -weight = 2 -material = zyyx_pro_pla +weight = 0 +material = generic_pla [values] layer_height = 0.2 diff --git a/resources/themes/cura-dark/icons/tab_status_unknown.svg b/resources/themes/cura-dark/icons/tab_status_unknown.svg deleted file mode 100644 index d20218bc00..0000000000 --- a/resources/themes/cura-dark/icons/tab_status_unknown.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Unknown - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/resources/themes/cura-dark/images/logo.svg b/resources/themes/cura-dark/images/logo.svg deleted file mode 100644 index 92ffe4ca0c..0000000000 --- a/resources/themes/cura-dark/images/logo.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index 39546b6370..6b29073475 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -5,7 +5,9 @@ }, "colors": { - "sidebar": [39, 44, 48, 255], + "main_background": [39, 44, 48, 255], + "wide_lining": [31, 36, 39, 255], + "thick_lining": [255, 255, 255, 30], "lining": [64, 69, 72, 255], "viewport_overlay": [0, 6, 9, 222], @@ -13,14 +15,20 @@ "primary_hover": [48, 182, 231, 255], "primary_text": [255, 255, 255, 204], "border": [127, 127, 127, 255], - "secondary": [241, 242, 242, 255], + "secondary": [95, 95, 95, 255], - "topbar_background_color": [0, 0, 0, 0], - "topbar_background_color_monitoring": [31, 36, 39, 255], + "icon": [204, 204, 204, 255], + "toolbar_background": [39, 44, 48, 255], + "toolbar_button_active": [95, 95, 95, 255], + "toolbar_button_hover": [95, 95, 95, 255], + "toolbar_button_active_hover": [95, 95, 95, 255], - "topbar_button_text_active": [255, 255, 255, 255], - "topbar_button_text_inactive": [128, 128, 128, 255], - "topbar_button_text_hovered": [255, 255, 255, 255], + "main_window_header_button_text_inactive": [128, 128, 128, 255], + "main_window_header_button_text_hovered": [255, 255, 255, 255], + + "machine_selector_bar": [39, 44, 48, 255], + "machine_selector_active": [39, 44, 48, 255], + "machine_selector_printer_icon": [204, 204, 204, 255], "text": [255, 255, 255, 204], "text_detail": [255, 255, 255, 172], @@ -33,17 +41,10 @@ "text_scene": [255, 255, 255, 162], "text_scene_hover": [255, 255, 255, 204], + "printer_type_label_background": [95, 95, 95, 255], + "error": [212, 31, 53, 255], - "sidebar_header_bar": [39, 44, 48, 255], - "sidebar_header_active": [39, 44, 48, 255], - "sidebar_header_hover": [68, 72, 75, 255], - "sidebar_header_highlight": [68, 192, 255, 255], - "sidebar_header_highlight_hover": [68, 192, 255, 255], - "sidebar_header_text_active": [255, 255, 255, 255], - "sidebar_header_text_hover": [255, 255, 255, 255], - "sidebar_header_text_inactive": [255, 255, 255, 127], - "sidebar_lining": [31, 36, 39, 255], - "sidebar_lining_thin": [255, 255, 255, 30], + "disabled": [32, 32, 32, 255], "button": [39, 44, 48, 255], "button_hover": [39, 44, 48, 255], @@ -101,11 +102,11 @@ "scrollbar_handle_hover": [255, 255, 255, 255], "scrollbar_handle_down": [255, 255, 255, 255], - "setting_category": [39, 44, 48, 255], - "setting_category_disabled": [39, 44, 48, 255], - "setting_category_hover": [39, 44, 48, 255], - "setting_category_active": [39, 44, 48, 255], - "setting_category_active_hover": [39, 44, 48, 255], + "setting_category": [75, 80, 83, 255], + "setting_category_disabled": [75, 80, 83, 255], + "setting_category_hover": [75, 80, 83, 255], + "setting_category_active": [75, 80, 83, 255], + "setting_category_active_hover": [75, 80, 83, 255], "setting_category_text": [255, 255, 255, 152], "setting_category_disabled_text": [255, 255, 255, 101], "setting_category_hover_text": [255, 255, 255, 204], @@ -142,9 +143,7 @@ "slider_groove_border": [127, 127, 127, 255], "slider_groove_fill": [245, 245, 245, 255], "slider_handle": [255, 255, 255, 255], - "slider_handle_hover": [77, 182, 226, 255], "slider_handle_active": [68, 192, 255, 255], - "slider_handle_border": [39, 44, 48, 255], "slider_text_background": [255, 255, 255, 255], "checkbox": [43, 48, 52, 255], @@ -207,21 +206,14 @@ "layerview_support_interface": [64, 192, 255, 255], "layerview_nozzle": [181, 166, 66, 120], - "configuration_item": [0, 0, 0, 0], - "configuration_item_active": [12, 169, 227, 179], - "configuration_item_text": [255, 255, 255, 255], - "configuration_item_text_active": [255, 255, 255, 255], - "configuration_item_border": [255, 255, 255, 255], - "configuration_item_border_active": [12, 169, 227, 179], - "configuration_item_border_hover": [12, 169, 227, 179], - "material_compatibility_warning": [255, 255, 255, 255], "quality_slider_unavailable": [179, 179, 179, 255], "quality_slider_available": [255, 255, 255, 255], - "quality_slider_handle": [255, 255, 255, 255], - "quality_slider_handle_hover": [127, 127, 127, 255], - "quality_slider_text": [255, 255, 255, 255], + + "toolbox_header_button_text_active": [255, 255, 255, 255], + "toolbox_header_button_text_inactive": [128, 128, 128, 255], + "toolbox_header_button_text_hovered": [255, 255, 255, 255], "monitor_card_background_inactive": [43, 48, 52, 255], "monitor_card_background": [43, 48, 52, 255], diff --git a/resources/themes/cura-light/icons/buildplate.svg b/resources/themes/cura-light/icons/buildplate.svg index 9e61296958..7505c8204e 100644 --- a/resources/themes/cura-light/icons/buildplate.svg +++ b/resources/themes/cura-light/icons/buildplate.svg @@ -1,17 +1,9 @@ - - - icn_buildplate - Created with Sketch. - - - - - - - - - - + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/circle_outline.svg b/resources/themes/cura-light/icons/circle_outline.svg new file mode 100644 index 0000000000..3a8fb197f3 --- /dev/null +++ b/resources/themes/cura-light/icons/circle_outline.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/clock.svg b/resources/themes/cura-light/icons/clock.svg new file mode 100644 index 0000000000..0b6cb78881 --- /dev/null +++ b/resources/themes/cura-light/icons/clock.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/themes/cura-light/icons/connected.svg b/resources/themes/cura-light/icons/connected.svg deleted file mode 100644 index 18423bb6c4..0000000000 --- a/resources/themes/cura-light/icons/connected.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/resources/themes/cura-light/icons/disconnected.svg b/resources/themes/cura-light/icons/disconnected.svg deleted file mode 100644 index 019dff117e..0000000000 --- a/resources/themes/cura-light/icons/disconnected.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/resources/themes/cura-light/icons/extruder_button.svg b/resources/themes/cura-light/icons/extruder_button.svg index e3c01b6a0a..c79ba5c5df 100644 --- a/resources/themes/cura-light/icons/extruder_button.svg +++ b/resources/themes/cura-light/icons/extruder_button.svg @@ -1,64 +1,9 @@ - - - - - - image/svg+xml - - Artboard 3 Copy - - - - - - Artboard 3 Copy - Created with Sketch. - - - + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/info.svg b/resources/themes/cura-light/icons/info.svg new file mode 100644 index 0000000000..9896b3dac8 --- /dev/null +++ b/resources/themes/cura-light/icons/info.svg @@ -0,0 +1,13 @@ + + + + Icon/ info + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_connected.svg b/resources/themes/cura-light/icons/printer_connected.svg similarity index 100% rename from resources/themes/cura-light/icons/tab_status_connected.svg rename to resources/themes/cura-light/icons/printer_connected.svg diff --git a/resources/themes/cura-light/icons/printer_group.svg b/resources/themes/cura-light/icons/printer_group.svg index 614bea90b8..5e439faca4 100644 --- a/resources/themes/cura-light/icons/printer_group.svg +++ b/resources/themes/cura-light/icons/printer_group.svg @@ -1,12 +1,20 @@ - - - icn_groupPrinters + + + Icon/ group printer/ disconnected Created with Sketch. - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/printer_single.svg b/resources/themes/cura-light/icons/printer_single.svg index f7dc83987d..69c4e212bc 100644 --- a/resources/themes/cura-light/icons/printer_single.svg +++ b/resources/themes/cura-light/icons/printer_single.svg @@ -1,13 +1,12 @@ - - - icn_singlePrinter + + + Icon/ single printer/ disconnected Created with Sketch. - - - - - + + + + diff --git a/resources/themes/cura-light/icons/search.svg b/resources/themes/cura-light/icons/search.svg index 8272991300..a9ccb612fd 100644 --- a/resources/themes/cura-light/icons/search.svg +++ b/resources/themes/cura-light/icons/search.svg @@ -1,4 +1,21 @@ - - - + + + + Shape + Created with Sketch. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/spool.svg b/resources/themes/cura-light/icons/spool.svg new file mode 100644 index 0000000000..0d8ae42d9d --- /dev/null +++ b/resources/themes/cura-light/icons/spool.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/resources/themes/cura-light/icons/star_empty.svg b/resources/themes/cura-light/icons/star_empty.svg new file mode 100644 index 0000000000..39b5791e91 --- /dev/null +++ b/resources/themes/cura-light/icons/star_empty.svg @@ -0,0 +1,11 @@ + + + + Star Copy 8 + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/star_filled.svg b/resources/themes/cura-light/icons/star_filled.svg new file mode 100644 index 0000000000..d4e161f6c6 --- /dev/null +++ b/resources/themes/cura-light/icons/star_filled.svg @@ -0,0 +1,11 @@ + + + + Star Copy 7 + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_busy.svg b/resources/themes/cura-light/icons/tab_status_busy.svg deleted file mode 100644 index debe4f6360..0000000000 --- a/resources/themes/cura-light/icons/tab_status_busy.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Busy - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_finished.svg b/resources/themes/cura-light/icons/tab_status_finished.svg deleted file mode 100644 index 2519f2f862..0000000000 --- a/resources/themes/cura-light/icons/tab_status_finished.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Wait cleanup - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_paused.svg b/resources/themes/cura-light/icons/tab_status_paused.svg deleted file mode 100644 index bab6c9ca6b..0000000000 --- a/resources/themes/cura-light/icons/tab_status_paused.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - paused - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_stopped.svg b/resources/themes/cura-light/icons/tab_status_stopped.svg deleted file mode 100644 index c9b150db3a..0000000000 --- a/resources/themes/cura-light/icons/tab_status_stopped.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Aborted - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_unknown.svg b/resources/themes/cura-light/icons/tab_status_unknown.svg deleted file mode 100644 index 9f413baffc..0000000000 --- a/resources/themes/cura-light/icons/tab_status_unknown.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - Unknown - Created with Sketch. - - - - - - - - \ No newline at end of file diff --git a/resources/themes/cura-light/icons/warning.svg b/resources/themes/cura-light/icons/warning.svg index ae8a7a6430..14b7d797d0 100644 --- a/resources/themes/cura-light/icons/warning.svg +++ b/resources/themes/cura-light/icons/warning.svg @@ -1,4 +1,11 @@ - - - + + + + Icon/warning-s + Created with Sketch. + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/images/avatar_default.svg b/resources/themes/cura-light/images/avatar_default.svg new file mode 100644 index 0000000000..7ec704bc8c --- /dev/null +++ b/resources/themes/cura-light/images/avatar_default.svg @@ -0,0 +1,76 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/resources/themes/cura-light/images/avatar_no_user.svg b/resources/themes/cura-light/images/avatar_no_user.svg new file mode 100644 index 0000000000..bef9cb52db --- /dev/null +++ b/resources/themes/cura-light/images/avatar_no_user.svg @@ -0,0 +1,76 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/resources/themes/cura-light/images/logo.svg b/resources/themes/cura-light/images/logo.svg index 5fa5895443..55842ef530 100644 --- a/resources/themes/cura-light/images/logo.svg +++ b/resources/themes/cura-light/images/logo.svg @@ -1,4 +1,6 @@ + + + id="svg8" + inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" + sodipodi:docname="logo.svg"> + + + id="metadata5"> image/svg+xml - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/themes/cura-light/images/logo_about.svg b/resources/themes/cura-light/images/logo_about.svg new file mode 100644 index 0000000000..34301fd6c9 --- /dev/null +++ b/resources/themes/cura-light/images/logo_about.svg @@ -0,0 +1,172 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index b71ddd2d86..4361c3ae2b 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -1,16 +1,20 @@ -// Copyright (c) 2017 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.1 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 +import QtQuick 2.10 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM -QtObject { - property Component sidebar_header_button: Component { - ButtonStyle { - background: Rectangle { +QtObject +{ + property Component print_setup_header_button: Component + { + ButtonStyle + { + background: Rectangle + { color: { if(control.enabled) @@ -34,6 +38,7 @@ QtObject { } } + radius: UM.Theme.getSize("setting_control_radius").width border.width: Theme.getSize("default_lining").width border.color: { @@ -61,20 +66,21 @@ QtObject { return Theme.getColor("setting_control_disabled_border"); } } - UM.RecolorImage { + UM.RecolorImage + { id: downArrow anchors.verticalCenter: parent.verticalCenter anchors.right: parent.right anchors.rightMargin: Theme.getSize("default_margin").width width: Theme.getSize("standard_arrow").width height: Theme.getSize("standard_arrow").height - sourceSize.width: width sourceSize.height: width - color: control.enabled ? Theme.getColor("setting_category_text") : Theme.getColor("setting_category_disabled_text") + color: control.enabled ? Theme.getColor("setting_control_button") : Theme.getColor("setting_category_disabled_text") source: Theme.getIcon("arrow_bottom") } - Label { - id: sidebarComboBoxLabel + Label + { + id: printSetupComboBoxLabel color: control.enabled ? Theme.getColor("setting_control_text") : Theme.getColor("setting_control_disabled_text") text: control.text; elide: Text.ElideRight; @@ -90,178 +96,92 @@ QtObject { } } - property Component topbar_header_tab_no_overlay: Component { - ButtonStyle { - background: Rectangle { - implicitHeight: Theme.getSize("topbar_button").height - implicitWidth: Theme.getSize("topbar_button").width - color: "transparent" - anchors.fill: parent + property Component main_window_header_tab: Component + { + ButtonStyle + { + // This property will be back-propagated when the width of the label is calculated + property var buttonWidth: 0 + background: Item + { + implicitHeight: control.height + implicitWidth: buttonWidth Rectangle { - id: underline + id: buttonFace + implicitHeight: parent.height + implicitWidth: parent.width + radius: UM.Theme.getSize("action_button_radius").width - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - width: parent.width - height: Theme.getSize("sidebar_header_highlight").height - color: control.checked ? UM.Theme.getColor("sidebar_header_highlight") : UM.Theme.getColor("sidebar_header_highlight_hover") - visible: control.hovered || control.checked - } - } - - label: Rectangle { - implicitHeight: Theme.getSize("topbar_button_icon").height - implicitWidth: Theme.getSize("topbar_button").width - color: "transparent" - anchors.fill: parent - - Item - { - anchors.centerIn: parent - width: Math.round(textLabel.width + icon.width + Theme.getSize("default_margin").width / 2) - Label + color: { - id: textLabel - text: control.text - anchors.right: icon.visible ? icon.left : parent.right - anchors.rightMargin: icon.visible ? Math.round(Theme.getSize("default_margin").width / 2) : 0 - anchors.verticalCenter: parent.verticalCenter; - font: control.checked ? UM.Theme.getFont("large") : UM.Theme.getFont("large_nonbold") - color: + if (control.checked) { - if(control.hovered) - { - return UM.Theme.getColor("topbar_button_text_hovered"); - } - if(control.checked) - { - return UM.Theme.getColor("topbar_button_text_active"); - } - else - { - return UM.Theme.getColor("topbar_button_text_inactive"); - } + return UM.Theme.getColor("main_window_header_button_background_active") + } + else + { + if (control.hovered) + { + return UM.Theme.getColor("main_window_header_button_background_hovered") + } + return UM.Theme.getColor("main_window_header_button_background_inactive") } - } - Image - { - id: icon - visible: control.iconSource != "" - anchors.right: parent.right - anchors.verticalCenter: parent.verticalCenter - opacity: !control.enabled ? 0.2 : 1.0 - source: control.iconSource - width: visible ? Theme.getSize("topbar_button_icon").width : 0 - height: Theme.getSize("topbar_button_icon").height - - sourceSize: Theme.getSize("topbar_button_icon") - } - } - } - } - } - - property Component topbar_header_tab: Component { - ButtonStyle { - background: Item { - implicitHeight: Theme.getSize("topbar_button").height - implicitWidth: Theme.getSize("topbar_button").width + Theme.getSize("topbar_button_icon").width - - Rectangle { - id: buttonFace; - anchors.fill: parent; - - color: "transparent" - Behavior on color { ColorAnimation { duration: 50; } } - - Rectangle { - id: underline; - - anchors.horizontalCenter: parent.horizontalCenter - anchors.bottom: parent.bottom - width: Theme.getSize("topbar_button").width + Theme.getSize("topbar_button_icon").width - height: Theme.getSize("sidebar_header_highlight").height - color: control.checked ? UM.Theme.getColor("sidebar_header_highlight") : UM.Theme.getColor("sidebar_header_highlight_hover") - visible: control.hovered || control.checked } } } label: Item { - implicitHeight: Theme.getSize("topbar_button_icon").height - implicitWidth: Theme.getSize("topbar_button").width + Theme.getSize("topbar_button_icon").width - Item + id: contents + anchors.horizontalCenter: parent.horizontalCenter + anchors.verticalCenter: parent.verticalCenter + height: control.height + width: buttonLabel.width + 4 * UM.Theme.getSize("default_margin").width + + Label { + id: buttonLabel + text: control.text + anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter; - width: childrenRect.width - height: Theme.getSize("topbar_button_icon").height - Label + font: UM.Theme.getFont("medium") + color: { - id: button_label - text: control.text; - anchors.verticalCenter: parent.verticalCenter; - font: control.checked ? UM.Theme.getFont("large") : UM.Theme.getFont("large_nonbold") - color: + if (control.checked) { - if(control.hovered) + return UM.Theme.getColor("main_window_header_button_text_active") + } + else + { + if (control.hovered) { - return UM.Theme.getColor("topbar_button_text_hovered"); - } - if(control.checked) - { - return UM.Theme.getColor("topbar_button_text_active"); - } - else - { - return UM.Theme.getColor("topbar_button_text_inactive"); + return UM.Theme.getColor("main_window_header_button_text_hovered") } + return UM.Theme.getColor("main_window_header_button_text_inactive") } } - UM.RecolorImage - { - visible: control.iconSource != "" - id: icon - anchors.left: button_label.right - anchors.leftMargin: (icon.visible || overlayIcon.visible) ? Theme.getSize("default_margin").width : 0 - color: UM.Theme.getColor("text_emphasis") - opacity: !control.enabled ? 0.2 : 1.0 - source: control.iconSource - width: visible ? Theme.getSize("topbar_button_icon").width : 0 - height: Theme.getSize("topbar_button_icon").height - - sourceSize: Theme.getSize("topbar_button_icon") - } - UM.RecolorImage - { - id: overlayIcon - anchors.left: button_label.right - anchors.leftMargin: (icon.visible || overlayIcon.visible) ? Theme.getSize("default_margin").width : 0 - visible: control.overlayIconSource != "" && control.iconSource != "" - color: control.overlayColor - opacity: !control.enabled ? 0.2 : 1.0 - source: control.overlayIconSource - width: visible ? Theme.getSize("topbar_button_icon").width : 0 - height: Theme.getSize("topbar_button_icon").height - - sourceSize: Theme.getSize("topbar_button_icon") - } + } + Component.onCompleted: + { + buttonWidth = width } } } } - property Component tool_button: Component { - ButtonStyle { - background: Item { - implicitWidth: Theme.getSize("button").width; - implicitHeight: Theme.getSize("button").height; + property Component tool_button: Component + { + ButtonStyle + { + background: Item + { + implicitWidth: Theme.getSize("button").width + implicitHeight: Theme.getSize("button").height - UM.PointingRectangle { + UM.PointingRectangle + { id: button_tooltip anchors.left: parent.right @@ -280,23 +200,25 @@ QtObject { Behavior on width { NumberAnimation { duration: 100; } } Behavior on opacity { NumberAnimation { duration: 100; } } - Label { + Label + { id: button_tip anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter; + anchors.verticalCenter: parent.verticalCenter - text: control.text; - font: Theme.getFont("button_tooltip"); - color: Theme.getColor("tooltip_text"); + text: control.text + font: Theme.getFont("default") + color: Theme.getColor("tooltip_text") } } - Rectangle { - id: buttonFace; + Rectangle + { + id: buttonFace - anchors.fill: parent; - property bool down: control.pressed || (control.checkable && control.checked); + anchors.fill: parent + property bool down: control.pressed || (control.checkable && control.checked) color: { @@ -306,87 +228,35 @@ QtObject { } else if(control.checkable && control.checked && control.hovered) { - return Theme.getColor("button_active_hover"); + return Theme.getColor("toolbar_button_active_hover") } else if(control.pressed || (control.checkable && control.checked)) { - return Theme.getColor("button_active"); + return Theme.getColor("toolbar_button_active") } else if(control.hovered) { - return Theme.getColor("button_hover"); - } - else - { - return Theme.getColor("button"); + return Theme.getColor("toolbar_button_hover") } + return Theme.getColor("toolbar_background") } Behavior on color { ColorAnimation { duration: 50; } } - border.width: (control.hasOwnProperty("needBorder") && control.needBorder) ? 2 * screenScaleFactor : 0 - border.color: Theme.getColor("tool_button_border") - - UM.RecolorImage { - id: tool_button_arrow - anchors.right: parent.right; - anchors.rightMargin: Theme.getSize("button").width - Math.round(Theme.getSize("button_icon").width / 4) - anchors.bottom: parent.bottom; - anchors.bottomMargin: Theme.getSize("button").height - Math.round(Theme.getSize("button_icon").height / 4) - width: Theme.getSize("standard_arrow").width - height: Theme.getSize("standard_arrow").height - sourceSize.width: width - sourceSize.height: width - visible: control.menu != null; - color: - { - if(control.checkable && control.checked && control.hovered) - { - return Theme.getColor("button_text_active_hover"); - } - else if(control.pressed || (control.checkable && control.checked)) - { - return Theme.getColor("button_text_active"); - } - else if(control.hovered) - { - return Theme.getColor("button_text_hover"); - } - else - { - return Theme.getColor("button_text"); - } - } - source: Theme.getIcon("arrow_bottom") - } + border.width: (control.hasOwnProperty("needBorder") && control.needBorder) ? Theme.getSize("default_lining").width : 0 + border.color: Theme.getColor("lining") } } - label: Item { - UM.RecolorImage { - anchors.centerIn: parent; - opacity: !control.enabled ? 0.2 : 1.0 - source: control.iconSource; - width: Theme.getSize("button_icon").width; - height: Theme.getSize("button_icon").height; - color: - { - if(control.checkable && control.checked && control.hovered) - { - return Theme.getColor("button_text_active_hover"); - } - else if(control.pressed || (control.checkable && control.checked)) - { - return Theme.getColor("button_text_active"); - } - else if(control.hovered) - { - return Theme.getColor("button_text_hover"); - } - else - { - return Theme.getColor("button_text"); - } - } + label: Item + { + UM.RecolorImage + { + anchors.centerIn: parent + opacity: control.enabled ? 1.0 : 0.2 + source: control.iconSource + width: Theme.getSize("button_icon").width + height: Theme.getSize("button_icon").height + color: Theme.getColor("icon") sourceSize: Theme.getSize("button_icon") } @@ -394,119 +264,19 @@ QtObject { } } - property Component small_tool_button: Component { - ButtonStyle { - background: Item { - implicitWidth: Theme.getSize("small_button").width; - implicitHeight: Theme.getSize("small_button").height; - - Rectangle { - id: smallButtonFace; - - anchors.fill: parent; - property bool down: control.pressed || (control.checkable && control.checked); - - color: - { - if(control.customColor !== undefined && control.customColor !== null) - { - return control.customColor - } - else if(control.checkable && control.checked && control.hovered) - { - return Theme.getColor("small_button_active_hover"); - } - else if(control.pressed || (control.checkable && control.checked)) - { - return Theme.getColor("small_button_active"); - } - else if(control.hovered) - { - return Theme.getColor("small_button_hover"); - } - else - { - return Theme.getColor("small_button"); - } - } - Behavior on color { ColorAnimation { duration: 50; } } - - border.width: (control.hasOwnProperty("needBorder") && control.needBorder) ? 2 * screenScaleFactor : 0 - border.color: Theme.getColor("tool_button_border") - - UM.RecolorImage { - id: smallToolButtonArrow - - width: 5 - height: 5 - sourceSize.width: 5 - sourceSize.height: 5 - visible: control.menu != null; - color: - { - if(control.checkable && control.checked && control.hovered) - { - return Theme.getColor("small_button_text_active_hover"); - } - else if(control.pressed || (control.checkable && control.checked)) - { - return Theme.getColor("small_button_text_active"); - } - else if(control.hovered) - { - return Theme.getColor("small_button_text_hover"); - } - else - { - return Theme.getColor("small_button_text"); - } - } - source: Theme.getIcon("arrow_bottom") - } - } - } - - label: Item { - UM.RecolorImage { - anchors.centerIn: parent; - opacity: !control.enabled ? 0.2 : 1.0 - source: control.iconSource; - width: Theme.getSize("small_button_icon").width; - height: Theme.getSize("small_button_icon").height; - color: - { - if(control.checkable && control.checked && control.hovered) - { - return Theme.getColor("small_button_text_active_hover"); - } - else if(control.pressed || (control.checkable && control.checked)) - { - return Theme.getColor("small_button_text_active"); - } - else if(control.hovered) - { - return Theme.getColor("small_button_text_hover"); - } - else - { - return Theme.getColor("small_button_text"); - } - } - - sourceSize: Theme.getSize("small_button_icon") - } - } - } - } - - property Component progressbar: Component{ - ProgressBarStyle { - background: Rectangle { + property Component progressbar: Component + { + ProgressBarStyle + { + background: Rectangle + { implicitWidth: Theme.getSize("message").width - (Theme.getSize("default_margin").width * 2) implicitHeight: Theme.getSize("progressbar").height color: control.hasOwnProperty("backgroundColor") ? control.backgroundColor : Theme.getColor("progressbar_background") + radius: Theme.getSize("progressbar_radius").width } - progress: Rectangle { + progress: Rectangle + { color: { if(control.indeterminate) @@ -523,14 +293,16 @@ QtObject { } } radius: Theme.getSize("progressbar_radius").width - Rectangle{ + Rectangle + { radius: Theme.getSize("progressbar_radius").width color: control.hasOwnProperty("controlColor") ? control.controlColor : Theme.getColor("progressbar_control") width: Theme.getSize("progressbar_control").width height: Theme.getSize("progressbar_control").height visible: control.indeterminate - SequentialAnimation on x { + SequentialAnimation on x + { id: xAnim property int animEndPoint: Theme.getSize("message").width - Math.round((Theme.getSize("default_margin").width * 2.5)) - Theme.getSize("progressbar_control").width running: control.indeterminate && control.visible @@ -543,194 +315,41 @@ QtObject { } } - property Component sidebar_category: Component { - ButtonStyle { - background: Rectangle { - anchors.fill: parent; - anchors.left: parent.left - anchors.leftMargin: Theme.getSize("sidebar_margin").width - anchors.right: parent.right - anchors.rightMargin: Theme.getSize("sidebar_margin").width - implicitHeight: Theme.getSize("section").height; - color: { - if(control.color) { - return control.color; - } else if(!control.enabled) { - return Theme.getColor("setting_category_disabled"); - } else if(control.hovered && control.checkable && control.checked) { - return Theme.getColor("setting_category_active_hover"); - } else if(control.pressed || (control.checkable && control.checked)) { - return Theme.getColor("setting_category_active"); - } else if(control.hovered) { - return Theme.getColor("setting_category_hover"); - } else { - return Theme.getColor("setting_category"); - } - } - Behavior on color { ColorAnimation { duration: 50; } } - Rectangle { - height: Theme.getSize("default_lining").height - width: parent.width - anchors.bottom: parent.bottom - color: { - if(!control.enabled) { - return Theme.getColor("setting_category_disabled_border"); - } else if((control.hovered || control.activeFocus) && control.checkable && control.checked) { - return Theme.getColor("setting_category_active_hover_border"); - } else if(control.pressed || (control.checkable && control.checked)) { - return Theme.getColor("setting_category_active_border"); - } else if(control.hovered || control.activeFocus) { - return Theme.getColor("setting_category_hover_border"); - } else { - return Theme.getColor("setting_category_border"); - } - } - } - } - label: Item { - anchors.fill: parent; - anchors.left: parent.left - Item{ - id: icon; - anchors.left: parent.left - height: parent.height - width: Theme.getSize("section_icon_column").width - UM.RecolorImage { - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - anchors.leftMargin: Theme.getSize("sidebar_margin").width - color: - { - if(!control.enabled) - { - return Theme.getColor("setting_category_disabled_text"); - } - else if((control.hovered || control.activeFocus) && control.checkable && control.checked) - { - return Theme.getColor("setting_category_active_hover_text"); - } - else if(control.pressed || (control.checkable && control.checked)) - { - return Theme.getColor("setting_category_active_text"); - } - else if(control.hovered || control.activeFocus) - { - return Theme.getColor("setting_category_hover_text"); - } - else - { - return Theme.getColor("setting_category_text"); - } - } - source: control.iconSource; - width: Theme.getSize("section_icon").width; - height: Theme.getSize("section_icon").height; - sourceSize.width: width + 15 * screenScaleFactor - sourceSize.height: width + 15 * screenScaleFactor - } - } - - Label { - anchors { - left: icon.right; - leftMargin: Theme.getSize("default_margin").width; - right: parent.right; - verticalCenter: parent.verticalCenter; - } - text: control.text; - font: Theme.getFont("setting_category"); - color: - { - if(!control.enabled) - { - return Theme.getColor("setting_category_disabled_text"); - } - else if((control.hovered || control.activeFocus) && control.checkable && control.checked) - { - return Theme.getColor("setting_category_active_hover_text"); - } - else if(control.pressed || (control.checkable && control.checked)) - { - return Theme.getColor("setting_category_active_text"); - } - else if(control.hovered || control.activeFocus) - { - return Theme.getColor("setting_category_hover_text"); - } - else - { - return Theme.getColor("setting_category_text"); - } - } - fontSizeMode: Text.HorizontalFit; - minimumPointSize: 8 - } - UM.RecolorImage { - id: category_arrow - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: Theme.getSize("default_margin").width * 3 - Math.round(width / 2) - width: Theme.getSize("standard_arrow").width - height: Theme.getSize("standard_arrow").height - sourceSize.width: width - sourceSize.height: width - color: - { - if(!control.enabled) - { - return Theme.getColor("setting_category_disabled_text"); - } - else if((control.hovered || control.activeFocus) && control.checkable && control.checked) - { - return Theme.getColor("setting_category_active_hover_text"); - } - else if(control.pressed || (control.checkable && control.checked)) - { - return Theme.getColor("setting_category_active_text"); - } - else if(control.hovered || control.activeFocus) - { - return Theme.getColor("setting_category_hover_text"); - } - else - { - return Theme.getColor("setting_category_text"); - } - } - source: control.checked ? Theme.getIcon("arrow_bottom") : Theme.getIcon("arrow_left") - } - } - } - } - - property Component scrollview: Component { - ScrollViewStyle { + property Component scrollview: Component + { + ScrollViewStyle + { decrementControl: Item { } incrementControl: Item { } transientScrollBars: false - scrollBarBackground: Rectangle { + scrollBarBackground: Rectangle + { implicitWidth: Theme.getSize("scrollbar").width radius: Math.round(implicitWidth / 2) - color: Theme.getColor("scrollbar_background"); + color: Theme.getColor("scrollbar_background") } - handle: Rectangle { + handle: Rectangle + { id: scrollViewHandle - implicitWidth: Theme.getSize("scrollbar").width; + implicitWidth: Theme.getSize("scrollbar").width radius: Math.round(implicitWidth / 2) - color: styleData.pressed ? Theme.getColor("scrollbar_handle_down") : styleData.hovered ? Theme.getColor("scrollbar_handle_hover") : Theme.getColor("scrollbar_handle"); + color: styleData.pressed ? Theme.getColor("scrollbar_handle_down") : styleData.hovered ? Theme.getColor("scrollbar_handle_hover") : Theme.getColor("scrollbar_handle") Behavior on color { ColorAnimation { duration: 50; } } } } } - property Component combobox: Component { - ComboBoxStyle { + property Component combobox: Component + { + ComboBoxStyle + { - background: Rectangle { + background: Rectangle + { implicitHeight: Theme.getSize("setting_control").height; implicitWidth: Theme.getSize("setting_control").width; @@ -739,30 +358,33 @@ QtObject { border.width: Theme.getSize("default_lining").width; border.color: control.hovered ? Theme.getColor("setting_control_border_highlight") : Theme.getColor("setting_control_border"); + radius: UM.Theme.getSize("setting_control_radius").width } - label: Item { - - Label { - anchors.left: parent.left; + label: Item + { + Label + { + anchors.left: parent.left anchors.leftMargin: Theme.getSize("default_lining").width - anchors.right: downArrow.left; - anchors.rightMargin: Theme.getSize("default_lining").width; - anchors.verticalCenter: parent.verticalCenter; + anchors.right: downArrow.left + anchors.rightMargin: Theme.getSize("default_lining").width + anchors.verticalCenter: parent.verticalCenter - text: control.currentText; + text: control.currentText font: Theme.getFont("default"); - color: !enabled ? Theme.getColor("setting_control_disabled_text") : Theme.getColor("setting_control_text"); + color: !enabled ? Theme.getColor("setting_control_disabled_text") : Theme.getColor("setting_control_text") - elide: Text.ElideRight; - verticalAlignment: Text.AlignVCenter; + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter } - UM.RecolorImage { + UM.RecolorImage + { id: downArrow - anchors.right: parent.right; - anchors.rightMargin: Theme.getSize("default_lining").width * 2; - anchors.verticalCenter: parent.verticalCenter; + anchors.right: parent.right + anchors.rightMargin: Theme.getSize("default_lining").width * 2 + anchors.verticalCenter: parent.verticalCenter source: Theme.getIcon("arrow_bottom") width: Theme.getSize("standard_arrow").width @@ -770,26 +392,31 @@ QtObject { sourceSize.width: width + 5 * screenScaleFactor sourceSize.height: width + 5 * screenScaleFactor - color: Theme.getColor("setting_control_text"); + color: Theme.getColor("setting_control_button"); } } } } // Combobox with items with colored rectangles - property Component combobox_color: Component { + property Component combobox_color: Component + { - ComboBoxStyle { + ComboBoxStyle + { - background: Rectangle { + background: Rectangle + { color: !enabled ? UM.Theme.getColor("setting_control_disabled") : control._hovered ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") border.width: UM.Theme.getSize("default_lining").width border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : control._hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border") + radius: UM.Theme.getSize("setting_control_radius").width } - label: Item { - - Label { + label: Item + { + Label + { anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_lining").width anchors.right: swatch.left @@ -804,20 +431,23 @@ QtObject { verticalAlignment: Text.AlignVCenter } - Rectangle { + UM.RecolorImage + { id: swatch - height: Math.round(UM.Theme.getSize("setting_control").height / 2) + height: Math.round(control.height / 2) width: height anchors.right: downArrow.left anchors.verticalCenter: parent.verticalCenter - anchors.margins: Math.round(UM.Theme.getSize("default_margin").width / 4) - radius: Math.round(width / 2) - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("lining") + anchors.rightMargin: UM.Theme.getSize("default_margin").width + + sourceSize.width: width + sourceSize.height: height + source: UM.Theme.getIcon("extruder_button") color: (control.color_override !== "") ? control.color_override : control.color } - UM.RecolorImage { + UM.RecolorImage + { id: downArrow anchors.right: parent.right anchors.rightMargin: UM.Theme.getSize("default_lining").width * 2 @@ -829,33 +459,36 @@ QtObject { sourceSize.width: width + 5 * screenScaleFactor sourceSize.height: width + 5 * screenScaleFactor - color: UM.Theme.getColor("setting_control_text") + color: UM.Theme.getColor("setting_control_button") } } } } - property Component checkbox: Component { - CheckBoxStyle { + property Component checkbox: Component + { + CheckBoxStyle + { background: Item { } - indicator: Rectangle { - implicitWidth: Theme.getSize("checkbox").width; - implicitHeight: Theme.getSize("checkbox").height; + indicator: Rectangle + { + implicitWidth: Theme.getSize("checkbox").width + implicitHeight: Theme.getSize("checkbox").height - color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_hover") : Theme.getColor("checkbox"); + color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_hover") : (control.enabled ? Theme.getColor("checkbox") : Theme.getColor("checkbox_disabled")) Behavior on color { ColorAnimation { duration: 50; } } - radius: control.exclusiveGroup ? Math.round(Theme.getSize("checkbox").width / 2) : 0 + radius: control.exclusiveGroup ? Math.round(Theme.getSize("checkbox").width / 2) : UM.Theme.getSize("checkbox_radius").width - border.width: Theme.getSize("default_lining").width; - border.color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_border_hover") : Theme.getColor("checkbox_border"); + border.width: Theme.getSize("default_lining").width + border.color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_border_hover") : Theme.getColor("checkbox_border") - UM.RecolorImage { + UM.RecolorImage + { anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter width: Math.round(parent.width / 2.5) height: Math.round(parent.height / 2.5) - sourceSize.width: width sourceSize.height: width color: Theme.getColor("checkbox_mark") source: control.exclusiveGroup ? Theme.getIcon("dot") : Theme.getIcon("check") @@ -863,98 +496,74 @@ QtObject { Behavior on opacity { NumberAnimation { duration: 100; } } } } - label: Label { + label: Label + { text: control.text color: Theme.getColor("checkbox_text") font: Theme.getFont("default") elide: Text.ElideRight + renderType: Text.NativeRendering } } } - property Component partially_checkbox: Component { - CheckBoxStyle { + property Component partially_checkbox: Component + { + CheckBoxStyle + { background: Item { } - indicator: Rectangle { - implicitWidth: Theme.getSize("checkbox").width; - implicitHeight: Theme.getSize("checkbox").height; + indicator: Rectangle + { + implicitWidth: Theme.getSize("checkbox").width + implicitHeight: Theme.getSize("checkbox").height color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_hover") : Theme.getColor("checkbox"); Behavior on color { ColorAnimation { duration: 50; } } - radius: control.exclusiveGroup ? Math.round(Theme.getSize("checkbox").width / 2) : 0 + radius: control.exclusiveGroup ? Math.round(Theme.getSize("checkbox").width / 2) : UM.Theme.getSize("checkbox_radius").width border.width: Theme.getSize("default_lining").width; border.color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_border_hover") : Theme.getColor("checkbox_border"); - UM.RecolorImage { + UM.RecolorImage + { anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter width: Math.round(parent.width / 2.5) height: Math.round(parent.height / 2.5) - sourceSize.width: width sourceSize.height: width color: Theme.getColor("checkbox_mark") - source: { - if (control.checkbox_state == 2){ - return Theme.getIcon("solid") + source: + { + if (control.checkbox_state == 2) + { + return Theme.getIcon("solid"); } - else{ - return control.exclusiveGroup ? Theme.getIcon("dot") : Theme.getIcon("check") + else + { + return control.exclusiveGroup ? Theme.getIcon("dot") : Theme.getIcon("check"); } } opacity: control.checked Behavior on opacity { NumberAnimation { duration: 100; } } } } - label: Label { - text: control.text; - color: Theme.getColor("checkbox_text"); - font: Theme.getFont("default"); + label: Label + { + text: control.text + color: Theme.getColor("checkbox_text") + font: Theme.getFont("default") } } } - property Component slider: Component { - SliderStyle { - groove: Rectangle { - implicitWidth: control.width; - implicitHeight: Theme.getSize("slider_groove").height; - - color: Theme.getColor("slider_groove"); - border.width: Theme.getSize("default_lining").width; - border.color: Theme.getColor("slider_groove_border"); - - radius: Math.round(width / 2); - - Rectangle { - anchors { - left: parent.left; - top: parent.top; - bottom: parent.bottom; - } - color: Theme.getColor("slider_groove_fill"); - width: Math.round((control.value / (control.maximumValue - control.minimumValue)) * parent.width); - radius: Math.round(width / 2); - } - } - handle: Rectangle { - width: Theme.getSize("slider_handle").width; - height: Theme.getSize("slider_handle").height; - color: control.hovered ? Theme.getColor("slider_handle_hover") : Theme.getColor("slider_handle"); - border.width: Theme.getSize("default_lining").width - border.color: control.hovered ? Theme.getColor("slider_handle_hover_border") : Theme.getColor("slider_handle_border") - radius: Math.round(Theme.getSize("slider_handle").width / 2); //Round. - Behavior on color { ColorAnimation { duration: 50; } } - } - } - } - - property Component text_field: Component { - TextFieldStyle { - textColor: Theme.getColor("setting_control_text"); + property Component text_field: Component + { + TextFieldStyle + { + textColor: Theme.getColor("setting_control_text") placeholderTextColor: Theme.getColor("setting_control_text") - font: Theme.getFont("default"); + font: Theme.getFont("default") background: Rectangle { @@ -963,10 +572,12 @@ QtObject { border.width: Theme.getSize("default_lining").width; border.color: control.hovered ? Theme.getColor("setting_control_border_highlight") : Theme.getColor("setting_control_border"); + radius: UM.Theme.getSize("setting_control_radius").width color: Theme.getColor("setting_validation_ok"); - Label { + Label + { anchors.right: parent.right; anchors.rightMargin: Theme.getSize("setting_unit_margin").width; anchors.verticalCenter: parent.verticalCenter; @@ -979,7 +590,8 @@ QtObject { } } - property Component sidebar_action_button: Component { + property Component print_setup_action_button: Component + { ButtonStyle { background: Rectangle @@ -988,28 +600,44 @@ QtObject { border.color: { if(!control.enabled) + { return UM.Theme.getColor("action_button_disabled_border"); + } else if(control.pressed) + { return UM.Theme.getColor("action_button_active_border"); + } else if(control.hovered) + { return UM.Theme.getColor("action_button_hovered_border"); + } else + { return UM.Theme.getColor("action_button_border"); + } } color: { if(!control.enabled) + { return UM.Theme.getColor("action_button_disabled"); + } else if(control.pressed) + { return UM.Theme.getColor("action_button_active"); + } else if(control.hovered) + { return UM.Theme.getColor("action_button_hovered"); + } else + { return UM.Theme.getColor("action_button"); + } } - Behavior on color { ColorAnimation { duration: 50; } } + Behavior on color { ColorAnimation { duration: 50 } } - implicitWidth: actualLabel.contentWidth + (UM.Theme.getSize("sidebar_margin").width * 2) + implicitWidth: actualLabel.contentWidth + (UM.Theme.getSize("thick_margin").width * 2) Label { @@ -1018,15 +646,23 @@ QtObject { color: { if(!control.enabled) + { return UM.Theme.getColor("action_button_disabled_text"); + } else if(control.pressed) + { return UM.Theme.getColor("action_button_active_text"); + } else if(control.hovered) + { return UM.Theme.getColor("action_button_hovered_text"); + } else + { return UM.Theme.getColor("action_button_text"); + } } - font: UM.Theme.getFont("action_button") + font: UM.Theme.getFont("medium") text: control.text } } @@ -1034,7 +670,8 @@ QtObject { } } - property Component toolbox_action_button: Component { + property Component toolbox_action_button: Component + { ButtonStyle { background: Rectangle @@ -1045,17 +682,17 @@ QtObject { { if (control.installed) { - return UM.Theme.getColor("action_button_disabled") + return UM.Theme.getColor("action_button_disabled"); } else { if (control.hovered) { - return UM.Theme.getColor("primary_hover") + return UM.Theme.getColor("primary_hover"); } else { - return UM.Theme.getColor("primary") + return UM.Theme.getColor("primary"); } } @@ -1068,17 +705,17 @@ QtObject { { if (control.installed) { - return UM.Theme.getColor("action_button_disabled_text") + return UM.Theme.getColor("action_button_disabled_text"); } else { if (control.hovered) { - return UM.Theme.getColor("button_text_hover") + return UM.Theme.getColor("button_text_hover"); } else { - return UM.Theme.getColor("button_text") + return UM.Theme.getColor("button_text"); } } } @@ -1088,4 +725,153 @@ QtObject { } } } + + property Component monitor_button_style: Component + { + ButtonStyle + { + background: Rectangle + { + border.width: UM.Theme.getSize("default_lining").width + border.color: + { + if(!control.enabled) + { + return UM.Theme.getColor("action_button_disabled_border"); + } + else if(control.pressed) + { + return UM.Theme.getColor("action_button_active_border"); + } + else if(control.hovered) + { + return UM.Theme.getColor("action_button_hovered_border"); + } + return UM.Theme.getColor("action_button_border"); + } + color: + { + if(!control.enabled) + { + return UM.Theme.getColor("action_button_disabled"); + } + else if(control.pressed) + { + return UM.Theme.getColor("action_button_active"); + } + else if(control.hovered) + { + return UM.Theme.getColor("action_button_hovered"); + } + return UM.Theme.getColor("action_button"); + } + Behavior on color + { + ColorAnimation + { + duration: 50 + } + } + } + + label: Item + { + UM.RecolorImage + { + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + width: Math.floor(control.width / 2) + height: Math.floor(control.height / 2) + sourceSize.height: width + color: + { + if(!control.enabled) + { + return UM.Theme.getColor("action_button_disabled_text"); + } + else if(control.pressed) + { + return UM.Theme.getColor("action_button_active_text"); + } + else if(control.hovered) + { + return UM.Theme.getColor("action_button_hovered_text"); + } + return UM.Theme.getColor("action_button_text"); + } + source: control.iconSource + } + } + } + } + + property Component monitor_checkable_button_style: Component + { + ButtonStyle { + background: Rectangle { + border.width: control.checked ? UM.Theme.getSize("default_lining").width * 2 : UM.Theme.getSize("default_lining").width + border.color: + { + if(!control.enabled) + { + return UM.Theme.getColor("action_button_disabled_border"); + } + else if (control.checked || control.pressed) + { + return UM.Theme.getColor("action_button_active_border"); + } + else if(control.hovered) + { + return UM.Theme.getColor("action_button_hovered_border"); + } + return UM.Theme.getColor("action_button_border"); + } + color: + { + if(!control.enabled) + { + return UM.Theme.getColor("action_button_disabled"); + } + else if (control.checked || control.pressed) + { + return UM.Theme.getColor("action_button_active"); + } + else if (control.hovered) + { + return UM.Theme.getColor("action_button_hovered"); + } + return UM.Theme.getColor("action_button"); + } + Behavior on color { ColorAnimation { duration: 50; } } + Label { + anchors.left: parent.left + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + anchors.leftMargin: UM.Theme.getSize("default_lining").width * 2 + anchors.rightMargin: UM.Theme.getSize("default_lining").width * 2 + color: + { + if(!control.enabled) + { + return UM.Theme.getColor("action_button_disabled_text"); + } + else if (control.checked || control.pressed) + { + return UM.Theme.getColor("action_button_active_text"); + } + else if (control.hovered) + { + return UM.Theme.getColor("action_button_hovered_text"); + } + return UM.Theme.getColor("action_button_text"); + } + font: UM.Theme.getFont("default") + text: control.text + horizontalAlignment: Text.AlignHCenter + elide: Text.ElideMiddle + } + } + label: Item { } + } + } } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 25c9a678c1..42ef632673 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -6,17 +6,17 @@ "fonts": { "large": { "size": 1.35, - "weight": 63, + "weight": 40, "family": "Noto Sans" }, - "large_nonbold": { + "large_bold": { "size": 1.35, - "weight": 50, + "weight": 63, "family": "Noto Sans" }, "medium": { "size": 1.16, - "weight": 50, + "weight": 40, "family": "Noto Sans" }, "medium_bold": { @@ -25,90 +25,97 @@ "family": "Noto Sans" }, "default": { - "size": 1.0, - "weight": 50, + "size": 0.95, + "weight": 40, "family": "Noto Sans" }, "default_bold": { - "size": 1.0, + "size": 0.95, "weight": 63, "family": "Noto Sans" }, "default_italic": { - "size": 1.15, - "weight": 50, + "size": 0.95, + "weight": 40, "italic": true, "family": "Noto Sans" }, "small": { - "size": 1.0, - "weight": 63, - "family": "Noto Sans" - }, - "very_small": { - "size": 1.0, - "weight": 50, - "family": "Noto Sans" - }, - "button_tooltip": { - "size": 1.0, - "weight": 50, - "family": "Noto Sans" - }, - "setting_category": { - "size": 1.15, - "weight": 63, - "family": "Noto Sans" - }, - "action_button": { - "size": 1.15, - "weight": 50, + "size": 0.7, + "weight": 40, "family": "Noto Sans" } }, "colors": { - "sidebar": [255, 255, 255, 255], + "main_background": [255, 255, 255, 255], + "wide_lining": [245, 245, 245, 255], + "thick_lining": [127, 127, 127, 255], "lining": [192, 193, 194, 255], "viewport_overlay": [0, 0, 0, 192], - "primary": [12, 169, 227, 255], + "primary": [50, 130, 255, 255], + "primary_shadow": [64, 47, 205, 255], "primary_hover": [48, 182, 231, 255], "primary_text": [255, 255, 255, 255], "border": [127, 127, 127, 255], - "secondary": [245, 245, 245, 255], + "secondary": [240, 240, 240, 255], + "secondary_shadow": [216, 216, 216, 255], - "topbar_background_color": [255, 255, 255, 0], - "topbar_background_color_monitoring": [255, 255, 255, 255], + "icon": [8, 7, 63, 255], - "topbar_button_text_active": [0, 0, 0, 255], - "topbar_button_text_inactive": [128, 128, 128, 255], - "topbar_button_text_hovered": [0, 0, 0, 255], + "primary_button": [38, 113, 231, 255], + "primary_button_shadow": [27, 95, 202, 255], + "primary_button_hover": [81, 145, 247, 255], + "primary_button_text": [255, 255, 255, 255], - "text": [0, 0, 0, 255], + "secondary_button": [240, 240, 240, 255], + "secondary_button_shadow": [216, 216, 216, 255], + "secondary_button_hover": [228, 228, 228, 255], + "secondary_button_text": [30, 102, 215, 255], + + "main_window_header_background": [8, 7, 63, 255], + "main_window_header_background_gradient": [25, 23, 91, 255], + "main_window_header_button_text_active": [8, 7, 63, 255], + "main_window_header_button_text_inactive": [255, 255, 255, 255], + "main_window_header_button_text_hovered": [255, 255, 255, 255], + "main_window_header_button_background_active": [255, 255, 255, 255], + "main_window_header_button_background_inactive": [255, 255, 255, 0], + "main_window_header_button_background_hovered": [117, 114, 159, 255], + + "account_widget_outline_active": [70, 66, 126, 255], + + "machine_selector_bar": [31, 36, 39, 255], + "machine_selector_active": [68, 72, 75, 255], + "machine_selector_hover": [68, 72, 75, 255], + "machine_selector_text_active": [255, 255, 255, 255], + "machine_selector_printer_icon": [8, 7, 63, 255], + + "action_panel_secondary": [27, 95, 202, 255], + + "toolbar_background": [255, 255, 255, 255], + + "printer_type_label_background": [228, 228, 242, 255], + + "text": [25, 25, 25, 255], "text_detail": [174, 174, 174, 128], - "text_link": [12, 169, 227, 255], + "text_link": [50, 130, 255, 255], "text_inactive": [174, 174, 174, 255], - "text_hover": [70, 84, 113, 255], - "text_pressed": [12, 169, 227, 255], + "text_pressed": [50, 130, 255, 255], "text_subtext": [0, 0, 0, 255], "text_medium": [128, 128, 128, 255], "text_emphasis": [255, 255, 255, 255], - "text_scene": [31, 36, 39, 255], - "text_scene_hover": [70, 84, 113, 255], + "text_scene": [102, 102, 102, 255], + "text_scene_hover": [123, 123, 113, 255], "error": [255, 140, 0, 255], - "sidebar_header_bar": [31, 36, 39, 255], - "sidebar_header_active": [68, 72, 75, 255], - "sidebar_header_hover": [68, 72, 75, 255], - "sidebar_header_highlight": [68, 192, 255, 255], - "sidebar_header_highlight_hover": [68, 192, 255, 255], - "sidebar_header_text_inactive": [255, 255, 255, 255], - "sidebar_header_text_active": [255, 255, 255, 255], - "sidebar_header_text_hover": [255, 255, 255, 255], - "sidebar_lining": [245, 245, 245, 255], - "sidebar_lining_thin": [127, 127, 127, 255], + "warning": [245, 166, 35, 255], + "disabled": [229, 229, 229, 255], + + "toolbar_button_hover": [232, 242, 252, 255], + "toolbar_button_active": [232, 242, 252, 255], + "toolbar_button_active_hover": [232, 242, 252, 255], "button": [31, 36, 39, 255], "button_hover": [68, 72, 75, 255], @@ -118,15 +125,13 @@ "button_text_hover": [255, 255, 255, 255], "button_text_active": [255, 255, 255, 255], "button_text_active_hover": [255, 255, 255, 255], - "button_disabled": [31, 36, 39, 255], - "button_disabled_text": [255, 255, 255, 101], - "small_button": [31, 36, 39, 0], - "small_button_hover": [68, 72, 75, 255], - "small_button_active": [68, 72, 75, 255], - "small_button_active_hover": [68, 72, 75, 255], - "small_button_text": [31, 36, 39, 197], - "small_button_text_hover": [255, 255, 255, 255], + "small_button": [0, 0, 0, 0], + "small_button_hover": [102, 102, 102, 255], + "small_button_active": [10, 8, 80, 255], + "small_button_active_hover": [10, 8, 80, 255], + "small_button_text": [102, 102, 102, 255], + "small_button_text_hover": [8, 7, 63, 255], "small_button_text_active": [255, 255, 255, 255], "small_button_text_active_hover": [255, 255, 255, 255], @@ -136,60 +141,55 @@ "extruder_button_material_border": [255, 255, 255, 255], + "rating_star": [90, 90, 90, 255], + "sync_button_text": [120, 120, 120, 255], "sync_button_text_hovered": [0, 0, 0, 255], "action_button": [255, 255, 255, 255], "action_button_text": [0, 0, 0, 255], "action_button_border": [127, 127, 127, 255], - "action_button_hovered": [255, 255, 255, 255], + "action_button_hovered": [232, 242, 252, 255], "action_button_hovered_text": [31, 36, 39, 255], - "action_button_hovered_border": [12, 169, 227, 255], + "action_button_hovered_border": [50, 130, 255, 255], "action_button_active": [255, 255, 255, 255], "action_button_active_text": [0, 0, 0, 255], - "action_button_active_border": [12, 169, 227, 255], + "action_button_active_border": [50, 130, 255, 255], "action_button_disabled": [245, 245, 245, 255], "action_button_disabled_text": [127, 127, 127, 255], "action_button_disabled_border": [245, 245, 245, 255], - - "print_button_ready": [12, 169, 227, 255], - "print_button_ready_border": [12, 169, 227, 255], - "print_button_ready_text": [255, 255, 255, 255], - "print_button_ready_hovered": [30, 186, 245, 243], - "print_button_ready_hovered_border": [30, 186, 245, 243], - "print_button_ready_pressed": [30, 186, 245, 243], - "print_button_ready_pressed_border": [30, 186, 245, 243], + "action_button_shadow": [223, 223, 223, 255], + "action_button_disabled_shadow": [228, 228, 228, 255], "scrollbar_background": [255, 255, 255, 255], - "scrollbar_handle": [31, 36, 39, 255], - "scrollbar_handle_hover": [12, 159, 227, 255], - "scrollbar_handle_down": [12, 159, 227, 255], + "scrollbar_handle": [10, 8, 80, 255], + "scrollbar_handle_hover": [50, 130, 255, 255], + "scrollbar_handle_down": [50, 130, 255, 255], - "setting_category": [245, 245, 245, 255], + "setting_category": [240, 240, 240, 255], "setting_category_disabled": [255, 255, 255, 255], - "setting_category_hover": [245, 245, 245, 255], - "setting_category_active": [245, 245, 245, 255], - "setting_category_active_hover": [245, 245, 245, 255], - "setting_category_text": [31, 36, 39, 255], + "setting_category_hover": [232, 242, 252, 255], + "setting_category_active": [240, 240, 240, 255], + "setting_category_active_hover": [232, 242, 252, 255], + "setting_category_text": [35, 35, 35, 255], "setting_category_disabled_text": [24, 41, 77, 101], - "setting_category_hover_text": [31, 36, 39, 255], - "setting_category_active_text": [31, 36, 39, 255], - "setting_category_active_hover_text": [31, 36, 39, 255], - "setting_category_border": [245, 245, 245, 255], - "setting_category_disabled_border": [245, 245, 245, 255], - "setting_category_hover_border": [12, 159, 227, 255], - "setting_category_active_border": [245, 245, 245, 255], - "setting_category_active_hover_border": [12, 159, 227, 255], + "setting_category_hover_text": [35, 35, 35, 255], + "setting_category_active_text": [35, 35, 35, 255], + "setting_category_active_hover_text": [35, 35, 35, 255], + "setting_category_border": [240, 240, 240, 255], + "setting_category_disabled_border": [240, 240, 240, 255], + "setting_category_hover_border": [50, 130, 255, 255], + "setting_category_active_border": [50, 130, 255, 255], + "setting_category_active_hover_border": [50, 130, 255, 255], "setting_control": [255, 255, 255, 255], "setting_control_selected": [31, 36, 39, 255], "setting_control_highlight": [255, 255, 255, 255], - "setting_control_border": [127, 127, 127, 255], - "setting_control_border_highlight": [12, 169, 227, 255], - "setting_control_text": [27, 27, 27, 255], - "setting_control_depth_line": [127, 127, 127, 255], - "setting_control_button": [127, 127, 127, 255], - "setting_control_button_hover": [70, 84, 113, 255], + "setting_control_border": [199, 199, 199, 255], + "setting_control_border_highlight": [50, 130, 255, 255], + "setting_control_text": [35, 35, 35, 255], + "setting_control_button": [102, 102, 102, 255], + "setting_control_button_hover": [8, 7, 63, 255], "setting_control_disabled": [245, 245, 245, 255], "setting_control_disabled_text": [127, 127, 127, 255], "setting_control_disabled_border": [127, 127, 127, 255], @@ -199,66 +199,53 @@ "setting_validation_warning_background": [255, 145, 62, 255], "setting_validation_warning": [127, 127, 127, 255], "setting_validation_ok": [255, 255, 255, 255], + "setting_filter_field" : [153, 153, 153, 255], "material_compatibility_warning": [0, 0, 0, 255], "progressbar_background": [245, 245, 245, 255], - "progressbar_control": [31, 36, 39, 255], + "progressbar_control": [50, 130, 255, 255], - "slider_groove": [245, 245, 245, 255], - "slider_groove_border": [127, 127, 127, 255], - "slider_groove_fill": [127, 127, 127, 255], - "slider_handle": [0, 0, 0, 255], - "slider_handle_hover": [77, 182, 226, 255], - "slider_handle_active": [68, 192, 255, 255], - "slider_handle_border": [39, 44, 48, 255], + "slider_groove": [223, 223, 223, 255], + "slider_groove_fill": [8, 7, 63, 255], + "slider_handle": [8, 7, 63, 255], + "slider_handle_active": [50, 130, 255, 255], "slider_text_background": [255, 255, 255, 255], "quality_slider_unavailable": [179, 179, 179, 255], "quality_slider_available": [0, 0, 0, 255], - "quality_slider_handle": [0, 0, 0, 255], - "quality_slider_handle_hover": [127, 127, 127, 255], - "quality_slider_text": [0, 0, 0, 255], "checkbox": [255, 255, 255, 255], "checkbox_hover": [255, 255, 255, 255], - "checkbox_border": [64, 69, 72, 255], - "checkbox_border_hover": [12, 169, 227, 255], - "checkbox_mark": [119, 122, 124, 255], - "checkbox_text": [27, 27, 27, 255], + "checkbox_border": [199, 199, 199, 255], + "checkbox_border_hover": [50, 130, 255, 255], + "checkbox_mark": [50, 130, 255, 255], + "checkbox_disabled": [223, 223, 223, 255], + "checkbox_text": [35, 35, 35, 255], - "mode_switch": [255, 255, 255, 255], - "mode_switch_hover": [255, 255, 255, 255], - "mode_switch_border": [127, 127, 127, 255], - "mode_switch_border_hover": [12, 169, 227, 255], - "mode_switch_handle": [31, 36, 39, 255], - "mode_switch_text": [31, 36, 39, 255], - "mode_switch_text_hover": [31, 36, 39, 255], - "mode_switch_text_checked": [12, 169, 227, 255], - - "tooltip": [68, 192, 255, 255], + "tooltip": [25, 25, 25, 255], "tooltip_text": [255, 255, 255, 255], - "tool_button_border": [255, 255, 255, 0], - "message_background": [255, 255, 255, 255], "message_shadow": [0, 0, 0, 120], - "message_border": [127, 127, 127, 255], + "message_border": [192, 193, 194, 255], "message_text": [0, 0, 0, 255], - "message_button": [12, 169, 227, 255], - "message_button_hover": [12, 169, 227, 255], - "message_button_active": [12, 169, 227, 255], + "message_close": [102, 102, 102, 255], + "message_close_hover": [8, 7, 63, 255], + "message_button": [38, 113, 231, 255], + "message_button_hover": [81, 145, 247, 255], + "message_button_active": [38, 113, 231, 255], "message_button_text": [255, 255, 255, 255], "message_button_text_hover": [255, 255, 255, 255], "message_button_text_active": [255, 255, 255, 255], - "message_progressbar_background": [200, 200, 200, 255], - "message_progressbar_control": [77, 182, 226, 255], + "message_progressbar_background": [245, 245, 245, 255], + "message_progressbar_control": [50, 130, 255, 255], "tool_panel_background": [255, 255, 255, 255], "status_offline": [0, 0, 0, 255], "status_ready": [0, 205, 0, 255], - "status_busy": [12, 169, 227, 255], + "status_busy": [50, 130, 255, 255], "status_paused": [255, 140, 0, 255], "status_stopped": [236, 82, 80, 255], "status_unknown": [127, 127, 127, 255], @@ -269,8 +256,8 @@ "z_axis": [0, 255, 0, 255], "all_axis": [255, 255, 255, 255], - "viewport_background": [245, 245, 245, 255], - "volume_outline": [12, 169, 227, 255], + "viewport_background": [250, 250, 250, 255], + "volume_outline": [50, 130, 255, 255], "buildplate": [244, 244, 244, 255], "buildplate_grid": [129, 131, 134, 255], "buildplate_grid_minor": [230, 230, 231, 255], @@ -283,40 +270,36 @@ "model_overhang": [255, 0, 0, 255], "model_unslicable": [122, 122, 122, 255], "model_unslicable_alt": [172, 172, 127, 255], - "model_selection_outline": [12, 169, 227, 255], + "model_selection_outline": [50, 130, 255, 255], "model_non_printing": [122, 122, 122, 255], "xray": [26, 26, 62, 255], "xray_error": [255, 0, 0, 255], "layerview_ghost": [32, 32, 32, 96], - "layerview_none": [255, 255, 255, 255], - "layerview_inset_0": [255, 0, 0, 255], - "layerview_inset_x": [0, 255, 0, 255], - "layerview_skin": [255, 255, 0, 255], - "layerview_support": [0, 255, 255, 255], - "layerview_skirt": [0, 255, 255, 255], - "layerview_infill": [255, 192, 0, 255], - "layerview_support_infill": [0, 255, 255, 255], - "layerview_move_combing": [0, 0, 255, 255], - "layerview_move_retraction": [128, 128, 255, 255], + "layerview_none": [255, 255, 255, 255], + "layerview_inset_0": [255, 0, 0, 255], + "layerview_inset_x": [0, 255, 0, 255], + "layerview_skin": [255, 255, 0, 255], + "layerview_support": [0, 255, 255, 255], + "layerview_skirt": [0, 255, 255, 255], + "layerview_infill": [255, 192, 0, 255], + "layerview_support_infill": [0, 255, 255, 255], + "layerview_move_combing": [0, 0, 255, 255], + "layerview_move_retraction": [128, 128, 255, 255], "layerview_support_interface": [64, 192, 255, 255], "layerview_nozzle": [181, 166, 66, 50], - "configuration_item": [255, 255, 255, 0], - "configuration_item_active": [12, 169, 227, 32], - "configuration_item_text": [0, 0, 0, 255], - "configuration_item_text_active": [0, 0, 0, 255], - "configuration_item_border": [127, 127, 127, 255], - "configuration_item_border_active": [12, 169, 227, 32], - "configuration_item_border_hover": [12, 169, 227, 255], - - "tab_status_connected": [12, 169, 227, 255], + "tab_status_connected": [50, 130, 255, 255], "tab_status_disconnected": [200, 200, 200, 255], - "printer_config_matched": [12, 169, 227, 255], + "printer_config_matched": [50, 130, 255, 255], "printer_config_mismatch": [127, 127, 127, 255], + "toolbox_header_button_text_active": [0, 0, 0, 255], + "toolbox_header_button_text_inactive": [0, 0, 0, 255], + "toolbox_header_button_text_hovered": [0, 0, 0, 255], + "favorites_header_bar": [245, 245, 245, 255], "favorites_header_hover": [245, 245, 245, 255], "favorites_header_text": [31, 36, 39, 255], @@ -334,12 +317,12 @@ "monitor_pill_background": [245, 245, 245, 255], "monitor_placeholder_image": [230, 230, 230, 255], "monitor_printer_icon_inactive": [154, 154, 154, 255], - "monitor_printer_icon": [12, 169, 227, 255], + "monitor_printer_icon": [50, 130, 255, 255], "monitor_progress_background_text": [0,0,0,255], "monitor_progress_background": [245, 245, 245, 255], "monitor_progress_fill_inactive": [154, 154, 154, 255], "monitor_progress_fill_text": [255,255,255,255], - "monitor_progress_fill": [12, 169, 227, 255], + "monitor_progress_fill": [50, 130, 255, 255], "monitor_shadow": [0, 0, 0, 63], "monitor_skeleton_fill": [245, 245, 245, 255], "monitor_skeleton_fill_dark": [216, 216, 216, 255], @@ -347,42 +330,67 @@ }, "sizes": { - "window_minimum_size": [70, 50], + "window_minimum_size": [100, 60], + "main_window_header": [0.0, 4.0], + "main_window_header_button": [8, 2.35], + "main_window_header_button_icon": [1.2, 1.2], + + "stage_menu": [0.0, 4.0], + + "account_button": [12, 3], + + "print_setup_widget": [38.0, 30.0], + "print_setup_mode_toggle": [0.0, 2.0], + "print_setup_item": [0.0, 2.0], + "print_setup_extruder_box": [0.0, 6.0], + "print_setup_slider_groove": [0.16, 0.16], + "print_setup_slider_handle": [1.0, 1.0], + "print_setup_slider_tickmarks": [0.32, 0.32], + "print_setup_big_item": [28, 2.5], + "print_setup_icon": [1.2, 1.2], + + "expandable_component_content_header": [0.0, 3.0], + + "configuration_selector": [35.0, 4.0], + "configuration_selector_mode_tabs": [0.0, 3.0], + + "action_panel_widget": [26.0, 0.0], + "action_panel_information_widget": [20.0, 0.0], + + "machine_selector_widget": [20.0, 4.0], + "machine_selector_widget_content": [25.0, 32.0], + "machine_selector_icon": [2.66, 2.66], + + "views_selector": [23.0, 4.0], + + "printer_type_label": [3.5, 1.5], + + "default_radius": [0.25, 0.25], + + "wide_lining": [0.5, 0.5], + "thick_lining": [0.2, 0.2], "default_lining": [0.08, 0.08], + "default_arrow": [0.8, 0.8], - "logo": [7.6, 1.6], + "logo": [8, 2.4], - "default_margin": [1.0, 1.0], "wide_margin": [2.0, 2.0], + "thick_margin": [1.71, 1.43], + "default_margin": [1.0, 1.0], + "thin_margin": [0.71, 0.71], "narrow_margin": [0.5, 0.5], - "window_margin": [1.0, 1.0], - "extruder_button_material_margin": [0.70, 0.9], - "extruder_button_material": [0.75, 0.75], + "extruder_icon": [2.33, 2.33], - "sidebar": [35.0, 10.0], - "sidebar_margin": [1.71, 1.43], - "sidebar_margin_thin": [0.71, 0.71], - "sidebar_header": [0.0, 4.0], - "sidebar_header_highlight": [0.25, 0.25], - "sidebar_header_mode_toggle": [0.0, 2.0], - "sidebar_header_mode_tabs": [0.0, 3.0], - "sidebar_lining": [0.5, 0.5], - "sidebar_lining_thin": [0.2, 0.2], - "sidebar_setup": [0.0, 2.0], - "sidebar_tabs": [0.0, 3.5], - "sidebar_inputfields": [0.0, 2.0], - "sidebar_extruder_box": [0.0, 6.0], - "simple_mode_infill_caption": [0.0, 5.0], - "simple_mode_infill_height": [0.0, 8.0], - - "section": [0.0, 2.2], + "section": [0.0, 2], "section_icon": [1.6, 1.6], "section_icon_column": [2.8, 0.0], + "rating_star": [1.0, 1.0], "setting": [25.0, 1.8], - "setting_control": [10.0, 2.0], + "setting_control": [11.0, 2.0], + "setting_control_radius": [0.15, 0.15], "setting_control_depth_margin": [1.4, 0.0], "setting_preferences_button_margin": [4, 0.0], "setting_control_margin": [0.0, 0.0], @@ -390,13 +398,16 @@ "setting_text_maxwidth": [40.0, 0.0], "standard_list_lineheight": [1.5, 1.5], - "standard_list_input": [20.0, 25.0], - "standard_arrow": [0.8, 0.8], + "standard_arrow": [1.0, 1.0], "button": [4, 4], "button_icon": [2.5, 2.5], "button_lining": [0, 0], + "action_button": [15.0, 3.0], + "action_button_icon": [1.0, 1.0], + "action_button_radius": [0.15, 0.15], + "small_button": [2, 2], "small_button_icon": [1.5, 1.5], @@ -404,42 +415,32 @@ "favorites_button": [2, 2], "favorites_button_icon": [1.2, 1.2], - "printer_status_icon": [1.8, 1.8], + "printer_status_icon": [1.0, 1.0], "printer_sync_icon": [1.2, 1.2], - "topbar_logo_right_margin": [3, 0], - "topbar_button": [8, 4], - "topbar_button_icon": [1.2, 1.2], - "button_tooltip": [1.0, 1.3], "button_tooltip_arrow": [0.25, 0.25], "tool_button_border": [1.0, 0], - "progressbar": [26.0, 0.4], - "progressbar_radius": [0, 0], - "progressbar_control": [8.0, 0.4], + "progressbar": [26.0, 0.75], + "progressbar_radius": [0.15, 0.15], + "progressbar_control": [8.0, 0.75], "scrollbar": [0.75, 0.5], - "quality_slider_bar": [1, 0.2], + "slider_groove": [0.5, 0.5], + "slider_groove_radius": [0.15, 0.15], + "slider_handle": [1.5, 1.5], + "slider_layerview_size": [1.0, 26.0], - "slider_groove": [0.3, 0.3], - "slider_handle": [1.0, 1.0], - "slider_layerview_size": [1.0, 22.0], - "slider_layerview_background": [4.0, 0.0], - "slider_layerview_margin": [1.0, 1.5], - - "layerview_menu_size": [15, 20], - "layerview_menu_size_material_color_mode": [15, 16], - "layerview_menu_size_collapsed": [15, 6], - "layerview_menu_size_compatibility": [22, 22.0], - "layerview_menu_size_compatibility_collapsed": [15, 3.5], + "layerview_menu_size": [16.0, 4.0], "layerview_legend_size": [1.0, 1.0], "layerview_row": [11.0, 1.5], "layerview_row_spacing": [0.0, 0.5], - "checkbox": [2.0, 2.0], + "checkbox": [1.5, 1.5], + "checkbox_radius": [0.08, 0.08], "tooltip": [20.0, 10.0], "tooltip_margins": [1.0, 1.0], @@ -463,6 +464,8 @@ "message_shadow": [0, 0], "message_margin": [0, 1.0], "message_inner_margin": [1.5, 1.5], + "message_radius": [0.25, 0.25], + "message_button_radius": [0.15, 0.15], "infill_button_margin": [0.5, 0.5], @@ -483,16 +486,19 @@ "toolbox_detail_header": [1.0, 14.0], "toolbox_detail_tile": [1.0, 8.0], "toolbox_back_column": [6.0, 1.0], - "toolbox_back_button": [4.0, 2.0], + "toolbox_back_button": [6.0, 2.0], "toolbox_installed_tile": [1.0, 8.0], "toolbox_property_label": [1.0, 2.0], - "toolbox_heading_label": [1.0, 4.0], + "toolbox_heading_label": [1.0, 3.8], "toolbox_header": [1.0, 4.0], + "toolbox_header_highlight": [0.25, 0.25], "toolbox_progress_bar": [8.0, 0.5], "toolbox_chart_row": [1.0, 2.0], "toolbox_action_button": [8.0, 2.5], "toolbox_loader": [2.0, 2.0], + "avatar_image": [6.8, 6.8], + "monitor_config_override_box": [1.0, 14.0], "monitor_extruder_circle": [2.75, 2.75], "monitor_text_line": [1.16, 1.16], diff --git a/resources/variants/cartesio_0.25.inst.cfg b/resources/variants/cartesio_0.25.inst.cfg index b3aae8a393..53048622f2 100644 --- a/resources/variants/cartesio_0.25.inst.cfg +++ b/resources/variants/cartesio_0.25.inst.cfg @@ -5,7 +5,7 @@ definition = cartesio [metadata] author = Cartesio -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/cartesio_0.4.inst.cfg b/resources/variants/cartesio_0.4.inst.cfg index 5cea5823c4..3ad6b3f3d9 100644 --- a/resources/variants/cartesio_0.4.inst.cfg +++ b/resources/variants/cartesio_0.4.inst.cfg @@ -5,7 +5,7 @@ definition = cartesio [metadata] author = Cartesio -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/cartesio_0.8.inst.cfg b/resources/variants/cartesio_0.8.inst.cfg index b4009cf9ed..f19c4d58d4 100644 --- a/resources/variants/cartesio_0.8.inst.cfg +++ b/resources/variants/cartesio_0.8.inst.cfg @@ -5,7 +5,7 @@ definition = cartesio [metadata] author = Cartesio -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_hyb35.inst.cfg b/resources/variants/fabtotum_hyb35.inst.cfg index d3f0077792..5ed9eca26a 100644 --- a/resources/variants/fabtotum_hyb35.inst.cfg +++ b/resources/variants/fabtotum_hyb35.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_lite04.inst.cfg b/resources/variants/fabtotum_lite04.inst.cfg index 226c136564..7b52bf5c29 100644 --- a/resources/variants/fabtotum_lite04.inst.cfg +++ b/resources/variants/fabtotum_lite04.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_lite06.inst.cfg b/resources/variants/fabtotum_lite06.inst.cfg index 62e3014b60..f518f60ce9 100644 --- a/resources/variants/fabtotum_lite06.inst.cfg +++ b/resources/variants/fabtotum_lite06.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro02.inst.cfg b/resources/variants/fabtotum_pro02.inst.cfg index 3e4661ee2c..897bd5aea9 100644 --- a/resources/variants/fabtotum_pro02.inst.cfg +++ b/resources/variants/fabtotum_pro02.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro04.inst.cfg b/resources/variants/fabtotum_pro04.inst.cfg index 3fe140f8be..d27be2f3b8 100644 --- a/resources/variants/fabtotum_pro04.inst.cfg +++ b/resources/variants/fabtotum_pro04.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro06.inst.cfg b/resources/variants/fabtotum_pro06.inst.cfg index fcb5c71ef0..25b9d7c710 100644 --- a/resources/variants/fabtotum_pro06.inst.cfg +++ b/resources/variants/fabtotum_pro06.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro08.inst.cfg b/resources/variants/fabtotum_pro08.inst.cfg index bef04734eb..627e26e2a2 100644 --- a/resources/variants/fabtotum_pro08.inst.cfg +++ b/resources/variants/fabtotum_pro08.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/felixtec4_0.25.inst.cfg b/resources/variants/felixtec4_0.25.inst.cfg index 7d8bca94b0..3dda15171b 100644 --- a/resources/variants/felixtec4_0.25.inst.cfg +++ b/resources/variants/felixtec4_0.25.inst.cfg @@ -6,7 +6,7 @@ definition = felixtec4dual [metadata] author = kerog777 type = variant -setting_version = 5 +setting_version = 6 hardware_type = nozzle [values] diff --git a/resources/variants/felixtec4_0.35.inst.cfg b/resources/variants/felixtec4_0.35.inst.cfg index f061aa1cbc..db79c3bad4 100644 --- a/resources/variants/felixtec4_0.35.inst.cfg +++ b/resources/variants/felixtec4_0.35.inst.cfg @@ -6,7 +6,7 @@ definition = felixtec4dual [metadata] author = kerog777 type = variant -setting_version = 5 +setting_version = 6 hardware_type = nozzle [values] diff --git a/resources/variants/felixtec4_0.50.inst.cfg b/resources/variants/felixtec4_0.50.inst.cfg index 3c68c42dae..6d52881ee5 100644 --- a/resources/variants/felixtec4_0.50.inst.cfg +++ b/resources/variants/felixtec4_0.50.inst.cfg @@ -7,7 +7,7 @@ definition = felixtec4dual author = kerog777 type = variant hardware_type = nozzle -setting_version = 5 +setting_version = 6 [values] machine_nozzle_size = 0.5 diff --git a/resources/variants/felixtec4_0.70.inst.cfg b/resources/variants/felixtec4_0.70.inst.cfg index 3a52644714..4edeebbc84 100644 --- a/resources/variants/felixtec4_0.70.inst.cfg +++ b/resources/variants/felixtec4_0.70.inst.cfg @@ -7,7 +7,7 @@ definition = felixtec4dual author = kerog777 type = variant hardware_type = nozzle -setting_version = 5 +setting_version = 6 [values] machine_nozzle_size = 0.70 diff --git a/resources/variants/gmax15plus_025_e3d.inst.cfg b/resources/variants/gmax15plus_025_e3d.inst.cfg index 8a6b37067d..a085be0526 100644 --- a/resources/variants/gmax15plus_025_e3d.inst.cfg +++ b/resources/variants/gmax15plus_025_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_04_e3d.inst.cfg b/resources/variants/gmax15plus_04_e3d.inst.cfg index a2f779f426..05473dafd2 100644 --- a/resources/variants/gmax15plus_04_e3d.inst.cfg +++ b/resources/variants/gmax15plus_04_e3d.inst.cfg @@ -5,9 +5,9 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle [values] -machine_nozzle_size = 0.4 +machine_nozzle_size = 0.4 \ No newline at end of file diff --git a/resources/variants/gmax15plus_05_e3d.inst.cfg b/resources/variants/gmax15plus_05_e3d.inst.cfg index 68ee111aa1..f3324382ba 100644 --- a/resources/variants/gmax15plus_05_e3d.inst.cfg +++ b/resources/variants/gmax15plus_05_e3d.inst.cfg @@ -5,9 +5,9 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle [values] -machine_nozzle_size = 0.5 +machine_nozzle_size = 0.5 \ No newline at end of file diff --git a/resources/variants/gmax15plus_05_jhead.inst.cfg b/resources/variants/gmax15plus_05_jhead.inst.cfg index 6d0b084969..d480b47367 100644 --- a/resources/variants/gmax15plus_05_jhead.inst.cfg +++ b/resources/variants/gmax15plus_05_jhead.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_06_e3d.inst.cfg b/resources/variants/gmax15plus_06_e3d.inst.cfg index 987e882a09..732870f044 100644 --- a/resources/variants/gmax15plus_06_e3d.inst.cfg +++ b/resources/variants/gmax15plus_06_e3d.inst.cfg @@ -5,9 +5,9 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle [values] -machine_nozzle_size = 0.6 +machine_nozzle_size = 0.6 \ No newline at end of file diff --git a/resources/variants/gmax15plus_08_e3d.inst.cfg b/resources/variants/gmax15plus_08_e3d.inst.cfg index bf59b47da0..0c4137a018 100644 --- a/resources/variants/gmax15plus_08_e3d.inst.cfg +++ b/resources/variants/gmax15plus_08_e3d.inst.cfg @@ -5,9 +5,9 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle [values] -machine_nozzle_size = 0.8 +machine_nozzle_size = 0.8 \ No newline at end of file diff --git a/resources/variants/gmax15plus_10_jhead.inst.cfg b/resources/variants/gmax15plus_10_jhead.inst.cfg index 47355f344c..8ae93fc93c 100644 --- a/resources/variants/gmax15plus_10_jhead.inst.cfg +++ b/resources/variants/gmax15plus_10_jhead.inst.cfg @@ -5,9 +5,9 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle [values] -machine_nozzle_size = 0.5 +machine_nozzle_size = 0.5 \ No newline at end of file diff --git a/resources/variants/gmax15plus_12_e3d.inst.cfg b/resources/variants/gmax15plus_12_e3d.inst.cfg new file mode 100644 index 0000000000..016f48c1a3 --- /dev/null +++ b/resources/variants/gmax15plus_12_e3d.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 1.2mm E3D Volcano +version = 4 +definition = gmax15plus + +[metadata] +author = gcreate +setting_version = 6 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.2 \ No newline at end of file diff --git a/resources/variants/gmax15plus_dual_025_e3d.inst.cfg b/resources/variants/gmax15plus_dual_025_e3d.inst.cfg index 750a5381b3..185166d3b5 100644 --- a/resources/variants/gmax15plus_dual_025_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_025_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_04_e3d.inst.cfg b/resources/variants/gmax15plus_dual_04_e3d.inst.cfg index 4b5a71c53b..1c534f13e0 100644 --- a/resources/variants/gmax15plus_dual_04_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_04_e3d.inst.cfg @@ -5,9 +5,9 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle [values] -machine_nozzle_size = 0.4 +machine_nozzle_size = 0.4 \ No newline at end of file diff --git a/resources/variants/gmax15plus_dual_05_e3d.inst.cfg b/resources/variants/gmax15plus_dual_05_e3d.inst.cfg index 05d9a88d54..f1d67509a9 100644 --- a/resources/variants/gmax15plus_dual_05_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_05_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_05_jhead.inst.cfg b/resources/variants/gmax15plus_dual_05_jhead.inst.cfg index 54a237e848..bc72c4ae20 100644 --- a/resources/variants/gmax15plus_dual_05_jhead.inst.cfg +++ b/resources/variants/gmax15plus_dual_05_jhead.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_06_e3d.inst.cfg b/resources/variants/gmax15plus_dual_06_e3d.inst.cfg index 39c41be968..545cfcb238 100644 --- a/resources/variants/gmax15plus_dual_06_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_06_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_08_e3d.inst.cfg b/resources/variants/gmax15plus_dual_08_e3d.inst.cfg index 1f2d7b9790..1923aac7f7 100644 --- a/resources/variants/gmax15plus_dual_08_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_08_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_10_jhead.inst.cfg b/resources/variants/gmax15plus_dual_10_jhead.inst.cfg index cf615bb874..de0776ad9b 100644 --- a/resources/variants/gmax15plus_dual_10_jhead.inst.cfg +++ b/resources/variants/gmax15plus_dual_10_jhead.inst.cfg @@ -5,9 +5,9 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle [values] -machine_nozzle_size = 0.5 +machine_nozzle_size = 1.0 diff --git a/resources/variants/imade3d_jellybox_0.4.inst.cfg b/resources/variants/imade3d_jellybox_0.4.inst.cfg index 2bd0f578cf..1623e6755c 100644 --- a/resources/variants/imade3d_jellybox_0.4.inst.cfg +++ b/resources/variants/imade3d_jellybox_0.4.inst.cfg @@ -5,7 +5,7 @@ definition = imade3d_jellybox [metadata] author = IMADE3D -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg b/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg index 6a93cdf13d..2f1cb002b4 100644 --- a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg +++ b/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg @@ -5,7 +5,7 @@ definition = imade3d_jellybox [metadata] author = IMADE3D -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.2.inst.cfg b/resources/variants/tizyx_k25_0.2.inst.cfg index cd9f1bcbd1..c616579911 100644 --- a/resources/variants/tizyx_k25_0.2.inst.cfg +++ b/resources/variants/tizyx_k25_0.2.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.3.inst.cfg b/resources/variants/tizyx_k25_0.3.inst.cfg index 8b34d23bf6..180d831cca 100644 --- a/resources/variants/tizyx_k25_0.3.inst.cfg +++ b/resources/variants/tizyx_k25_0.3.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.4.inst.cfg b/resources/variants/tizyx_k25_0.4.inst.cfg index c147eb0ad0..07ef3ca8ed 100644 --- a/resources/variants/tizyx_k25_0.4.inst.cfg +++ b/resources/variants/tizyx_k25_0.4.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.5.inst.cfg b/resources/variants/tizyx_k25_0.5.inst.cfg index 14102fb2c7..a09a207e7a 100644 --- a/resources/variants/tizyx_k25_0.5.inst.cfg +++ b/resources/variants/tizyx_k25_0.5.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.6.inst.cfg b/resources/variants/tizyx_k25_0.6.inst.cfg index 00f69f71f4..751cf8e794 100644 --- a/resources/variants/tizyx_k25_0.6.inst.cfg +++ b/resources/variants/tizyx_k25_0.6.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.8.inst.cfg b/resources/variants/tizyx_k25_0.8.inst.cfg index c80f5e70d2..cca0986ed5 100644 --- a/resources/variants/tizyx_k25_0.8.inst.cfg +++ b/resources/variants/tizyx_k25_0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_1.0.inst.cfg b/resources/variants/tizyx_k25_1.0.inst.cfg index ce8593b1e8..d99948c26c 100644 --- a/resources/variants/tizyx_k25_1.0.inst.cfg +++ b/resources/variants/tizyx_k25_1.0.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.25.inst.cfg b/resources/variants/ultimaker2_0.25.inst.cfg index a58b4d9a56..004cdaf671 100644 --- a/resources/variants/ultimaker2_0.25.inst.cfg +++ b/resources/variants/ultimaker2_0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.4.inst.cfg b/resources/variants/ultimaker2_0.4.inst.cfg index 46845d974e..607d0c4f29 100644 --- a/resources/variants/ultimaker2_0.4.inst.cfg +++ b/resources/variants/ultimaker2_0.4.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.6.inst.cfg b/resources/variants/ultimaker2_0.6.inst.cfg index f9ab1f1358..1ddc07817b 100644 --- a/resources/variants/ultimaker2_0.6.inst.cfg +++ b/resources/variants/ultimaker2_0.6.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.8.inst.cfg b/resources/variants/ultimaker2_0.8.inst.cfg index 3d9c273783..938b472c2c 100644 --- a/resources/variants/ultimaker2_0.8.inst.cfg +++ b/resources/variants/ultimaker2_0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.25.inst.cfg b/resources/variants/ultimaker2_extended_0.25.inst.cfg index f5471fc505..45546c55aa 100644 --- a/resources/variants/ultimaker2_extended_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.4.inst.cfg b/resources/variants/ultimaker2_extended_0.4.inst.cfg index a7d03f2408..fb3d8c1116 100644 --- a/resources/variants/ultimaker2_extended_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.4.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.6.inst.cfg b/resources/variants/ultimaker2_extended_0.6.inst.cfg index 25c180e07e..50f7dc04c6 100644 --- a/resources/variants/ultimaker2_extended_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.6.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.8.inst.cfg b/resources/variants/ultimaker2_extended_0.8.inst.cfg index c33f483da3..178737dbd5 100644 --- a/resources/variants/ultimaker2_extended_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg index c65940251c..7e67824d16 100644 --- a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended_plus [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg index 7493f2af44..1150c6127c 100644 --- a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended_plus [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg index c4a3ab6340..fbdef77918 100644 --- a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended_plus [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg index e77ec2a5c2..106537e0a7 100644 --- a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended_plus [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_plus_0.25.inst.cfg b/resources/variants/ultimaker2_plus_0.25.inst.cfg index 7fd7f3980f..c07b80c246 100644 --- a/resources/variants/ultimaker2_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_plus_0.4.inst.cfg b/resources/variants/ultimaker2_plus_0.4.inst.cfg index 3b54e0cdef..623fffbeb9 100644 --- a/resources/variants/ultimaker2_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.4.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_plus_0.6.inst.cfg b/resources/variants/ultimaker2_plus_0.6.inst.cfg index d8fea055e5..b57fa81dfe 100644 --- a/resources/variants/ultimaker2_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.6.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_plus_0.8.inst.cfg b/resources/variants/ultimaker2_plus_0.8.inst.cfg index 3ae902ac2f..702ec2ef31 100644 --- a/resources/variants/ultimaker2_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_plus [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_aa0.25.inst.cfg b/resources/variants/ultimaker3_aa0.25.inst.cfg index b46fdf5dfb..fc8cc3b090 100644 --- a/resources/variants/ultimaker3_aa0.25.inst.cfg +++ b/resources/variants/ultimaker3_aa0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg index 56740233dd..308bed6fcb 100644 --- a/resources/variants/ultimaker3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_aa0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_aa04.inst.cfg b/resources/variants/ultimaker3_aa04.inst.cfg index ce91e89d26..25230cd30b 100644 --- a/resources/variants/ultimaker3_aa04.inst.cfg +++ b/resources/variants/ultimaker3_aa04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index ace0bf3a94..5ccf2816ff 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index d571cabc9b..d919e5aab7 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg index 714b017653..ce0f20fa7e 100644 --- a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg index f72c96b551..f209508875 100644 --- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_aa04.inst.cfg b/resources/variants/ultimaker3_extended_aa04.inst.cfg index f354784fc6..714d19051f 100644 --- a/resources/variants/ultimaker3_extended_aa04.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index fe760c93b8..528c7f70ec 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index 742dc9896e..5ee562ee38 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_aa0.25.inst.cfg b/resources/variants/ultimaker_s5_aa0.25.inst.cfg index 643513faad..ebdb096b6f 100644 --- a/resources/variants/ultimaker_s5_aa0.25.inst.cfg +++ b/resources/variants/ultimaker_s5_aa0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_aa0.8.inst.cfg b/resources/variants/ultimaker_s5_aa0.8.inst.cfg index eca8c400d0..d8ff1c020e 100644 --- a/resources/variants/ultimaker_s5_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_aa0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_aa04.inst.cfg b/resources/variants/ultimaker_s5_aa04.inst.cfg index b5b694d0c1..ac377e3e78 100644 --- a/resources/variants/ultimaker_s5_aa04.inst.cfg +++ b/resources/variants/ultimaker_s5_aa04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_aluminum.inst.cfg b/resources/variants/ultimaker_s5_aluminum.inst.cfg index 1018b7e5ab..ca457bd7e7 100644 --- a/resources/variants/ultimaker_s5_aluminum.inst.cfg +++ b/resources/variants/ultimaker_s5_aluminum.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = buildplate diff --git a/resources/variants/ultimaker_s5_bb0.8.inst.cfg b/resources/variants/ultimaker_s5_bb0.8.inst.cfg index c1c5c1a10b..bb7f2d1420 100644 --- a/resources/variants/ultimaker_s5_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_bb0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_bb04.inst.cfg b/resources/variants/ultimaker_s5_bb04.inst.cfg index b5ff8d51f6..cda1036507 100644 --- a/resources/variants/ultimaker_s5_bb04.inst.cfg +++ b/resources/variants/ultimaker_s5_bb04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_cc06.inst.cfg b/resources/variants/ultimaker_s5_cc06.inst.cfg index dd888eff6f..afbeb44462 100644 --- a/resources/variants/ultimaker_s5_cc06.inst.cfg +++ b/resources/variants/ultimaker_s5_cc06.inst.cfg @@ -1,19 +1,18 @@ [general] -name = CC Red 0.6 +name = CC 0.6 version = 4 definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = nozzle [values] brim_width = 7 machine_nozzle_cool_down_speed = 0.9 -machine_nozzle_id = CC Red 0.6 +machine_nozzle_id = CC 0.6 machine_nozzle_size = 0.6 -material_print_temperature = =default_material_print_temperature + 10 raft_acceleration = =acceleration_print raft_airgap = 0.3 raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 diff --git a/resources/variants/ultimaker_s5_glass.inst.cfg b/resources/variants/ultimaker_s5_glass.inst.cfg index d74eb3c6c9..e7431c933f 100644 --- a/resources/variants/ultimaker_s5_glass.inst.cfg +++ b/resources/variants/ultimaker_s5_glass.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 5 +setting_version = 6 type = variant hardware_type = buildplate diff --git a/setup.py b/setup.py deleted file mode 100644 index 0d78f44ddc..0000000000 --- a/setup.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright (c) 2015 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from distutils.core import setup -import py2exe -import UM -import UM.Qt #@UnusedImport -import cura #@UnusedImport -import os -import shutil -import site - -# work around the limitation that shutil.copytree does not allow the target directory to exist -def copytree(src, dst, symlinks=False, ignore=None): - if not os.path.exists(dst): - os.makedirs(dst) - for item in os.listdir(src): - s = os.path.join(src, item) - d = os.path.join(dst, item) - if os.path.isdir(s): - copytree(s, d, symlinks, ignore) - else: - shutil.copy2(s, d) - -includes = ["sip", "ctypes", "UM", "PyQt5.QtNetwork", "PyQt5._QOpenGLFunctions_2_0", "serial", "Arcus", "google", "google.protobuf", "google.protobuf.descriptor", "xml.etree", "xml.etree.ElementTree", "cura", "cura.OneAtATimeIterator"] -# Include all the UM modules in the includes. As py2exe fails to properly find all the dependencies due to the plugin architecture. -for dirpath, dirnames, filenames in os.walk(os.path.dirname(UM.__file__)): - if "__" in dirpath: - continue - module_path = dirpath.replace(os.path.dirname(UM.__file__), "UM") - module_path = module_path.split(os.path.sep) - module_name = ".".join(module_path) - if os.path.isfile(dirpath + "/__init__.py"): - includes += [module_name] - for filename in filenames: - if "__" in filename or not filename.endswith(".py"): - continue - includes += [module_name + "." + os.path.splitext(filename)[0]] - -print("Removing previous distribution package") -shutil.rmtree("dist", True) - -setup(name="Cura", - version="15.09.80", - author="Ultimaker", - author_email="a.hiemstra@ultimaker.com", - url="http://software.ultimaker.com/", - license="GNU LESSER GENERAL PUBLIC LICENSE (LGPL)", - scripts=["cura_app.py"], - windows=[{"script": "cura_app.py", "dest_name": "Cura", "icon_resources": [(1, "icons/cura.ico")]}], - #console=[{"script": "cura_app.py"}], - options={"py2exe": {"skip_archive": False, "includes": includes}}) - -print("Copying Cura plugins.") -shutil.copytree(os.path.dirname(UM.__file__) + "/../plugins", "dist/plugins", ignore = shutil.ignore_patterns("ConsoleLogger", "OBJWriter", "MLPWriter", "MLPReader")) -for path in os.listdir("plugins"): - copytree("plugins/" + path, "dist/plugins/" + path) -print("Copying resources.") -copytree(os.path.dirname(UM.__file__) + "/../resources", "dist/resources") -copytree("resources", "dist/resources") -print("Copying Uranium QML.") -shutil.copytree(os.path.dirname(UM.__file__) + "/Qt/qml/UM", "dist/qml/UM") -for site_package in site.getsitepackages(): - qt_origin_path = os.path.join(site_package, "PyQt5") - if os.path.isdir(qt_origin_path): - print("Copying PyQt5 plugins from: %s" % qt_origin_path) - shutil.copytree(os.path.join(qt_origin_path, "plugins"), "dist/PyQt5/plugins") - print("Copying PyQt5 QtQuick from: %s" % qt_origin_path) - shutil.copytree(os.path.join(qt_origin_path, "qml/QtQuick"), "dist/qml/QtQuick") - shutil.copytree(os.path.join(qt_origin_path, "qml/QtQuick.2"), "dist/qml/QtQuick.2") - print("Copying PyQt5 svg library from: %s" % qt_origin_path) - shutil.copy(os.path.join(qt_origin_path, "Qt5Svg.dll"), "dist/Qt5Svg.dll") - print("Copying Angle libraries from %s" % qt_origin_path) - shutil.copy(os.path.join(qt_origin_path, "libEGL.dll"), "dist/libEGL.dll") - shutil.copy(os.path.join(qt_origin_path, "libGLESv2.dll"), "dist/libGLESv2.dll") -os.rename("dist/cura_app.exe", "dist/Cura.exe") diff --git a/tests/TestPrintInformation.py b/tests/TestPrintInformation.py index a226a437c6..baa36fb338 100644 --- a/tests/TestPrintInformation.py +++ b/tests/TestPrintInformation.py @@ -1,5 +1,7 @@ +import functools from cura import PrintInformation +from cura.Settings.MachineManager import MachineManager from unittest.mock import MagicMock, patch from UM.Application import Application @@ -11,14 +13,20 @@ def getPrintInformation(printer_name) -> PrintInformation: mock_application = MagicMock() global_container_stack = MagicMock() - global_container_stack.definition.getName = MagicMock(return_value=printer_name) - mock_application.getGlobalContainerStack = MagicMock(return_value=global_container_stack) + global_container_stack.definition.getName = MagicMock(return_value = printer_name) + mock_application.getGlobalContainerStack = MagicMock(return_value = global_container_stack) - multiBuildPlateModel = MagicMock() - multiBuildPlateModel.maxBuildPlate = 0 - mock_application.getMultiBuildPlateModel = MagicMock(return_value=multiBuildPlateModel) + multi_build_plate_model = MagicMock() + multi_build_plate_model.maxBuildPlate = 0 + mock_application.getMultiBuildPlateModel = MagicMock(return_value = multi_build_plate_model) - Application.getInstance = MagicMock(return_type=mock_application) + # Mock-up the entire machine manager except the function that needs to be tested: getAbbreviatedMachineName + original_get_abbreviated_name = MachineManager.getAbbreviatedMachineName + mock_machine_manager = MagicMock() + mock_machine_manager.getAbbreviatedMachineName = functools.partial(original_get_abbreviated_name, mock_machine_manager) + mock_application.getMachineManager = MagicMock(return_value = mock_machine_manager) + + Application.getInstance = MagicMock(return_type = mock_application) with patch("json.loads", lambda x: {}): print_information = PrintInformation.PrintInformation(mock_application) @@ -28,17 +36,17 @@ def getPrintInformation(printer_name) -> PrintInformation: def setup_module(): MimeTypeDatabase.addMimeType( MimeType( - name="application/vnd.ms-package.3dmanufacturing-3dmodel+xml", - comment="3MF", - suffixes=["3mf"] + name = "application/vnd.ms-package.3dmanufacturing-3dmodel+xml", + comment = "3MF", + suffixes = ["3mf"] ) ) MimeTypeDatabase.addMimeType( MimeType( - name="application/x-cura-gcode-file", - comment="Cura GCode File", - suffixes=["gcode"] + name = "application/x-cura-gcode-file", + comment = "Cura GCode File", + suffixes = ["gcode"] ) ) @@ -49,42 +57,42 @@ def test_setProjectName(): print_information = getPrintInformation("ultimaker") # Test simple name - project_name = ["HelloWorld",".3mf"] + project_name = ["HelloWorld", ".3mf"] print_information.setProjectName(project_name[0] + project_name[1]) assert "UM_" + project_name[0] == print_information._job_name # Test the name with one dot - project_name = ["Hello.World",".3mf"] + project_name = ["Hello.World", ".3mf"] print_information.setProjectName(project_name[0] + project_name[1]) assert "UM_" + project_name[0] == print_information._job_name # Test the name with two dot - project_name = ["Hello.World.World",".3mf"] + project_name = ["Hello.World.World", ".3mf"] print_information.setProjectName(project_name[0] + project_name[1]) assert "UM_" + project_name[0] == print_information._job_name # Test the name with dot at the beginning - project_name = [".Hello.World",".3mf"] + project_name = [".Hello.World", ".3mf"] print_information.setProjectName(project_name[0] + project_name[1]) assert "UM_" + project_name[0] == print_information._job_name # Test the name with underline - project_name = ["Hello_World",".3mf"] + project_name = ["Hello_World", ".3mf"] print_information.setProjectName(project_name[0] + project_name[1]) assert "UM_" + project_name[0] == print_information._job_name # Test gcode extension - project_name = ["Hello_World",".gcode"] + project_name = ["Hello_World", ".gcode"] print_information.setProjectName(project_name[0] + project_name[1]) assert "UM_" + project_name[0] == print_information._job_name # Test empty project name - project_name = ["",""] + project_name = ["", ""] print_information.setProjectName(project_name[0] + project_name[1]) assert print_information.UNTITLED_JOB_NAME == print_information._job_name # Test wrong file extension - project_name = ["Hello_World",".test"] + project_name = ["Hello_World", ".test"] print_information.setProjectName(project_name[0] + project_name[1]) assert "UM_" + project_name[0] != print_information._job_name @@ -93,7 +101,7 @@ def test_setJobName(): print_information = getPrintInformation("ultimaker") print_information._abbr_machine = "UM" - print_information.setJobName("UM_HelloWorld", is_user_specified_job_name=False) + print_information.setJobName("UM_HelloWorld", is_user_specified_job_name = False) def test_defineAbbreviatedMachineName(): @@ -102,6 +110,6 @@ def test_defineAbbreviatedMachineName(): print_information = getPrintInformation(printer_name) # Test not ultimaker printer, name suffix should have first letter from the printer name - project_name = ["HelloWorld",".3mf"] + project_name = ["HelloWorld", ".3mf"] print_information.setProjectName(project_name[0] + project_name[1]) assert printer_name[0] + "_" + project_name[0] == print_information._job_name \ No newline at end of file