Merge remote-tracking branch 'upstream/3.0'

This commit is contained in:
Lipu Fei 2017-10-05 15:49:18 +02:00
commit 185c350a19
14 changed files with 322 additions and 289 deletions

View file

@ -100,8 +100,15 @@ class ProfilesModel(InstanceContainersModel):
extruder_stacks = extruder_manager.getActiveExtruderStacks() extruder_stacks = extruder_manager.getActiveExtruderStacks()
if multiple_extrusion: if multiple_extrusion:
# Place the active extruder at the front of the list. # Place the active extruder at the front of the list.
extruder_stacks.remove(active_extruder) # This is a workaround checking if there is an active_extruder or not before moving it to the front of the list.
extruder_stacks = [active_extruder] + extruder_stacks # Actually, when a printer has multiple extruders, should exist always an active_extruder. However, in some
# cases the active_extruder is still None.
if active_extruder in extruder_stacks:
extruder_stacks.remove(active_extruder)
new_extruder_stacks = []
if active_extruder is not None:
new_extruder_stacks = [active_extruder]
extruder_stacks = new_extruder_stacks + extruder_stacks
# Get a list of usable/available qualities for this machine and material # Get a list of usable/available qualities for this machine and material
qualities = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, qualities = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack,

View file

@ -33,8 +33,15 @@ class QualityAndUserProfilesModel(ProfilesModel):
extruder_stacks = extruder_manager.getActiveExtruderStacks() extruder_stacks = extruder_manager.getActiveExtruderStacks()
if multiple_extrusion: if multiple_extrusion:
# Place the active extruder at the front of the list. # Place the active extruder at the front of the list.
extruder_stacks.remove(active_extruder) # This is a workaround checking if there is an active_extruder or not before moving it to the front of the list.
extruder_stacks = [active_extruder] + extruder_stacks # Actually, when a printer has multiple extruders, should exist always an active_extruder. However, in some
# cases the active_extruder is still None.
if active_extruder in extruder_stacks:
extruder_stacks.remove(active_extruder)
new_extruder_stacks = []
if active_extruder is not None:
new_extruder_stacks = [active_extruder]
extruder_stacks = new_extruder_stacks + extruder_stacks
# Fetch the list of useable qualities across all extruders. # Fetch the list of useable qualities across all extruders.
# The actual list of quality profiles come from the first extruder in the extruder list. # The actual list of quality profiles come from the first extruder in the extruder list.

View file

@ -33,8 +33,15 @@ class UserProfilesModel(ProfilesModel):
extruder_stacks = extruder_manager.getActiveExtruderStacks() extruder_stacks = extruder_manager.getActiveExtruderStacks()
if multiple_extrusion: if multiple_extrusion:
# Place the active extruder at the front of the list. # Place the active extruder at the front of the list.
extruder_stacks.remove(active_extruder) # This is a workaround checking if there is an active_extruder or not before moving it to the front of the list.
extruder_stacks = [active_extruder] + extruder_stacks # Actually, when a printer has multiple extruders, should exist always an active_extruder. However, in some
# cases the active_extruder is still None.
if active_extruder in extruder_stacks:
extruder_stacks.remove(active_extruder)
new_extruder_stacks = []
if active_extruder is not None:
new_extruder_stacks = [active_extruder]
extruder_stacks = new_extruder_stacks + extruder_stacks
# Fetch the list of useable qualities across all extruders. # Fetch the list of useable qualities across all extruders.
# The actual list of quality profiles come from the first extruder in the extruder list. # The actual list of quality profiles come from the first extruder in the extruder list.

View file

@ -239,8 +239,9 @@ class WorkspaceDialog(QObject):
# If the machine needs to be re-created, the definition_changes should also be re-created. # If the machine needs to be re-created, the definition_changes should also be re-created.
# If the machine strategy is None, it means that there is no name conflict with existing ones. In this case # If the machine strategy is None, it means that there is no name conflict with existing ones. In this case
# new definitions changes are created # new definitions changes are created
if "machine" in self._result and self._result["machine"] == "new" or self._result["machine"] is None and self._result["definition_changes"] is None: if "machine" in self._result:
self._result["definition_changes"] = "new" if self._result["machine"] == "new" or self._result["machine"] is None and self._result["definition_changes"] is None:
self._result["definition_changes"] = "new"
return self._result return self._result

