mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-15 23:05:57 +08:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
0fe39017b1
3
.gitignore
vendored
3
.gitignore
vendored
@ -10,6 +10,8 @@ resources/i18n/en_7S
|
|||||||
resources/i18n/x-test
|
resources/i18n/x-test
|
||||||
resources/firmware
|
resources/firmware
|
||||||
resources/materials
|
resources/materials
|
||||||
|
resources/images/whats_new
|
||||||
|
resources/texts/whats_new
|
||||||
CuraEngine.exe
|
CuraEngine.exe
|
||||||
LC_MESSAGES
|
LC_MESSAGES
|
||||||
.cache
|
.cache
|
||||||
@ -37,6 +39,7 @@ cura.desktop
|
|||||||
|
|
||||||
#Externally located plug-ins commonly installed by our devs.
|
#Externally located plug-ins commonly installed by our devs.
|
||||||
plugins/cura-big-flame-graph
|
plugins/cura-big-flame-graph
|
||||||
|
plugins/cura-camera-position
|
||||||
plugins/cura-god-mode-plugin
|
plugins/cura-god-mode-plugin
|
||||||
plugins/cura-siemensnx-plugin
|
plugins/cura-siemensnx-plugin
|
||||||
plugins/CuraBlenderPlugin
|
plugins/CuraBlenderPlugin
|
||||||
|
@ -40,7 +40,7 @@ def findNodePlacement(nodes_to_arrange: List["SceneNode"], build_volume: "BuildV
|
|||||||
|
|
||||||
machine_width = build_volume.getWidth()
|
machine_width = build_volume.getWidth()
|
||||||
machine_depth = build_volume.getDepth()
|
machine_depth = build_volume.getDepth()
|
||||||
build_plate_bounding_box = Box(machine_width * factor, machine_depth * factor)
|
build_plate_bounding_box = Box(int(machine_width * factor), int(machine_depth * factor))
|
||||||
|
|
||||||
if fixed_nodes is None:
|
if fixed_nodes is None:
|
||||||
fixed_nodes = []
|
fixed_nodes = []
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
# Copyright (c) 2020 Ultimaker B.V.
|
# Copyright (c) 2021 Ultimaker B.V.
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
from PyQt5.QtCore import QTimer
|
from PyQt5.QtCore import QTimer
|
||||||
from shapely.errors import TopologicalError # To capture errors if Shapely messes up.
|
|
||||||
|
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
@ -138,11 +137,7 @@ class PlatformPhysics:
|
|||||||
own_convex_hull = node.callDecoration("getConvexHull")
|
own_convex_hull = node.callDecoration("getConvexHull")
|
||||||
other_convex_hull = other_node.callDecoration("getConvexHull")
|
other_convex_hull = other_node.callDecoration("getConvexHull")
|
||||||
if own_convex_hull and other_convex_hull:
|
if own_convex_hull and other_convex_hull:
|
||||||
try:
|
|
||||||
overlap = own_convex_hull.translate(move_vector.x, move_vector.z).intersectsPolygon(other_convex_hull)
|
overlap = own_convex_hull.translate(move_vector.x, move_vector.z).intersectsPolygon(other_convex_hull)
|
||||||
except TopologicalError as e: # Can happen if the convex hull is degenerate?
|
|
||||||
Logger.warning("Got a topological error when calculating convex hull intersection: {err}".format(err = str(e)))
|
|
||||||
overlap = False
|
|
||||||
if overlap: # Moving ensured that overlap was still there. Try anew!
|
if overlap: # Moving ensured that overlap was still there. Try anew!
|
||||||
temp_move_vector = move_vector.set(x = move_vector.x + overlap[0] * self._move_factor,
|
temp_move_vector = move_vector.set(x = move_vector.x + overlap[0] * self._move_factor,
|
||||||
z = move_vector.z + overlap[1] * self._move_factor)
|
z = move_vector.z + overlap[1] * self._move_factor)
|
||||||
|
@ -7,9 +7,9 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|||||||
PROJECT_DIR="$( cd "${SCRIPT_DIR}/.." && pwd )"
|
PROJECT_DIR="$( cd "${SCRIPT_DIR}/.." && pwd )"
|
||||||
|
|
||||||
# Make sure that environment variables are set properly
|
# Make sure that environment variables are set properly
|
||||||
source /opt/rh/devtoolset-8/enable
|
|
||||||
export PATH="${CURA_BUILD_ENV_PATH}/bin:${PATH}"
|
export PATH="${CURA_BUILD_ENV_PATH}/bin:${PATH}"
|
||||||
export PKG_CONFIG_PATH="${CURA_BUILD_ENV_PATH}/lib/pkgconfig:${PKG_CONFIG_PATH}"
|
export PKG_CONFIG_PATH="${CURA_BUILD_ENV_PATH}/lib/pkgconfig:${PKG_CONFIG_PATH}"
|
||||||
|
export LD_LIBRARY_PATH="${CURA_BUILD_ENV_PATH}/lib:${LD_LIBRARY_PATH}"
|
||||||
|
|
||||||
cd "${PROJECT_DIR}"
|
cd "${PROJECT_DIR}"
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ export PYTHONPATH="${PROJECT_DIR}/Uranium:.:${PYTHONPATH}"
|
|||||||
|
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake3 \
|
cmake \
|
||||||
-DCMAKE_BUILD_TYPE=Debug \
|
-DCMAKE_BUILD_TYPE=Debug \
|
||||||
-DCMAKE_PREFIX_PATH="${CURA_BUILD_ENV_PATH}" \
|
-DCMAKE_PREFIX_PATH="${CURA_BUILD_ENV_PATH}" \
|
||||||
-DURANIUM_DIR="${PROJECT_DIR}/Uranium" \
|
-DURANIUM_DIR="${PROJECT_DIR}/Uranium" \
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
cd build
|
cd build
|
||||||
ctest3 -j4 --output-on-failure -T Test
|
ctest -j4 --output-on-failure -T Test
|
||||||
|
@ -650,7 +650,6 @@ class XmlMaterialProfile(InstanceContainer):
|
|||||||
machine_id_list = product_id_map.get(identifier.get("product"), [])
|
machine_id_list = product_id_map.get(identifier.get("product"), [])
|
||||||
if not machine_id_list:
|
if not machine_id_list:
|
||||||
machine_id_list = self.getPossibleDefinitionIDsFromName(identifier.get("product"))
|
machine_id_list = self.getPossibleDefinitionIDsFromName(identifier.get("product"))
|
||||||
|
|
||||||
for machine_id in machine_id_list:
|
for machine_id in machine_id_list:
|
||||||
definitions = ContainerRegistry.getInstance().findDefinitionContainersMetadata(id = machine_id)
|
definitions = ContainerRegistry.getInstance().findDefinitionContainersMetadata(id = machine_id)
|
||||||
if not definitions:
|
if not definitions:
|
||||||
@ -1068,6 +1067,8 @@ class XmlMaterialProfile(InstanceContainer):
|
|||||||
id_list = {name.lower().replace(" ", ""), # simply removing all spaces
|
id_list = {name.lower().replace(" ", ""), # simply removing all spaces
|
||||||
name.lower().replace(" ", "_"), # simply replacing all spaces with underscores
|
name.lower().replace(" ", "_"), # simply replacing all spaces with underscores
|
||||||
"_".join(merged_name_parts),
|
"_".join(merged_name_parts),
|
||||||
|
name.replace(" ", ""),
|
||||||
|
name.replace(" ", "_")
|
||||||
}
|
}
|
||||||
id_list = list(id_list)
|
id_list = list(id_list)
|
||||||
return id_list
|
return id_list
|
||||||
|
@ -3,35 +3,33 @@ certifi==2019.11.28
|
|||||||
cffi==1.14.1
|
cffi==1.14.1
|
||||||
chardet==3.0.4
|
chardet==3.0.4
|
||||||
colorlog
|
colorlog
|
||||||
comtypes==1.1.7
|
|
||||||
cryptography==3.4.8
|
cryptography==3.4.8
|
||||||
decorator==4.4.0
|
decorator==4.4.0
|
||||||
idna==2.8
|
idna==2.8
|
||||||
importlib-metadata==3.7.2
|
importlib-metadata==4.10.0
|
||||||
keyring==23.0.1
|
keyring==23.0.1
|
||||||
lxml==4.6.3
|
lxml==4.7.1
|
||||||
mypy==0.740
|
mypy==0.740
|
||||||
netifaces==0.10.9
|
netifaces==0.10.9
|
||||||
networkx==2.6.2
|
networkx==2.6.2
|
||||||
numpy==1.20.2
|
numpy==1.21.5
|
||||||
numpy-stl==2.10.1
|
numpy-stl==2.10.1
|
||||||
packaging==18.0
|
packaging==18.0
|
||||||
|
pyclipper==1.3.0.post2
|
||||||
pycollada==0.6
|
pycollada==0.6
|
||||||
pycparser==2.20
|
pycparser==2.20
|
||||||
pyparsing==2.4.2
|
pyparsing==2.4.2
|
||||||
PyQt5==5.15.2
|
PyQt5==5.15.6
|
||||||
PyQt5-sip==12.8.1
|
PyQt5-sip==12.9.0
|
||||||
pyserial==3.4
|
pyserial==3.4
|
||||||
pytest
|
pytest
|
||||||
python-dateutil==2.8.0
|
python-dateutil==2.8.0
|
||||||
python-utils==2.3.0
|
python-utils==2.3.0
|
||||||
pywin32==301
|
pywin32==303
|
||||||
requests==2.22.0
|
scipy==1.8.0rc2
|
||||||
scipy==1.6.2
|
|
||||||
sentry-sdk==0.13.5
|
sentry-sdk==0.13.5
|
||||||
shapely[vectorized]==1.8.0
|
|
||||||
six==1.12.0
|
six==1.12.0
|
||||||
trimesh==3.2.33
|
trimesh==3.9.36
|
||||||
twisted==21.2.0
|
twisted==21.2.0
|
||||||
typing
|
typing
|
||||||
urllib3==1.25.9
|
urllib3==1.25.9
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 872 KiB |
@ -145,13 +145,13 @@ UM.Dialog
|
|||||||
projectsModel.append({ name: "SciPy", description: catalog.i18nc("@label", "Support library for scientific computing"), license: "BSD-new", url: "https://www.scipy.org/" });
|
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", 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: "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: "Trimesh", description: catalog.i18nc("@label", "Support library for handling triangular meshes"), license: "MIT", url: "https://trimsh.org" });
|
||||||
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: "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: "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: "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: "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: "Clipper", description: catalog.i18nc("@label", "Polygon clipping library"), license: "Boost", url: "http://www.angusj.com/delphi/clipper.php" });
|
||||||
|
projectsModel.append({ name: "Pyclipper", description: catalog.i18nc("@label", "Python bindings for Clipper"), license: "MIT", url: "https://github.com/fonttools/pyclipper" });
|
||||||
projectsModel.append({ name: "mypy", description: catalog.i18nc("@Label", "Static type checker for Python"), license: "MIT", url: "http://mypy-lang.org/" });
|
projectsModel.append({ name: "mypy", description: catalog.i18nc("@Label", "Static type checker for Python"), license: "MIT", url: "http://mypy-lang.org/" });
|
||||||
projectsModel.append({ name: "certifi", description: catalog.i18nc("@Label", "Root Certificates for validating SSL trustworthiness"), license: "MPL", url: "https://github.com/certifi/python-certifi" });
|
projectsModel.append({ name: "certifi", description: catalog.i18nc("@Label", "Root Certificates for validating SSL trustworthiness"), license: "MPL", url: "https://github.com/certifi/python-certifi" });
|
||||||
projectsModel.append({ name: "cryptography", description: catalog.i18nc("@Label", "Root Certificates for validating SSL trustworthiness"), license: "APACHE and BSD", url: "https://cryptography.io/" });
|
projectsModel.append({ name: "cryptography", description: catalog.i18nc("@Label", "Root Certificates for validating SSL trustworthiness"), license: "APACHE and BSD", url: "https://cryptography.io/" });
|
||||||
|
@ -167,13 +167,11 @@ UM.PreferencesPage
|
|||||||
append({ text: "Čeština", code: "cs_CZ" })
|
append({ text: "Čeština", code: "cs_CZ" })
|
||||||
append({ text: "Deutsch", code: "de_DE" })
|
append({ text: "Deutsch", code: "de_DE" })
|
||||||
append({ text: "Español", code: "es_ES" })
|
append({ text: "Español", code: "es_ES" })
|
||||||
//Finnish is disabled for being incomplete: append({ text: "Suomi", code: "fi_FI" })
|
|
||||||
append({ text: "Français", code: "fr_FR" })
|
append({ text: "Français", code: "fr_FR" })
|
||||||
append({ text: "Italiano", code: "it_IT" })
|
append({ text: "Italiano", code: "it_IT" })
|
||||||
append({ text: "日本語", code: "ja_JP" })
|
append({ text: "日本語", code: "ja_JP" })
|
||||||
append({ text: "한국어", code: "ko_KR" })
|
append({ text: "한국어", code: "ko_KR" })
|
||||||
append({ text: "Nederlands", code: "nl_NL" })
|
append({ text: "Nederlands", code: "nl_NL" })
|
||||||
//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 do Brasil", code: "pt_BR" })
|
||||||
append({ text: "Português", code: "pt_PT" })
|
append({ text: "Português", code: "pt_PT" })
|
||||||
append({ text: "Русский", code: "ru_RU" })
|
append({ text: "Русский", code: "ru_RU" })
|
||||||
@ -186,6 +184,12 @@ UM.PreferencesPage
|
|||||||
{
|
{
|
||||||
append({ text: "Pirate", code: "en_7S" })
|
append({ text: "Pirate", code: "en_7S" })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// incomplete and/or abandoned
|
||||||
|
append({ text: catalog.i18nc("@heading", "-- incomplete --"), code: "" })
|
||||||
|
append({ text: "Magyar", code: "hu_HU" })
|
||||||
|
append({ text: "Suomi", code: "fi_FI" })
|
||||||
|
append({ text: "Polski", code: "pl_PL" })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -197,8 +201,7 @@ UM.PreferencesPage
|
|||||||
model: languageList
|
model: languageList
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
currentIndex:
|
function setCurrentIndex() {
|
||||||
{
|
|
||||||
var code = UM.Preferences.getValue("general/language");
|
var code = UM.Preferences.getValue("general/language");
|
||||||
for(var i = 0; i < languageList.count; ++i)
|
for(var i = 0; i < languageList.count; ++i)
|
||||||
{
|
{
|
||||||
@ -208,7 +211,17 @@ UM.PreferencesPage
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onActivated: UM.Preferences.setValue("general/language", model.get(index).code)
|
|
||||||
|
currentIndex: setCurrentIndex()
|
||||||
|
|
||||||
|
onActivated: if (model.get(index).code != "")
|
||||||
|
{
|
||||||
|
UM.Preferences.setValue("general/language", model.get(index).code);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
currentIndex = setCurrentIndex();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
|
Loading…
x
Reference in New Issue
Block a user