View file

@ -15,7 +15,7 @@ UM.Dialog
minimumWidth: 500 * screenScaleFactor minimumWidth: 500 * screenScaleFactor
minimumHeight: 400 * screenScaleFactor minimumHeight: 400 * screenScaleFactor
width: minimumWidth width: minimumWidth
height: minumumHeight height: minimumHeight
property int comboboxHeight: 15 * screenScaleFactor property int comboboxHeight: 15 * screenScaleFactor
property int spacerHeight: 10 * screenScaleFactor property int spacerHeight: 10 * screenScaleFactor

View file

@ -481,18 +481,9 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
# Check if we were uploading something. Abort if this is the case. # Check if we were uploading something. Abort if this is the case.
# Some operating systems handle this themselves, others give weird issues. # Some operating systems handle this themselves, others give weird issues.
try: if self._post_reply:
if self._post_reply: Logger.log("d", "Stopping post upload because the connection was lost.")
Logger.log("d", "Stopping post upload because the connection was lost.") self._finalizePostReply()
try:
self._post_reply.uploadProgress.disconnect(self._onUploadProgress)
except TypeError:
pass # The disconnection can fail on mac in some cases. Ignore that.
self._post_reply.abort()
self._post_reply = None
except RuntimeError:
self._post_reply = None # It can happen that the wrapped c++ object is already deleted.
return return
else: else:
if not self._connection_state_before_timeout: if not self._connection_state_before_timeout:
@ -513,18 +504,9 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
# Check if we were uploading something. Abort if this is the case. # Check if we were uploading something. Abort if this is the case.
# Some operating systems handle this themselves, others give weird issues. # Some operating systems handle this themselves, others give weird issues.
try: if self._post_reply:
if self._post_reply: Logger.log("d", "Stopping post upload because the connection was lost.")
Logger.log("d", "Stopping post upload because the connection was lost.") self._finalizePostReply()
try:
self._post_reply.uploadProgress.disconnect(self._onUploadProgress)
except TypeError:
pass # The disconnection can fail on mac in some cases. Ignore that.
self._post_reply.abort()
self._post_reply = None
except RuntimeError:
self._post_reply = None # It can happen that the wrapped c++ object is already deleted.
self.setConnectionState(ConnectionState.error) self.setConnectionState(ConnectionState.error)
return return
@ -545,6 +527,26 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
self._last_request_time = time() self._last_request_time = time()
def _finalizePostReply(self):
if self._post_reply is None:
return
try:
try:
self._post_reply.uploadProgress.disconnect(self._onUploadProgress)
except TypeError:
pass # The disconnection can fail on mac in some cases. Ignore that.
try:
self._post_reply.finished.disconnect(self._onUploadFinished)
except TypeError:
pass # The disconnection can fail on mac in some cases. Ignore that.
self._post_reply.abort()
self._post_reply = None
except RuntimeError:
self._post_reply = None # It can happen that the wrapped c++ object is already deleted.
def _createNetworkManager(self): def _createNetworkManager(self):
if self._manager: if self._manager:
self._manager.finished.disconnect(self._onFinished) self._manager.finished.disconnect(self._onFinished)
@ -653,14 +655,6 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
# \param kwargs Keyword arguments. # \param kwargs Keyword arguments.
def requestWrite(self, nodes, file_name=None, filter_by_machine=False, file_handler=None, **kwargs): def requestWrite(self, nodes, file_name=None, filter_by_machine=False, file_handler=None, **kwargs):
# Check if we're already writing
if not self._write_finished:
self._error_message = Message(
i18n_catalog.i18nc("@info:status",
"Sending new jobs (temporarily) blocked, still sending the previous print job."))
self._error_message.show()
return
if self._printer_state not in ["idle", ""]: if self._printer_state not in ["idle", ""]:
self._error_message = Message( self._error_message = Message(
i18n_catalog.i18nc("@info:status", "Unable to start a new print job, printer is busy. Current printer status is %s.") % self._printer_state, i18n_catalog.i18nc("@info:status", "Unable to start a new print job, printer is busy. Current printer status is %s.") % self._printer_state,
@ -760,6 +754,14 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
) )
return return
# Check if we're already writing
if not self._write_finished:
self._error_message = Message(
i18n_catalog.i18nc("@info:status",
"Sending new jobs (temporarily) blocked, still sending the previous print job."))
self._error_message.show()
return
# Indicate we're starting a new write action, is set back to True in the startPrint() method # Indicate we're starting a new write action, is set back to True in the startPrint() method
self._write_finished = False self._write_finished = False
@ -846,8 +848,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
self._progress_message.hide() self._progress_message.hide()
self._compressing_print = False self._compressing_print = False
if self._post_reply: if self._post_reply:
self._post_reply.abort() self._finalizePostReply()
self._post_reply = None
Application.getInstance().showPrintMonitor.emit(False) Application.getInstance().showPrintMonitor.emit(False)
## Attempt to start a new print. ## Attempt to start a new print.
@ -995,10 +996,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
# Check if we were uploading something. Abort if this is the case. # Check if we were uploading something. Abort if this is the case.
# Some operating systems handle this themselves, others give weird issues. # Some operating systems handle this themselves, others give weird issues.
if self._post_reply: if self._post_reply:
self._post_reply.abort() self._finalizePostReply()
self._post_reply.uploadProgress.disconnect(self._onUploadProgress)
Logger.log("d", "Uploading of print failed after %s", time() - self._send_gcode_start) Logger.log("d", "Uploading of print failed after %s", time() - self._send_gcode_start)
self._post_reply = None
self._progress_message.hide() self._progress_message.hide()
self.setConnectionState(ConnectionState.error) self.setConnectionState(ConnectionState.error)
@ -1204,6 +1203,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice):
del self._material_post_objects[id(reply)] del self._material_post_objects[id(reply)]
elif "print_job" in reply_url: elif "print_job" in reply_url:
reply.uploadProgress.disconnect(self._onUploadProgress) reply.uploadProgress.disconnect(self._onUploadProgress)
reply.finished.disconnect(self._onUploadFinished)
Logger.log("d", "Uploading of print succeeded after %s", time() - self._send_gcode_start) Logger.log("d", "Uploading of print succeeded after %s", time() - self._send_gcode_start)
# Only reset the _post_reply if it was the same one. # Only reset the _post_reply if it was the same one.
if reply == self._post_reply: if reply == self._post_reply:

View file

@ -1,6 +1,6 @@
{ {
"id": "creality-cr10_beta", "id": "creality_cr10",
"name": "Creality CR-10 Beta", "name": "Creality CR-10",
"version": 2, "version": 2,
"inherits": "fdmprinter", "inherits": "fdmprinter",
"metadata": { "metadata": {
@ -50,7 +50,7 @@
"default_value": 40 "default_value": 40
}, },
"cool_min_layer_time": { "cool_min_layer_time": {
"default_value": 15 "default_value": 10
}, },
"adhesion_type": { "adhesion_type": {
"default_value": "skirt" "default_value": "skirt"

View file

@ -1,8 +1,8 @@
{ {
"id": "creality-cr10s4_beta", "id": "creality_cr10s4",
"name": "Creality CR-10 S4 Beta", "name": "Creality CR-10 S4",
"version": 2, "version": 2,
"inherits": "creality_cr10_beta", "inherits": "creality_cr10",
"metadata": { "metadata": {
"visible": true, "visible": true,
"author": "Michael Wildermuth", "author": "Michael Wildermuth",

View file

@ -1,8 +1,8 @@
{ {
"id": "creality-cr10s5_beta", "id": "creality_cr10s5",
"name": "Creality CR-10 S5 Beta", "name": "Creality CR-10 S5",
"version": 2, "version": 2,
"inherits": "creality_cr10_beta", "inherits": "creality_cr10",
"metadata": { "metadata": {
"visible": true, "visible": true,
"author": "Michael Wildermuth", "author": "Michael Wildermuth",

View file

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: Cura 3.0\n" "Project-Id-Version: Cura 3.0\n"
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n"
"POT-Creation-Date: 2017-08-02 16:53+0000\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n"
"PO-Revision-Date: 2017-08-04 10:18+0900\n" "PO-Revision-Date: 2017-10-02 17:55+0900\n"
"Last-Translator: Brule\n" "Last-Translator: Brule\n"
"Language-Team: Bryke\n" "Language-Team: Brule\n"
"Language: ja_JP\n" "Language: ja_JP\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.1\n" "X-Generator: Poedit 2.0.4\n"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_settings label" msgctxt "machine_settings label"
@ -80,7 +80,7 @@ msgstr "ズルのY軸のオフセット"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_start_code label" msgctxt "machine_extruder_start_code label"
msgid "Extruder Start G-Code" msgid "Extruder Start G-Code"
msgstr "" msgstr "エクストルーダー G-Codeを開始する"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_start_code description" msgctxt "machine_extruder_start_code description"
@ -90,7 +90,7 @@ msgstr "エクストルーダーを使う度にGコードを展開します。
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs label" msgctxt "machine_extruder_start_pos_abs label"
msgid "Extruder Start Position Absolute" msgid "Extruder Start Position Absolute"
msgstr "" msgstr "エクストルーダーのスタート位置の絶対値"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_abs description" msgctxt "machine_extruder_start_pos_abs description"
@ -100,7 +100,7 @@ msgstr "ヘッドの最後の既知位置からではなく、エクストルー
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x label" msgctxt "machine_extruder_start_pos_x label"
msgid "Extruder Start Position X" msgid "Extruder Start Position X"
msgstr "" msgstr "エクストルーダー スタート位置X"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_x description" msgctxt "machine_extruder_start_pos_x description"
@ -110,7 +110,7 @@ msgstr "エクストルーダーのX座標のスタート位置"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y label" msgctxt "machine_extruder_start_pos_y label"
msgid "Extruder Start Position Y" msgid "Extruder Start Position Y"
msgstr "" msgstr "エクストルーダースタート位置Y"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_start_pos_y description" msgctxt "machine_extruder_start_pos_y description"
@ -120,7 +120,7 @@ msgstr "エクストルーダーのY座標のスタート位置"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_end_code label" msgctxt "machine_extruder_end_code label"
msgid "Extruder End G-Code" msgid "Extruder End G-Code"
msgstr "" msgstr "エクストルーダーG-Codeを終了する。"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_end_code description" msgctxt "machine_extruder_end_code description"
@ -130,7 +130,7 @@ msgstr "エクストルーダーを使用しないときにGコードを終了
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs label" msgctxt "machine_extruder_end_pos_abs label"
msgid "Extruder End Position Absolute" msgid "Extruder End Position Absolute"
msgstr "" msgstr "エクストルーダーのエンドポジションの絶対値"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_abs description" msgctxt "machine_extruder_end_pos_abs description"
@ -140,7 +140,7 @@ msgstr "ヘッドの既存の認識位置よりもエクストルーダーの最
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x label" msgctxt "machine_extruder_end_pos_x label"
msgid "Extruder End Position X" msgid "Extruder End Position X"
msgstr "" msgstr "エクストルーダーエンド位置X"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_x description" msgctxt "machine_extruder_end_pos_x description"
@ -150,7 +150,7 @@ msgstr "エクストルーダーを切った際のX座標の最終位置"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y label" msgctxt "machine_extruder_end_pos_y label"
msgid "Extruder End Position Y" msgid "Extruder End Position Y"
msgstr "" msgstr "エクストルーダーエンド位置Y"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_extruder_end_pos_y description" msgctxt "machine_extruder_end_pos_y description"
@ -160,7 +160,7 @@ msgstr "エクストルーダーを切った際のY座標の最終位置"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "extruder_prime_pos_z label" msgctxt "extruder_prime_pos_z label"
msgid "Extruder Prime Z Position" msgid "Extruder Prime Z Position"
msgstr "" msgstr "エクストルーダープライムZ位置"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "extruder_prime_pos_z description" msgctxt "extruder_prime_pos_z description"
@ -170,7 +170,7 @@ msgstr "印刷開始時にズルがポジションを確認するZ座標。"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "platform_adhesion label" msgctxt "platform_adhesion label"
msgid "Build Plate Adhesion" msgid "Build Plate Adhesion"
msgstr "" msgstr "ビルドプレート密着性"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "platform_adhesion description" msgctxt "platform_adhesion description"
@ -180,7 +180,7 @@ msgstr "接着力"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "extruder_prime_pos_x label" msgctxt "extruder_prime_pos_x label"
msgid "Extruder Prime X Position" msgid "Extruder Prime X Position"
msgstr "" msgstr "エクストルーダープライムX位置"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "extruder_prime_pos_x description" msgctxt "extruder_prime_pos_x description"
@ -190,7 +190,7 @@ msgstr "印刷開始時にズルがポジションを確認するX座標。"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "extruder_prime_pos_y label" msgctxt "extruder_prime_pos_y label"
msgid "Extruder Prime Y Position" msgid "Extruder Prime Y Position"
msgstr "" msgstr "エクストルーダープライムY位置"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "extruder_prime_pos_y description" msgctxt "extruder_prime_pos_y description"

File diff suppressed because it is too large Load diff

View file

@ -8,9 +8,9 @@ msgstr ""
"Project-Id-Version: Cura 3.0\n" "Project-Id-Version: Cura 3.0\n"
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n"
"POT-Creation-Date: 2017-08-02 16:53+0000\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n"
"PO-Revision-Date: 2017-08-08 21:57+0900\n" "PO-Revision-Date: 2017-09-20 14:31+0900\n"
"Last-Translator: None\n" "Last-Translator: Brule\n"
"Language-Team: None\n" "Language-Team: Brule\n"
"Language: ko_KR\n" "Language: ko_KR\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -21,7 +21,7 @@ msgstr ""
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_settings label" msgctxt "machine_settings label"
msgid "Machine" msgid "Machine"
msgstr "장비 " msgstr "기계"
#: fdmextruder.def.json #: fdmextruder.def.json
msgctxt "machine_settings description" msgctxt "machine_settings description"

View file

@ -8,9 +8,9 @@ msgstr ""
"Project-Id-Version: Cura 3.0\n" "Project-Id-Version: Cura 3.0\n"
"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n"
"POT-Creation-Date: 2017-08-02 16:53+0000\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n"
"PO-Revision-Date: 2017-08-08 23:38+0900\n" "PO-Revision-Date: 2017-09-21 14:58+0900\n"
"Last-Translator: None\n" "Last-Translator: Brule\n"
"Language-Team: None\n" "Language-Team: Brule\n"
"Language: ko_KR\n" "Language: ko_KR\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -1220,7 +1220,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "infill_extruder_nr description" msgctxt "infill_extruder_nr description"
msgid "The extruder train used for printing infill. This is used in multi-extrusion." msgid "The extruder train used for printing infill. This is used in multi-extrusion."
msgstr "충용 인쇄에 사용되는 압출기 트레인. 이것은 다중 압출에 사용됩니다." msgstr "충용 인쇄에 사용되는 압출기 트레인. 이것은 다중 압출에 사용됩니다."
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "infill_sparse_density label" msgctxt "infill_sparse_density label"
@ -1250,7 +1250,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "infill_pattern description" 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, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." 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, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. 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 #: fdmprinter.def.json
msgctxt "infill_pattern option grid" msgctxt "infill_pattern option grid"
@ -1320,7 +1320,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "zig_zaggify_infill description" msgctxt "zig_zaggify_infill description"
msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used."
msgstr "" msgstr "내부 벽의 모양을 따르는 선을 사용하여 충전 패턴이 내부 벽과 만나는 끝을 연결하십시오. 이 설정을 사용하면 벽에 충전재가 잘 밀착되고 수직 표면의 품질에 영향을 줄 수 있습니다. 이 설정을 사용하지 않으면 사용되는 재료의 양이 줄어 듭니다. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "infill_angles label" msgctxt "infill_angles label"
@ -1450,7 +1450,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "skin_preshrink description" msgctxt "skin_preshrink description"
msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model."
msgstr "" msgstr "제거 할 외부스킨 영역의 가장 큰 너비. 이 값보다 작은 모든 스킨 영역은 사라집니다. 이렇게하면 모델의 경사면에서 위쪽 / 아래쪽 스킨을 인쇄하는 데 소요되는 시간과 재료의 양을 제한하는 데 도움이됩니다. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "top_skin_preshrink label" msgctxt "top_skin_preshrink label"
@ -1460,7 +1460,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "top_skin_preshrink description" msgctxt "top_skin_preshrink description"
msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model."
msgstr "" msgstr "제거 할 상단 스킨 영역의 가장 큰 너비. 이 값보다 작은 모든 스킨 영역은 사라집니다. 이렇게하면 모델의 경사면에서 상단 스킨을 인쇄하는 데 소요되는 시간과 재료의 양을 제한하는 데 도움이됩니다."
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "bottom_skin_preshrink label" msgctxt "bottom_skin_preshrink label"
@ -1470,7 +1470,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "bottom_skin_preshrink description" msgctxt "bottom_skin_preshrink description"
msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model."
msgstr "" msgstr "제거 할 바닥 스킨 영역의 최대 너비. 이 값보다 작은 모든 스킨 영역은 사라집니다. 이렇게하면 모델의 경사면에서 밑면 스킨을 인쇄하는 데 소요되는 시간과 재료의 양을 제한하는 데 도움이됩니다."
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "expand_skins_expand_distance label" msgctxt "expand_skins_expand_distance label"
@ -1480,7 +1480,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "expand_skins_expand_distance description" msgctxt "expand_skins_expand_distance description"
msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used."
msgstr "" msgstr "스킨이 infill로 확장되는 거리입니다. 값이 높을수록 스킨이 충 패턴에 더 잘 부착되고 인접 레이어의 벽이 피부에 잘 밀착됩니다. 값이 낮을수록 사용 된 재료의 양이 절약됩니다. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "top_skin_expand_distance label" msgctxt "top_skin_expand_distance label"
@ -1490,7 +1490,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "top_skin_expand_distance description" msgctxt "top_skin_expand_distance description"
msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used."
msgstr "" msgstr "상단 스킨의 거리가 infill로 확장됩니다. 값이 높을수록 스킨이 충 패턴에 더 잘 부착되며 위 레이어의 벽이 피부에 잘 밀착됩니다. 값이 낮을수록 사용 된 재료의 양이 절약됩니다. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "bottom_skin_expand_distance label" msgctxt "bottom_skin_expand_distance label"
@ -1500,7 +1500,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "bottom_skin_expand_distance description" msgctxt "bottom_skin_expand_distance description"
msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used."
msgstr "" msgstr "바닥 스킨의 거리가 infill로 확장됩니다. 값이 높을수록 피부가 충 패턴에 더 잘 붙어 피부가 아래 층의 벽에 잘 밀착됩니다. 값이 낮을수록 사용 된 재료의 양이 절약됩니다. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "max_skin_angle_for_expansion label" msgctxt "max_skin_angle_for_expansion label"
@ -1510,7 +1510,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "max_skin_angle_for_expansion description" msgctxt "max_skin_angle_for_expansion description"
msgid "Top and/or bottom surfaces of your object with an angle larger than this setting, won't have their top/bottom skin expanded. This avoids expanding the narrow skin areas that are created when the model surface has a near vertical slope. An angle of 0° is horizontal, while an angle of 90° is vertical." msgid "Top and/or bottom surfaces of your object with an angle larger than this setting, won't have their top/bottom skin expanded. This avoids expanding the narrow skin areas that are created when the model surface has a near vertical slope. An angle of 0° is horizontal, while an angle of 90° is vertical."
msgstr "이 설정보다 큰 각도로 객체의 상단 및 / 또는 하단 표면은 위쪽 / 아래쪽 스킨이 확장되지 않습니다. 이렇게하면 모델 표면이 수직 경사가 거의 없을 때 생성되는 좁은 스킨 영역을 확장하지 않아도됩니다. \"0\" 도의 각도는 수평이며, 90 도의 각도는 수직입니다. " msgstr "이 설정보다 큰 각도로 객체의 상단 및 또는 하단 표면은 위쪽 / 아래쪽 스킨이 확장되지 않습니다. 이렇게하면 모델 표면이 수직 경사가 거의 없을 때 생성되는 좁은 스킨 영역을 확장하지 않아도됩니다. \"0\" 도의 각도는 수평이며, 90 도의 각도는 수직입니다. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "min_skin_width_for_expansion label" msgctxt "min_skin_width_for_expansion label"
@ -1870,7 +1870,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "speed_roofing description" msgctxt "speed_roofing description"
msgid "The speed at which top surface skin layers are printed." msgid "The speed at which top surface skin layers are printed."
msgstr "" msgstr "상단 표면 스킨 층이 인쇄되는 속도."
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "speed_topbottom label" msgctxt "speed_topbottom label"
@ -2840,7 +2840,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "support_skip_some_zags description" msgctxt "support_skip_some_zags description"
msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern."
msgstr "" msgstr "지원 구조가 쉽게 끊어 지도록 지원 라인 연결을 건너 뛰십시오. 이 설정은 지그재그 지원 충전 패턴에 적용됩니다. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "support_skip_zag_per_mm label" msgctxt "support_skip_zag_per_mm label"
@ -2850,7 +2850,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "support_skip_zag_per_mm description" msgctxt "support_skip_zag_per_mm description"
msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away."
msgstr "" msgstr "지지 구조를 쉽게 분리 할 수 있도록 N 밀리미터마다 지지선 사이를 연결하십시오. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "support_zag_skip_count label" msgctxt "support_zag_skip_count label"
@ -2860,7 +2860,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "support_zag_skip_count description" msgctxt "support_zag_skip_count description"
msgid "Skip one in every N connection lines to make the support structure easier to break away." msgid "Skip one in every N connection lines to make the support structure easier to break away."
msgstr "" msgstr "지원 구조를 쉽게 깨뜨릴 수 있도록 모든 N 개의 연결 라인을 건너 뜁니다. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "support_infill_rate label" msgctxt "support_infill_rate label"
@ -3452,7 +3452,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "z_offset_layer_0 description" msgctxt "z_offset_layer_0 description"
msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly."
msgstr "" msgstr "압출기는이 양만큼 제 1 층의 정상 높이로부터 오프셋된다. 양수 (양수) 또는 음수 (양수) 일 수 있습니다. 압출기를 약간 올리면 일부 필라멘트 유형이 빌드 플레이트에 잘 밀착됩니다. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "z_offset_taper_layers label" msgctxt "z_offset_taper_layers label"
@ -3462,7 +3462,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "z_offset_taper_layers description" msgctxt "z_offset_taper_layers description"
msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print."
msgstr "" msgstr "0이 아니면 Z 오프셋은 많은 레이어에서 0으로 줄어 듭니다. 값 0은 인쇄물의 모든 레이어에 대해 Z 오프셋이 일정하게 유지됨을 의미합니다. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "raft_margin label" msgctxt "raft_margin label"
@ -3482,7 +3482,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "raft_smoothing description" msgctxt "raft_smoothing description"
msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle."
msgstr "" msgstr "이 설정은 뗏목 윤곽의 내부 모서리가 둥근 정도를 제어합니다. 안쪽 모서리는 여기에 주어진 값과 같은 반경을 가진 반원으로 반올림됩니다. 이 설정은 또한 뗏목 외곽선에서 그러한 원보다 작은 구멍을 제거합니다. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "raft_airgap label" msgctxt "raft_airgap label"
@ -4167,7 +4167,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "relative_extrusion description" msgctxt "relative_extrusion description"
msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output."
msgstr "" msgstr "절대 돌출보다는 상대적 돌출을 사용하십시오. 상대적인 E-steps을 사용하면 Gcode를보다 쉽게 후 처리 할 수 있습니다. 그러나 모든 프린터에서 지원되는 것은 아니며 절대 E 단계와 비교할 때 증착 된 재료의 양이 매우 약간 다를 수 있습니다. 이 설정과 관계없이 압출 모드는 Gcode 스크립트가 출력되기 전에 항상 절대 값으로 설정됩니다. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "experimental label" msgctxt "experimental label"
@ -4187,7 +4187,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "optimize_wall_printing_order description" msgctxt "optimize_wall_printing_order description"
msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization."
msgstr "" msgstr "수축 및 이동 거리를 줄이도록 벽이 인쇄되는 순서를 최적화하십시오. 대부분의 부품은이 기능을 사용하면 도움이되지만, 실제로는 시간이 오래 걸릴 수 있으므로, 최적화 여부에 관계없이 인쇄 시간을 비교하십시오. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "draft_shield_enabled label" msgctxt "draft_shield_enabled label"
@ -4317,7 +4317,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "cross_infill_pocket_size description" msgctxt "cross_infill_pocket_size description"
msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself."
msgstr "" msgstr "패턴이 만지는 높이에서 크로스 3D 패턴의 4 방향 교차점에있는 포켓의 크기입니다. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "cross_infill_apply_pockets_alternatingly label" msgctxt "cross_infill_apply_pockets_alternatingly label"
@ -4327,7 +4327,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "cross_infill_apply_pockets_alternatingly description" msgctxt "cross_infill_apply_pockets_alternatingly description"
msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself."
msgstr "" msgstr "십자형 3D 패턴에서 4방향 교차점의 절반에만 포켓을 적용하고 패턴이 만지는 높이 사이의 포켓 위치를 교체하십시오. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "spaghetti_infill_enabled label" msgctxt "spaghetti_infill_enabled label"
@ -4754,7 +4754,7 @@ msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "ironing_only_highest_layer description" msgctxt "ironing_only_highest_layer description"
msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish."
msgstr "" msgstr "메쉬의 마지막 레이어에서만 다림질을 수행하십시오. 낮은 레이어에서 매끄러운 표면 처리가 필요하지 않은 경우 시간을 절약 할 수 있습니다. "
#: fdmprinter.def.json #: fdmprinter.def.json
msgctxt "ironing_pattern label" msgctxt "ironing_pattern label"

View file

@ -221,40 +221,51 @@ Rectangle
ComboBox ComboBox
{ {
id: viewModeButton id: viewModeButton
anchors
{ anchors {
verticalCenter: parent.verticalCenter verticalCenter: parent.verticalCenter
right: parent.right right: parent.right
rightMargin: UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width rightMargin: UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width
} }
style: UM.Theme.styles.combobox style: UM.Theme.styles.combobox
visible: !base.monitoringPrint visible: !base.monitoringPrint
model: UM.ViewModel { } model: UM.ViewModel { }
textRole: "name" textRole: "name"
onCurrentIndexChanged: // update the model's active index
{ function updateItemActiveFlags () {
UM.Controller.setActiveView(model.getItem(currentIndex).id); currentIndex = getActiveIndex()
for (var i = 0; i < model.rowCount(); i++) {
// Update the active flag model.getItem(i).active = (i == currentIndex)
for (var i = 0; i < model.rowCount; ++i)
{
const is_active = i == currentIndex;
model.getItem(i).active = is_active;
} }
} }
currentIndex: // get the index of the active model item on start
{ function getActiveIndex () {
for (var i = 0; i < model.rowCount; ++i) for (var i = 0; i < model.rowCount(); i++) {
{ if (model.getItem(i).active) {
if (model.getItem(i).active) return i
{
return i;
} }
} }
return 0; 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: 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()
} }
} }