diff --git a/resources/calibration/bed_leveling/es_bed_leveling.html b/resources/calibration/bed_leveling/es_bed_leveling.html
new file mode 100644
index 00000000000..94ad5d72279
--- /dev/null
+++ b/resources/calibration/bed_leveling/es_bed_leveling.html
@@ -0,0 +1,68 @@
+
+
+
+
+ Nivelación de la cama
+
+
+
+
+
+
+Nivelación de la cama
+ |
+
+
+
+
+ |
+
+
+Esta calibración es la primera a realizar porque se necesita una buena adhesión del filamento a la cama caliente.
+Esta calibración se realiza para obtener un ajuste fino. Por favor realice una nivelación de la cama antes de empezar y mueva la boquilla a 0.2mm por encima de la cama. Debe ser capaz de mover un folio de papel entre la boquilla y la cama, pero debe sentir como la boquilla roza el folio. Después de eso, debería ser capaz de nivelar la cama con una precisión de ~0.1mm aproximadamente.
+Cómo funciona
+Primero, seleccione su impresora y su perfil de impresión por defecto con el perfil de filamento adecuado para dicho filamento (PLA, ABS). Tenga en cuenta que esta calibración solo funciona para el primer extrusor si dispone de varios.
+Cuando presione el botón Generate, el programa creará y laminará el test de impresión. Tienes que enviarlo a la impresora e imprimirlo. Finalizada la impresión compare las 5 pequeñas piezas impresas con las fotos de abajo. Tendrá que afinar su impresora / firmware para corregir la altura si es necesario.
+Lea las notas y consejos más abajo para más información.
+Resultados
+
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+Demasiado lejos |
+Muy lejos |
+Aún lejos: puede ver un pequeño hueco |
+Perfecto |
+todavía cerca |
+¡Atención! Muy cerca: comprueba el grosor ¡con sus dedos! |
+Demasiado cerca Peligro para la cama |
+
+
+Cómo afinar la impresora
+Si tu impresora tiene tornillos de nivelación de cama, úsalos para subir o bajar la cama donde la pieza en cuestión haya quedado muy lejos o muy cerca de la cama. No olvide repetir la impresión después de efectuar los ajustes de la cama para verificar la compensación realizada. Tenga cuidado, la mayoría de las veces, media vuelta de giro a esos tornillos, corresponden con 0.2mm de altura, que típicamente es la altura de la primera capa. Si eleva la cama, nunca gire más de media vuelta, normalmente debería girar un cuarto de vuelta el tornillo e imprimir de nuevo.
+Si no dispone de tornillos de ajuste de la cama, tiene que usar el programa suministrado por el fabricante o el firmware. Revise el manual de su impresora.
+Consejos
+Si el filamento no se adhiere a la cama caliente puede intentar:
+
+- Aumentar el ancho de extrusión, aumentará la presión sin sobre-extruir. Puede aumentarlo hasta el 200% del diámetro de su boquilla, pero 150% debería ser suficiente. (Opciones Avanzadas, Configuración de Impresión -> Width (ancho)
+- Reducir la velocidad de impresión para dar tiempo a que se adhiera a la cama. (Opciones avanzadas, Configuración de Impresión -> Velocidad)
+- Puede des/habilitar "z-hop" para la primera capa "Solo Levantar Z"-> "Encima de Z" para un valor mayor a la altura de su primera capa. Si lo activa, puede levantar el filamento de la cama y si lo desactiva, puede que la boquilla roce en la cama y empuje el filamento depositado, así que debe hacer pruebas para encontrar el valor óptimo. (Opciones Avanzadas, Configuración de la Impresora -> Extrusor)
+
+Notas
+Este test usa su configuración actual de altura de primera capa, pero quizás desee incrementar el valor hasta el 80 % del diámetro de su boquilla (antes de usar el boton 'generate'), sobre todo si es la primera vez que realiza este test y desea evitar el riesgo de que la boquilla colisione con la cama. Para una boquilla de 0.4 mm de diámetro, el máximo alto de capa sugerido sería 0.4 * 80% = 0.32 mm, dejando más espacio entre cama y boquilla para evitar colisiones.
+Si después de la calibración del flujo de filamento parece que el valor del flujo es totalmente erróneo, puede realizar este test una vez más deshaciendo este cambio sugerido en el párrafo anterior.
+La mayoría de las calibraciones deben ser realizadas en el orden correcto. Éste es el primero a realizar. Si desea obtener buenos resultados necesita calibrar su extrusor, por ejemplo: Si solicita extruir 100mm de filamento, esa es la cantidad justa de filamento que debe consumir a la entrada del extrusor.
+Este test establece la opción "Completar objetos individuales", quizás desee resetear la Configuración de Impresión después de imprimir el test.
+Licencia de los modelos usados en este test de calibración: CC BY-SA 3.0
+
+
diff --git a/resources/calibration/bridge_flow/es_bridge_flow.html b/resources/calibration/bridge_flow/es_bridge_flow.html
new file mode 100644
index 00000000000..6d505073762
--- /dev/null
+++ b/resources/calibration/bridge_flow/es_bridge_flow.html
@@ -0,0 +1,48 @@
+
+
+
+
+ Calibración del ratio de Flujo en Puentes
+
+
+
+
+
+
+
+Calibración del ratio de Flujo en Puentes
+ |
+
+
+
+ Necesita: |
+ Flujo |
+ Temperatura |
+
+
+ |
+
+
+
+Necesita realizar la calibración de la cama y la calibración de Flujo de Filamento antes de este test. Mejor aún si ha realizado la calibración de temperatura del filamento previamente.
+Este test imprimirá varios ejemplos de puentes modificando el ratio de flujo en puentes. Usa su configuración actual, así que quizás desee establecerlo en 100% antes de pulsar el botón.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Notes
+Este test establece la opción "Completar objetos individuales", quizás desee resetear la Configuración de Impresión después de imprimir el test, o deshabilitar esta opción si su cama es muy pequeña.
+Licencia de los modelos usados en este test de calibración: CC BY-SA 3.0
+
+
diff --git a/resources/calibration/cube/es_cube.html b/resources/calibration/cube/es_cube.html
new file mode 100644
index 00000000000..3716960054b
--- /dev/null
+++ b/resources/calibration/cube/es_cube.html
@@ -0,0 +1,41 @@
+
+
+
+
+ Cubo de Calibración
+
+
+
+
+
+
+
+Cubo de Calibración
+ |
+
+
+
+ Necesita: |
+ Calibración cama |
+ Flujo |
+ Temperatura |
+
+
+ |
+
+
+
+Esta página le permite imprimir el amado cubo de calibración. Es útil ver si su impresora es exacta y calibrar algunos ajustes. Lo primero es establecer sus objetivos.
+Objetivo: exactitud dimensional
+Tiene que imprimir dos cubos, de diferente tamaño. Si sus dimensiones impresas han escalado proporcionalmente del tamaño de los cubos originales, entonces necesita ajustar los pasos/mm de sus motores (nota: si es el caso, también debe ajustar el flujo, y puede que deba rehacer otras calibraciones si el cambio es grande). Si las dimensiones no han escalado proporcionalmente, puede corregir el desfase ajustando la compensación en XY (Ajustes Avanzados, Configuración de Impresión, Laminando -> XY First Layer Compensation). Con el botón Voron cube, puede testear la calibración de agujeros, ya que normalmente son más pequeños de lo que deberían. El agujero de arriba debería ser suficientemente grande (en la versión de 30mm) para encajar un rodamiento en él.
+Objetivo: Superposición relleno/perímetros
+Este test sirve para ver si el relleno atraviesa el perímetro. Intente reducirlo al mínimo posible pero debe comprobar la capa sólida superior, ya que puede crear artefactos si es demasiado bajo. Es mejor imprimir el cubo estandard, ya que tiene una superficie superior mayor para apreciar el posible problema.
+
+
+Notas
+Este test debe ser el último test a realizar.
+El tamaño del cubo standard es de 20mm y el tamaño del cubo Voron es de 30mm.
+Licencia del cubo standard de calibración: CC BY-SA 3.0, realizado por iDig3Dprinting
+Licencia del cubo Voron de calibración: GPL V3, realizado por VORONDesign
+
+
diff --git a/resources/calibration/es_introduction.html b/resources/calibration/es_introduction.html
new file mode 100644
index 00000000000..336d4914ec9
--- /dev/null
+++ b/resources/calibration/es_introduction.html
@@ -0,0 +1,36 @@
+
+
+
+
+ Calibraciones
+
+
+Introducción
+Bienvenido al menú de calibración. Éste menú le ayudará a imprimir calibraciones rápida y eficientemente
+¿Por qué?
+La mayoría de impresoras deberían imprimir bastante bien con la configuración de fábrica, pero si encuentra algun problema, o si desea ir un paso más allá en calidad, tendría que asegurarse que todo está bien calibrado. Las calibraciones se pueden dividir en tres grupos: impresora, filamento y laminador.
+La impresora debe calibrarse primero, después el filamento y por último el laminador.
+Calibración de impresora
+Ésto es lo primero a calibrar. Cada impresora es diferente en este aspecto, y debería leer el manual de su impresora para más información.
+Calibración del extrusor
+No tiene una entrada de menú, porque no puede calibrarse con una impresión. No es obligatorio pero puede ayudar a evitar algunos problemas. La mayoría está explicado en el menú calibración de flujo.
+Nivelación de cama
+La mayoría de impresoras no tienen sistema de nivelación de cama, e incluso aquellas que lo tienen, deben ser calibrados al menos una vez. Estos menúes explicarán muchas cosas, pero asegúrese de leer la documentación de su impresora en el caso de existir pasos específicos para su impresora en concreto. Ésta calibración es particularmente útil si desea verificar / afinar el resultado final, o si desea comprobar que no ha cambiado desde la última vez.
+Creará 5 pequeñas piezas. Visualmente debería comprobar las piezas y verá donde la cama está nivelada y donde necesita realizar algunos ajustes.
+Calibración de filamento
+ Cada filamento tiene propiedades diferentes y puede necesitar ajustes. Aunque el perfil por defecto debería funcionar la mayoría de las veces, puede crear defectos evitables. Algunos filamentos especiales (como aquellos que incluyen partículas de madera) necesitarán ajustes especiales.
+Calibración del flujo de filamento
+El extrusor muerde el filamento para empujarlo, y la fuerza con que los muelles comprimen el filamento, pueden cambiar el flujo necesitado. Además, si su extrusor no está bien calibrado, estos pasos le ayudarán a contrarrestar este problema.
+Tenga en cuenta que si su filamento tiene un diámetro variable o no es totalmente redondo, encontrará problemas de flujo, pero éstas situaciones no pueden arreglarse. Debe cambiar de proveedor / calidad del filamento o invertir en un sensor de grosor de filamento.
+Calibración de temperatura del filamento
+Algunos filamentos necesitan más temperatura para pegarse, otros sin embargo, necesitan menos temperatura para evitar goteos o caídas de voladizos (salientes). Esta calibración le ayudará a encontrar un buen valor para la temperatura. Puede realizar varias pruebas modificando la velocidad del ventilador de capa hasta encontrar la mejor combinación.
+Calibración del laminador
+Estas calibraciones le ayudarán a encontrar la mejor configuración de SuperSlicer para su impresora y filamento.
+Calibración de flujo en puentes
+Los puentes son normalmente difíciles de imprimir con un buen resultado visual. Esta calibración le ayudará a elegir la mejor configuración para el flujo de filamento en el puente. También puede intentar diferentes velocidades del ventilador de capa para un mismo flujo de filamento en puentes.
+Calibración del patrón de Alisado
+Es difícil imprimir una superficie plana y lisa, ya que puede disminuir su altura en el centro de una gran superficie plana. Esta calibración le ayudará a encontrar la mejor configuración para compensar ese desnivel.
+Cubo de calibración
+Esta entrada le permite tener siempre a mano un cubo de calibración listo para imprimir. Es muy útil ver si la impresión tiene una buena exactitud dimensional. Esto puede alterarse con varias opciones de compensación en X-Y.
+
+
diff --git a/resources/calibration/filament_flow/es_filament_flow.html b/resources/calibration/filament_flow/es_filament_flow.html
new file mode 100644
index 00000000000..a842b4f76b8
--- /dev/null
+++ b/resources/calibration/filament_flow/es_filament_flow.html
@@ -0,0 +1,96 @@
+
+
+
+
+ Calibración del Flujo de Filamento
+
+
+
+
+
+
+
+Calibración del Flujo de Filamento
+ |
+
+
+
+ Necesita: |
+ Nivelación de cama |
+
+
+ |
+
+
+
+Necesita realizar la Nivelación de la cama antes de este test.
+Este test imprimirá cinco piezas con diferentes niveles de flujo. Puede elegir la diferencia de flujo entre cada pieza. Debería empezar con el 10%.
+Después de verificar el resultado con la ayuda de la tabla siguiente, debe modificar el multiplicador de extrusión del filamento en su perfil de filamento (si el -20 es el mejor, cambie el multiplicador de 1 a 0.8, vea la fórmula más abajo). ¡No olvide guardar los cambios en el perfil de filamento! Puede continuar con el botón de 2% si quiere una mayor precisión.
+Resultados
+Ejemplo:
+
+
+
+ |
+ |
+ |
+ |
+ |
+
+
+No plano |
+No plano |
+No plano |
+Plano pero el círculo no es tan bueno |
+Plano y círculo bueno |
+
+
+El flujo que desea elegir es el menor posible que no cree agujeros en la superficie superior. En este ejemplo parece que el mejor flujo es +20. Así que debe cambiar el multiplicador de extrusion a 1.2 e imprimir el segudo set de pruebas (o puede establecerlo en 1.15 y no continúes el test).
+No mire la calidad de las letras, debería ser buena solo en 0, por eso calibramos la altura de la cama para este test de flujo. Aquí, usando el flujo +20, debería bajar la cama un poquito (rehaciendo la
+calibración de la cama).
+Segundo paso, empezando en +20%:
+
+
+
+ |
+ |
+ |
+ |
+ |
+
+
+No bueno |
+No bueno |
+Casi bueno |
+Bueno pero el círculo tiene irregularidades |
+Bueno |
+
+
+Aquí podemos ver que el círculo no es muy bueno en el -8 y -6. El -4 es casi redondo pero no perfecto, eso indica que la boquilla perdió presión. -2 es casi bueno pero el 0 es el único que puede ser considerado como "bueno", incluso si el círculo no es perfecto.
+Cómo afinar la impresora
+Tiene que cambiar el multiplicador de extrusión para el filamento que ha calibrado (y guardar el perfil). La fórmula para el multiplicador de extrusión es: nuevo_multiplicador = ( (100 + numero_elegido) / 100 ) * viejo_multiplicador
+Ejemplo: primer paso, elijo -10, así tengo ((100-10)/100) * 1 = (0.9) * 1 = 0.9
+segundo paso elijo +5, así tengo ((100+5)/100) * 0.9 = (1.05) * 0.9 = 0.945
+
+Si desea hacer este cambio permanente y mantener su multiplicador de extrusión a 1 en SuperSlicer, puede cambiar la configuración de su firmware multiplicando (o dividiendo, depende del firmware/configuración) el 'extruder speed setting' (e-step, step_distance) por su multiplicador de extrusión.
+Consejos
+Antes de realizar este test, es preferible calibrar su extrusor (es más fácil en sistemas bowden):
+
+- Quite el tubo bowden del extrusor desde la salida del extrusor (o separe el extrusor del fusor si tiene un extrusor en directa)
+- Introduzca el filamento a través del extrusor (a mano o usando el programa que lo controla)
+- Corte el filamento a ras de la salida del extrusor. Mide con una regla de acero que efectivamente hay 0mm. Si no lo hay, anote el valor y no olvide restar este valor de todas las demás medidas que realice.
+- Ordene extruir 200mm de filamento (gcode: G1 E200).
+- Mida la longitud extruida de filamento. Repita el proceso dos veces si desea mayor precisión.
+- Tiene que cambiar su multiplicador de extrusión (e-step, step_distance) multiplicando (o dividiendo, dependiendo de su firmware) el valor actual por (200 / media_de_valores_medidos).
+Tenga en cuenta que este valor puede cambiar si cambia la presión ejercida por el extrusor al filamento.
+
+Notas
+Es muy difícil afinar el flujo por debajo del 2%, y de todas formas, no hay filamento tan suficientemente consistente para garantizarlo. Filamentos con precisión de +-0.03mm tiene una variación del ~7% entre el mínimo y máximo de su sección.
+La mayoría de las calibraciones deben ser realizadas en el orden correcto. Ésta debería ser la segunda.
+Quizás desee realizar de nuevo la calibración de la cama si el resultado es inferior a 0.9 o es más alto de 1.1.
+Tenga en cuenta que el multiplicador de extrusión puede variar con un filamento de diferente material, uno más blando puede ser marcado/mordido con más fuerza por el extrusor y debido a ello tendrá un menor diámetro en las ruedas dentadas del extrusor.
+Si el extrusor "se come" el filamento y no puede completar la capa superior, deberá incrementar la distribución del Alisado, planchado, Ironing (en incrementos de 5%).(Modo Experto, Configuración de Impresión -> Relleno)
+Este test establece la opción "Completar objetos individuales", quizás desee resetear la Configuración de Impresión después de imprimir el test.
+Licencia de los modelos usados en este test de calibración: CC BY-SA 3.0
+
+
diff --git a/resources/calibration/filament_temp/es_filament_temp.html b/resources/calibration/filament_temp/es_filament_temp.html
new file mode 100644
index 00000000000..c1771137f31
--- /dev/null
+++ b/resources/calibration/filament_temp/es_filament_temp.html
@@ -0,0 +1,70 @@
+
+
+
+
+ Calibración de la Temperatura del Filamento
+
+
+
+
+
+
+
+Calibración de la Temperatura del Filamento
+ |
+
+
+
+ Necesita: |
+ Nivelación cama |
+ Flujo |
+
+
+ |
+
+
+
+Necesita haber realizado la calibración de la cama antes que este test, y preferiblemente también la calibración del Flujo..
+Esta calibración le ayudará a elegir la correcta temperatura correcta respecto a unión del filamento, voladizos y goteo del fusor.
+Tenga presente que este test depende de la ventilación de capa elegida. Puede realizar este test varias veces con más o menos porcentaje de ventilación de capa hasta encontrar el punto exacto.
+Este test imprimirá una torre, impresa a diferentes temperaturas para cada planta. La planta en la mitad de altura será impresa con la temperatura actual elegida en la configuración de su filamento. La planta en la base, tocando la cama caliente, será impresa con la máxima temperatura y la planta superior con la menor temperatura posible. Puede elegir la diferencia de temperatura entre plantas y el número de plantas (cuantos test por debajo de la actual temperatura desea y cuantos test con temperaturas superiores) pero puede dejarlo tal cual está para empezar.
+Resultados / observaciones
+El Objetivo es elegir la temperatura más alta posible que no genere artifactos.
+Primero, debe analizar la torre. Cada planta tiene la temperatura grabada en ella.
+
+
+
+ |
+Demasiado frío, No puede ser extruido |
+
+ |
+
+ |
+Bien |
+
+
+ |
+Bien |
+
+
+ |
+Demasiado caliente, se ve que la boquilla gotea |
+
+
+ |
+Muy caliente, se ve que la boquilla gotea |
+
+
+
+Aquí puede ver que la planta impresa a 210 grados celsius es la más caliente que podemos imprimir sin problemas de desintegración (aparte del calor; la baja calidad de impresión es debido a altas velocidades). También, tuve éxito al romper (con cierta dificultad) la planta a 195 grados debido a una mala adhesión entre capas; así que fue impresa a una baja temperatura para este filamento. Aconsejo hacer el mismo test.
+Resultados: destrucción
+Finalmente, Debe romper cada planta por la mitad, para comprobar si las bajas temperaturas de impresión tienen efectos adversos en la unión de las capas. No debería ser posible romper solo con sus manos una planta. Si puede romper una planta, entonces la temperatura de esa planta es definitivamente demasiado baja (o el ventilador de capa ha enfriado demasiado rápido esa planta debido al alto caudal de aire), por tanto debe elegir la temperatura más alta posible o repetir el test con menos ventilación de capa. Cuando intente romper una planta con la mano, no ponga los dedos en la unión de esa planta con la anterior o la siguiente, al cambiar la temperatura en esa zona, es la más débil, sujete el inicio de esa planta y el final de esa misma planta firmemente.
+Cómo afinar su impresora
+Cambie la temperatura en el perfil de filamento (extrusor -> otras capas), después guarde el perfil. La temperatura de la primera capa casi siempre es 5 grados más para ayudar en la adhesión a la cama, por tanto debería cambiarla también, especialmente si es menor a la nueva temperatura.
+
+Notas
+La mayoría de las calibraciones debe ser hechas en el orden correcto. Ésta debe ser la tercera.
+Los números de las temperaturas solo se verán entre 180 y 285. Valores más altos o bajos no se mostraran pero el test se hará correctamente, solo tiene que recordarlas.
+Esta torre se realizó con el modelo 3D creado por gaaZolee con la licencia: CC BY-SA 3.0.
+
+
diff --git a/resources/calibration/over-bridge_tuning/es_over-bridge_tuning.html b/resources/calibration/over-bridge_tuning/es_over-bridge_tuning.html
new file mode 100644
index 00000000000..1b443b8376f
--- /dev/null
+++ b/resources/calibration/over-bridge_tuning/es_over-bridge_tuning.html
@@ -0,0 +1,58 @@
+
+
+
+
+ Calibración del Patrón de Alisado
+
+
+
+
+
+
+
+Calibración del Patrón de Alisado
+ |
+
+
+
+ Necesita: |
+ Flujo |
+ Temperatura |
+
+
+ |
+
+
+
+Necesita realizar la calibración de flujo del filamento y el ratio de flujo en puentes antes que este test. Mejor aún si ha realizado la calibración de Temperatura del Filamento.
+Éste método de calibración imprimirá varias piezas modificando el ratio de flujo sobre puentes, entre 100 y 125. Elija el menor valor en el que la superficie superior es plana sin "agujeros". Empiece con el botón over-bridge calibration.
+Si la calibración sobre puentes (Ajustes avanzados, Configuración de Impresión, Width & Flow, Flow ratio -> Above the bridges) no es concluyente (mismos agujeros en todas las piezas), entonces puede establecer el flujo sobre puentes en 110% y use la opción top fill (Ajustes avanzados, Configuración de Impresión, Width & Flow, Flow ratio -> Top fill). Este ajuste es un poco impredecible, así que lo mejor es no establecerlo lejos del 100%.
+Resultados
+
+
+Ejemplo:
+
+ |
+ |
+ |
+ |
+ |
+
+
+No plano |
+No plano |
+No plano |
+Plano |
+Plano |
+
+
+Aquí, podemos ver atifactos hasta que el flujo sobre puentes fue establecido a 115. Si era plano en la calibración del flujo, y ahora no lo es, es porque los puentes debajo de la capas superiores se están cayendo un poco por gravedad, por eso deja más volumen para rellenar. Aquí 115 debería ser suficiente, pero 120 es un valor más seguro.
+
+Consejos
+TODO
+
+Notas
+Este test establece la opción "Completar objetos individuales", quizás desee resetear la Configuración de Impresión después de imprimir el test.
+Licencia de los modelos usados en este test de calibración: CC BY-SA 3.0
+
+
diff --git a/resources/calibration/retraction/es_retraction.html b/resources/calibration/retraction/es_retraction.html
new file mode 100644
index 00000000000..e5bd1fa6660
--- /dev/null
+++ b/resources/calibration/retraction/es_retraction.html
@@ -0,0 +1,59 @@
+
+
+
+
+ Calibración de Retracción
+
+
+
+
+
+
+
+Calibración de Retracción
+ |
+
+
+
+ Necesitas: |
+ Flujo |
+ Temperatura |
+
+
+ |
+
+
+
+Cómo realizarlo
+Es preferible haber realizado las calibraciones de flujo y temperatura.
+Esta calibración le ayudará a elegir los valores correctos de distancia de retracción para su extrusor y el filamento actual
+Este test imprimirá una pieza varianado la distancia de retracción para cada milímetro impreso en el eje Z.
+Incrementos y Altura
+ Si tiene extrusión directa, es mejor probar con incrementos de 0.1 mm (Steps) y ~15 mm de Altura, ya que no es común necesitar más de 1 mm de retracción.
+
Si tiene extrusión Bowden, es mejor probar con incrementos de 0.5 mm Steps) y ~15 mm de Altura, ya que no es común necesitar más de 6 mm de retracción. También puede usar incrementos de 0.2 y una altura mayor. Tenga cuidado, ya que una alta distancia de retracción, incrementará el riesgo de atasco en la boquilla si suele tenerlos.
+
Temperatura de Inicio e Incrementos
+Por defecto, usa la temperatura actual para un solo test. Así que no debería modificarla, a menos que también desee optimizar la temperatura para prevenir hilos (de una torre a otra, stringing).
+En la calibración de temperatura, obtuvo un intervalo de temperatura donde su impresión fue "suficientemente buena".
+Aquí, usted debería empezar en la más alta temperatura aceptable. Si ya estableció la temperatura de su filamento, se tomará ese valor como "actual" para la temperatura inicial (Start temp). Si no la ha establecido aún, seleccione la mayor temperatura en el desplegable "Start temp".
+Después, elija una opción en el campo "Temp decr" que no reduzca la temperatura demasiado bajo. "3x10" significa que imprimirá tres tests, el primer test a la max. temp. y el resto decrementando 10C en cada uno.
+Modificando capas pequeñas
+Este botón cambiará las configuraciones de Filamento/refrigeración para deshabilitar todas las características que se activan cuando una capa es muy pequeña y necesita enfriarse a tiempo. Con este algoritmo deshabilitado, añadimos un reto extra a su impresora en términos de retracción, así que es un buen test de estrés. Para habilitar de nuevo esas opciones tras esta impresión, elimine las modificaciones hechas por este test en la pestaña de Filamento (la pequeña "flecha hacia atrás" en color naranja).
+Resultados
+ Terminada esta impresión, puede contar los milímetros con los pequeños salientes que tiene a los lados las torres. Yo los cuento con mi uña. Cuando esté en la altura donde ya no haya hilos (stringing) de una torre a otra, tome ese número. Multiplique ese número por los Incrementos elegidos (Steps 0.1, 0.2, 0.5, ó 1) y ya tiene la distancia de retracción para modificar (Ajustes Avanzados, Configuración de Impresora, Extrusor, Retracción -> Largo). Puede añadir un 20% más de distancia para tener un pequeño margen.
+Si tiene varias impresiones con diferentes tempearaturas, necesita elegir la mejor impresión, aquella con menos hilos, a menos que el decremento de hilos no sea tan grande como para justificar el decremento de temperatura.
+
Ejemplo
+
+
+
+ |
+En esta impresión, el último hilo ocurre a la altura de ~10. Como usé un salto de 0.5, significa que necesito al menos 5mm de retracción, pero lo estableceré en 6 para asegurarme de eliminar la mayoría de hilos. |
+
+ |
+
+
+
+Notas
+La velocidad de retracción debe ser tan alta como su extrusor/controladores/drivers puedan soportar de forma segura, con cierto margen. 50mm/s para retracción y 20mm/s para de-retracción son buenos valores de partida para PLA.
+Licencia de los modelos usados en este test de calibración: CC BY-SA 3.0
+
+
diff --git a/resources/localization/it/Slic3r.po b/resources/localization/it/Slic3r.po
index f29f9c709c3..9cb641e4d54 100644
--- a/resources/localization/it/Slic3r.po
+++ b/resources/localization/it/Slic3r.po
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: Slic3r\n"
-"POT-Creation-Date: 2023-12-31 00:00\n"
-"PO-Revision-Date: 2023-12-31 00:00\n"
+"POT-Creation-Date: 2024-01-29 00:00\n"
+"PO-Revision-Date: 2024-01-29 00:00\n"
"Last-Translator:\n"
"Language-Team:\n"
"MIME-Version: 1.0\n"
@@ -14,6 +14,33 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Language:it\n"
+msgid ""
+"! 1 for the Bridge fan speed is Deprecated, please set it to 0 to stop the "
+"fan!"
+msgstr ""
+"! 1 per la velocità della ventola del Ponte è sconsigliato, imposta 0 per "
+"fermare la ventola!"
+
+msgid ""
+"! 1 for the External perimeters fan speed is Deprecated, please set it to 0 "
+"to stop the fan!"
+msgstr ""
+"! 1 per la velocità della ventola dei perimetri esterni è sconsigliato, "
+"imposta 0 per fermare la ventola!"
+
+msgid ""
+"! 1 for the Infill bridge fan speed is Deprecated, please set it to 0 to "
+"stop the fan!"
+msgstr ""
+"! 1 per la velocità della ventola dei Ponti interni è sconsigliato, imposta 0 "
+"per fermare la ventola!"
+
+msgid ""
+"! 1 for the Top fan speed is Deprecated, please set it to 0 to stop the fan!"
+msgstr ""
+"! 1 per la velocità massima della ventola è sconsigliato, imposta 0 per "
+"fermare la ventola!"
+
msgid "!! Can be unstable in some os distribution !!"
msgstr ""
"!! Può essere instabile in alcune distribuzioni di sistemi operativi !!"
@@ -555,15 +582,6 @@ msgstr ""
"\"G92 E0\" trovato in layer_gcode, che è incompatibile con l'indirizzamento "
"assoluto dell'estrusore."
-msgid ""
-"\n"
-"\n"
-"If estimated layer time is below ~%1%s"
-msgstr ""
-"\n"
-"\n"
-"Se il tempo stimato dello strato è inferiore a ~%1%s"
-
msgid ""
"\n"
"\n"
@@ -867,13 +885,14 @@ msgstr ""
"messaggio. Personalmente, penso che sia inutile."
msgid ""
-"Add one perimeter every odd layer. With this, infill is taken into the "
-"sandwich and you may be able to reduce drastically the infill/perimeter "
-"overlap setting. "
+"Add one perimeter every even layer (and not on odd layers like the first "
+"one). With this, infill is taken into the sandwich and you may be able to "
+"reduce drastically the infill/perimeter overlap setting. "
msgstr ""
-"Aggiungi un perimetro ogni strato dispari. Con questo, l'infill viene preso "
-"in sandwitch e si può essere in grado di ridurre drasticamente "
-"l'impostazione di sovrapposizione infill/perimetro. "
+"Aggiungi un perimetro su ogni strato pari (e non sugli strati dispari come "
+"il primo). In questo modo, il riempimento viene inserito nel sandwich e "
+"potresti essere in grado di ridurre drasticamente l'impostazione di "
+"sovrapposizione riempimento/perimetro. "
msgid "Add pause print"
msgstr "Aggiungi la stampa in pausa"
@@ -1204,9 +1223,17 @@ msgstr "Emetti anche limiti al G-code"
msgid "Also for all perimeters"
msgstr "Anche per tutti i perimetri"
+msgid "Also, the fan speed over %1% won't be touched by this feature."
+msgstr ""
+"Inoltre, la velocità della ventola sopra a %1% non verrà modificata da "
+"questa funzione."
+
msgid "Alt + Mouse wheel"
msgstr "Alt + Ruota del mouse"
+msgid "Alternate Fill Angle"
+msgstr "Angolo riempimento alternativo"
+
msgid "Alternate nozzles:"
msgstr "Ugelli alternativi:"
@@ -1565,6 +1592,9 @@ msgstr "Evita di attraversare i perimetri"
msgid "Avoid crossing perimeters - Max detour length"
msgstr "Evita di incrociare i perimetri - Massima distanza di deviazione"
+msgid "Avoid top surface for travels"
+msgstr "Evita superfici superiori per spostamenti"
+
msgid "BACK ARROW"
msgstr "FRECCIA INDIETRO"
@@ -1700,6 +1730,13 @@ msgstr "Supporti a blocchi"
msgid "Block supports by angle"
msgstr "Supporti di blocco per angolo"
+msgid ""
+"Both compatible and incompatible presets are shown. Click to hide presets "
+"not compatible with the current printer."
+msgstr ""
+"Vengono mostrati sia i presets compatibili che quelli incompatibili. Fare clic "
+"per nascondere i presets non compatibili con la stampante corrente."
+
msgid "Bottle volume"
msgstr "Volume della bottiglia"
@@ -1854,6 +1891,9 @@ msgstr "buffer troppo piccolo"
msgid "build volume"
msgstr "Volume stampa"
+msgid "but for %1% where the speed-up phase is skipped."
+msgstr "ma per %1% dove la fase di accelerazione viene saltata."
+
msgid "But on first layer"
msgstr "Però sul primo strato"
@@ -1880,6 +1920,9 @@ msgstr ""
"Nota: Questo nome può essere cambiato in seguito dalle impostazioni delle "
"stampanti fisiche"
+msgid "By default, there won't be any fan speed command."
+msgstr "Per default, non ci sarà alcun comando di velocità ventola."
+
msgid ""
"By how much the 'wipe inside' can dive inside the object (if possible)?\n"
"In % of the perimeter width.\n"
@@ -1989,8 +2032,8 @@ msgstr ""
msgid "Cannot overwrite a system profile."
msgstr "Impossibile sovrascrivere un profilo di sistema."
-msgid "Cannot overwrite an external profile."
-msgstr "Impossibile sovrascrivere un profilo esterno."
+msgid "Cannot overwrite an external profile. Please choose another name."
+msgstr "Impossibile sovrascrivere un profilo esterno. Scegliere un altro nome."
msgid ""
"Cannot proceed without support points! Add support points or disable support "
@@ -2002,6 +2045,9 @@ msgstr ""
msgid "Cap with"
msgstr "Capacità con"
+msgid "Cap with perimeter flow"
+msgstr "Limite flusso perimetrale"
+
msgid "Capabilities"
msgstr "Capacità"
@@ -2095,31 +2141,35 @@ msgstr ""
"Se il valore è impostato su 0, mostrerà 0."
msgid ""
-"Change width on every odd layer for better overlap with adjacent layers and "
-"getting stringer shells. Try values about +/- 0.1 with different sign for "
-"external and internal perimeters.\n"
-"This could be combined with extra permeters on odd layers.\n"
+"Change width on every even layer (and not on odd layers like the first one) "
+"for better overlap with adjacent layers and getting stringer shells. Try "
+"values about +/- 0.1 with different sign for external and internal "
+"perimeters.\n"
+"This could be combined with extra permeters on even layers.\n"
"Works as absolute spacing or a % of the spacing.\n"
"set 0 to disable"
msgstr ""
-"Modifica la larghezza su ogni strato dispari per una migliore sovrapposizione "
-"con gli strati adiacenti e per ottenere gusci più stretti. Prova valori di "
-"circa +/- 0,1 con segno diverso per i perimetri esterni e interni.\n"
-"Questo potrebbe essere combinato con perimetri extra su strati dispari.\n"
+"Modifica la larghezza su ogni strato pari (e non su strati dispari come il "
+"primo) per una migliore sovrapposizione con gli strati adiacenti e per "
+"ottenere gusci più stretti. Prova valori di circa +/- 0,1 con segno diverso "
+"per i perimetri esterni ed interni.\n"
+"Questo potrebbe essere combinato con perimetri extra su strati pari.\n"
"Funziona come spaziatura assoluta o una % della spaziatura.\n"
"Imposta 0 per disabilitare"
msgid ""
-"Change width on every odd layer for better overlap with adjacent layers and "
-"getting stringer shells. Try values about +/- 0.1 with different sign.\n"
-"This could be combined with extra permeters on odd layers.\n"
+"Change width on every even layer (and not on odd layers like the first one) "
+"for better overlap with adjacent layers and getting stringer shells. Try "
+"values about +/- 0.1 with different sign.\n"
+"This could be combined with extra permeters on even layers.\n"
"Works as absolute spacing or a % of the spacing.\n"
"set 0 to disable"
msgstr ""
-"Modifica la larghezza su ogni strato dispari per una migliore sovrapposizione "
-"con gli strati adiacenti e per ottenere gusci più stretti. Prova valori di "
-"circa +/- 0,1 con segno diverso.\n"
-"Questo potrebbe essere combinato con perimetri extra su strati dispari.\n"
+"Modifica la larghezza su ogni strato pari (e non su strati dispari come il "
+"primo) per una migliore sovrapposizione con gli strati adiacenti e per "
+"ottenere gusci più stretti. Prova valori di circa +/- 0,1 con segno "
+"diverso.\n"
+"Questo potrebbe essere combinato con perimetri extra su strati pari.\n"
"Funziona come spaziatura assoluta o una % della spaziatura.\n"
"Imposta 0 per disabilitare"
@@ -2418,6 +2468,9 @@ msgstr "COMPLETATO"
msgid "Completed"
msgstr "Completato"
+msgid "Compress png textures"
+msgstr "Comprimi texture png"
+
msgid "compression failed"
msgstr "compressione fallita"
@@ -2876,6 +2929,9 @@ msgstr "Creare un nuovo progetto mentre alcuni preset vengono modificati."
msgid "Creating a new project while the current project is modified."
msgstr "Creare un nuovo progetto mentre il progetto corrente viene modificato."
+msgid "Creating arcs"
+msgstr "Creazione archi"
+
msgid "Critical angle"
msgstr "Angolo critico"
@@ -3107,6 +3163,22 @@ msgstr "profilo di stampa SLA predefinito"
msgid "Default speed"
msgstr "Velocità predefinita"
+msgid ""
+"Default speed for the fan, to set the speed for features where there is no "
+"fan control. Useful for PLA and other low-temp filament.\n"
+"Set 0 to disable the fan by default. Useful for ABS and other high-temp "
+"filaments.\n"
+"Set -1 to disable. if disabled, the beahavior isn't defined yet. The goal is "
+"to avoid adding fan speed commands."
+msgstr ""
+"Velocità predefinita per la ventola, per impostare la velocità per le "
+"funzioni in cui non è disponibile il controllo della ventola. Utile per PLA "
+"e altri filamenti a bassa temperatura.\n"
+"Imposta 0 per disabilitare la ventola per impostazione predefinita. Utile "
+"per ABS e altri filamenti ad alta temperatura.\n"
+"Imposta -1 per disabilitare. Se disabilitato, il comportamento non è ancora "
+"definito. L'obiettivo è evitare di aggiungere comandi di velocità ventola."
+
msgid "default value"
msgstr "valore predefinito"
@@ -3228,8 +3300,18 @@ msgstr "Strato riempimento denso"
msgid "Density"
msgstr "Densità"
-msgid "Density of internal infill, expressed in the range 0% - 100%."
-msgstr "Densità del riempimento interno, espressa nell'intervallo 0% - 100%."
+msgid ""
+"Density of internal infill, expressed in the range 0% - 100%.\n"
+"Set 0 to remove any sparse infill.\n"
+"Note that using a value of 100% won't change the type of infill from sparse "
+"to solid. If you want only solid infill, you can set the 'Solid infill every "
+"X layers' (solid_infill_every_layers) to 1 instead."
+msgstr ""
+"Densità del riempimento interno, espressa nel range 0% - 100%.\n"
+"Imposta 0 per rimuovere qualsiasi riempimento sparso.\n"
+"Nota che usare un valore del 100% non cambierà tipo di riempimento da scarso a "
+"solido. Se desideri solo il riempimento solido, puoi invece impostare "
+"'Riempimento solido ogni X livelli' (solid_infill_every_layers) su 1."
msgid "Density of the first raft or support layer."
msgstr "Densità del primo layer del raft o del supporto."
@@ -3514,6 +3596,9 @@ msgstr "Non organizzare"
msgid "Don't avoid crossing on 1st layer"
msgstr "Non evitare l'attraversamento sul 1° strato"
+msgid "Don't check crossings for retraction on first layer"
+msgstr "Non controllare la retrazione degli incroci sul primo strato"
+
msgid "Don't import"
msgstr "Non importare"
@@ -3595,6 +3680,9 @@ msgstr "Ogni millimetro aggiunge questo valore al valore di retrazione."
msgid "Ear pattern"
msgstr "Modello di orecchio"
+msgid "EBridge"
+msgstr "EBridge"
+
msgid "Edit"
msgstr "Modifica"
@@ -3973,6 +4061,9 @@ msgstr ""
"Corpo del messaggio: \"%1%\"\n"
"Errore: \"% 2%\""
+msgid "EPeri"
+msgstr "EPeri"
+
msgid "Erase all objects"
msgstr "Cancella tutti gli oggetti"
@@ -4019,6 +4110,31 @@ msgstr "Errore nel caricamento sull'host di stampa:"
msgid "Error while loading .gcode file"
msgstr "Errore durante il caricamento del file .G-code"
+msgid ""
+"Error while writing gcode: two points are at the same position. Please send "
+"the .3mf project to the dev team for debugging. Extrude loop: seam notch."
+msgstr ""
+"Errore durante la scrittura del gcode: due punti sono nella stessa posizione. "
+"Invia il progetto .3mf al team di sviluppo per il debug. Ciclo estrusione: "
+"tacca cucitura."
+
+msgid ""
+"Error while writing gcode: two points are at the same position. Please send "
+"the .3mf project to the dev team for debugging. Extrude loop: wipe."
+msgstr ""
+"Errore durante la scrittura del gcode: due punti sono nella stessa posizione. "
+"Invia il progetto .3mf al team di sviluppo per il debug. Ciclo estrusione: "
+"pulizia."
+
+msgid ""
+"Error while writing gcode: two points are at the same position. Please send "
+"the .3mf project to the dev team for debugging. Extrude loop: "
+"wipe_inside_start."
+msgstr ""
+"Errore durante la scrittura del gcode: due punti sono nella stessa posizione. "
+"Invia il progetto .3mf al team di sviluppo per il debug. Ciclo estrusione: "
+"wipe_inside_start."
+
msgid "Error with zip archive"
msgstr "Errore con l'archivio zip"
@@ -4049,6 +4165,9 @@ msgstr "Tempo di stampa stimato"
msgid "Estimated printing times"
msgstr "Tempi di stampa stimati"
+msgid "even layers"
+msgstr "strati pari"
+
msgid "Even-odd"
msgstr "Pari-dispari"
@@ -4218,6 +4337,9 @@ msgstr ""
"Esporta la configurazione corrente su file, con solo le impostazioni "
"compatibili con Slic3r"
+msgid "Export current plate (options available in the dialog)"
+msgstr "Esporta piastra corrente (opzioni disponibili nella finestra di dialogo)"
+
msgid "Export current plate as G-code"
msgstr "Esportazione della piastra corrente come G-code"
@@ -4367,8 +4489,8 @@ msgstr "Perimetri esterni in modalità vaso"
msgid "External perimeters spacing"
msgstr "Spazio tra perimetri esterni"
-msgid "External perimeters spacing change on odd layers"
-msgstr "Modifica spaziatura perimetri esterni su strati dispari"
+msgid "External perimeters spacing change on even layers"
+msgstr "Modifica spaziatura perimetri esterni su strati pari"
msgid "External perimeters speed"
msgstr "Velocità dei perimetri esterni"
@@ -4385,8 +4507,8 @@ msgstr "Lunghezza extra sulla ripartenza"
msgid "Extra loading distance"
msgstr "Distanza di carico extra"
-msgid "Extra perimeter on odd layers"
-msgstr "Perimetro extra su strati dispari"
+msgid "Extra perimeter on even layers"
+msgstr "Perimetro extra su strati pari"
msgid "Extra perimeters"
msgstr "Perimetri aggiuntivi"
@@ -4411,16 +4533,16 @@ msgstr "Lunghezza dell'estratto sul riavvio del cambio utensile"
msgid ""
"Extrude perimeters that have a part over an overhang in the reverse "
-"direction on odd layers. This alternating pattern can drastically improve "
-"steep overhang.\n"
+"direction on even layers (and not on odd layers like the first one). This "
+"alternating pattern can drastically improve steep overhang.\n"
"!! this is a very slow algorithm (it uses the same results as "
"extra_perimeters_overhangs) !!"
msgstr ""
-"Estrudi i perimetri che hanno una parte sopra una sporgenza nella direzione "
-"inversa in strati dispari. Quel modello alternato può migliorare "
-"drasticamente lo sbalzo ripido.\n"
+"Estrudi perimetri che hanno una parte sopra una sporgenza nella direzione "
+"opposta su strati pari (e non su strati dispari come il primo). Questa trama "
+"alternata può migliorare drasticamente la sporgenza ripida.\n"
"!! questo è un algoritmo molto lento (usa gli stessi risultati di "
-"extra_perimeters_overhangs) !!!"
+"extra_perimeters_overhangs) !!"
msgid "Extruder"
msgstr "Estrusore"
@@ -4537,6 +4659,9 @@ msgstr "Mancata esecuzione di alcuni fori nel modello"
msgid "Fan"
msgstr "Ventola"
+msgid "Fan delay only for overhangs"
+msgstr "Ritardo ventola solo sporgenze"
+
msgid "Fan KickStart time"
msgstr "Tempo di KickStart della ventola"
@@ -4737,6 +4862,9 @@ msgstr "Angolo di riempimento"
msgid "Fill angle increment"
msgstr "Incremento dell'angolo di riempimento"
+msgid "Fill angle template"
+msgstr "Modello angolo riempimento"
+
msgid "Fill bed"
msgstr "Riempi letto"
@@ -5088,6 +5216,9 @@ msgstr ""
"Formato delle miniature del G-code: PNG per la migliore qualità, JPG per la "
"dimensione più piccola, QOI per il firmware con poca memoria"
+msgid "Formatting"
+msgstr "Formattazione"
+
msgid ""
"Forward-compatibility rule when loading configurations from config files and "
"project files (3MF, AMF)."
@@ -5366,6 +5497,9 @@ msgstr "Generazione di percorsi utensile"
msgid "Generating vertex buffer"
msgstr "Generazione del buffer dei vertici"
+msgid "GFill"
+msgstr "GFill"
+
msgid ""
"Give to the bridge infill algorithm if the infill needs to be connected, and "
"on which perimeters. Can be useful to disconnect to reduce a little bit the "
@@ -5789,6 +5923,9 @@ msgstr ""
msgid "Hyperbola"
msgstr "Iperbole"
+msgid "IBridge"
+msgstr "IBridge"
+
msgid "Icon"
msgstr "Icona"
@@ -6082,6 +6219,9 @@ msgstr ""
"Se abilitato, puoi cambiare la dimensione delle icone della barra degli "
"strumenti manualmente."
+msgid "If estimated layer time is below ~%1%s"
+msgstr "Se il tempo di strato stimato è inferiore a ~%1%s"
+
msgid ""
"If expressed as absolute value in mm/s, this speed will be applied as a "
"maximum for all infill print moves of the first layer.\n"
@@ -6175,6 +6315,18 @@ msgstr ""
"impostata alcuna tacca. Se l'angolo è troppo alto, non c'è abbastanza spazio "
"per la tacca."
+msgid "If the fan speed is set and is higher than %1%%%, it won't be changed."
+msgstr ""
+"Se la velocità della ventola è impostata ed è superiore a %1%%%, non verrà "
+"modificata."
+
+msgid ""
+"If the fan speed is set, it will proportionally increasing speed between "
+"this value and %1%%%."
+msgstr ""
+"Se la velocità della ventola è impostata, la velocità aumenterà "
+"proporzionalmente tra questo valore e %1%%%."
+
msgid ""
"If the perimeter overlap is set at 100%, the yellow areas should be filled "
"by the overlap.\n"
@@ -6286,6 +6438,35 @@ msgstr ""
"Se utilizzi un colore con una saturazione e/o un valore superiore all'80%, "
"questi verranno aumentati. Se inferiori, verranno diminuiti."
+msgid ""
+"If you want to process the output G-code through custom scripts, just list "
+"their absolute paths here.\n"
+"Separate multiple scripts with a semicolon or a line return.\n"
+"!! please use '\\;' here if you want a not-line-separation ';'!!\n"
+"Scripts will be passed the absolute path to the G-code file as the first "
+"argument, and they can access the Slic3r config settings by reading "
+"environment variables.\n"
+"The script, if passed as a relative path, will also be searched from the "
+"slic3r directory, the slic3r configuration directory and the user directory."
+msgstr ""
+"Se vuoi elaborare il G-code di uscita con script personalizzati, elenca qui i "
+"loro percorsi assoluti.\n"
+"Separa più script con un punto e virgola o un ritorno a capo.\n"
+"!! per favore usa '\\' se vuoi una separazione non di linea ';'!!\n"
+"Agli script viene passato il percorso assoluto del file G-code come primo "
+"argomento, e possono accedere alle impostazioni di configurazione di Slic3r "
+"leggendo le variabili d'ambiente.\n"
+"Lo script, se passato come percorso relativo, verrà cercato anche dalla "
+"directory slic3r, dalla directory di configurazione di slic3r e dalla "
+"directory dell'utente."
+
+msgid ""
+"If your custom texture (in png format) is displayed black, then disable this "
+"option to remove the problematic optimisation."
+msgstr ""
+"Se la tua texture personalizzata (in formato png) viene visualizzata in "
+"nero, disabilita questa opzione per rimuovere l'ottimizzazione problematica."
+
msgid ""
"If your firmware doesn't handle the extruder displacement you need the G-"
"code to take it into account. This option lets you specify the displacement "
@@ -6324,6 +6505,9 @@ msgstr ""
"aumenterà la qualità.\n"
"Imposta zero per disabilitare."
+msgid "IFill"
+msgstr "IFill"
+
msgid "Ignore HTTPS certificate revocation checks"
msgstr "Ignora i controlli di revoca dei certificati HTTPS"
@@ -6599,8 +6783,8 @@ msgstr "Massima velocità riempimento primo strato"
msgid "Infill spacing"
msgstr "Spaziatura riempimento"
-msgid "Infill spacing change on odd layers"
-msgstr "Modifica spaziatura riempimento su strati dispari"
+msgid "Infill spacing change on even layers"
+msgstr "Modifica spaziatura riempimento su strati pari"
msgid "Infill speed"
msgstr "Velocità riempimento"
@@ -6677,6 +6861,17 @@ msgstr "Istanze"
msgid "Instances to Separated Objects"
msgstr "Istanze a oggetti separati"
+msgid ""
+"instead of writing 'thumbnails' as tag in the gcode, it will write "
+"'thumbnails_PNG', thumbnails_JPG', 'thumbnail_QOI', etc..\n"
+" Some firmware need it to know how to decode the thumbnail, some others "
+"don't support it."
+msgstr ""
+"invece di scrivere 'thumbnails' come tag nel gcode, scriverà 'thumbnails_PNG', "
+"'thumbnails_JPG', 'thumbnail_QOI', ecc..\n"
+" Alcuni firmware lo richiedono per sapere come decodificare la miniatura, "
+"altri non lo supportano."
+
msgid "Interface"
msgstr "Interfaccia"
@@ -6734,6 +6929,9 @@ msgstr "Perimetro interno"
msgid "Internal Perimeter acceleration"
msgstr "Accelerazione perimetro interno"
+msgid "Internal Perimeter fan speed"
+msgstr "Velocità ventola perimetro interno"
+
msgid "Internal perimeters"
msgstr "Perimetri interno"
@@ -6789,6 +6987,30 @@ msgstr "parametro non valido"
msgid "Invalid pinhead diameter"
msgstr "Diametro della testa di spillo non valido"
+msgid "Invert Pitch axis"
+msgstr "Inverti asse Angolo"
+
+msgid "Invert Roll axis"
+msgstr "Inverti asse Rotazione"
+
+msgid "Invert X axis"
+msgstr "Inverti asse X"
+
+msgid "Invert Y axis"
+msgstr "Inverti asse Y"
+
+msgid "Invert Yaw axis"
+msgstr "Inverti asse Imbardata"
+
+msgid "Invert Z axis"
+msgstr "Inverti asse Z"
+
+msgid "IPeri"
+msgstr "IPeri"
+
+msgid "Iron"
+msgstr "Stiro"
+
msgid "Ironing"
msgstr "Stiratura"
@@ -6879,6 +7101,13 @@ msgstr ""
msgid "It's a last preset for this physical printer."
msgstr "È un ultimo preset per questa stampante fisica."
+msgid ""
+"It's better for some infill like rectilinear to rotate 90° each layer. If "
+"this setting is deactivated, they won't do that anymore."
+msgstr ""
+"È meglio che alcuni riempimenti, come quello rettilineo, ruotino di 90° ogni "
+"strato. Se questa impostazione è disattivata, non lo faranno più."
+
msgid "It's impossible to print multi-part object(s) with SLA technology."
msgstr "È impossibile stampare oggetti in più parti con la tecnologia SLA."
@@ -7229,6 +7458,26 @@ msgstr "Carico"
msgid "Load a model"
msgstr "Carica un modello"
+msgid ""
+"Load a png/svg file to be used as a texture. \n"
+"If it can be found via the executable, configuration or user directory then "
+"a relative path will be kept instead of the full one."
+msgstr ""
+"Carica un file png/svg da utilizzare come texture. \n"
+"Se è possibile trovarlo tramite l'eseguibile, la configurazione o la "
+"directory dell'utente, verrà mantenuto un percorso relativo invece di quello "
+"completo."
+
+msgid ""
+"Load a stl file to be used as a model. \n"
+"If it can be found via the executable, configuration or user directory then "
+"a relative path will be kept instead of the full one."
+msgstr ""
+"Carica un file stl da utilizzare come modello. \n"
+"Se è possibile trovarlo tramite l'eseguibile, la configurazione o la "
+"directory dell'utente, verrà mantenuto un percorso relativo invece di quello "
+"completo."
+
msgid "Load an model saved with imperial units"
msgstr "Carica un modello salvato con unità imperiali"
@@ -7820,6 +8069,9 @@ msgstr ""
"tengono le teste di spillo dei punti di supporto e si collegano ai pilastri "
"come piccoli rami."
+msgid "Maximum Print Volumetric speed"
+msgstr "Velocità volumetrica di stampa massima"
+
msgid "maximum speed"
msgstr "velocità massima"
@@ -8056,6 +8308,9 @@ msgstr "Tempo di esposizione minimo"
msgid "Minimum extrusion length"
msgstr "Lunghezza minima di estrusione"
+msgid "Minimum fan speed"
+msgstr "Velocità minima ventola"
+
msgid "Minimum feature size"
msgstr "Dimensione minima della caratteristica"
@@ -8660,6 +8915,13 @@ msgstr "Nota: È richiesta una versione di Repetier almeno 0.90.0 ."
msgid "Note: some shortcuts work in (non)editing mode only."
msgstr "Nota: alcune scorciatoie funzionano solo in modalità (non) editing."
+msgid ""
+"Note: The layer time for the cooling is currently computed with infinite "
+"acceleration, and so is very optimistic."
+msgstr ""
+"Nota: il tempo di raffreddamento è attualmente calcolato con accelerazione "
+"infinita, quindi è molto ottimistico."
+
msgid "Note: This preset will be replaced after saving"
msgstr "Nota: Questo preset sarà sostituito dopo il salvataggio"
@@ -8829,9 +9091,6 @@ msgstr "Spirale di ottagramma"
msgid "OctoPrint version"
msgstr "Versione OctoPrint"
-msgid "odd layers"
-msgstr "strati dispari"
-
msgid "of a current Object"
msgstr "di un oggetto corrente"
@@ -8865,12 +9124,12 @@ msgstr "Vecchio valore"
msgid "On"
msgstr "On"
+msgid "On even layers"
+msgstr "Su strati pari"
+
msgid "On first layer"
msgstr "Primo strato"
-msgid "On odd layers"
-msgstr "Su strati dispari"
-
msgid ""
"On OSX there is always only one instance of app running by default. However "
"it is allowed to run multiple instances of same app from the command line. "
@@ -8948,6 +9207,16 @@ msgstr ""
"Rimuovi tutto tranne l'ultimo oggetto, o abilita la modalità sequenziale con "
"\"complete_objects\"."
+msgid "Only ascii characters in gcode"
+msgstr "Solo caratteri ascii nel gcode"
+
+msgid ""
+"Only compatible presets are shown. Click to show both the presets compatible "
+"and not compatible with the current printer."
+msgstr ""
+"Vengono mostrati solo i presets compatibili. Fare clic per mostrare sia i "
+"presets compatibili che quelli non compatibili con la stampante corrente."
+
msgid ""
"Only create support if it lies on a build plate. Don't create support on a "
"print."
@@ -9131,6 +9400,9 @@ msgstr ""
"Apre la notifica del consiglio del giorno nell'angolo in basso a destra o "
"mostra un altro consiglio se già aperto."
+msgid "OPeri"
+msgstr "OPeri"
+
msgid "Optimize object rotation for best surface quality."
msgstr "Ottimizza rotazione oggetto per la migliore qualità superficiale"
@@ -9162,9 +9434,21 @@ msgstr ""
"di trasudamento. Questa caratteristica rallenta sia la stampa che la "
"generazione del codice G."
+msgid "Optimizing layer %s / %s"
+msgstr "Ottimizzazione strato %s / %s"
+
+msgid "Optimizing skirt & brim %s%%"
+msgstr "Ottimizzazione skirt e brim %s%%"
+
+msgid "Optimizing support layer %s / %s"
+msgstr "Ottimizzazione strato supporto %s/%s"
+
msgid "Option tags:"
msgstr "Opzioni tag:"
+msgid "Option use another tags than the current mode."
+msgstr "L'opzione utilizza tag diversi dalla modalità corrente."
+
msgid "Options"
msgstr "Opzioni"
@@ -9243,6 +9527,42 @@ msgstr "Opzioni di uscita"
msgid "Outside walls"
msgstr "Pareti esterne"
+msgid "Over %1% and %2% it will be at least %3%%%."
+msgstr "Sopra il %1% e %2% sarà almeno il %3%%%."
+
+msgid "Over %1% and %2% it will be fixed to %3%%%."
+msgstr "Sopra il %1% e %2% sarà fissa al %3%%%."
+
+msgid "Over %1% and %2% it will be off."
+msgstr "Sopra il %1% e %2% sarà spenta."
+
+msgid "Over %1% it will be at %2%%%."
+msgstr "Sopra il %1% sarà al %2%%%."
+
+msgid "Over %1% it will be at least %2%%%, and off over %3%."
+msgstr "Sopra il %1% sarà almeno %2%%%, e spento sopra il %3%."
+
+msgid "Over %1% it will be at least %2%%%, and over %3% at least %4%%%."
+msgstr "Sopra il %1% sarà almeno %2%%% e sopra il %3% almeno del %4%%%."
+
+msgid "Over %1% it will be at least %2%%%."
+msgstr "Sopra il %1% sarà almeno il %2%%%."
+
+msgid "Over %1% it will be fixed to %2%%%, and off over %3%."
+msgstr "Sopra il %1% sarà fissa al %2%%% e ridotta al %3%."
+
+msgid "Over %1% it will be fixed to %2%%%, and over %3% to %4%%%."
+msgstr "Sopra il %1% sarà fissa al %2%%% e sopra il %3% al %4%%%."
+
+msgid "Over %1% it will be off, and over %2% at least %3%%%."
+msgstr "Sopra il %1% sarà spenta, e sopra il %2% almeno il %3%%%."
+
+msgid "Over %1% it will be off, and over %2% fixed to %3%%%."
+msgstr "Sopra il %1% verrà spenta e sopra il %2% fissa al %3%%%."
+
+msgid "Over %1% it will be off."
+msgstr "Sopra il %1% verrà spenta."
+
msgid "Over raft"
msgstr "Sopra Raft"
@@ -9550,6 +9870,9 @@ msgstr "Generatore di perimetri"
msgid "Perimeter loop seam"
msgstr "Cucitura perimetrale ad anello"
+msgid "Perimeter overhangs"
+msgstr "Sporgenze perimetrali"
+
msgid "perimeter overlap"
msgstr "sovrapposizione del perimetro"
@@ -9589,8 +9912,8 @@ msgstr "Numero del perimetro"
msgid "Perimeters loop"
msgstr "Anello dei perimetri"
-msgid "Perimeters spacing change on odd layers"
-msgstr "Modifica spaziatura perimetri su strati dispari"
+msgid "Perimeters spacing change on even layers"
+msgstr "Modifica spaziatura perimetri su strati pari"
msgid ""
"Perimeters will be split into multiple segments by inserting Fuzzy skin "
@@ -10027,6 +10350,15 @@ msgstr "Stampante con nome \"%1%\" esiste già."
msgid "Printer:"
msgstr "Stampante:"
+msgid ""
+"Printing speed of the wipe tower. Capped by filament_max_volumetric_speed "
+"(if set).\n"
+"If set to zero, a value of 80mm/s is used."
+msgstr ""
+"Velocità di stampa della torre di pulizia. Limitata da "
+"filament_max_volumetric_speed (se impostato).\n"
+"Se impostato a zero, viene utilizzato un valore di 80 mm/s."
+
msgid ""
"Printing with multiple extruders of differing nozzle diameters. If support "
"is to be printed with the current extruder (support_material_extruder == 0 "
@@ -10520,6 +10852,9 @@ msgstr "Ripristino alla base"
msgid "Reset to Filament Color"
msgstr "Ripristina il colore del filamento"
+msgid " resin '%1%'"
+msgstr " resina '%1%'"
+
msgid "Restart application"
msgstr "Riavvia l'applicazione"
@@ -10573,8 +10908,8 @@ msgstr "Retrazioni"
msgid "Reverse direction of zoom with mouse wheel"
msgstr "Inverti la direzione dello zoom con la rotella del mouse"
-msgid "Reverse on odd"
-msgstr "Inverti su dispari"
+msgid "Reverse on even"
+msgstr "Inverti su pari"
msgid "Reverse threshold"
msgstr "Soglia inversa"
@@ -11192,6 +11527,23 @@ msgstr ""
msgid "Set the shape of your printer's bed."
msgstr "Imposta la forma del letto della tua stampante."
+msgid ""
+"Set the speed of the full perimeters to the overhang speed, and also the "
+"next one(s) if any.\n"
+"Set to 0 to disable.\n"
+"Set to 1 to set the overhang speed to the full perimeter if there is any "
+"overhang detected inside it.\n"
+"Set to more than 1 to also set the overhang speed to the next perimeter(s) "
+"(only in classic mode)."
+msgstr ""
+"Imposta la velocità di tutti i perimetri alla velocità sporgenze e anche "
+"quelli successivi, se presenti.\n"
+"Imposta 0 per disabilitare.\n"
+"Imposta 1 per impostare la velocità sporgenze sull'intero perimetro se viene "
+"rilevata una sporgenza nel perimetro.\n"
+"Imposta maggiore di 1 per impostare anche la velocità sporgenze sul/sui "
+"perimetro/i successivo/i (solo in modalità classica)."
+
msgid ""
"Set this if your printer uses control values from 0-100 instead of 0-255."
msgstr ""
@@ -11415,6 +11767,9 @@ msgstr ""
"propria finestra. Devi fare clic sugli ingranaggi delle impostazioni per "
"visualizzare la finestra delle impostazioni."
+msgid "SFill"
+msgstr "SFill"
+
msgid "Shall I adjust those settings for supports?"
msgstr "Devo regolare queste impostazioni per i supporti?"
@@ -11615,6 +11970,9 @@ msgstr ""
"(utilizzando 55% e 75% per le due soglie)\n"
"Usa la modalità esperto per ottenere widget più dettagliati"
+msgid "Simplifying paths"
+msgstr "Semplificare percorsi"
+
msgid "Simulate Prusa 'no thick bridge'"
msgstr "Simula Prusa 'no ponte spesso'"
@@ -11962,8 +12320,8 @@ msgstr "Velocità ventola riempimento solido"
msgid "Solid infill spacing"
msgstr "Spaziatura di riempimento solido"
-msgid "Solid infill spacing change on odd layers"
-msgstr "Modifica spaziatura riempimento solido su strati dispari"
+msgid "Solid infill spacing change on even layers"
+msgstr "Modifica spaziatura riempimento solido su strati pari"
msgid "Solid infill speed"
msgstr "Velocità di riempimento solido"
@@ -11980,6 +12338,9 @@ msgstr "Strati solidi"
msgid "Solid spacing"
msgstr "Spaziatura solida"
+msgid "Solid surfaces"
+msgstr "Superfici solide"
+
msgid "Soluble material"
msgstr "Materiale solubile"
@@ -12091,6 +12452,9 @@ msgstr "Sparsi"
msgid "Sparse fill pattern"
msgstr "Trama riempimento sparso"
+msgid "Sparse infill"
+msgstr "Riempimento sparso"
+
msgid "Sparse infill pattern"
msgstr "Trama riempimento sparso"
@@ -12372,6 +12736,15 @@ msgstr "Iniziare il codice G"
msgid "Start new slicing process"
msgstr "Inizia un nuovo processo di affettamento"
+msgid ""
+"Start of the wiping speed ramp up (for wipe tower).\n"
+"Can be a % of the 'Wipe tower speed'.\n"
+"Set to 0 to disable."
+msgstr ""
+"Inizio dell'incremento della velocità di pulizia (per la torre di pulizia).\n"
+"Può essere una % della 'Velocità della torre di pulizia'.\n"
+"Imposta 0 per disabilitare."
+
msgid "Start temp:"
msgstr "Temp. inizio:"
@@ -12467,6 +12840,12 @@ msgstr ""
"Smontato con successo. Il dispositivo %s(%s) può ora essere rimosso in modo "
"sicuro dal computer."
+msgid "Supp"
+msgstr "Supp"
+
+msgid "SuppI"
+msgstr "SuppI"
+
msgid "support"
msgstr "supporto"
@@ -12734,6 +13113,12 @@ msgstr ""
" Layout schede: tutte le finestre sono nell'applicazione, tutte "
"selezionabili tramite una scheda."
+msgid "Tags"
+msgstr "Tags"
+
+msgid "tags"
+msgstr "tags"
+
msgid "Take Configuration &Snapshot"
msgstr "Prendi la configurazione e l'istantanea"
@@ -12794,6 +13179,9 @@ msgstr "Colori del testo"
msgid "Texture"
msgstr "Texture"
+msgid "TFill"
+msgstr "TFill"
+
msgid "The %1% infill pattern is not supposed to work at 100%% density."
msgstr ""
"Il modello di riempimento %1% non dovrebbe funzionare al 100%% di densità."
@@ -13241,6 +13629,13 @@ msgstr ""
"L'oggetto sarà sollevato da questo numero di strati, e il materiale di "
"supporto sarà generato sotto di esso."
+msgid ""
+"The option you selected in the search dialog isn't available in the current "
+"mode/tags. Do you want to switch to the option tag?"
+msgstr ""
+"L'opzione selezionata nella finestra di dialogo di ricerca non è disponibile "
+"nella modalità/tag corrente. Vuoi passare al tag opzione?"
+
msgid ""
"The percentage of smaller pillars compared to the normal pillar diameter "
"which are used in problematic areas where a normal pilla cannot fit."
@@ -13452,6 +13847,33 @@ msgid "The speed for retractions (this only applies to the extruder motor)."
msgstr ""
"La velocità per le retrazioni (si applica solo al motore dell'estrusore)."
+msgid ""
+"The Spiral Vase mode requires:\n"
+"- no top solid layers\n"
+"- 0% fill density\n"
+"- classic perimeter slicing\n"
+"- no support material\n"
+"- Ensure vertical shell thickness enabled\n"
+"- disabled 'no solid infill over perimeters'\n"
+"- unchecked 'exact last layer height'\n"
+"- unchecked 'dense infill'\n"
+"- unchecked 'extra perimeters'- unchecked 'gap fill after last perimeter'- "
+"disabled 'no solid fill over X perimeters'- disabled 'seam notch'"
+msgstr ""
+"La modalità Vaso a spirale richiede:\n"
+"- nessun strato solido superiore\n"
+"- 0% densità di riempimento\n"
+"- generatore perimetro classico\n"
+"- nessun materiale di supporto\n"
+"- Assicurati che lo spessore del guscio verticale sia abilitato\n"
+"- disabilitato 'nessun riempimento solido sui perimetri'\n"
+"- deselezionata 'altezza esatta dell'ultimo strato'\n"
+"- deselezionato 'riempimento denso'\n"
+"- deselezionato 'perimetri extra'\n"
+"- deselezionato 'riempimento spazio dopo l'ultimo perimetro'\n"
+"- disabilitato 'nessun riempimento solido su X perimetri'\n"
+"- disabilitato 'tacca di cucitura'"
+
msgid ""
"The Spiral Vase option can only be used when printing single material "
"objects."
@@ -13702,6 +14124,9 @@ msgstr "Pareti sottili larghezza minima"
msgid "Thin walls speed"
msgstr "Velocità delle pareti sottili"
+msgid "ThinW"
+msgstr "ThinW"
+
msgid "This %s version: %s"
msgstr "Questa versione %s: %s"
@@ -13793,6 +14218,22 @@ msgstr ""
"proprio prima dello spostamento Z. Nota che puoi usare variabili segnaposto "
"per tutte le impostazioni di Slic3r così come {layer_num} e {layer_z}."
+msgid ""
+"This define the succetion of infill angle. When defined, it replaces the "
+"fill_angle, and there won't be any extra 90° for each layer added, but the "
+"fill_angle_increment will still be used. The first layer start with the "
+"first angle. If a new pattern is used in a modifier, it will choose the "
+"layer angle from the pattern as if it has started from the first layer.Empty "
+"this settings to disable and recover the old behavior."
+msgstr ""
+"Questo definisce la successione dell'angolo di riempimento. Quando definito, "
+"sostituisce fill_angle e non ci saranno 90° aggiuntivi per ogni strato "
+"aggiunto, ma fill_angle_increment verrà comunque utilizzato. Il primo strato "
+"inizia con il primo angolo. Se un nuovo modello viene utilizzato in un "
+"modificatore, sceglierà l'angolo dello strato dal modello come se fosse "
+"iniziato dal primo strato. Svuotare queste impostazioni per disabilitare e "
+"ripristinare il vecchio comportamento."
+
msgid ""
"This end procedure is inserted at the end of the output file, before the "
"printer end gcode (and before any toolchange from this filament in case of "
@@ -13917,6 +14358,21 @@ msgstr ""
"Può essere disabilitato da disable_fan_first_layers, rallentato da "
"full_fan_speed_layer e aumentato dal tempo di strato basso."
+msgid ""
+"This fan speed is enforced during all infill bridges. It won't slow down the "
+"fan if it's currently running at a higher speed.\n"
+"Set to -1 to disable this override (Internal bridges will use Bridges fan "
+"speed).\n"
+"Can be disabled by disable_fan_first_layers and increased by low layer time."
+msgstr ""
+"Questa velocità della ventola viene applicata durante tutti i ponti di "
+"riempimento. Non rallenterà la ventola se è attualmente in funzione a una "
+"velocità maggiore.\n"
+"Imposta -1 per disabilitare questa sostituzione (i ponti interni "
+"utilizzeranno la velocità della ventola dei ponti).\n"
+"Può essere disabilitato da disable_fan_first_layers e aumentato dal tempo di "
+"strato basso."
+
msgid ""
"This fan speed is enforced during all Internal Infill moves\n"
"Set to 1 to disable fan.\n"
@@ -14957,6 +15413,13 @@ msgstr ""
"Può essere una % della larghezza del perimetro\n"
"0 per auto"
+msgid ""
+"This setting represents the minimum fan speed (like minimum PWM) your fan "
+"needs to work."
+msgstr ""
+"Questa impostazione rappresenta la velocità minima della ventola (come il "
+"PWM minimo) necessaria per il suo funzionamento."
+
msgid ""
"This setting represents the minimum mm for a gapfill extrusion to be "
"extruded.\n"
@@ -15264,6 +15727,13 @@ msgstr ""
"la variabile d'ambiente %1% sul bundle CA corretto e riavviate "
"l'applicazione."
+msgid ""
+"To use a client cert on MacOS, you might need to add your certificate to "
+"your keychain and make sure it's trusted."
+msgstr ""
+"Per utilizzare un certificato client su MacOS, potresti dover aggiungere il "
+"certificato al portachiavi e assicurarti che sia affidabile."
+
msgid ""
"To use a custom CA file, please import your CA file into Certificate Store / "
"Keychain."
@@ -15377,6 +15847,9 @@ msgstr "Superiore solido"
msgid "Top solid acceleration"
msgstr "Accelerazione solido superiore"
+msgid "Top Solid fan speed"
+msgstr "Velocità ventola solido superiore"
+
msgid "Top solid infill"
msgstr "Riempimento solido superiore"
@@ -15392,6 +15865,9 @@ msgstr "Riempimento solido superiore"
msgid "Top solid speed"
msgstr "Velocità massima solida"
+msgid "Top surfaces"
+msgstr "Superfici superiori"
+
msgid "Top View"
msgstr "Vista dall'alto"
@@ -15819,6 +16295,24 @@ msgstr "Utente"
msgid "User presets"
msgstr "Preset dell'utente"
+msgid ""
+"Using a color change gcode, but there isn't one for this printer.\n"
+"The printer won't stop for the filament change, unless you set it manually "
+"in the custom gcode section."
+msgstr ""
+"Usa un gcode per il cambio colore, ma non ce n'è uno per questa stampante.\n"
+"La stampante non si fermerà per il cambio del filamento, a meno che non lo "
+"imposti manualmente nella sezione gcode personalizzata."
+
+msgid ""
+"Using a pause gcode, but there isn't one for this printer.\n"
+"The printer won't pause, unless you set it manually in the custom gcode "
+"section."
+msgstr ""
+"Usa un gcode di pausa, ma non ce n'è uno per questa stampante.\n"
+"La stampante non andrà in pausa, a meno che non la imposti manualmente nella "
+"sezione gcode personalizzata."
+
msgid "usually not necessary to change this"
msgstr "di solito non è necessario cambiare questo"
@@ -16110,6 +16604,14 @@ msgstr ""
"rovinate. Slic3r dovrebbe avvisare e prevenire le collisioni tra estrusori, "
"ma attenzione."
+msgid ""
+"When printing the gcode file, replace any non-ascii character by a '_'. Can "
+"be useful if the firmware or a software in a workflow doesn't support uft-8."
+msgstr ""
+"Quando si stampa il file gcode, sostituire qualsiasi carattere non-ascii con "
+"un '_'. Può essere utile se il firmware o un software in un flusso di lavoro "
+"non supporta uft-8."
+
msgid ""
"When printing with very low layer heights, you might still want to print a "
"thicker bottom layer to improve adhesion and tolerance for non perfect build "
@@ -16245,6 +16747,13 @@ msgstr ""
"dividere o unire i segmenti del perimetro. Se espresso in percentuale (ad "
"esempio 100%), verrà calcolato in base al diametro dell'ugello."
+msgid ""
+"When using 'Avoid crossing perimeters', consider the top surfaces as a void, "
+"to avoid travelling over them if possible."
+msgstr ""
+"Quando si utilizza 'Evita attraversamento perimetri', considera le superfici "
+"superiori come un vuoto, per evitare di attraversarle, se possibile."
+
msgid ""
"When using 'Complete individual objects', the default behavior is to draw "
"the skirt around each object. if you prefer to have only one skirt for the "
@@ -16415,6 +16924,12 @@ msgstr "Angolo di rotazione della torre di pulizia"
msgid "Wipe tower rotation angle with respect to x-axis."
msgstr "Angolo di rotazione della torre di pulizia rispetto all'asse x."
+msgid "Wipe Tower Speed"
+msgstr "Velocità torre pulizia"
+
+msgid "Wipe tower starting speed"
+msgstr "Velocità iniziale torre pulizia"
+
msgid "Wipe tower Width"
msgstr "Larghezza della torre di spurgo"
@@ -16477,9 +16992,15 @@ msgstr "scrittura richiamata fallita"
msgid "Write information about the model to the console."
msgstr "Scrivi informazioni sul modello nella console."
+msgid "Write the thumbnail type in gcode."
+msgstr "Scrivi tipo di miniatura nel gcode."
+
msgid "Wrong password"
msgstr "Password sbagliata"
+msgid "WTower"
+msgstr "WTower"
+
msgid "X coordinate of the left front corner of a wipe tower"
msgstr "Coordinata X dell'angolo anteriore sinistro di una torre di pulizia"
@@ -16620,6 +17141,13 @@ msgstr ""
"modificarla tu stesso nel pannello di destra se preferisci. È solo più "
"veloce selezionarlo qui."
+msgid ""
+"You can either use a path to your certificate or the name of your "
+"certificate as you can find it in your Keychain"
+msgstr ""
+"Puoi usare un percorso per il tuo certificato o il nome del tuo certificato "
+"come puoi trovarlo nel tuo portachiavi"
+
msgid ""
"You can increase this to over-extrude on the first layer if there is not "
"enough plastic because your bed isn't levelled.\n"
@@ -16794,9 +17322,18 @@ msgstr ""
"Le tue modifiche attuali cancelleranno tutte le modifiche dell'estrusore "
"(utensile) salvate."
+msgid "Your current tags:"
+msgstr "I tuoi tag correnti:"
+
msgid "Your file was repaired."
msgstr "Il tuo file è stato riparato."
+msgid "Your firmware doesn't allow to print the remaining times with M117."
+msgstr "Il tuo firmware non consente di stampare i tempi rimanenti con M117."
+
+msgid "Your firmware doesn't allow to print the remaining times with M73."
+msgstr "Il tuo firmware non consente di stampare i tempi rimanenti con M73."
+
msgid ""
"Your object appears to be too large, so it was automatically scaled down to "
"fit your print bed."
diff --git a/resources/localization/it/TODO.po b/resources/localization/it/TODO.po
index be1af4926db..d77d00e136d 100644
--- a/resources/localization/it/TODO.po
+++ b/resources/localization/it/TODO.po
@@ -1,577 +1,17 @@
-
-#: src/slic3r/GUI/Plater.cpp:5877
-#, possible-boost-format
-msgid " resin '%1%'"
-msgstr ""
-
#: ../../ui_layout/default/print.ui
msgid "_"
msgstr ""
-
-#: src/slic3r/GUI/PresetHints.cpp:192
-#, possible-boost-format
-msgid "Also, the fan speed over %1% won't be touched by this feature."
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:2287
-msgid "Alternate Fill Angle"
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:174
-#, possible-boost-format
-msgid "but for %1% where the speed-up phase is skipped."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:123
-msgid "By default, there won't be any fan speed command."
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:2738
-#Similar to me: Cap with perimeter flow
-# 7 changes: % of perimeter flow
-# translation: % di flusso perimetrale
-msgid "Cap with perimeter flow"
-msgstr ""
-
-
-#: src/libslic3r/Print.cpp:1238
-msgid "Creating arcs"
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:1224
-msgid ""
-"Default speed for the fan, to set the speed for features where there is no "
-"fan control. Useful for PLA and other low-temp filament.\n"
-"Set 0 to disable the fan by default. Useful for ABS and other high-temp "
-"filaments.\n"
-"Set -1 to disable. if disabled, the beahavior isn't defined yet. The goal is "
-"to avoid adding fan speed commands."
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:1452
-msgid "Don't check crossings for retraction on first layer"
-msgstr ""
-
-
-#: src/libslic3r/GCode.cpp:4085
-msgid ""
-"Error while writing gcode: two points are at the same position. Please send "
-"the .3mf project to the dev team for debugging. Extrude loop: seam notch."
-msgstr ""
-
-
-#: src/libslic3r/GCode.cpp:4565
-msgid ""
-"Error while writing gcode: two points are at the same position. Please send "
-"the .3mf project to the dev team for debugging. Extrude loop: wipe."
-msgstr ""
-
-
-#: src/libslic3r/GCode.cpp:4473
-msgid ""
-"Error while writing gcode: two points are at the same position. Please send "
-"the .3mf project to the dev team for debugging. Extrude loop: "
-"wipe_inside_start."
-msgstr ""
-
-
-#: src/slic3r/GUI/MainFrame.cpp:1735
-msgid "Export current plate (options available in the dialog)"
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:3420
-#Similar to me: Fan delay only for overhangs
-# 11 changes: Only for overhangs
-# translation: Solo per sporgenze
-msgid "Fan delay only for overhangs"
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:2307 src/libslic3r/PrintConfig.cpp:2308
-msgid "Fill angle template"
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:190
-#, possible-boost-format
-msgid "If the fan speed is set and is higher than %1%%%, it won't be changed."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:188
-#, possible-boost-format
-msgid ""
-"If the fan speed is set, it will proportionally increasing speed between "
-"this value and %1%%%."
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:4240
-#Similar to me: If you want to process the output G-code through custom scripts, just list their absolute paths here.\nSeparate multiple scripts with a semicolon or a line return.\n!! please use '\\;' here if you want a not-line-separation ';'!!\nScripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables.\nThe script, if passed as a relative path, will also be searched from the slic3r directory, the slic3r configuration directory and the user directory.
-# 86 changes: If you want to process the output G-code through custom scripts, just list their absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed the absolute path to the G-code file as the first argument, and they can access the Slic3r config settings by reading environment variables.\nThe script, if passed as a relative path, will also be searched from the slic3r directory, the slic3r configuration directory and the user directory.
-# translation: Se vuoi elaborare il G-code di uscita con script personalizzati, elenca qui i loro percorsi assoluti. Separa gli script multipli con un punto e virgola. Agli script viene passato il percorso assoluto del file G-code come primo argomento, e possono accedere alle impostazioni di configurazione di Slic3r leggendo le variabili d'ambiente.\nLo script, se passato come percorso relativo, verrà cercato anche dalla directory slic3r, dalla directory di configurazione di slic3r e dalla directory dell'utente.
-msgid ""
-"If you want to process the output G-code through custom scripts, just list "
-"their absolute paths here.\n"
-"Separate multiple scripts with a semicolon or a line return.\n"
-"!! please use '\\;' here if you want a not-line-separation ';'!!\n"
-"Scripts will be passed the absolute path to the G-code file as the first "
-"argument, and they can access the Slic3r config settings by reading "
-"environment variables.\n"
-"The script, if passed as a relative path, will also be searched from the "
-"slic3r directory, the slic3r configuration directory and the user directory."
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:427
-msgid ""
-"instead of writing 'thumbnails' as tag in the gcode, it will write "
-"'thumbnails_PNG', thumbnails_JPG', 'thumbnail_QOI', etc..\n"
-" Some firmware needs it to know how to decode the thumbnail, some others "
-"don't support it."
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:4150
-#Similar to me: Internal Perimeter fan speed
-# 3 changes: External perimeter fan speed
-# translation: Velocità della ventola sul perimetro esterno
-# 5 changes: Internal perimeters speed
-# translation: Velocità perimetri interni
-# 7 changes: External perimeters speed
-# translation: Velocità dei perimetri esterni
-msgid "Internal Perimeter fan speed"
-msgstr ""
-
-
-#: src/slic3r/GUI/Mouse3DController.cpp:562
-msgid "Invert Pitch axis"
-msgstr ""
-
-
-#: src/slic3r/GUI/Mouse3DController.cpp:567
-msgid "Invert Roll axis"
-msgstr ""
-
-
-#: src/slic3r/GUI/Mouse3DController.cpp:542
-msgid "Invert X axis"
-msgstr ""
-
-
-#: src/slic3r/GUI/Mouse3DController.cpp:547
-msgid "Invert Y axis"
-msgstr ""
-
-
-#: src/slic3r/GUI/Mouse3DController.cpp:557
-msgid "Invert Yaw axis"
-msgstr ""
-
-
-#: src/slic3r/GUI/Mouse3DController.cpp:552
-msgid "Invert Z axis"
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:2289
-msgid ""
-"It's better for some infill like rectilinear to rotate 90° each layer. If "
-"this settign is deactivated, they won't do that anymore."
-msgstr ""
-
-
-#: src/slic3r/GUI/BedShapeDialog.cpp:305
-msgid ""
-"Load a png/svg file to be used as a texture. \n"
-"If it can be found via the executable, configuration or user directory then "
-"a relative path will be kept instead of the full one."
-msgstr ""
-
-
-#: src/slic3r/GUI/BedShapeDialog.cpp:383
-msgid ""
-"Load a stl file to be used as a model. \n"
-"If it can be found via the executable, configuration or user directory then "
-"a relative path will be kept instead of the full one."
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:3664
-#Similar to me: Maximum Print Volumetric speed
-# 11 changes: Max volumetric speed
-# translation: Velocità volumetrica massima
-msgid "Maximum Print Volumetric speed"
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:4273 src/libslic3r/PrintConfig.cpp:4274
-#Similar to me: Minimum fan speed
-# 6 changes: Max fan speed
-# translation: Velocità massima ventola
-msgid "Minimum fan speed"
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:3152
-#Similar to me: mm of %
-# 1 changes: mm or %
-# translation: mm o %
-# 2 changes: mm² or %
-# translation: mm² o %
-msgid "mm of %"
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:226
-msgid ""
-"Note: The layer time for the cooling is currently computed with infinite "
-"acceleration, and so is very optimistic."
-msgstr ""
-
-
-#: src/libslic3r/PrintObject.cpp:641 src/libslic3r/PrintObject.cpp:652
-#: src/libslic3r/PrintObject.cpp:692
-#, possible-c-format, possible-boost-format
-#Similar to me: Optimizing layer %s / %s
-# 6 changes: Infilling layer %s / %s
-# translation: Riempimento strato %s / %s
-msgid "Optimizing layer %s / %s"
-msgstr ""
-
-
-#: src/libslic3r/Print.cpp:1251 src/libslic3r/Print.cpp:1263
-#: src/libslic3r/Print.cpp:1268
-#, possible-c-format, possible-boost-format
-msgid "Optimizing skirt & brim %s%%"
-msgstr ""
-
-
-#: src/libslic3r/PrintObject.cpp:683
-#, possible-c-format, possible-boost-format
-msgid "Optimizing support layer %s / %s"
-msgstr ""
-
-
-#: src/slic3r/GUI/Plater.cpp:1128
-msgid "Option use another tags than the current mode."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:76
-#, possible-boost-format
-msgid "Over %1% and %2% it will be at least %3%%%."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:40
-#, possible-boost-format
-msgid "Over %1% and %2% it will be fixed to %3%%%."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:38 src/slic3r/GUI/PresetHints.cpp:74
-#, possible-boost-format
-msgid "Over %1% and %2% it will be off."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:26
-#, possible-boost-format
-msgid "Over %1% it will be at %2%%%."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:85
-#, possible-boost-format
-msgid "Over %1% it will be at least %2%%%, and off over %3%."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:87
-#, possible-boost-format
-msgid "Over %1% it will be at least %2%%%, and over %3% at least %4%%%."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:63
-#, possible-boost-format
-msgid "Over %1% it will be at least %2%%%."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:47
-#, possible-boost-format
-msgid "Over %1% it will be fixed to %2%%%, and off over %3%."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:49
-#, possible-boost-format
-msgid "Over %1% it will be fixed to %2%%%, and over %3% to %4%%%."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:83
-#, possible-boost-format
-msgid "Over %1% it will be off, and over %2% at least %3%%%."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:45
-#, possible-boost-format
-msgid "Over %1% it will be off, and over %2% fixed to %3%%%."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:24 src/slic3r/GUI/PresetHints.cpp:61
-#, possible-boost-format
-msgid "Over %1% it will be off."
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:135 src/slic3r/GUI/PresetHints.cpp:171
-#Similar to me: Perimeter overhangs
-# 4 changes: Perimeter overlap
-# translation: Sovrapposizione del perimetro
-# 5 changes: perimeter overlap
-# translation: sovrapposizione del perimetro
-# 7 changes: Perimeter bonding
-# translation: Incollaggio perimetrale
-msgid "Perimeter overhangs"
-msgstr ""
-
-#: ../../ui_layout/default/print.ui : l79
+#: ../../ui_layout/default/print.ui : l83
#Similar to me: Position of perimeters' starting points. May use the angle & travel cost (with the fixed visilibity & ovehangs cost) to find the best place.\nCorners\. at least 100% angle cost and no more than 80% travel cost (default to 120-40).\nNearest\. no more than 100% angle cost and at least 100% travel cost (default to 80-100).\nScattered\. seam is placed at a random position on external perimeters.\nRandom\. seam is placed at a random position for all perimeters.\nAligned\. seams are grouped in the best place possible (minimum 6 layers per group).\nContiguous\. seam is placed over a seam from the previous layer (useful with enforcers as seeds).\nRear\. seam is placed at the far side (highest Y coordinates).\nCustom\. Other conbination of angle & travel cost than 'Corners' and 'Nearest', (default to 60-100).\nCustom & weight can be defined in Advanced or Expert mode.
+# 8 changes: Position of perimeters' starting points. May use the angle & travel cost (with the fixed visilibity & ovehangs cost) to find the best place.\nCorners\\. at least 100% angle cost and no more than 80% travel cost (default to 120-40).\nNearest\\. no more than 100% angle cost and at least 100% travel cost (default to 80-100).\nScattered\\. seam is placed at a random position on external perimeters.\nRandom\\. seam is placed at a random position for all perimeters.\nAligned\\. seams are grouped in the best place possible (minimum 6 layers per group).\nContiguous\\. seam is placed over a seam from the previous layer (useful with enforcers as seeds).\nRear\\. seam is placed at the far side (highest Y coordinates).\nCustom\\. Other conbination of angle & travel cost than 'Corners' and 'Nearest', (default to 60-100).\nCustom & weight can be defined in Advanced or Expert mode.
+# translation: Posizione dei punti di partenza dei perimetri. Può usare il costo angolo e viaggio (con il costo fisso di visibilità e sporgenze) per trovare il posto migliore.\nAngoli\\. almeno il 100% del costo dell'angolo e non più dell'80% del costo del viaggio (predefinito 120-40).\nPiù vicino\\. non più del 100% del costo dell'angolo e almeno il 100% del costo del viaggio (predefinito 80-100).\nSparpagliato: la cucitura è posizionata in una posizione casuale sui perimetri esterni\nCasuale: la cucitura è posizionata in una posizione casuale per tutti i perimetri\nAllineato: le cuciture sono raggruppate nel miglior posto possibile (minimo 6 strati per gruppo).\nContiguo: la cucitura è posizionata sopra una cucitura dello strato precedente (utile con gli esecutori)\nPosteriore: la cucitura è posizionata sul lato opposto (coordinate Y più alte).\nPersonalizzato: altra combinazione di angolo e costo del viaggio rispetto a 'Angoli' e 'Più vicino' (predefinito 60-100).\nPersonalizzato può essere definito in modalità Avanzato o Esperto.
# 16 changes: Position of perimeters' starting points. May use the angle & travel cost (with the fixed visilibity & ovehangs cost) to find the best place.\nCorners: at least 100% angle cost and no more than 80% travel cost (default to 120-40).\nNearest: no more than 100% angle cost and at least 100% travel cost (default to 80-100).\nScattered: seam is placed at a random position on external perimeters.\nRandom: seam is placed at a random position for all perimeters.\nAligned: seams are grouped in the best place possible (minimum 6 layers per group).\nContiguous: seam is placed over a seam from the previous layer (useful with enforcers as seeds).\nRear: seam is placed at the far side (highest Y coordinates).\nCustom: Other conbination of angle & travel cost than 'Corners' and 'Nearest', (default to 60-100).\nCustom & weight can be defined in Advanced or Expert mode.
# translation: Posizione dei punti di partenza dei perimetri. Può utilizzare l'angolo e il costo del viaggio (con la visibilità fissa e il costo delle sporgenze) per trovare il posto migliore.\nAngoli: almeno il 100% del costo dell'angolo e non più dell'80% del costo del viaggio (predefinito 120-40).\nPiù vicino: non più del 100% del costo dell'angolo e almeno il 100% del costo del viaggio (predefinito 80-100).\nSparpagliato: la cucitura è posizionata in una posizione casuale sui perimetri esterni\nCasuale: la cucitura è posizionata in una posizione casuale per tutti i perimetri\nAllineato: le cuciture sono raggruppate nel miglior posto possibile (minimo 6 strati per gruppo).\nContiguo: la cucitura è posizionata sopra una cucitura dello strato precedente (utile con gli esecutori)\nPosteriore: la cucitura è posizionata sul lato opposto (coordinate Y più alte).\nPersonalizzato: altra combinazione di angolo e costo del viaggio rispetto a 'Angoli' e 'Più vicino' (predefinito 60-100).\nPersonalizzato può essere definito in modalità Avanzato o Esperto.
msgid "Position of perimeters' starting points. May use the angle & travel cost (with the fixed visilibity & ovehangs cost) to find the best place.\nCorners\. at least 100% angle cost and no more than 80% travel cost (default to 120-40).\nNearest\. no more than 100% angle cost and at least 100% travel cost (default to 80-100).\nScattered\. seam is placed at a random position on external perimeters.\nRandom\. seam is placed at a random position for all perimeters.\nAligned\. seams are grouped in the best place possible (minimum 6 layers per group).\nContiguous\. seam is placed over a seam from the previous layer (useful with enforcers as seeds).\nRear\. seam is placed at the far side (highest Y coordinates).\nCustom\. Other conbination of angle & travel cost than 'Corners' and 'Nearest', (default to 60-100).\nCustom & weight can be defined in Advanced or Expert mode."
msgstr ""
-
-#: src/libslic3r/PrintConfig.cpp:6077
-msgid ""
-"Printing speed of the wipe tower. Capped by filament_max_volumetric_speed "
-"(if set).\n"
-"If set to zero, a value of 80mm/s is used."
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:3961
-#Similar to me: Set the speed of the full perimeters to the overhang speed, and also the next one(s) if any.\nSet to 0 to disable.\nSet to 1 to set the overhang speed to the full perimeter if there is any overhang detected inside it.\nSet to more than 1 to also set the overhang speed to the next perimeter(s) (only in classic mode).
-# 35 changes: Set the speed of the full perimeters to the overhang speed, and also the next one(s) if any.\nSet to 0 to disable.\nSet to 1 to set the overhang speed to the full periemter if there is any overhang detected in the periemter.\nSet to more than 1 to also set the overhang speed to the next perimeter(s).
-# translation: Imposta la velocità di tutti i perimetri alla velocità sporgenze e anche quelli successivi, se presenti.\nImposta 0 per disabilitare.Imposta 1 per impostare la velocità sporgenze sull'intero perimetro se viene rilevata una sporgenza nel perimetro.\nImposta maggiore di 1 per impostare anche la velocità sporgenze sul/sui perimetro/i successivo/i.
-msgid ""
-"Set the speed of the full perimeters to the overhang speed, and also the "
-"next one(s) if any.\n"
-"Set to 0 to disable.\n"
-"Set to 1 to set the overhang speed to the full perimeter if there is any "
-"overhang detected inside it.\n"
-"Set to more than 1 to also set the overhang speed to the next perimeter(s) "
-"(only in classic mode)."
-msgstr ""
-
-
-#: src/libslic3r/Print.cpp:1240
-msgid "Simplifying paths"
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:131
-#Similar to me: Solid surfaces
-# 4 changes: All surfaces
-# translation: Tutte le superfici
-# 5 changes: All solid surfaces
-# translation: Tutte le superfici solide
-# 5 changes: Min surface
-# translation: Superficie minima
-msgid "Solid surfaces"
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:130
-#Similar to me: Sparse infill
-# 5 changes: Bridge infill
-# translation: Riempimento del ponte
-# 5 changes: Max infill
-# translation: Riempimento
-# 5 changes: Smart fill
-# translation: Riempimento intelligente
-msgid "Sparse infill"
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:6086
-#, possible-c-format, possible-boost-format
-msgid ""
-"Start of the wiping speed ramp up (for wipe tower).\n"
-"Can be a % of the 'Wipe tower speed'.\n"
-"Set to 0 to disable."
-msgstr ""
-
-
-#: src/slic3r/GUI/GUI_App.cpp:2505
-#Similar to me: Tags
-# 1 changes: Tabs
-# translation: Tabulazioni
-msgid "Tags"
-msgstr ""
-
-
-#: src/slic3r/GUI/Search.cpp:394 src/slic3r/GUI/Search.cpp:463
-msgid "tags"
-msgstr ""
-
-
-#: src/slic3r/GUI/Plater.cpp:1127
-msgid ""
-"The option you selected in the search dialog isn't available in the current "
-"mode/tags. Do you want to switch to the option tag?"
-msgstr ""
-
-
-#: src/slic3r/GUI/ConfigManipulation.cpp:93
-#, possible-c-format, possible-boost-format
-#Similar to me: The Spiral Vase mode requires:\n- no top solid layers\n- 0% fill density\n- classic perimeter slicing\n- no support material\n- Ensure vertical shell thickness enabled\n- disabled 'no solid infill over perimeters'\n- unchecked 'exact last layer height'\n- unchecked 'dense infill'\n- unchecked 'extra perimeters'- unchecked 'gap fill after last perimeter'- disabled 'no solid fill over X perimeters'- disabled 'seam notch'
-# 23 changes: The Spiral Vase mode requires:\n- no top solid layers\n- 0% fill density\n- classic perimeter slicing\n- no support material\n- Ensure vertical shell thickness enabled\n- disabled 'no solid infill over perimeters'\n- unchecked 'exact last layer height'\n- unchecked 'dense infill'\n- unchecked 'extra perimeters'- unchecked 'gap fill after last perimeter'- disabled 'no solid fill over X perimeters'
-# translation: La modalità Vaso a spirale richiede:\n- nessuno strato solido superiore\n- 0% densità di riempimento\n- generatore perimetro classico\n- nessun materiale di supporto\n- Assicurati che lo spessore del guscio verticale sia abilitato\n- disabilitato 'nessun riempimento solido sui perimetri'\n- deselezionata 'altezza esatta dell'ultimo strato'\n- deselezionato 'riempimento denso'\n- deselezionato 'perimetri extra'\n- deselezionato 'riempimento spazio dopo l'ultimo perimetro'\n- disabilitato 'nessun riempimento solido su X perimetri'
-# 69 changes: The Spiral Vase mode requires:\n- one perimeter\n- no top solid layers\n- 0% fill density\n- no support material\n- Ensure vertical shell thickness enabled\n- disabled 'no solid infill over perimeters'\n- unchecked 'exact last layer height'\n- unchecked 'dense infill'\n- unchecked 'extra perimeters'- unchecked 'gap fill after last perimeter'- disabled 'no solid fill over X perimeters'
-# translation: La modalità Vaso a spirale richiede:\n- un perimetro\n- nessuno strato solido superiore\n- 0% densità di riempimento\n- nessun materiale di supporto\n- Assicurati che lo spessore del guscio verticale sia abilitato\n- disabilitato 'nessun riempimento solido sui perimetri'\n- deselezionata 'altezza esatta dell'ultimo strato'\n- deselezionato 'riempimento denso'\n- deselezionato 'perimetri extra'\n- deselezionato 'riempimento spazio dopo l'ultimo perimetro'\n- disabilitato 'nessun riempimento solido su X perimetri'
-# 157 changes: The Spiral Vase mode requires:\n- one perimeter\n- no top solid layers\n- 0% fill density\n- no support material\n- Ensure vertical shell thickness enabled\n- disabled 'no solid infill over perimeters'\n- unchecked 'exact last layer height'\n- unchecked 'dense infill'\n- unchecked 'extra perimeters'
-# translation: La modalità Vaso a spirale richiede:\n- un perimetro\n- nessuno strato solido superiore\n- 0% densità di riempimento\n- nessun materiale di supporto\n- Assicurati che lo spessore del guscio verticale sia abilitato\n- disabilitato 'nessun riempimento solido sui perimetri'\n- deselezionata 'altezza esatta dell'ultimo strato'\n- deselezionato 'riempimento denso'\n- deselezionato 'perimetri extra'
-msgid ""
-"The Spiral Vase mode requires:\n"
-"- no top solid layers\n"
-"- 0% fill density\n"
-"- classic perimeter slicing\n"
-"- no support material\n"
-"- Ensure vertical shell thickness enabled\n"
-"- disabled 'no solid infill over perimeters'\n"
-"- unchecked 'exact last layer height'\n"
-"- unchecked 'dense infill'\n"
-"- unchecked 'extra perimeters'- unchecked 'gap fill after last perimeter'- "
-"disabled 'no solid fill over X perimeters'- disabled 'seam notch'"
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:2310
-msgid ""
-"This define the succetion of infill angle. When defined, it replaces the "
-"fill_angle, and there won't be any extra 90° for each layer added, but the "
-"fill_angle_increment will still be used. The first layer start with the "
-"first angle. If a new pattern is used in a modifier, it will choose the "
-"layer angle from the pattern as if it has started from the first layer.Empty "
-"this settings to disable and recover the old behavior."
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:750
-#Similar to me: This fan speed is enforced during all infill bridges. It won't slow down the fan if it's currently running at a higher speed.\nSet to -1 to disable this override (Internal bridges will use Bridges fan speed).\nCan be disabled by disable_fan_first_layers and increased by low layer time.
-# 35 changes: This fan speed is enforced during bridges and overhangs. It won't slow down the fan if it's currently running at a higher speed.\nSet to -1 to disable this override (Bridges will use default fan speed).\nCan be disabled by disable_fan_first_layers and increased by low layer time.
-# translation: Questa velocità della ventola viene applicata durante ponti e sporgenze. Non rallenterà la ventola se è attualmente in funzione a una velocità superiore.\nImposta -1 per disabilitare questa sostituzione (i ponti e le sporgenze utilizzeranno la velocità predefinita della ventola).\nPuò essere disabilitato da disable_fan_first_layers e aumentato dal tempo di strato basso.
-# 36 changes: This fan speed is enforced during all infill bridges. It won't slow down the fan if it's currently running at a higher speed.\nSet to 1 to follow default speed.\nSet to -1 to disable this override (internal bridges will use Bridges fan speed).\nCan be disabled by disable_fan_first_layers and increased by low layer time.
-# translation: Questa velocità della ventola viene applicata durante tutti i ponti del riempimento. Non rallenterà la ventola se è attualmente in funzione a una velocità maggiore.\nImposta 1 per seguire la velocità predefinita.\nImposta -1 per disabilitare questa sostituzione (i ponti interni utilizzeranno la velocità della ventola dei ponti).\nPuò essere sovrascritto solo da disable_fan_first_layers.
-# 36 changes: This fan speed is enforced during bridges and overhangs. It won't slow down the fan if it's currently running at a higher speed.\nSet to -1 to disable this override (Bridge will use default fan speed).\nCan be disabled by disable_fan_first_layers and increased by low layer time.
-# translation: Questa velocità della ventola viene applicata durante ponti e sporgenze. Non rallenterà la ventola se è attualmente in funzione a una velocità superiore.\nImposta -1 per disabilitare questa sostituzione (i ponti e le sporgenze utilizzeranno la velocità predefinita della ventola).\nPuò essere disabilitato da disable_fan_first_layers e aumentato dal tempo di strato basso.
-msgid ""
-"This fan speed is enforced during all infill bridges. It won't slow down the "
-"fan if it's currently running at a higher speed.\n"
-"Set to -1 to disable this override (Internal bridges will use Bridges fan "
-"speed).\n"
-"Can be disabled by disable_fan_first_layers and increased by low layer time."
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:4276
-#Similar to me: This setting represents the minimum fan speed (like minimum PWM) your fan needs to work.
-# 25 changes: This setting represents the minimum PWM your fan needs to work.
-# translation: Questa impostazione rappresenta la PWM minima (modulazione di larghezza di impulso) che la ventola necessita per lavorare.
-msgid ""
-"This setting represents the minimum fan speed (like minimum PWM) your fan "
-"needs to work."
-msgstr ""
-
-
-#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:455
-msgid ""
-"To use a client cert on MacOS, you might need to add your certificate to "
-"your keychain and make sure it's trusted."
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:5829
-#Similar to me: Top Solid fan speed
-# 5 changes: Top solid speed
-# translation: Velocità massima solida
-# 6 changes: Gap fill fan speed
-# translation: Velocità ventola riempimento spazio
-# 6 changes: Top fan speed
-# translation: Velocità massima della ventola
-msgid "Top Solid fan speed"
-msgstr ""
-
-
-#: src/slic3r/GUI/PresetHints.cpp:132 src/slic3r/GUI/PresetHints.cpp:192
-#Similar to me: Top surfaces
-# 3 changes: All surfaces
-# translation: Tutte le superfici
-# 3 changes: On surfaces
-# translation: Sulle superfici
-# 4 changes: Min surface
-# translation: Superficie minima
-msgid "Top surfaces"
-msgstr ""
-
-
-#: src/libslic3r/GCode.cpp:2719
-msgid ""
-"Using a color change gcode, but there isn't one for this printer.\n"
-"The printer won't stop for the filament change, unless you set it manually "
-"in the custom gcode section."
-msgstr ""
-
-
-#: src/libslic3r/GCode.cpp:2738
-msgid ""
-"Using a pause gcode, but there isn't one for this printer.\n"
-"The printer won't pause, unless you set it manually in the custom gcode "
-"section."
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:6075
-#Similar to me: Wipe Tower Speed
-# 6 changes: Wipe Tower
-# translation: Torre del tergicristallo
-# 6 changes: Wipe tower Width
-# translation: Larghezza della torre di spurgo
-# 6 changes: Wipe tower X
-# translation: Torre di pulizia X
-msgid "Wipe Tower Speed"
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:6084
-#Similar to me: Wipe tower starting speed
-# 10 changes: Wipe tower rotation angle
-# translation: Angolo di rotazione della torre di pulizia
-msgid "Wipe tower starting speed"
-msgstr ""
-
-
-#: src/libslic3r/PrintConfig.cpp:426
-msgid "Write the thumbnail type in gcode."
-msgstr ""
-
#: ../../ui_layout/default/printer_sla.ui : l9
msgid "X"
msgstr ""
@@ -580,19 +20,7 @@ msgstr ""
msgid "Y"
msgstr ""
-
-#: src/slic3r/GUI/PhysicalPrinterDialog.cpp:456
-msgid ""
-"You can either use a path to your certificate or the name of your "
-"certificate as you can find it in your Keychain"
-msgstr ""
-
-
-#: src/slic3r/GUI/Plater.cpp:1115
-msgid "Your current tags:"
-msgstr ""
-
-#: ../../ui_layout/default/print.ui : l343
+#: ../../ui_layout/default/print.ui : l347
msgid "z"
msgstr ""
diff --git a/resources/localization/it/it_database.po b/resources/localization/it/it_database.po
index acb834c6c09..ac73379e4c3 100644
--- a/resources/localization/it/it_database.po
+++ b/resources/localization/it/it_database.po
@@ -540,15 +540,6 @@ msgstr ""
"\"G92 E0\" trovato in layer_gcode, che è incompatibile con l'indirizzamento "
"assoluto dell'estrusore."
-msgid ""
-"\n"
-"\n"
-"If estimated layer time is below ~%1%s"
-msgstr ""
-"\n"
-"\n"
-"Se il tempo stimato dello strato è inferiore a ~%1%s"
-
msgid ""
"\n"
"\n"
@@ -852,13 +843,14 @@ msgstr ""
"messaggio. Personalmente, penso che sia inutile."
msgid ""
-"Add one perimeter every odd layer. With this, infill is taken into the "
-"sandwich and you may be able to reduce drastically the infill/perimeter "
-"overlap setting. "
+"Add one perimeter every even layer (and not on odd layers like the first "
+"one). With this, infill is taken into the sandwich and you may be able to "
+"reduce drastically the infill/perimeter overlap setting. "
msgstr ""
-"Aggiungi un perimetro ogni strato dispari. Con questo, l'infill viene preso "
-"in sandwitch e si può essere in grado di ridurre drasticamente "
-"l'impostazione di sovrapposizione infill/perimetro. "
+"Aggiungi un perimetro su ogni strato pari (e non sugli strati dispari come "
+"il primo). In questo modo, il riempimento viene inserito nel sandwich e "
+"potresti essere in grado di ridurre drasticamente l'impostazione di "
+"sovrapposizione riempimento/perimetro. "
msgid "Add pause print"
msgstr "Aggiungi la stampa in pausa"
@@ -1189,9 +1181,17 @@ msgstr "Emetti anche limiti al G-code"
msgid "Also for all perimeters"
msgstr "Anche per tutti i perimetri"
+msgid "Also, the fan speed over %1% won't be touched by this feature."
+msgstr ""
+"Inoltre, la velocità della ventola sopra a %1% non verrà modificata da "
+"questa funzione."
+
msgid "Alt + Mouse wheel"
msgstr "Alt + Ruota del mouse"
+msgid "Alternate Fill Angle"
+msgstr "Angolo riempimento alternativo"
+
msgid "Alternate nozzles:"
msgstr "Ugelli alternativi:"
@@ -1550,6 +1550,9 @@ msgstr "Evita di attraversare i perimetri"
msgid "Avoid crossing perimeters - Max detour length"
msgstr "Evita di incrociare i perimetri - Massima distanza di deviazione"
+msgid "Avoid top surface for travels"
+msgstr "Evita superfici superiori per spostamenti"
+
msgid "BACK ARROW"
msgstr "FRECCIA INDIETRO"
@@ -1839,6 +1842,9 @@ msgstr "buffer troppo piccolo"
msgid "build volume"
msgstr "Volume stampa"
+msgid "but for %1% where the speed-up phase is skipped."
+msgstr "ma per %1% dove la fase di accelerazione viene saltata."
+
msgid "But on first layer"
msgstr "Però sul primo strato"
@@ -1865,6 +1871,9 @@ msgstr ""
"Nota: Questo nome può essere cambiato in seguito dalle impostazioni delle "
"stampanti fisiche"
+msgid "By default, there won't be any fan speed command."
+msgstr "Per default, non ci sarà alcun comando di velocità ventola."
+
msgid ""
"By how much the 'wipe inside' can dive inside the object (if possible)?\n"
"In % of the perimeter width.\n"
@@ -1903,6 +1912,11 @@ msgstr ""
"Può essere utile per evitare che gli ingranaggi bondtech deformino le punte "
"calde, ma non è normalmente necessario"
+msgid ""
+"Can't open directory '%1%'. Config bundles from here can't be loaded.\n"
+"Error: %2%"
+msgstr "Impossibile aprire la directory '%1%'. I bundle di configurazione da qui non possono essere caricati.\nErrore: %2%"
+
msgid "Can't process the repetier return message: missing field '%s'"
msgstr ""
"Impossibile elaborare il messaggio di ritorno di repetier: campo '%s' "
@@ -1969,9 +1983,6 @@ msgstr ""
msgid "Cannot overwrite a system profile."
msgstr "Impossibile sovrascrivere un profilo di sistema."
-msgid "Cannot overwrite an external profile."
-msgstr "Impossibile sovrascrivere un profilo esterno."
-
msgid ""
"Cannot proceed without support points! Add support points or disable support "
"generation."
@@ -2075,31 +2086,35 @@ msgstr ""
"Se il valore è impostato su 0, mostrerà 0."
msgid ""
-"Change width on every odd layer for better overlap with adjacent layers and "
-"getting stringer shells. Try values about +/- 0.1 with different sign for "
-"external and internal perimeters.\n"
-"This could be combined with extra permeters on odd layers.\n"
+"Change width on every even layer (and not on odd layers like the first one) "
+"for better overlap with adjacent layers and getting stringer shells. Try "
+"values about +/- 0.1 with different sign for external and internal "
+"perimeters.\n"
+"This could be combined with extra permeters on even layers.\n"
"Works as absolute spacing or a % of the spacing.\n"
"set 0 to disable"
msgstr ""
-"Modifica la larghezza su ogni strato dispari per una migliore sovrapposizione "
-"con gli strati adiacenti e per ottenere gusci più stretti. Prova valori di "
-"circa +/- 0,1 con segno diverso per i perimetri esterni e interni.\n"
-"Questo potrebbe essere combinato con perimetri extra su strati dispari.\n"
+"Modifica la larghezza su ogni strato pari (e non su strati dispari come il "
+"primo) per una migliore sovrapposizione con gli strati adiacenti e per "
+"ottenere gusci più stretti. Prova valori di circa +/- 0,1 con segno diverso "
+"per i perimetri esterni ed interni.\n"
+"Questo potrebbe essere combinato con perimetri extra su strati pari.\n"
"Funziona come spaziatura assoluta o una % della spaziatura.\n"
"Imposta 0 per disabilitare"
msgid ""
-"Change width on every odd layer for better overlap with adjacent layers and "
-"getting stringer shells. Try values about +/- 0.1 with different sign.\n"
-"This could be combined with extra permeters on odd layers.\n"
+"Change width on every even layer (and not on odd layers like the first one) "
+"for better overlap with adjacent layers and getting stringer shells. Try "
+"values about +/- 0.1 with different sign.\n"
+"This could be combined with extra permeters on even layers.\n"
"Works as absolute spacing or a % of the spacing.\n"
"set 0 to disable"
msgstr ""
-"Modifica la larghezza su ogni strato dispari per una migliore sovrapposizione "
-"con gli strati adiacenti e per ottenere gusci più stretti. Prova valori di "
-"circa +/- 0,1 con segno diverso.\n"
-"Questo potrebbe essere combinato con perimetri extra su strati dispari.\n"
+"Modifica la larghezza su ogni strato pari (e non su strati dispari come il "
+"primo) per una migliore sovrapposizione con gli strati adiacenti e per "
+"ottenere gusci più stretti. Prova valori di circa +/- 0,1 con segno "
+"diverso.\n"
+"Questo potrebbe essere combinato con perimetri extra su strati pari.\n"
"Funziona come spaziatura assoluta o una % della spaziatura.\n"
"Imposta 0 per disabilitare"
@@ -2398,6 +2413,9 @@ msgstr "COMPLETATO"
msgid "Completed"
msgstr "Completato"
+msgid "Compress png textures"
+msgstr "Comprimi texture png"
+
msgid "compression failed"
msgstr "compressione fallita"
@@ -2856,6 +2874,9 @@ msgstr "Creare un nuovo progetto mentre alcuni preset vengono modificati."
msgid "Creating a new project while the current project is modified."
msgstr "Creare un nuovo progetto mentre il progetto corrente viene modificato."
+msgid "Creating arcs"
+msgstr "Creazione archi"
+
msgid "Critical angle"
msgstr "Angolo critico"
@@ -3087,6 +3108,22 @@ msgstr "profilo di stampa SLA predefinito"
msgid "Default speed"
msgstr "Velocità predefinita"
+msgid ""
+"Default speed for the fan, to set the speed for features where there is no "
+"fan control. Useful for PLA and other low-temp filament.\n"
+"Set 0 to disable the fan by default. Useful for ABS and other high-temp "
+"filaments.\n"
+"Set -1 to disable. if disabled, the beahavior isn't defined yet. The goal is "
+"to avoid adding fan speed commands."
+msgstr ""
+"Velocità predefinita per la ventola, per impostare la velocità per le "
+"funzioni in cui non è disponibile il controllo della ventola. Utile per PLA "
+"e altri filamenti a bassa temperatura.\n"
+"Imposta 0 per disabilitare la ventola per impostazione predefinita. Utile "
+"per ABS e altri filamenti ad alta temperatura.\n"
+"Imposta -1 per disabilitare. Se disabilitato, il comportamento non è ancora "
+"definito. L'obiettivo è evitare di aggiungere comandi di velocità ventola."
+
msgid "default value"
msgstr "valore predefinito"
@@ -3208,9 +3245,6 @@ msgstr "Strato riempimento denso"
msgid "Density"
msgstr "Densità"
-msgid "Density of internal infill, expressed in the range 0% - 100%."
-msgstr "Densità del riempimento interno, espressa nell'intervallo 0% - 100%."
-
msgid "Density of the first raft or support layer."
msgstr "Densità del primo layer del raft o del supporto."
@@ -3494,6 +3528,9 @@ msgstr "Non organizzare"
msgid "Don't avoid crossing on 1st layer"
msgstr "Non evitare l'attraversamento sul 1° strato"
+msgid "Don't check crossings for retraction on first layer"
+msgstr "Non controllare la retrazione degli incroci sul primo strato"
+
msgid "Don't import"
msgstr "Non importare"
@@ -4029,6 +4066,9 @@ msgstr "Tempo di stampa stimato"
msgid "Estimated printing times"
msgstr "Tempi di stampa stimati"
+msgid "even layers"
+msgstr "strati pari"
+
msgid "Even-odd"
msgstr "Pari-dispari"
@@ -4041,9 +4081,15 @@ msgstr "Esatta altezza dell'ultimo strato"
msgid "Exact pattern"
msgstr "Modello esatta"
+msgid "Except for the first %1% layers where the fan is disabled"
+msgstr "Tranne i primi %1% strati in cui la ventola è disabilitata"
+
msgid "except for the first %1% layers where the fan is disabled"
msgstr "tranne i primi %1% strati in cui la ventola è disabilitata"
+msgid "Except for the first layer where the fan is disabled"
+msgstr "Tranne il primo strato dove la ventola è disabilitato"
+
msgid "except for the first layer where the fan is disabled"
msgstr "tranne il primo strato dove la ventola è disabilitato"
@@ -4341,8 +4387,8 @@ msgstr "Perimetri esterni in modalità vaso"
msgid "External perimeters spacing"
msgstr "Spazio tra perimetri esterni"
-msgid "External perimeters spacing change on odd layers"
-msgstr "Modifica spaziatura perimetri esterni su strati dispari"
+msgid "External perimeters spacing change on even layers"
+msgstr "Modifica spaziatura perimetri esterni su strati pari"
msgid "External perimeters speed"
msgstr "Velocità dei perimetri esterni"
@@ -4359,8 +4405,8 @@ msgstr "Lunghezza extra sulla ripartenza"
msgid "Extra loading distance"
msgstr "Distanza di carico extra"
-msgid "Extra perimeter on odd layers"
-msgstr "Perimetro extra su strati dispari"
+msgid "Extra perimeter on even layers"
+msgstr "Perimetro extra su strati pari"
msgid "Extra perimeters"
msgstr "Perimetri aggiuntivi"
@@ -4385,16 +4431,16 @@ msgstr "Lunghezza dell'estratto sul riavvio del cambio utensile"
msgid ""
"Extrude perimeters that have a part over an overhang in the reverse "
-"direction on odd layers. This alternating pattern can drastically improve "
-"steep overhang.\n"
+"direction on even layers (and not on odd layers like the first one). This "
+"alternating pattern can drastically improve steep overhang.\n"
"!! this is a very slow algorithm (it uses the same results as "
"extra_perimeters_overhangs) !!"
msgstr ""
-"Estrudi i perimetri che hanno una parte sopra una sporgenza nella direzione "
-"inversa in strati dispari. Quel modello alternato può migliorare "
-"drasticamente lo sbalzo ripido.\n"
+"Estrudi perimetri che hanno una parte sopra una sporgenza nella direzione "
+"opposta su strati pari (e non su strati dispari come il primo). Questa trama "
+"alternata può migliorare drasticamente la sporgenza ripida.\n"
"!! questo è un algoritmo molto lento (usa gli stessi risultati di "
-"extra_perimeters_overhangs) !!!"
+"extra_perimeters_overhangs) !!"
msgid "Extruder"
msgstr "Estrusore"
@@ -4511,6 +4557,9 @@ msgstr "Mancata esecuzione di alcuni fori nel modello"
msgid "Fan"
msgstr "Ventola"
+msgid "Fan delay only for overhangs"
+msgstr "Ritardo ventola solo sporgenze"
+
msgid "Fan KickStart time"
msgstr "Tempo di KickStart della ventola"
@@ -4545,6 +4594,12 @@ msgstr ""
msgid "Fan startup delay"
msgstr "Ritardo di avvio della ventola"
+msgid "Fan will be turned off by default."
+msgstr "Ventola sarà disattivato per impostazione predefinita."
+
+msgid "Fan will run at %1%%% by default."
+msgstr "Ventola verrà eseguito a %1%%% per impostazione predefinita"
+
msgid "fan will run by default to %1%%%"
msgstr "la ventola funzionerà di default a %1%%%"
@@ -4705,6 +4760,9 @@ msgstr "Angolo di riempimento"
msgid "Fill angle increment"
msgstr "Incremento dell'angolo di riempimento"
+msgid "Fill angle template"
+msgstr "Modello angolo riempimento"
+
msgid "Fill bed"
msgstr "Riempi letto"
@@ -5208,6 +5266,12 @@ msgstr "Velocità di riempimento del gap"
msgid "Gap Fill threshold"
msgstr "Soglia riempimento spazio"
+msgid "Gap fill: extra extension"
+msgstr "Gap fill: Estensione extra"
+
+msgid "Gap fills"
+msgstr "Riempimenti del vuoto"
+
msgid "Gapfill: after last perimeter"
msgstr "Gapfill: Dopo l'ultimo perimetro"
@@ -6137,6 +6201,18 @@ msgstr ""
"impostata alcuna tacca. Se l'angolo è troppo alto, non c'è abbastanza spazio "
"per la tacca."
+msgid "If the fan speed is set and is higher than %1%%%, it won't be changed."
+msgstr ""
+"Se la velocità della ventola è impostata ed è superiore a %1%%%, non verrà "
+"modificata."
+
+msgid ""
+"If the fan speed is set, it will proportionally increasing speed between "
+"this value and %1%%%."
+msgstr ""
+"Se la velocità della ventola è impostata, la velocità aumenterà "
+"proporzionalmente tra questo valore e %1%%%."
+
msgid ""
"If the perimeter overlap is set at 100%, the yellow areas should be filled "
"by the overlap.\n"
@@ -6248,6 +6324,13 @@ msgstr ""
"Se utilizzi un colore con una saturazione e/o un valore superiore all'80%, "
"questi verranno aumentati. Se inferiori, verranno diminuiti."
+msgid ""
+"If your custom texture (in png format) is displayed black, then disable this "
+"option to remove the problematic optimisation."
+msgstr ""
+"Se la tua texture personalizzata (in formato png) viene visualizzata in "
+"nero, disabilita questa opzione per rimuovere l'ottimizzazione problematica."
+
msgid ""
"If your firmware doesn't handle the extruder displacement you need the G-"
"code to take it into account. This option lets you specify the displacement "
@@ -6373,6 +6456,9 @@ msgstr "Importa STL (unità imperiali)"
msgid "Import STL/3MF/STEP/OBJ/AM&F"
msgstr "Importa STL/3MF/STEP/OBJ/AM&F"
+msgid "Import STL/3MF/STEP/OBJ/AMF without config, keep platter"
+msgstr "Importa STL/3MF/STEP/OBJ/AMF senza configurazione, mantieni piano"
+
msgid "Importing canceled."
msgstr "Importazione annullata."
@@ -6540,6 +6626,9 @@ msgstr "riempimento"
msgid "Infill acceleration"
msgstr "Accelerazione del riempimento"
+msgid "Infill angle"
+msgstr "Angolo di riempimento"
+
msgid "Infill before perimeters"
msgstr "Riempimento prima dei perimetri"
@@ -6555,8 +6644,8 @@ msgstr "Massima velocità riempimento primo strato"
msgid "Infill spacing"
msgstr "Spaziatura riempimento"
-msgid "Infill spacing change on odd layers"
-msgstr "Modifica spaziatura riempimento su strati dispari"
+msgid "Infill spacing change on even layers"
+msgstr "Modifica spaziatura riempimento su strati pari"
msgid "Infill speed"
msgstr "Velocità riempimento"
@@ -6690,6 +6779,9 @@ msgstr "Perimetro interno"
msgid "Internal Perimeter acceleration"
msgstr "Accelerazione perimetro interno"
+msgid "Internal perimeters"
+msgstr "Perimetri interno"
+
msgid "Internal perimeters speed"
msgstr "Velocità perimetri interni"
@@ -6790,6 +6882,9 @@ msgstr "Tipo di ironing"
msgid "Ironing width"
msgstr "Larghezza dell'ironing"
+msgid "Ironings"
+msgstr "Stiraturi"
+
msgid "is licensed under the"
msgstr "è concesso in licenza sotto la"
@@ -6829,6 +6924,13 @@ msgstr ""
msgid "It's a last preset for this physical printer."
msgstr "È un ultimo preset per questa stampante fisica."
+msgid ""
+"It's better for some infill like rectilinear to rotate 90° each layer. If "
+"this setting is deactivated, they won't do that anymore."
+msgstr ""
+"È meglio che alcuni riempimenti, come quello rettilineo, ruotino di 90° ogni "
+"strato. Se questa impostazione è disattivata, non lo faranno più."
+
msgid "It's impossible to print multi-part object(s) with SLA technology."
msgstr "È impossibile stampare oggetti in più parti con la tecnologia SLA."
@@ -7056,6 +7158,11 @@ msgstr ""
msgid "Length of the infill anchor"
msgstr "Lunghezza dell'ancoraggio di riempimento"
+msgid ""
+"let the retraction happens on the first layer even if the travel path does "
+"not exceed the upper layer's perimeters."
+msgstr "Lascia che la retrazione avvenga sul primo strato anche se il percorso di viaggio non supera i perimetri dello strato superiore."
+
msgid ""
"License agreements of all following programs (libraries) are part of "
"application license agreement"
@@ -7174,6 +7281,26 @@ msgstr "Carico"
msgid "Load a model"
msgstr "Carica un modello"
+msgid ""
+"Load a png/svg file to be used as a texture. \n"
+"If it can be found via the executable, configuration or user directory then "
+"a relative path will be kept instead of the full one."
+msgstr ""
+"Carica un file png/svg da utilizzare come texture. \n"
+"Se è possibile trovarlo tramite l'eseguibile, la configurazione o la "
+"directory dell'utente, verrà mantenuto un percorso relativo invece di quello "
+"completo."
+
+msgid ""
+"Load a stl file to be used as a model. \n"
+"If it can be found via the executable, configuration or user directory then "
+"a relative path will be kept instead of the full one."
+msgstr ""
+"Carica un file stl da utilizzare come modello. \n"
+"Se è possibile trovarlo tramite l'eseguibile, la configurazione o la "
+"directory dell'utente, verrà mantenuto un percorso relativo invece di quello "
+"completo."
+
msgid "Load an model saved with imperial units"
msgstr "Carica un modello salvato con unità imperiali"
@@ -7606,6 +7733,14 @@ msgstr ""
"quest'area. Impostare a 0 per lasciare che hole_size_compensation si "
"applichi completamente a tutti i fori rilevati"
+msgid ""
+"Maximum deflection of a point to the estimated radius of the circle.\n"
+"As cylinders are often exported as triangles of varying size, points may not "
+"be on the circle circumference. This setting allows you some leeway to "
+"broaden the detection.\n"
+"In mm or in % of the radius."
+msgstr "Defezione massima di un punto rispetto al raggio stimato del cerchio.\nPoiché i cilindri vengono spesso esportati come triangoli di dimensioni variabili, il punto potrebbe non trovarsi sulla circonferenza del cerchio. Questa impostazione ti consente di limitare il rilevamento.\nIn mm o in % del raggio."
+
msgid ""
"Maximum density for bridge lines. If you want more space between line (or "
"less), you can modify it. A value of 50% will create two times less lines, "
@@ -7757,6 +7892,9 @@ msgstr ""
"tengono le teste di spillo dei punti di supporto e si collegano ai pilastri "
"come piccoli rami."
+msgid "Maximum Print Volumetric speed"
+msgstr "Velocità volumetrica di stampa massima"
+
msgid "maximum speed"
msgstr "velocità massima"
@@ -7993,6 +8131,9 @@ msgstr "Tempo di esposizione minimo"
msgid "Minimum extrusion length"
msgstr "Lunghezza minima di estrusione"
+msgid "Minimum fan speed"
+msgstr "Velocità minima ventola"
+
msgid "Minimum feature size"
msgstr "Dimensione minima della caratteristica"
@@ -8597,6 +8738,13 @@ msgstr "Nota: È richiesta una versione di Repetier almeno 0.90.0 ."
msgid "Note: some shortcuts work in (non)editing mode only."
msgstr "Nota: alcune scorciatoie funzionano solo in modalità (non) editing."
+msgid ""
+"Note: The layer time for the cooling is currently computed with infinite "
+"acceleration, and so is very optimistic."
+msgstr ""
+"Nota: il tempo di raffreddamento è attualmente calcolato con accelerazione "
+"infinita, quindi è molto ottimistico."
+
msgid "Note: This preset will be replaced after saving"
msgstr "Nota: Questo preset sarà sostituito dopo il salvataggio"
@@ -8766,9 +8914,6 @@ msgstr "Spirale di ottagramma"
msgid "OctoPrint version"
msgstr "Versione OctoPrint"
-msgid "odd layers"
-msgstr "strati dispari"
-
msgid "of a current Object"
msgstr "di un oggetto corrente"
@@ -8791,18 +8936,23 @@ msgstr ""
msgid "Offsets (for multi-extruder printers)"
msgstr "Compensazione (per stampanti multi-estrusore)"
+msgid ""
+"Old layout: all windows are in the application, settings are on the top tab "
+"bar and the platter choice in on the bottom of the platter view."
+msgstr "Vecchio layout: tutte le finestre sono nell'applicazione, le impostazioni si trovano nella barra delle schede in alto e la scelta della piastra nella parte inferiore della vista della piastra."
+
msgid "Old Value"
msgstr "Vecchio valore"
msgid "On"
msgstr "On"
+msgid "On even layers"
+msgstr "Su strati pari"
+
msgid "On first layer"
msgstr "Primo strato"
-msgid "On odd layers"
-msgstr "Su strati dispari"
-
msgid ""
"On OSX there is always only one instance of app running by default. However "
"it is allowed to run multiple instances of same app from the command line. "
@@ -8880,6 +9030,13 @@ msgstr ""
"Rimuovi tutto tranne l'ultimo oggetto, o abilita la modalità sequenziale con "
"\"complete_objects\"."
+msgid ""
+"Only compatible presets are shown. Click to show both the presets compatible "
+"and not compatible with the current printer."
+msgstr ""
+"Vengono mostrati solo i presets compatibili. Fare clic per mostrare sia i "
+"presets compatibili che quelli non compatibili con la stampante corrente."
+
msgid ""
"Only create support if it lies on a build plate. Don't create support on a "
"print."
@@ -9032,6 +9189,9 @@ msgstr "Apri una nuova istanza"
msgid "Open New Instance"
msgstr "Apri una nuova istanza"
+msgid "Open project AMF/3MF with config, clear platter"
+msgstr "Apri progetto AMF/3MF con configurazione, pulisci piano"
+
msgid "Open the %s releases page in your browser"
msgstr "Apri la pagine di rilascio di %s nel tuo browser"
@@ -9091,6 +9251,18 @@ msgstr ""
"di trasudamento. Questa caratteristica rallenta sia la stampa che la "
"generazione del codice G."
+msgid "Optimizing layer %s / %s"
+msgstr "Ottimizzazione strato %s / %s"
+
+msgid "Optimizing skirt & brim %s%%"
+msgstr "Ottimizzazione skirt e brim %s%%"
+
+msgid "Optimizing support layer %s / %s"
+msgstr "Ottimizzazione strato supporto %s/%s"
+
+msgid "Option tags:"
+msgstr "Opzioni tag:"
+
msgid "Options"
msgstr "Opzioni"
@@ -9169,6 +9341,42 @@ msgstr "Opzioni di uscita"
msgid "Outside walls"
msgstr "Pareti esterne"
+msgid "Over %1% and %2% it will be at least %3%%%."
+msgstr "Sopra il %1% e %2% sarà almeno il %3%%%."
+
+msgid "Over %1% and %2% it will be fixed to %3%%%."
+msgstr "Sopra il %1% e %2% sarà fissa al %3%%%."
+
+msgid "Over %1% and %2% it will be off."
+msgstr "Sopra il %1% e %2% sarà spenta."
+
+msgid "Over %1% it will be at %2%%%."
+msgstr "Sopra il %1% sarà al %2%%%."
+
+msgid "Over %1% it will be at least %2%%%, and off over %3%."
+msgstr "Sopra il %1% sarà almeno %2%%%, e spento sopra il %3%."
+
+msgid "Over %1% it will be at least %2%%%, and over %3% at least %4%%%."
+msgstr "Sopra il %1% sarà almeno %2%%% e sopra il %3% almeno del %4%%%."
+
+msgid "Over %1% it will be at least %2%%%."
+msgstr "Sopra il %1% sarà almeno il %2%%%."
+
+msgid "Over %1% it will be fixed to %2%%%, and off over %3%."
+msgstr "Sopra il %1% sarà fissa al %2%%% e ridotta al %3%."
+
+msgid "Over %1% it will be fixed to %2%%%, and over %3% to %4%%%."
+msgstr "Sopra il %1% sarà fissa al %2%%% e sopra il %3% al %4%%%."
+
+msgid "Over %1% it will be off, and over %2% at least %3%%%."
+msgstr "Sopra il %1% sarà spenta, e sopra il %2% almeno il %3%%%."
+
+msgid "Over %1% it will be off, and over %2% fixed to %3%%%."
+msgstr "Sopra il %1% verrà spenta e sopra il %2% fissa al %3%%%."
+
+msgid "Over %1% it will be off."
+msgstr "Sopra il %1% verrà spenta."
+
msgid "Over raft"
msgstr "Sopra Raft"
@@ -9476,6 +9684,9 @@ msgstr "Generatore di perimetri"
msgid "Perimeter loop seam"
msgstr "Cucitura perimetrale ad anello"
+msgid "Perimeter overhangs"
+msgstr "Sporgenze perimetrali"
+
msgid "perimeter overlap"
msgstr "sovrapposizione del perimetro"
@@ -9515,8 +9726,8 @@ msgstr "Numero del perimetro"
msgid "Perimeters loop"
msgstr "Anello dei perimetri"
-msgid "Perimeters spacing change on odd layers"
-msgstr "Modifica spaziatura perimetri su strati dispari"
+msgid "Perimeters spacing change on even layers"
+msgstr "Modifica spaziatura perimetri su strati pari"
msgid ""
"Perimeters will be split into multiple segments by inserting Fuzzy skin "
@@ -9953,6 +10164,15 @@ msgstr "Stampante con nome \"%1%\" esiste già."
msgid "Printer:"
msgstr "Stampante:"
+msgid ""
+"Printing speed of the wipe tower. Capped by filament_max_volumetric_speed "
+"(if set).\n"
+"If set to zero, a value of 80mm/s is used."
+msgstr ""
+"Velocità di stampa della torre di pulizia. Limitata da "
+"filament_max_volumetric_speed (se impostato).\n"
+"Se impostato a zero, viene utilizzato un valore di 80 mm/s."
+
msgid ""
"Printing with multiple extruders of differing nozzle diameters. If support "
"is to be printed with the current extruder (support_material_extruder == 0 "
@@ -10242,6 +10462,9 @@ msgstr "Ricarica piatto da disco"
msgid "Reload the plater from disk"
msgstr "Ricarica la piastra dal disco"
+msgid "Reload the platter from disk"
+msgstr "Ricarica la piastra dal disco"
+
msgid "Remaining errors"
msgstr "Errori rimanenti"
@@ -10443,6 +10666,9 @@ msgstr "Ripristino alla base"
msgid "Reset to Filament Color"
msgstr "Ripristina il colore del filamento"
+msgid " resin '%1%'"
+msgstr " resina '%1%'"
+
msgid "Restart application"
msgstr "Riavvia l'applicazione"
@@ -10496,8 +10722,8 @@ msgstr "Retrazioni"
msgid "Reverse direction of zoom with mouse wheel"
msgstr "Inverti la direzione dello zoom con la rotella del mouse"
-msgid "Reverse on odd"
-msgstr "Inverti su dispari"
+msgid "Reverse on even"
+msgstr "Inverti su pari"
msgid "Reverse threshold"
msgstr "Soglia inversa"
@@ -11115,6 +11341,23 @@ msgstr ""
msgid "Set the shape of your printer's bed."
msgstr "Imposta la forma del letto della tua stampante."
+msgid ""
+"Set the speed of the full perimeters to the overhang speed, and also the "
+"next one(s) if any.\n"
+"Set to 0 to disable.\n"
+"Set to 1 to set the overhang speed to the full perimeter if there is any "
+"overhang detected inside it.\n"
+"Set to more than 1 to also set the overhang speed to the next perimeter(s) "
+"(only in classic mode)."
+msgstr ""
+"Imposta la velocità di tutti i perimetri alla velocità sporgenze e anche "
+"quelli successivi, se presenti.\n"
+"Imposta 0 per disabilitare.\n"
+"Imposta 1 per impostare la velocità sporgenze sull'intero perimetro se viene "
+"rilevata una sporgenza nel perimetro.\n"
+"Imposta maggiore di 1 per impostare anche la velocità sporgenze sul/sui "
+"perimetro/i successivo/i (solo in modalità classica)."
+
msgid ""
"Set this if your printer uses control values from 0-100 instead of 0-255."
msgstr ""
@@ -11538,6 +11781,9 @@ msgstr ""
"(utilizzando 55% e 75% per le due soglie)\n"
"Usa la modalità esperto per ottenere widget più dettagliati"
+msgid "Simplifying paths"
+msgstr "Semplificare percorsi"
+
msgid "Simulate Prusa 'no thick bridge'"
msgstr "Simula Prusa 'no ponte spesso'"
@@ -11885,8 +12131,8 @@ msgstr "Velocità ventola riempimento solido"
msgid "Solid infill spacing"
msgstr "Spaziatura di riempimento solido"
-msgid "Solid infill spacing change on odd layers"
-msgstr "Modifica spaziatura riempimento solido su strati dispari"
+msgid "Solid infill spacing change on even layers"
+msgstr "Modifica spaziatura riempimento solido su strati pari"
msgid "Solid infill speed"
msgstr "Velocità di riempimento solido"
@@ -11903,6 +12149,9 @@ msgstr "Strati solidi"
msgid "Solid spacing"
msgstr "Spaziatura solida"
+msgid "Solid surfaces"
+msgstr "Superfici solide"
+
msgid "Soluble material"
msgstr "Materiale solubile"
@@ -12014,6 +12263,9 @@ msgstr "Sparsi"
msgid "Sparse fill pattern"
msgstr "Trama riempimento sparso"
+msgid "Sparse infill"
+msgstr "Riempimento sparso"
+
msgid "Sparse infill pattern"
msgstr "Trama riempimento sparso"
@@ -12295,6 +12547,15 @@ msgstr "Iniziare il codice G"
msgid "Start new slicing process"
msgstr "Inizia un nuovo processo di affettamento"
+msgid ""
+"Start of the wiping speed ramp up (for wipe tower).\n"
+"Can be a % of the 'Wipe tower speed'.\n"
+"Set to 0 to disable."
+msgstr ""
+"Inizio dell'incremento della velocità di pulizia (per la torre di pulizia).\n"
+"Può essere una % della 'Velocità della torre di pulizia'.\n"
+"Imposta 0 per disabilitare."
+
msgid "Start temp:"
msgstr "Temp. inizio:"
@@ -12450,6 +12711,9 @@ msgstr "Angolo trama interfaccia supporto"
msgid "Support interface speed"
msgstr "Velocità dell'interfaccia di sostegno"
+msgid "Support interfaces"
+msgstr "Interfacce di supporto"
+
msgid "Support layer height"
msgstr "Altezza strato supporto"
@@ -13372,6 +13636,33 @@ msgid "The speed for retractions (this only applies to the extruder motor)."
msgstr ""
"La velocità per le retrazioni (si applica solo al motore dell'estrusore)."
+msgid ""
+"The Spiral Vase mode requires:\n"
+"- no top solid layers\n"
+"- 0% fill density\n"
+"- classic perimeter slicing\n"
+"- no support material\n"
+"- Ensure vertical shell thickness enabled\n"
+"- disabled 'no solid infill over perimeters'\n"
+"- unchecked 'exact last layer height'\n"
+"- unchecked 'dense infill'\n"
+"- unchecked 'extra perimeters'- unchecked 'gap fill after last perimeter'- "
+"disabled 'no solid fill over X perimeters'- disabled 'seam notch'"
+msgstr ""
+"La modalità Vaso a spirale richiede:\n"
+"- nessun strato solido superiore\n"
+"- 0% densità di riempimento\n"
+"- generatore perimetro classico\n"
+"- nessun materiale di supporto\n"
+"- Assicurati che lo spessore del guscio verticale sia abilitato\n"
+"- disabilitato 'nessun riempimento solido sui perimetri'\n"
+"- deselezionata 'altezza esatta dell'ultimo strato'\n"
+"- deselezionato 'riempimento denso'\n"
+"- deselezionato 'perimetri extra'\n"
+"- deselezionato 'riempimento spazio dopo l'ultimo perimetro'\n"
+"- disabilitato 'nessun riempimento solido su X perimetri'\n"
+"- disabilitato 'tacca di cucitura'"
+
msgid ""
"The Spiral Vase option can only be used when printing single material "
"objects."
@@ -13713,6 +14004,22 @@ msgstr ""
"proprio prima dello spostamento Z. Nota che puoi usare variabili segnaposto "
"per tutte le impostazioni di Slic3r così come {layer_num} e {layer_z}."
+msgid ""
+"This define the succetion of infill angle. When defined, it replaces the "
+"fill_angle, and there won't be any extra 90° for each layer added, but the "
+"fill_angle_increment will still be used. The first layer start with the "
+"first angle. If a new pattern is used in a modifier, it will choose the "
+"layer angle from the pattern as if it has started from the first layer.Empty "
+"this settings to disable and recover the old behavior."
+msgstr ""
+"Questo definisce la successione dell'angolo di riempimento. Quando definito, "
+"sostituisce fill_angle e non ci saranno 90° aggiuntivi per ogni strato "
+"aggiunto, ma fill_angle_increment verrà comunque utilizzato. Il primo strato "
+"inizia con il primo angolo. Se un nuovo modello viene utilizzato in un "
+"modificatore, sceglierà l'angolo dello strato dal modello come se fosse "
+"iniziato dal primo strato. Svuotare queste impostazioni per disabilitare e "
+"ripristinare il vecchio comportamento."
+
msgid ""
"This end procedure is inserted at the end of the output file, before the "
"printer end gcode (and before any toolchange from this filament in case of "
@@ -13747,6 +14054,14 @@ msgstr ""
"altezza di estrusione 0,2 mm, velocità di avanzamento 20 mm/s) a 1,8 mm³/s "
"(velocità di avanzamento 60 mm/s) richieda almeno 2 secondi."
+msgid ""
+"This experimental setting is used to limit the speed of change in extrusion "
+"rate for a transition from lower speed to higher speed. A value of 1.8 mm³/"
+"s² ensures, that a change from the extrusion rate of 1.8 mm³/s (0.45mm "
+"extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s "
+"(feedrate 60 mm/s) will take at least 2 seconds."
+msgstr "Questa impostazione sperimentale viene utilizzata per limitare la variazione della velocità di estrusione nel passaggio da una velocità inferiore a una superiore. Un valore di 1,8 mm³/s² garantisce che il passaggio dalla velocità di estrusione di 1,8 mm³/s (larghezza di estrusione 0,45 mm, altezza di estrusione 0,2 mm, velocità di avanzamento 20 mm/s) a 5,4 mm³/s (velocità di avanzamento 60 mm/s) richieda almeno 2 secondi."
+
msgid ""
"This experimental setting uses G10 and G11 commands to have the firmware "
"handle the retraction. This is only supported in recent Marlin."
@@ -13829,6 +14144,21 @@ msgstr ""
"Può essere disabilitato da disable_fan_first_layers, rallentato da "
"full_fan_speed_layer e aumentato dal tempo di strato basso."
+msgid ""
+"This fan speed is enforced during all infill bridges. It won't slow down the "
+"fan if it's currently running at a higher speed.\n"
+"Set to -1 to disable this override (Internal bridges will use Bridges fan "
+"speed).\n"
+"Can be disabled by disable_fan_first_layers and increased by low layer time."
+msgstr ""
+"Questa velocità della ventola viene applicata durante tutti i ponti di "
+"riempimento. Non rallenterà la ventola se è attualmente in funzione a una "
+"velocità maggiore.\n"
+"Imposta -1 per disabilitare questa sostituzione (i ponti interni "
+"utilizzeranno la velocità della ventola dei ponti).\n"
+"Può essere disabilitato da disable_fan_first_layers e aumentato dal tempo di "
+"strato basso."
+
msgid ""
"This fan speed is enforced during all Internal Infill moves\n"
"Set to 1 to disable fan.\n"
@@ -13938,6 +14268,13 @@ msgstr ""
"Può essere disabilitato da disable_fan_first_layers, rallentato da "
"full_fan_speed_layer."
+msgid ""
+"This fan speed is enforced during bridges and overhangs. It won't slow down "
+"the fan if it's currently running at a higher speed.\n"
+"Set to -1 to disable this override (Bridges will use default fan speed).\n"
+"Can be disabled by disable_fan_first_layers and increased by low layer time."
+msgstr "Questa velocità della ventola viene applicata durante ponti e sporgenze. Non rallenterà la ventola se è attualmente in funzione a una velocità superiore.\nImposta -1 per disabilitare questa sostituzione (i ponti e le sporgenze utilizzeranno la velocità predefinita della ventola).\nPuò essere disabilitato da disable_fan_first_layers e aumentato dal tempo di strato basso."
+
msgid ""
"This feature allows you to combine infill and speed up your print by "
"extruding thicker infill layers while preserving thin perimeters, thus "
@@ -14862,6 +15199,13 @@ msgstr ""
"Può essere una % della larghezza del perimetro\n"
"0 per auto"
+msgid ""
+"This setting represents the minimum fan speed (like minimum PWM) your fan "
+"needs to work."
+msgstr ""
+"Questa impostazione rappresenta la velocità minima della ventola (come il "
+"PWM minimo) necessaria per il suo funzionamento."
+
msgid ""
"This setting represents the minimum mm for a gapfill extrusion to be "
"extruded.\n"
@@ -15297,6 +15641,9 @@ msgstr "Riempimento solido superiore"
msgid "Top solid speed"
msgstr "Velocità massima solida"
+msgid "Top surfaces"
+msgstr "Superfici superiori"
+
msgid "Top View"
msgstr "Vista dall'alto"
@@ -15897,6 +16244,11 @@ msgstr "Benvenuto nell'assistente di configurazione %s"
msgid "Welcome to the %s Configuration Wizard"
msgstr "Benvenuti alla procedura guidata di configurazione %s"
+msgid ""
+"What to do with the result? insert it into the existing platter or replacing "
+"the current platter by a new one?"
+msgstr "Cosa fare con il risultato? Inserirlo nel piatto esistente o sostituire il piatto attuale con uno nuovo?"
+
msgid "What would you like to do with \"%1%\" preset after saving?"
msgstr "Cosa vorresti fare con \"%1%\" preimpostato dopo il salvataggio?"
@@ -16145,6 +16497,13 @@ msgstr ""
"dividere o unire i segmenti del perimetro. Se espresso in percentuale (ad "
"esempio 100%), verrà calcolato in base al diametro dell'ugello."
+msgid ""
+"When using 'Avoid crossing perimeters', consider the top surfaces as a void, "
+"to avoid travelling over them if possible."
+msgstr ""
+"Quando si utilizza 'Evita attraversamento perimetri', considera le superfici "
+"superiori come un vuoto, per evitare di attraversarle, se possibile."
+
msgid ""
"When using 'Complete individual objects', the default behavior is to draw "
"the skirt around each object. if you prefer to have only one skirt for the "
@@ -16315,6 +16674,12 @@ msgstr "Angolo di rotazione della torre di pulizia"
msgid "Wipe tower rotation angle with respect to x-axis."
msgstr "Angolo di rotazione della torre di pulizia rispetto all'asse x."
+msgid "Wipe Tower Speed"
+msgstr "Velocità torre pulizia"
+
+msgid "Wipe tower starting speed"
+msgstr "Velocità iniziale torre pulizia"
+
msgid "Wipe tower Width"
msgstr "Larghezza della torre di spurgo"
@@ -16377,6 +16742,9 @@ msgstr "scrittura richiamata fallita"
msgid "Write information about the model to the console."
msgstr "Scrivi informazioni sul modello nella console."
+msgid "Write the thumbnail type in gcode."
+msgstr "Scrivi tipo di miniatura nel gcode."
+
msgid "Wrong password"
msgstr "Password sbagliata"
@@ -16763,89 +17131,94 @@ msgid "°C"
msgstr "°C"
msgid ""
-"Can't open directory '%1%'. Config bundles from here can't be loaded.\n"
-"Error: %2%"
-msgstr "Impossibile aprire la directory '%1%'. I bundle di configurazione da qui non possono essere caricati.\nErrore: %2%"
-
-msgid "Except for the first %1% layers where the fan is disabled"
-msgstr "Tranne i primi %1% strati in cui la ventola è disabilitata"
-
-msgid "Except for the first layer where the fan is disabled"
-msgstr "Tranne il primo strato dove la ventola è disabilitato"
-
-msgid "Fan will be turned off by default."
-msgstr "Ventola sarà disattivato per impostazione predefinita."
-
-msgid "Fan will run at %1%%% by default."
-msgstr "Ventola verrà eseguito a %1%%% per impostazione predefinita"
-
-msgid "Gap fill: extra extension"
-msgstr "Gap fill: Estensione extra"
+"\n"
+"\n"
+"If estimated layer time is below ~%1%s"
+msgstr ""
+"\n"
+"\n"
+"Se il tempo stimato dello strato è inferiore a ~%1%s"
-msgid "Gap fills"
-msgstr "Riempimenti del vuoto"
+msgid ""
+"Add one perimeter every odd layer. With this, infill is taken into the "
+"sandwich and you may be able to reduce drastically the infill/perimeter "
+"overlap setting. "
+msgstr ""
+"Aggiungi un perimetro ogni strato dispari. Con questo, l'infill viene preso "
+"in sandwitch e si può essere in grado di ridurre drasticamente "
+"l'impostazione di sovrapposizione infill/perimetro. "
-msgid "Import STL/3MF/STEP/OBJ/AMF without config, keep platter"
-msgstr "Importa STL/3MF/STEP/OBJ/AMF senza configurazione, mantieni piano"
+msgid "Cannot overwrite an external profile."
+msgstr "Impossibile sovrascrivere un profilo esterno."
-msgid "Infill angle"
-msgstr "Angolo di riempimento"
+msgid ""
+"Change width on every odd layer for better overlap with adjacent layers and "
+"getting stringer shells. Try values about +/- 0.1 with different sign for "
+"external and internal perimeters.\n"
+"This could be combined with extra permeters on odd layers.\n"
+"Works as absolute spacing or a % of the spacing.\n"
+"set 0 to disable"
+msgstr ""
+"Modifica la larghezza su ogni strato dispari per una migliore sovrapposizione "
+"con gli strati adiacenti e per ottenere gusci più stretti. Prova valori di "
+"circa +/- 0,1 con segno diverso per i perimetri esterni e interni.\n"
+"Questo potrebbe essere combinato con perimetri extra su strati dispari.\n"
+"Funziona come spaziatura assoluta o una % della spaziatura.\n"
+"Imposta 0 per disabilitare"
-msgid "Internal perimeters"
-msgstr "Perimetri interno"
+msgid ""
+"Change width on every odd layer for better overlap with adjacent layers and "
+"getting stringer shells. Try values about +/- 0.1 with different sign.\n"
+"This could be combined with extra permeters on odd layers.\n"
+"Works as absolute spacing or a % of the spacing.\n"
+"set 0 to disable"
+msgstr ""
+"Modifica la larghezza su ogni strato dispari per una migliore sovrapposizione "
+"con gli strati adiacenti e per ottenere gusci più stretti. Prova valori di "
+"circa +/- 0,1 con segno diverso.\n"
+"Questo potrebbe essere combinato con perimetri extra su strati dispari.\n"
+"Funziona come spaziatura assoluta o una % della spaziatura.\n"
+"Imposta 0 per disabilitare"
-msgid "Ironings"
-msgstr "Stiraturi"
+msgid "Density of internal infill, expressed in the range 0% - 100%."
+msgstr "Densità del riempimento interno, espressa nell'intervallo 0% - 100%."
-msgid ""
-"let the retraction happens on the first layer even if the travel path does "
-"not exceed the upper layer's perimeters."
-msgstr "Lascia che la retrazione avvenga sul primo strato anche se il percorso di viaggio non supera i perimetri dello strato superiore."
+msgid "External perimeters spacing change on odd layers"
+msgstr "Modifica spaziatura perimetri esterni su strati dispari"
-msgid ""
-"Maximum deflection of a point to the estimated radius of the circle.\n"
-"As cylinders are often exported as triangles of varying size, points may not "
-"be on the circle circumference. This setting allows you some leeway to "
-"broaden the detection.\n"
-"In mm or in % of the radius."
-msgstr "Defezione massima di un punto rispetto al raggio stimato del cerchio.\nPoiché i cilindri vengono spesso esportati come triangoli di dimensioni variabili, il punto potrebbe non trovarsi sulla circonferenza del cerchio. Questa impostazione ti consente di limitare il rilevamento.\nIn mm o in % del raggio."
+msgid "Extra perimeter on odd layers"
+msgstr "Perimetro extra su strati dispari"
msgid ""
-"Old layout: all windows are in the application, settings are on the top tab "
-"bar and the platter choice in on the bottom of the platter view."
-msgstr "Vecchio layout: tutte le finestre sono nell'applicazione, le impostazioni si trovano nella barra delle schede in alto e la scelta della piastra nella parte inferiore della vista della piastra."
-
-msgid "Open project AMF/3MF with config, clear platter"
-msgstr "Apri progetto AMF/3MF con configurazione, pulisci piano"
+"Extrude perimeters that have a part over an overhang in the reverse "
+"direction on odd layers. This alternating pattern can drastically improve "
+"steep overhang.\n"
+"!! this is a very slow algorithm (it uses the same results as "
+"extra_perimeters_overhangs) !!"
+msgstr ""
+"Estrudi i perimetri che hanno una parte sopra una sporgenza nella direzione "
+"inversa in strati dispari. Quel modello alternato può migliorare "
+"drasticamente lo sbalzo ripido.\n"
+"!! questo è un algoritmo molto lento (usa gli stessi risultati di "
+"extra_perimeters_overhangs) !!!"
-msgid "Option tags:"
-msgstr "Opzioni tag:"
+msgid "Infill spacing change on odd layers"
+msgstr "Modifica spaziatura riempimento su strati dispari"
-msgid "Reload the platter from disk"
-msgstr "Ricarica la piastra dal disco"
+msgid "odd layers"
+msgstr "strati dispari"
-msgid "Support interfaces"
-msgstr "Interfacce di supporto"
+msgid "On odd layers"
+msgstr "Su strati dispari"
-msgid ""
-"This experimental setting is used to limit the speed of change in extrusion "
-"rate for a transition from lower speed to higher speed. A value of 1.8 mm³/"
-"s² ensures, that a change from the extrusion rate of 1.8 mm³/s (0.45mm "
-"extrusion width, 0.2mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s "
-"(feedrate 60 mm/s) will take at least 2 seconds."
-msgstr "Questa impostazione sperimentale viene utilizzata per limitare la variazione della velocità di estrusione nel passaggio da una velocità inferiore a una superiore. Un valore di 1,8 mm³/s² garantisce che il passaggio dalla velocità di estrusione di 1,8 mm³/s (larghezza di estrusione 0,45 mm, altezza di estrusione 0,2 mm, velocità di avanzamento 20 mm/s) a 5,4 mm³/s (velocità di avanzamento 60 mm/s) richieda almeno 2 secondi."
+msgid "Perimeters spacing change on odd layers"
+msgstr "Modifica spaziatura perimetri su strati dispari"
-msgid ""
-"This fan speed is enforced during bridges and overhangs. It won't slow down "
-"the fan if it's currently running at a higher speed.\n"
-"Set to -1 to disable this override (Bridges will use default fan speed).\n"
-"Can be disabled by disable_fan_first_layers and increased by low layer time."
-msgstr "Questa velocità della ventola viene applicata durante ponti e sporgenze. Non rallenterà la ventola se è attualmente in funzione a una velocità superiore.\nImposta -1 per disabilitare questa sostituzione (i ponti e le sporgenze utilizzeranno la velocità predefinita della ventola).\nPuò essere disabilitato da disable_fan_first_layers e aumentato dal tempo di strato basso."
+msgid "Reverse on odd"
+msgstr "Inverti su dispari"
-msgid ""
-"What to do with the result? insert it into the existing platter or replacing "
-"the current platter by a new one?"
-msgstr "Cosa fare con il risultato? Inserirlo nel piatto esistente o sostituire il piatto attuale con uno nuovo?"
+msgid "Solid infill spacing change on odd layers"
+msgstr "Modifica spaziatura riempimento solido su strati dispari"
msgid ""
"%s has encountered an error. It was likely caused by running out of memory. "
@@ -30395,8 +30768,379 @@ msgstr ""
"clic per nascondere i presets non compatibili con la stampante corrente."
msgid ""
-"Only compatible presets are shown. Click to show both the presets compatible "
-"and not compatible with the current printer."
+"If you want to process the output G-code through custom scripts, just list "
+"their absolute paths here.\n"
+"Separate multiple scripts with a semicolon or a line return.\n"
+"!! please use ';' here if you want a not-line-separation ';'!!\n"
+"Scripts will be passed the absolute path to the G-code file as the first "
+"argument, and they can access the Slic3r config settings by reading "
+"environment variables.\n"
+"The script, if passed as a relative path, will also be searched from the "
+"slic3r directory, the slic3r configuration directory and the user directory."
msgstr ""
-"Vengono mostrati solo i presets compatibili. Fare clic per mostrare sia i "
-"presets compatibili che quelli non compatibili con la stampante corrente."
+"Se vuoi elaborare il G-code di uscita con script personalizzati, elenca qui "
+"i loro percorsi assoluti.\n"
+"Separa più script con un punto e virgola o un ritorno a capo.\n"
+"!! per favore usa ';' se vuoi una separazione non di linea ';'!!\n"
+"Agli script viene passato il percorso assoluto del file G-code come primo "
+"argomento, e possono accedere alle impostazioni di configurazione di Slic3r "
+"leggendo le variabili d'ambiente.\n"
+"Lo script, se passato come percorso relativo, verrà cercato anche dalla "
+"directory slic3r, dalla directory di configurazione di slic3r e dalla "
+"directory dell'utente."
+
+msgid ""
+"It's better for some infill like rectilinear to rotate 90° each layer. If "
+"this settign is deactivated, they won't do that anymore."
+msgstr ""
+"È meglio che alcuni riempimenti, come quello rettilineo, ruotino di 90° ogni "
+"strato. Se questa impostazione è disattivata, non lo faranno più."
+
+msgid "Fill angle pattern"
+msgstr "Trama angolo riempimento"
+
+msgid ""
+"instead of writing 'thumbnails' as tag in the gcode, it will write "
+"'thumbnails_PNG', thumbnails_JPG', 'thumbnail_QOI', etc..\n"
+" Some firmware needs it to know how to decode the thumbnail, some others "
+"don't support it."
+msgstr ""
+"invece di scrivere 'thumbnails' come tag nel gcode, scriverà "
+"'thumbnails_PNG', thumbnails_JPG', 'thumbnail_QOI', ecc..\n"
+" Alcuni firmware ne hanno bisogno per sapere come decodificare la miniatura, "
+"altri non lo supportano."
+
+msgid ""
+"\n"
+"\n"
+"! 1 for the Top fan speed is Deprecated, please set it to 0 to stop the fan!"
+msgstr ""
+"\n"
+"\n"
+"! 1 per la velocità massima della ventola è sconsigliato, imposta 0 per "
+"fermare la ventola!"
+
+msgid ""
+"\n"
+"\n"
+"! 1 for the External perimeters fan speed is Deprecated, please set it to 0 "
+"to stop the fan!"
+msgstr ""
+"\n"
+"\n"
+"! 1 per la velocità della ventola dei perimetri esterni è sconsigliato, "
+"imposta 0 per fermare la ventola!"
+
+msgid ""
+"\n"
+"\n"
+"! 1 for the Bridge fan speed is Deprecated, please set it to 0 to stop the "
+"fan!"
+msgstr ""
+"\n"
+"\n"
+"! 1 per la velocità della ventola del Ponte è sconsigliato, imposta 0 per "
+"fermare la ventola!"
+
+msgid ""
+"\n"
+"\n"
+"! 1 for the Infill bridge fan speed is Deprecated, please set it to 0 to "
+"stop the fan!"
+msgstr ""
+"\n"
+"\n"
+"! 1 per la velocità della ventola dei Ponti interni è sconsigliato, imposta "
+"0 per fermare la ventola!"
+
+msgid "Cannot overwrite an external profile. Please choose another name."
+msgstr "Impossibile sovrascrivere un profilo esterno. Scegliere un altro nome."
+
+msgid "Cap with perimeter flow"
+msgstr "Limite flusso perimetrale"
+
+msgid "If estimated layer time is below ~%1%s"
+msgstr "Se il tempo di strato stimato è inferiore a ~%1%s"
+
+msgid ""
+"! 1 for the Top fan speed is Deprecated, please set it to 0 to stop the fan!"
+msgstr ""
+"! 1 per la velocità massima della ventola è sconsigliato, imposta 0 per "
+"fermare la ventola!"
+
+msgid ""
+"! 1 for the External perimeters fan speed is Deprecated, please set it to 0 to "
+"stop the fan!"
+msgstr ""
+"! 1 per la velocità della ventola dei perimetri esterni è sconsigliato, "
+"imposta 0 per fermare la ventola!"
+
+msgid ""
+"! 1 for the Bridge fan speed is Deprecated, please set it to 0 to stop the fan!"
+msgstr ""
+"! 1 per la velocità della ventola del Ponte è sconsigliato, imposta 0 per "
+"fermare la ventola!"
+
+msgid ""
+"! 1 for the Infill bridge fan speed is Deprecated, please set it to 0 to stop "
+"the fan!"
+msgstr ""
+"! 1 per la velocità della ventola dei Ponti interni è sconsigliato, imposta 0 "
+"per fermare la ventola!"
+
+msgid ""
+"Both compatible and incompatible presets are shown. Click to hide presets not "
+"compatible with the current printer."
+msgstr ""
+"Vengono mostrati sia i presets compatibili che quelli incompatibili. Fare clic "
+"per nascondere i presets non compatibili con la stampante corrente."
+
+msgid "EPeri"
+msgstr "EPeri"
+
+msgid "IPeri"
+msgstr "IPeri"
+
+msgid "OPeri"
+msgstr "OPeri"
+
+msgid "GFill"
+msgstr "GFill"
+
+msgid "IFill"
+msgstr "IFill"
+
+msgid "SFill"
+msgstr "SFill"
+
+msgid "TFill"
+msgstr "TFill"
+
+msgid "EBridge"
+msgstr "EBridge"
+
+msgid "IBridge"
+msgstr "IBridge"
+
+msgid ""
+"Density of internal infill, expressed in the range 0% - 100%.\n"
+"Set 0 to remove any sparse infill.\n"
+"Note that using a value of 100% won't change the type of infill from sparse to "
+"solid. If you want only solid infill, you can set the 'Solid infill every X "
+"layers' (solid_infill_every_layers) to 1 instead."
+msgstr ""
+"Densità del riempimento interno, espressa nel range 0% - 100%.\n"
+"Imposta 0 per rimuovere qualsiasi riempimento sparso.\n"
+"Nota che usare un valore del 100% non cambierà tipo di riempimento da scarso a "
+"solido. Se desideri solo il riempimento solido, puoi invece impostare "
+"'Riempimento solido ogni X livelli' (solid_infill_every_layers) su 1."
+
+msgid ""
+"Error while writing gcode: two points are at the same position. Please send "
+"the .3mf project to the dev team for debugging. Extrude loop: seam notch."
+msgstr ""
+"Errore durante la scrittura del gcode: due punti sono nella stessa posizione. "
+"Invia il progetto .3mf al team di sviluppo per il debug. Ciclo estrusione: "
+"tacca cucitura."
+
+msgid ""
+"Error while writing gcode: two points are at the same position. Please send "
+"the .3mf project to the dev team for debugging. Extrude loop: wipe."
+msgstr ""
+"Errore durante la scrittura del gcode: due punti sono nella stessa posizione. "
+"Invia il progetto .3mf al team di sviluppo per il debug. Ciclo estrusione: "
+"pulizia."
+
+msgid ""
+"Error while writing gcode: two points are at the same position. Please send "
+"the .3mf project to the dev team for debugging. Extrude loop: "
+"wipe_inside_start."
+msgstr ""
+"Errore durante la scrittura del gcode: due punti sono nella stessa posizione. "
+"Invia il progetto .3mf al team di sviluppo per il debug. Ciclo estrusione: "
+"wipe_inside_start."
+
+msgid "Export current plate (options available in the dialog)"
+msgstr "Esporta piastra corrente (opzioni disponibili nella finestra di dialogo)"
+
+msgid "Formatting"
+msgstr "Formattazione"
+
+msgid ""
+"If you want to process the output G-code through custom scripts, just list "
+"their absolute paths here.\n"
+"Separate multiple scripts with a semicolon or a line return.\n"
+"!! please use '\\;' here if you want a not-line-separation ';'!!\n"
+"Scripts will be passed the absolute path to the G-code file as the first "
+"argument, and they can access the Slic3r config settings by reading "
+"environment variables.\n"
+"The script, if passed as a relative path, will also be searched from the "
+"slic3r directory, the slic3r configuration directory and the user directory."
+msgstr ""
+"Se vuoi elaborare il G-code di uscita con script personalizzati, elenca qui i "
+"loro percorsi assoluti.\n"
+"Separa più script con un punto e virgola o un ritorno a capo.\n"
+"!! per favore usa '\\' se vuoi una separazione non di linea ';'!!\n"
+"Agli script viene passato il percorso assoluto del file G-code come primo "
+"argomento, e possono accedere alle impostazioni di configurazione di Slic3r "
+"leggendo le variabili d'ambiente.\n"
+"Lo script, se passato come percorso relativo, verrà cercato anche dalla "
+"directory slic3r, dalla directory di configurazione di slic3r e dalla "
+"directory dell'utente."
+
+msgid ""
+"instead of writing 'thumbnails' as tag in the gcode, it will write "
+"'thumbnails_PNG', thumbnails_JPG', 'thumbnail_QOI', etc..\n"
+" Some firmware need it to know how to decode the thumbnail, some others don't "
+"support it."
+msgstr ""
+"invece di scrivere 'thumbnails' come tag nel gcode, scriverà 'thumbnails_PNG', "
+"'thumbnails_JPG', 'thumbnail_QOI', ecc..\n"
+" Alcuni firmware lo richiedono per sapere come decodificare la miniatura, "
+"altri non lo supportano."
+
+msgid "Internal Perimeter fan speed"
+msgstr "Velocità ventola perimetro interno"
+
+msgid "Top Solid fan speed"
+msgstr "Velocità ventola solido superiore"
+
+msgid "Invert Pitch axis"
+msgstr "Inverti asse Angolo"
+
+msgid "Invert Roll axis"
+msgstr "Inverti asse Rotazione"
+
+msgid "Invert X axis"
+msgstr "Inverti asse X"
+
+msgid "Invert Y axis"
+msgstr "Inverti asse Y"
+
+msgid "Invert Yaw axis"
+msgstr "Inverti asse Imbardata"
+
+msgid "Invert Z axis"
+msgstr "Inverti asse Z"
+
+msgid "Iron"
+msgstr "Stiro"
+
+msgid "Only ascii characters in gcode"
+msgstr "Solo caratteri ascii nel gcode"
+
+msgid "Option use another tags than the current mode."
+msgstr "L'opzione utilizza tag diversi dalla modalità corrente."
+
+msgid ""
+"Position of perimeters' starting points. May use the angle & travel cost (with "
+"the fixed visilibity & ovehangs cost) to find the best place.\n"
+"Corners\\. at least 100% angle cost and no more than 80% travel cost (default "
+"to 120-40).\n"
+"Nearest\\. no more than 100% angle cost and at least 100% travel cost (default "
+"to 80-100).\n"
+"Scattered\\. seam is placed at a random position on external perimeters.\n"
+"Random\\. seam is placed at a random position for all perimeters.\n"
+"Aligned\\. seams are grouped in the best place possible (minimum 6 layers per "
+"group).\n"
+"Contiguous\\. seam is placed over a seam from the previous layer (useful with "
+"enforcers as seeds).\n"
+"Rear\\. seam is placed at the far side (highest Y coordinates).\n"
+"Custom\\. Other conbination of angle & travel cost than 'Corners' and "
+"'Nearest', (default to 60-100).\n"
+"Custom & weight can be defined in Advanced or Expert mode."
+msgstr ""
+"Posizione dei punti di partenza dei perimetri. Può usare il costo angolo e "
+"viaggio (con il costo fisso di visibilità e sporgenze) per trovare il posto "
+"migliore.\n"
+"Angoli\\. almeno il 100% del costo dell'angolo e non più dell'80% del costo "
+"del viaggio (predefinito 120-40).\n"
+"Più vicino\\. non più del 100% del costo dell'angolo e almeno il 100% del "
+"costo del viaggio (predefinito 80-100).\n"
+"Sparpagliato: la cucitura è posizionata in una posizione casuale sui perimetri "
+"esterni\n"
+"Casuale: la cucitura è posizionata in una posizione casuale per tutti i "
+"perimetri\n"
+"Allineato: le cuciture sono raggruppate nel miglior posto possibile (minimo 6 "
+"strati per gruppo).\n"
+"Contiguo: la cucitura è posizionata sopra una cucitura dello strato precedente "
+"(utile con gli esecutori)\n"
+"Posteriore: la cucitura è posizionata sul lato opposto (coordinate Y più "
+"alte).\n"
+"Personalizzato: altra combinazione di angolo e costo del viaggio rispetto a "
+"'Angoli' e 'Più vicino' (predefinito 60-100).\n"
+"Personalizzato può essere definito in modalità Avanzato o Esperto."
+
+msgid "Supp"
+msgstr "Supp"
+
+msgid "SuppI"
+msgstr "SuppI"
+
+msgid "Tags"
+msgstr "Tags"
+
+msgid "tags"
+msgstr "tags"
+
+msgid "Your current tags:"
+msgstr "I tuoi tag correnti:"
+
+msgid ""
+"The option you selected in the search dialog isn't available in the current "
+"mode/tags. Do you want to switch to the option tag?"
+msgstr ""
+"L'opzione selezionata nella finestra di dialogo di ricerca non è disponibile "
+"nella modalità/tag corrente. Vuoi passare al tag opzione?"
+
+msgid "ThinW"
+msgstr "ThinW"
+
+msgid ""
+"To use a client cert on MacOS, you might need to add your certificate to your "
+"keychain and make sure it's trusted."
+msgstr ""
+"Per utilizzare un certificato client su MacOS, potresti dover aggiungere il "
+"certificato al portachiavi e assicurarti che sia affidabile."
+
+msgid ""
+"You can either use a path to your certificate or the name of your certificate "
+"as you can find it in your Keychain"
+msgstr ""
+"Puoi usare un percorso per il tuo certificato o il nome del tuo certificato "
+"come puoi trovarlo nel tuo portachiavi"
+
+msgid ""
+"Using a color change gcode, but there isn't one for this printer.\n"
+"The printer won't stop for the filament change, unless you set it manually in "
+"the custom gcode section."
+msgstr ""
+"Usa un gcode per il cambio colore, ma non ce n'è uno per questa stampante.\n"
+"La stampante non si fermerà per il cambio del filamento, a meno che non lo "
+"imposti manualmente nella sezione gcode personalizzata."
+
+msgid ""
+"Using a pause gcode, but there isn't one for this printer.\n"
+"The printer won't pause, unless you set it manually in the custom gcode "
+"section."
+msgstr ""
+"Usa un gcode di pausa, ma non ce n'è uno per questa stampante.\n"
+"La stampante non andrà in pausa, a meno che non la imposti manualmente nella "
+"sezione gcode personalizzata."
+
+msgid ""
+"When printing the gcode file, replace any non-ascii character by a '_'. Can be "
+"useful if the firmware or a software in a workflow doesn't support uft-8."
+msgstr ""
+"Quando si stampa il file gcode, sostituire qualsiasi carattere non-ascii con "
+"un '_'. Può essere utile se il firmware o un software in un flusso di lavoro "
+"non supporta uft-8."
+
+msgid "WTower"
+msgstr "WTower"
+
+msgid "Your firmware doesn't allow to print the remaining times with M117."
+msgstr "Il tuo firmware non consente di stampare i tempi rimanenti con M117."
+
+msgid "Your firmware doesn't allow to print the remaining times with M73."
+msgstr "Il tuo firmware non consente di stampare i tempi rimanenti con M73."
diff --git a/resources/ui_layout/default/print.ui b/resources/ui_layout/default/print.ui
index 959d028473a..8129becdd82 100644
--- a/resources/ui_layout/default/print.ui
+++ b/resources/ui_layout/default/print.ui
@@ -2,6 +2,7 @@
page:Perimeters & Shell:shell
group:Vertical shells
setting:width$6:perimeters
+ setting:width$6:perimeters_hole
setting:tags$Simple$Expert$SuSi:script:float:depends$perimeter_spacing$external_perimeter_spacing:label$Wall Thickness:tooltip$Change the perimeter extrusion widths to ensure that there is an exact number of perimeters for this wall thickness value. It won't put the perimeter width below the nozzle diameter, and up to double.\nNote that the value displayed is just a view of the current perimeter thickness, like the info text below. The number of perimeters used to compute this value is one loop, or the custom variable 'wall_thickness_lines' (advanced mode) if defined.\nIf the value is too low, it will revert the widths to the saved value.\nIf the value is set to 0, it will show 0.:s_wall_thickness
setting:spiral_vase
recommended_thin_wall_thickness_description
diff --git a/src/PrusaSlicer.cpp b/src/PrusaSlicer.cpp
index 129baabd8fb..a342f208878 100644
--- a/src/PrusaSlicer.cpp
+++ b/src/PrusaSlicer.cpp
@@ -142,7 +142,10 @@ int CLI::run(int argc, char **argv)
if (! config_substitutions.empty()) {
boost::nowide::cout << "The following configuration values were substituted when loading \" << file << \":\n";
for (const ConfigSubstitution &subst : config_substitutions)
- boost::nowide::cout << "\tkey = \"" << subst.opt_def->opt_key << "\"\t loaded = \"" << subst.old_value << "\tsubstituted = \"" << subst.new_value->serialize() << "\"\n";
+ if(subst.opt_def)
+ boost::nowide::cout << "\tkey = \"" << subst.opt_def->opt_key << "\"\t loaded = \"" << subst.old_value << "\tsubstituted = \"" << subst.new_value->serialize() << "\"\n";
+ else
+ boost::nowide::cout << "\tkey = \"" << subst.old_name << "\"\t can't be loaded (value = \"" << subst.old_value <<"\")\n";
}
config.normalize_fdm();
PrinterTechnology other_printer_technology = get_printer_technology(config);
@@ -192,10 +195,13 @@ int CLI::run(int argc, char **argv)
boost::nowide::cerr << "Mixing configurations for FFF and SLA technologies" << std::endl;
return 1;
}
- if (! config_substitutions.substitutions.empty()) {
+ if (! config_substitutions.empty()) {
boost::nowide::cout << "The following configuration values were substituted when loading \" << file << \":\n";
- for (const ConfigSubstitution& subst : config_substitutions.substitutions)
- boost::nowide::cout << "\tkey = \"" << subst.opt_def->opt_key << "\"\t loaded = \"" << subst.old_value << "\tsubstituted = \"" << subst.new_value->serialize() << "\"\n";
+ for (const ConfigSubstitution& subst : config_substitutions.get())
+ if(subst.opt_def)
+ boost::nowide::cout << "\tkey = \"" << subst.opt_def->opt_key << "\"\t loaded = \"" << subst.old_value << "\tsubstituted = \"" << subst.new_value->serialize() << "\"\n";
+ else
+ boost::nowide::cout << "\tkey = \"" << subst.old_name << "\"\t can't be loaded (value = \"" << subst.old_value <<"\")\n";
}
// config is applied to m_print_config before the current m_config values.
config += std::move(m_print_config);
diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp
index 75e7b1080b9..089b92d5f7b 100644
--- a/src/libslic3r/AppConfig.cpp
+++ b/src/libslic3r/AppConfig.cpp
@@ -360,9 +360,9 @@ void AppConfig::set_defaults()
if (get("check_blacklisted_library").empty())
set("check_blacklisted_library", "1");
#endif // _WIN32
-
- if (get("compress_png_texture").empty())
- set("compress_png_texture", "1");
+ //disable by default if amd graphic card detected, but can't know before the opengl is launched
+ //if (get("compress_png_texture").empty())
+ //set("compress_png_texture", (m_hardware&hGpuAmd) == hGpuAmd ? "0" : "1");
// remove old 'use_legacy_opengl' parameter from this config, if present
if (!get("use_legacy_opengl").empty())
@@ -395,6 +395,9 @@ void AppConfig::set_defaults()
if (get("check_material_export").empty())
set("check_material_export", "0");
+ if (get("show_unknown_setting").empty())
+ set("show_unknown_setting", "1");
+
if (get("use_custom_toolbar_size").empty())
set("use_custom_toolbar_size", "0");
@@ -458,7 +461,11 @@ void AppConfig::set_defaults()
set("use_rich_tooltip", "0");
if (get("hide_slice_tooltip").empty())
+#ifdef _WIN32
+ set("hide_slice_tooltip", "1");
+#else
set("hide_slice_tooltip", "0");
+#endif // _WIN32
if (get("show_layer_height_doubleslider").empty())
set("show_layer_height_doubleslider", "1");
@@ -500,9 +507,6 @@ void AppConfig::set_defaults()
if (get("show_splash_screen").empty())
set("show_splash_screen", "1");
- if (get("show_splash_screen").empty())
- set("show_splash_screen", "1");
-
if (get("restore_win_position").empty())
set("restore_win_position", "1"); // allowed values - "1", "0", "crashed_at_..."
@@ -515,7 +519,7 @@ void AppConfig::set_defaults()
{
//try to load splashscreen from ui file
- std::map key2splashscreen = {{"splash_screen_editor", "benchy-splashscreen.jpg"}, {"splash_screen_gcodeviewer", "prusa-gcodepreview.jpg"} };
+ std::map key2splashscreen = {{"splash_screen_editor", ""}, {"splash_screen_gcodeviewer", ""} };
boost::property_tree::ptree tree_splashscreen;
boost::filesystem::path path_colors = boost::filesystem::path(layout_config_path()) / "colors.ini";
try {
@@ -543,10 +547,13 @@ void AppConfig::set_defaults()
if (get("splash_screen_gcodeviewer").empty())
set("splash_screen_gcodeviewer", "default");
- if (!get("show_splash_screen_random").empty() && get("show_splash_screen_random") == "1") {
+ bool switch_to_random = get("show_splash_screen_random") == "1";
+ if (switch_to_random || key2splashscreen["splash_screen_editor"].empty())
set("splash_screen_editor", "random");
+ if (switch_to_random || key2splashscreen["splash_screen_gcodeviewer"].empty())
+ set("splash_screen_gcodeviewer", "random");
+ if (switch_to_random)
set("show_splash_screen_random", "0");
- }
}
#ifdef _WIN32
@@ -614,6 +621,15 @@ void AppConfig::set_defaults()
erase("", "object_settings_size");
}
+void AppConfig::set_hardware_type(HardwareType hard) {
+ this->m_hardware = hard;
+ // Set default that depends on hardware type
+
+ //disable by default if amd graphic card detected, but can't know before the opengl is launched
+ if (get("compress_png_texture").empty() && (m_hardware&hHasGpu) != 0)
+ set("compress_png_texture", (m_hardware&hGpuAmd) == hGpuAmd ? "0" : "1");
+}
+
void AppConfig::init_ui_layout() {
boost::filesystem::path resources_dir_path = boost::filesystem::path(resources_dir()) / "ui_layout";
if (!boost::filesystem::is_directory(resources_dir_path)) {
diff --git a/src/libslic3r/AppConfig.hpp b/src/libslic3r/AppConfig.hpp
index e90ab738810..2b52956fb17 100644
--- a/src/libslic3r/AppConfig.hpp
+++ b/src/libslic3r/AppConfig.hpp
@@ -27,6 +27,25 @@ class AppConfig
Highlight,
};
+ enum HardwareType : uint8_t
+ {
+ //first 4 bits for cpu
+ hHasCpu = uint8_t(0x0F),
+ hCpuIntel = 1,
+ hCpuAmd = 2,
+ hCpuApple = 3,
+ hCpuArmGeneric = 4,
+ hCpuOther = 5,
+ //last 4 bits for gpu
+ hHasGpu = uint8_t(0xF0),
+ hGpuIntel = 1 << 4,
+ hGpuAmd = 2 << 4,
+ hGpuApple = 3 << 4,
+ hGpuArmGeneric = 4 << 4,
+ hGpuOther = 5 << 4,
+ hGpuNvidia = 6 << 4,
+ };
+
struct ConfigFileInfo {
bool correct_checksum{ false };
bool contains_null{ false };
@@ -190,12 +209,16 @@ class AppConfig
LayoutEntry get_ui_layout();
std::vector get_ui_layouts() { return m_ui_layout; }
- //tags
+ // Tags
std::vector tags() { return m_tags; }
// splashscreen
std::string splashscreen(bool is_editor);
+ // Hardware
+ HardwareType hardware() { return m_hardware; }
+ void set_hardware_type(HardwareType hard);
+
// Returns true if the user's data directory comes from before Slic3r 1.40.0 (no updating)
bool legacy_datadir() const { return m_legacy_datadir; }
void set_legacy_datadir(bool value) { m_legacy_datadir = value; }
@@ -281,6 +304,8 @@ class AppConfig
std::vector m_tags;
//splashscreen
std::pair m_default_splashscreen;
+ // hardware type
+ HardwareType m_hardware;
};
} // namespace Slic3r
diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt
index bd2dc2c082e..d8e096b71a3 100644
--- a/src/libslic3r/CMakeLists.txt
+++ b/src/libslic3r/CMakeLists.txt
@@ -95,6 +95,10 @@ add_library(libslic3r STATIC
Format/3mf.hpp
Format/AMF.cpp
Format/AMF.hpp
+ Format/BBConfig.cpp
+ Format/BBConfig.hpp
+ Format/bbs_3mf.hpp
+ Format/bbs_3mf.cpp
Format/OBJ.cpp
Format/OBJ.hpp
Format/objparser.cpp
diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp
index ea0d1216448..3e5ffe18195 100644
--- a/src/libslic3r/Config.cpp
+++ b/src/libslic3r/Config.cpp
@@ -54,15 +54,15 @@ std::string toString(OptionCategory opt) {
case OptionCategory::filoverride: return L("Filament overrides");
case OptionCategory::customgcode: return L("Custom G-code");
case OptionCategory::general: return L("General");
- case OptionCategory::limits: return "Machine limits"; // if not used, no need ot ask for translation
- case OptionCategory::mmsetup: return "Single Extruder MM Setup";
- case OptionCategory::firmware: return "Firmware";
- case OptionCategory::pad: return "Pad";
- case OptionCategory::padSupp: return "Pad and Support";
+ case OptionCategory::limits: return L("Machine limits"); // if not used, no need ot ask for translation
+ case OptionCategory::mmsetup: return L("Single Extruder MM Setup");
+ case OptionCategory::firmware: return L("Firmware");
+ case OptionCategory::pad: return L("Pad");
+ case OptionCategory::padSupp: return L("Pad and Support");
case OptionCategory::wipe: return L("Wipe Options");
case OptionCategory::milling: return L("Milling");
case OptionCategory::hollowing: return "Hollowing";
- case OptionCategory::milling_extruders: return "Milling tools";
+ case OptionCategory::milling_extruders: return L("Milling tools");
case OptionCategory::fuzzy_skin : return L("Fuzzy skin");
}
return "error";
@@ -114,7 +114,7 @@ std::string escape_strings_cstyle(const std::vector &strs)
bool should_quote = strs.size() == 1 && str.empty();
for (size_t i = 0; i < str.size(); ++ i) {
char c = str[i];
- if (c == ' ' || c == ';' || c == '\t' || c == '\\' || c == '"' || c == '\r' || c == '\n') {
+ if (c == ' ' || c == ';' || c == ',' || c == '\t' || c == '\\' || c == '"' || c == '\r' || c == '\n') {
should_quote = true;
break;
}
@@ -212,7 +212,7 @@ bool unescape_strings_cstyle(const std::string &str, std::vector &o
} else {
for (; i < str.size(); ++ i) {
c = str[i];
- if (c == ';')
+ if (c == ';' || c == ',')
break;
buf.push_back(c);
}
@@ -229,7 +229,7 @@ bool unescape_strings_cstyle(const std::string &str, std::vector &o
return true;
c = str[i];
}
- if (c != ';')
+ if (c != ';' && c != ',')
return false;
if (++ i == str.size()) {
// Emit one additional empty string.
@@ -565,12 +565,17 @@ bool ConfigBase::set_deserialize_nothrow(const t_config_option_key &opt_key_src,
{
t_config_option_key opt_key = opt_key_src;
std::string value = value_src;
+ //note: should be done BEFORE calling set_deserialize
// Both opt_key and value may be modified by handle_legacy().
// If the opt_key is no more valid in this version of Slic3r, opt_key is cleared by handle_legacy().
this->handle_legacy(opt_key, value);
- if (opt_key.empty())
+ if (opt_key.empty()) {
+ assert(false);
// Ignore the option.
return true;
+ }
+ assert(opt_key == opt_key_src);
+ assert(value == value_src);
return this->set_deserialize_raw(opt_key, value, substitutions_ctxt, append);
}
@@ -601,7 +606,7 @@ void ConfigBase::set_deserialize(const t_config_option_key &opt_key_src, const s
if (optdef == nullptr)
throw UnknownOptionException(opt_key_src);
}
- substitutions_ctxt.substitutions.push_back(ConfigSubstitution{ optdef, value_src, ConfigOptionUniquePtr(optdef->default_value->clone()) });
+ substitutions_ctxt.add(ConfigSubstitution{ optdef, value_src, ConfigOptionUniquePtr(optdef->default_value->clone()) });
}
}
}
@@ -694,12 +699,7 @@ bool ConfigBase::set_deserialize_raw(const t_config_option_key &opt_key_src, con
if (substituted && (substitutions_ctxt.rule == ForwardCompatibilitySubstitutionRule::Enable ||
substitutions_ctxt.rule == ForwardCompatibilitySubstitutionRule::EnableSystemSilent)) {
- // Log the substitution.
- ConfigSubstitution config_substitution;
- config_substitution.opt_def = optdef;
- config_substitution.old_value = value;
- config_substitution.new_value = ConfigOptionUniquePtr(opt->clone());
- substitutions_ctxt.substitutions.emplace_back(std::move(config_substitution));
+ substitutions_ctxt.emplace(optdef, std::string(value), ConfigOptionUniquePtr(opt->clone()));
}
}
//set phony status
@@ -937,9 +937,20 @@ ConfigSubstitutions ConfigBase::load(const boost::property_tree::ptree &tree, Fo
for (const boost::property_tree::ptree::value_type &v : tree) {
t_config_option_key opt_key = v.first;
try {
- this->set_deserialize(opt_key, v.second.get_value(), substitutions_ctxt);
+ std::string value = v.second.get_value();
+ PrintConfigDef::handle_legacy(opt_key, value, false);
+ if (!opt_key.empty()) {
+ if (!PrintConfigDef::is_defined(opt_key)) {
+ if (substitutions_ctxt.rule != ForwardCompatibilitySubstitutionRule::Disable) {
+ substitutions_ctxt.add(ConfigSubstitution(v.first, value));
+ }
+ } else {
+ this->set_deserialize(opt_key, value, substitutions_ctxt);
+ }
+ }
} catch (UnknownOptionException & /* e */) {
// ignore
+ assert(false);
} catch (BadOptionValueException & e) {
if (compatibility_rule == ForwardCompatibilitySubstitutionRule::Disable)
throw e;
@@ -947,41 +958,44 @@ ConfigSubstitutions ConfigBase::load(const boost::property_tree::ptree &tree, Fo
const ConfigDef* def = this->def();
if (def == nullptr) throw e;
const ConfigOptionDef* optdef = def->get(opt_key);
- substitutions_ctxt.substitutions.emplace_back(optdef, v.second.get_value(), ConfigOptionUniquePtr(optdef->default_value->clone()));
+ substitutions_ctxt.emplace(optdef, v.second.get_value(), ConfigOptionUniquePtr(optdef->default_value->clone()));
}
}
- return std::move(substitutions_ctxt.substitutions);
+ return std::move(substitutions_ctxt).data();
}
// Load the config keys from the given string.
-size_t ConfigBase::load_from_gcode_string_legacy(ConfigBase& config, const char* str, ConfigSubstitutionContext& substitutions)
+std::map ConfigBase::load_gcode_string_legacy(const char* str)
{
+ std::map opt_key_values;
if (str == nullptr)
- return 0;
+ return opt_key_values;
// Walk line by line in reverse until a non-configuration key appears.
const char *data_start = str;
// boost::nowide::ifstream seems to cook the text data somehow, so less then the 64k of characters may be retrieved.
- const char *end = data_start + strlen(str);
- size_t num_key_value_pairs = 0;
+ const char *end = data_start + strlen(str);
for (;;) {
// Extract next line.
- for (--end; end > data_start && (*end == '\r' || *end == '\n'); --end);
+ for (--end; end > data_start && (*end == '\r' || *end == '\n'); --end)
+ ;
if (end == data_start)
break;
- const char *start = end ++;
- for (; start > data_start && *start != '\r' && *start != '\n'; --start);
+ const char *start = end++;
+ for (; start > data_start && *start != '\r' && *start != '\n'; --start)
+ ;
if (start == data_start)
break;
// Extracted a line from start to end. Extract the key = value pair.
- if (end - (++ start) < 10 || start[0] != ';' || start[1] != ' ')
+ if (end - (++start) < 10 || start[0] != ';' || start[1] != ' ')
break;
const char *key = start + 2;
if (!((*key >= 'a' && *key <= 'z') || (*key >= 'A' && *key <= 'Z')))
// A key must start with a letter.
break;
const char *sep = key;
- for (; sep != end && *sep != '='; ++ sep) ;
+ for (; sep != end && *sep != '='; ++sep)
+ ;
if (sep == end || sep[-1] != ' ' || sep[1] != ' ')
break;
const char *value = sep + 2;
@@ -991,29 +1005,58 @@ size_t ConfigBase::load_from_gcode_string_legacy(ConfigBase& config, const char*
if (key_end - key < 3)
break;
// The key may contain letters, digits and underscores.
- for (const char *c = key; c != key_end; ++ c)
+ for (const char *c = key; c != key_end; ++c)
if (!((*c >= 'a' && *c <= 'z') || (*c >= 'A' && *c <= 'Z') || (*c >= '0' && *c <= '9') || *c == '_')) {
key = nullptr;
break;
}
if (key == nullptr)
break;
+ opt_key_values.emplace(std::string(key, key_end), std::string(value, end));
+ end = start;
+ }
+ return opt_key_values;
+}
+
+
+size_t ConfigBase::load_from_gcode_string_legacy(ConfigBase& config, const char* str, ConfigSubstitutionContext& substitutions)
+{
+ if (str == nullptr)
+ return 0;
+
+ // Walk line by line in reverse until a non-configuration key appears.
+ const char *data_start = str;
+ // boost::nowide::ifstream seems to cook the text data somehow, so less then the 64k of characters may be retrieved.
+ const char *end = data_start + strlen(str);
+ size_t num_key_value_pairs = 0;
+ for (auto [key, value] : load_gcode_string_legacy(str)) {
try {
- config.set_deserialize(std::string(key, key_end), std::string(value, end), substitutions);
- ++num_key_value_pairs;
+ std::string opt_key = key;
+ PrintConfigDef::handle_legacy(opt_key, value, false);
+ if (!opt_key.empty()) {
+ if (!PrintConfigDef::is_defined(opt_key)) {
+ if (substitutions.rule != ForwardCompatibilitySubstitutionRule::Disable) {
+ substitutions.add(ConfigSubstitution(key, value));
+ }
+ } else {
+ config.set_deserialize(opt_key, value, substitutions);
+ ++num_key_value_pairs;
+ }
+ }
}
catch (UnknownOptionException & /* e */) {
- // ignore
+ // log & ignore
+ if (substitutions.rule != ForwardCompatibilitySubstitutionRule::Disable)
+ substitutions.add(ConfigSubstitution(key, value));
} catch (BadOptionValueException & e) {
if (substitutions.rule == ForwardCompatibilitySubstitutionRule::Disable)
throw e;
// log the error
const ConfigDef* def = config.def();
if (def == nullptr) throw e;
- const ConfigOptionDef* optdef = def->get(std::string(key, key_end));
- substitutions.substitutions.emplace_back(optdef, std::string(value, end), ConfigOptionUniquePtr(optdef->default_value->clone()));
+ const ConfigOptionDef* optdef = def->get(key);
+ substitutions.emplace(optdef, std::move(value), ConfigOptionUniquePtr(optdef->default_value->clone()));
}
- end = start;
}
return num_key_value_pairs;
@@ -1166,10 +1209,21 @@ ConfigSubstitutions ConfigBase::load_from_gcode_file(const std::string &file, Fo
boost::trim(key);
boost::trim(value);
try {
- this->set_deserialize(key, value, substitutions_ctxt);
- ++ key_value_pairs;
+ std::string opt_key = key;
+ PrintConfigDef::handle_legacy(opt_key, value, false);
+ if (!opt_key.empty()) {
+ if (!PrintConfigDef::is_defined(opt_key)) {
+ if (substitutions_ctxt.rule != ForwardCompatibilitySubstitutionRule::Disable) {
+ substitutions_ctxt.add(ConfigSubstitution(key, value));
+ }
+ } else {
+ this->set_deserialize(opt_key, value, substitutions_ctxt);
+ ++key_value_pairs;
+ }
+ }
} catch (UnknownOptionException & /* e */) {
// ignore
+ assert(false);
}
}
}
@@ -1192,7 +1246,7 @@ ConfigSubstitutions ConfigBase::load_from_gcode_file(const std::string &file, Fo
if (key_value_pairs < 80)
throw Slic3r::RuntimeError(format("Suspiciously low number of configuration values extracted from %1%: %2%", file, key_value_pairs));
- return std::move(substitutions_ctxt.substitutions);
+ return std::move(substitutions_ctxt).data();
}
void ConfigBase::save(const std::string &file, bool to_prusa) const
@@ -1404,10 +1458,11 @@ bool DynamicConfig::read_cli(int argc, const char* const argv[], t_config_option
// Just bail out if the configuration value is not understood.
ConfigSubstitutionContext context(ForwardCompatibilitySubstitutionRule::Disable);
// Any scalar value of a type different from Bool and String.
- if (! this->set_deserialize_nothrow(opt_key, value, context, false)) {
- boost::nowide::cerr << "Invalid value supplied for --" << token.c_str() << std::endl;
- return false;
- }
+ // here goes int options, like loglevel.
+ if (!this->set_deserialize_nothrow(opt_key, value, context, false)) {
+ boost::nowide::cerr << "Invalid value supplied for --" << token.c_str() << std::endl;
+ return false;
+ }
}
}
return true;
diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp
index c9e4e7536d6..37012226541 100644
--- a/src/libslic3r/Config.hpp
+++ b/src/libslic3r/Config.hpp
@@ -354,10 +354,12 @@ using ConfigOptionUniquePtr = std::unique_ptr;
@@ -367,10 +369,20 @@ using ConfigSubstitutions = std::vector;
struct ConfigSubstitutionContext
{
ConfigSubstitutionContext(ForwardCompatibilitySubstitutionRule rl) : rule(rl) {}
- bool empty() const throw() { return substitutions.empty(); }
ForwardCompatibilitySubstitutionRule rule;
- ConfigSubstitutions substitutions;
+
+ bool empty() const throw() { return m_substitutions.empty(); }
+ const ConfigSubstitutions &get() const { return m_substitutions; }
+ ConfigSubstitutions data() && { return std::move(m_substitutions); }
+ void add(ConfigSubstitution&& substitution) { m_substitutions.push_back(std::move(substitution)); }
+ void emplace(std::string &&key, std::string &&value) { m_substitutions.emplace_back(std::move(key), std::move(value)); }
+ void emplace(const ConfigOptionDef* def, std::string &&old_value, ConfigOptionUniquePtr&& new_v) { m_substitutions.emplace_back(def, std::move(old_value), std::move(new_v)); }
+ void clear() { m_substitutions.clear(); }
+ void sort_and_remove_duplicates() { sort_remove_duplicates(m_substitutions); }
+
+private:
+ ConfigSubstitutions m_substitutions;
};
// A generic value of a configuration option.
@@ -2364,6 +2376,7 @@ class ConfigBase : public ConfigOptionResolver
// Set all the nullable values to nils.
void null_nullables();
+ static std::map load_gcode_string_legacy(const char* str);
static size_t load_from_gcode_string_legacy(ConfigBase& config, const char* str, ConfigSubstitutionContext& substitutions);
private:
diff --git a/src/libslic3r/ExPolygon.hpp b/src/libslic3r/ExPolygon.hpp
index f1396fcbdcd..c3adb94d1a5 100644
--- a/src/libslic3r/ExPolygon.hpp
+++ b/src/libslic3r/ExPolygon.hpp
@@ -221,6 +221,8 @@ inline Polylines to_polylines(ExPolygons &&src)
inline Polygons to_polygons(const ExPolygon &src)
{
+ assert(src.contour.is_counter_clockwise());
+ assert(src.holes.empty() || src.holes.front().is_clockwise());
Polygons polygons;
polygons.reserve(src.holes.size() + 1);
polygons.push_back(src.contour);
@@ -233,6 +235,8 @@ inline Polygons to_polygons(const ExPolygons &src)
Polygons polygons;
polygons.reserve(number_polygons(src));
for (const ExPolygon& ex_poly : src) {
+ assert(ex_poly.contour.is_counter_clockwise());
+ assert(ex_poly.holes.empty() || ex_poly.holes.front().is_clockwise());
polygons.push_back(ex_poly.contour);
polygons.insert(polygons.end(), ex_poly.holes.begin(), ex_poly.holes.end());
}
@@ -241,6 +245,8 @@ inline Polygons to_polygons(const ExPolygons &src)
inline ConstPolygonPtrs to_polygon_ptrs(const ExPolygon &src)
{
+ assert(src.contour.is_counter_clockwise());
+ assert(src.holes.empty() || src.holes.front().is_clockwise());
ConstPolygonPtrs polygons;
polygons.reserve(src.holes.size() + 1);
polygons.emplace_back(&src.contour);
@@ -254,6 +260,8 @@ inline ConstPolygonPtrs to_polygon_ptrs(const ExPolygons &src)
ConstPolygonPtrs polygons;
polygons.reserve(number_polygons(src));
for (const ExPolygon &expoly : src) {
+ assert(expoly.contour.is_counter_clockwise());
+ assert(expoly.holes.empty() || expoly.holes.front().is_clockwise());
polygons.emplace_back(&expoly.contour);
for (const Polygon &hole : expoly.holes)
polygons.emplace_back(&hole);
@@ -276,6 +284,8 @@ inline Polygons to_polygons(ExPolygons &&src)
Polygons polygons;
polygons.reserve(number_polygons(src));
for (ExPolygons::iterator it = src.begin(); it != src.end(); ++it) {
+ assert(it->contour.is_counter_clockwise());
+ assert(it->holes.empty() || it->holes.front().is_clockwise());
polygons.push_back(std::move(it->contour));
std::move(std::begin(it->holes), std::end(it->holes), std::back_inserter(polygons));
it->holes.clear();
@@ -287,8 +297,10 @@ inline ExPolygons to_expolygons(const Polygons &polys)
{
ExPolygons ex_polys;
ex_polys.assign(polys.size(), ExPolygon());
- for (size_t idx = 0; idx < polys.size(); ++idx)
+ for (size_t idx = 0; idx < polys.size(); ++idx) {
+ assert(polys[idx].is_counter_clockwise());
ex_polys[idx].contour = polys[idx];
+ }
return ex_polys;
}
@@ -296,13 +308,17 @@ inline ExPolygons to_expolygons(Polygons &&polys)
{
ExPolygons ex_polys;
ex_polys.assign(polys.size(), ExPolygon());
- for (size_t idx = 0; idx < polys.size(); ++idx)
+ for (size_t idx = 0; idx < polys.size(); ++idx) {
+ assert(polys[idx].is_counter_clockwise());
ex_polys[idx].contour = std::move(polys[idx]);
+ }
return ex_polys;
}
inline void polygons_append(Polygons &dst, const ExPolygon &src)
{
+ assert(src.contour.is_counter_clockwise());
+ assert(src.holes.empty() || src.holes.front().is_clockwise());
dst.reserve(dst.size() + src.holes.size() + 1);
dst.push_back(src.contour);
dst.insert(dst.end(), src.holes.begin(), src.holes.end());
@@ -312,6 +328,8 @@ inline void polygons_append(Polygons &dst, const ExPolygons &src)
{
dst.reserve(dst.size() + number_polygons(src));
for (ExPolygons::const_iterator it = src.begin(); it != src.end(); ++ it) {
+ assert(it->contour.is_counter_clockwise());
+ assert(it->holes.empty() || it->holes.front().is_clockwise());
dst.push_back(it->contour);
dst.insert(dst.end(), it->holes.begin(), it->holes.end());
}
@@ -319,6 +337,8 @@ inline void polygons_append(Polygons &dst, const ExPolygons &src)
inline void polygons_append(Polygons &dst, ExPolygon &&src)
{
+ assert(src.contour.is_counter_clockwise());
+ assert(src.holes.empty() || src.holes.front().is_clockwise());
dst.reserve(dst.size() + src.holes.size() + 1);
dst.push_back(std::move(src.contour));
std::move(std::begin(src.holes), std::end(src.holes), std::back_inserter(dst));
@@ -329,6 +349,8 @@ inline void polygons_append(Polygons &dst, ExPolygons &&src)
{
dst.reserve(dst.size() + number_polygons(src));
for (ExPolygons::iterator it = src.begin(); it != src.end(); ++ it) {
+ assert(it->contour.is_counter_clockwise());
+ assert(it->holes.empty() || it->holes.front().is_clockwise());
dst.push_back(std::move(it->contour));
std::move(std::begin(it->holes), std::end(it->holes), std::back_inserter(dst));
it->holes.clear();
diff --git a/src/libslic3r/Extruder.cpp b/src/libslic3r/Extruder.cpp
index ca156d5b8f5..e12a5cd0b36 100644
--- a/src/libslic3r/Extruder.cpp
+++ b/src/libslic3r/Extruder.cpp
@@ -53,7 +53,7 @@ double Tool::extrude(double dE)
double Tool::retract(double length, std::optional restart_extra, std::optional restart_extra_toolchange)
{
assert(length < std::numeric_limits::max());
- assert(length > 0);
+ //assert(length > 0); // it's possible, as you may want to "reset the extruder but do not use restart_extra yet.
assert(!restart_extra || *restart_extra < std::numeric_limits::max());
assert(!restart_extra || *restart_extra > -std::numeric_limits::max());
assert(!restart_extra_toolchange || *restart_extra_toolchange < std::numeric_limits::max());
diff --git a/src/libslic3r/ExtrusionEntityCollection.hpp b/src/libslic3r/ExtrusionEntityCollection.hpp
index 247c702b182..9f7c8226499 100644
--- a/src/libslic3r/ExtrusionEntityCollection.hpp
+++ b/src/libslic3r/ExtrusionEntityCollection.hpp
@@ -152,8 +152,8 @@ class ExtrusionEntityCollection : public ExtrusionEntity
throw Slic3r::RuntimeError("Calling length() on a ExtrusionEntityCollection");
return 0.;
}
- virtual void visit(ExtrusionVisitor &visitor) { visitor.use(*this); };
- virtual void visit(ExtrusionVisitorConst &visitor) const { visitor.use(*this); };
+ virtual void visit(ExtrusionVisitor &visitor) override { visitor.use(*this); };
+ virtual void visit(ExtrusionVisitorConst &visitor) const override{ visitor.use(*this); };
};
//// visitors /////
diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp
index 7347aff31ca..a65eca98d3e 100644
--- a/src/libslic3r/Fill/Fill.cpp
+++ b/src/libslic3r/Fill/Fill.cpp
@@ -692,13 +692,16 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive:
fills_by_priority[(size_t)surface_fill.params.priority]->entities()[idx]->visit(compute_volume);
fills_by_priority[(size_t)surface_fill.params.priority]->entities()[idx]->visit(compute_volume_no_gap_fill);
}
- ExPolygons temp = intersection_ex(ExPolygons{surface_fill.surface.expolygon}, f->no_overlap_expolygons);
+ ExPolygons temp = f->no_overlap_expolygons.empty() ?
+ ExPolygons{surface_fill.surface.expolygon} :
+ intersection_ex(ExPolygons{surface_fill.surface.expolygon}, f->no_overlap_expolygons);
double real_surface = 0;
for(auto &t : temp) real_surface += t.area();
assert(compute_volume.volume < unscaled(unscaled(surface_fill.surface.area())) * surface_fill.params.layer_height + EPSILON);
double area = unscaled(unscaled(real_surface));
- assert(compute_volume.volume < area * surface_fill.params.layer_height * 1.001);
- assert(compute_volume.volume > area * surface_fill.params.layer_height * 0.999 || area < std::max(1.,surface_fill.params.config->solid_infill_below_area.value));
+ assert(compute_volume.volume <= area * surface_fill.params.layer_height * 1.001 || f->debug_verify_flow_mult <= 0.8);
+ if(compute_volume.volume > 0) //can fail for thin regions
+ assert(compute_volume.volume >= area * surface_fill.params.layer_height * 0.999 || f->debug_verify_flow_mult >= 1.3 || area < std::max(1.,surface_fill.params.config->solid_infill_below_area.value));
}
#endif
}
diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp
index 3538e777f23..1ef1482db3a 100644
--- a/src/libslic3r/Fill/FillBase.cpp
+++ b/src/libslic3r/Fill/FillBase.cpp
@@ -215,8 +215,8 @@ void Fill::fill_surface_extrusion(const Surface *surface, const FillParams ¶
// ensure it doesn't over or under-extrude
- double mult_flow = 1;
if (!params.dont_adjust && params.full_infill() && !params.flow.bridge() && params.fill_exactly) {
+ double mult_flow = 1;
// compute real volume
double polyline_volume = compute_unscaled_volume_to_fill(surface, params);
if (extruded_volume != 0 && polyline_volume != 0) mult_flow *= polyline_volume / extruded_volume;
@@ -282,6 +282,9 @@ void Fill::fill_surface_extrusion(const Surface *surface, const FillParams ¶
if (mult_flow < 0.8) mult_flow = 0.8;
BOOST_LOG_TRIVIAL(info) << "Layer " << layer_id << ": Fill process extrude " << extruded_volume << " mm3 for a volume of " << polyline_volume << " mm3 : we mult the flow by " << mult_flow;
}
+#if _DEBUG
+ this->debug_verify_flow_mult = mult_flow;
+#endif
// Save into layer.
auto* eec = new ExtrusionEntityCollection();
diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp
index 83dc11161bf..e7aa5dd4c77 100644
--- a/src/libslic3r/Fill/FillBase.hpp
+++ b/src/libslic3r/Fill/FillBase.hpp
@@ -124,6 +124,9 @@ class Fill
// Octree builds on mesh for usage in the adaptive cubic infill
FillAdaptive::Octree* adapt_fill_octree = nullptr;
+#if _DEBUG
+ mutable double debug_verify_flow_mult = 0;
+#endif
protected:
// in unscaled coordinates, please use init (after settings all others settings) as some algos want to modify the value
coordf_t spacing_priv;
diff --git a/src/libslic3r/Fill/FillSmooth.cpp b/src/libslic3r/Fill/FillSmooth.cpp
index 7f9ec7e4ab6..e2577632813 100644
--- a/src/libslic3r/Fill/FillSmooth.cpp
+++ b/src/libslic3r/Fill/FillSmooth.cpp
@@ -114,6 +114,9 @@ namespace Slic3r {
BOOST_LOG_TRIVIAL(info) << "Layer " << layer_id << " Ironing process " << idx << " extrude " << extruded_volume << " mm3 for a volume of " << volume_to_occupy << " mm3 : we mult the flow by " << mult_flow;
}
+#if _DEBUG
+ this->debug_verify_flow_mult = mult_flow;
+#endif
extrusion_entities_append_paths(
eec, std::move(polylines_layer),
good_role,
diff --git a/src/libslic3r/Format/3mf.cpp b/src/libslic3r/Format/3mf.cpp
index d827cdab641..b85b9c818fd 100644
--- a/src/libslic3r/Format/3mf.cpp
+++ b/src/libslic3r/Format/3mf.cpp
@@ -9,11 +9,11 @@
#include "../PrintConfig.hpp"
#include "../Semver.hpp"
#include "../Time.hpp"
+#include "BBConfig.hpp"
#include "../I18N.hpp"
#include "3mf.hpp"
-
#include
#include
@@ -37,6 +37,8 @@ namespace pt = boost::property_tree;
#include
+#include "bbs_3mf.hpp"
+
// Slightly faster than sprintf("%.9g"), but there is an issue with the karma floating point formatter,
// https://github.com/boostorg/spirit/pull/586
// where the exported string is one digit shorter than it should be to guarantee lossless round trip.
@@ -53,6 +55,7 @@ const unsigned int VERSION_3MF = 1;
// Allow loading version 2 file as well.
const unsigned int VERSION_3MF_COMPATIBLE = 2;
const char* SLIC3RPE_3MF_VERSION = "slic3rpe:Version3mf"; // definition of the metadata name saved into .model file
+const char* BB_3MF_VERSION = "BambuStudio:3mfVersion"; // definition of the metadata name saved into .model file
// Painting gizmos data version numbers
// 0 : 3MF files saved by older PrusaSlicer or the painting gizmo wasn't used. No version definition in them.
@@ -71,16 +74,24 @@ const std::string MODEL_FILE = "3D/3dmodel.model"; // << this is the only format
const std::string CONTENT_TYPES_FILE = "[Content_Types].xml";
const std::string RELATIONSHIPS_FILE = "_rels/.rels";
const std::string THUMBNAIL_FILE = "Metadata/thumbnail.png";
-const std::string SLIC3R_PRINT_CONFIG_FILE = "Metadata/Slic3r.config";
-const std::string SLIC3R_MODEL_CONFIG_FILE = "Metadata/Slic3r_model.config";
-const std::string SLIC3R_LAYER_CONFIG_RANGES_FILE = "Metadata/Slic3r_layer_config_ranges.xml";
-const std::string SUPER_PRINT_CONFIG_FILE = "Metadata/SuperSlicer.config";
-const std::string SUPER_MODEL_CONFIG_FILE = "Metadata/SuperSlicer_model.config";
-const std::string SUPER_LAYER_CONFIG_RANGES_FILE = "Metadata/SuperSlicer_layer_config_ranges.xml";
-const std::string PRUSA_PRINT_CONFIG_FILE = "Metadata/Slic3r_PE.config";
-const std::string PRUSA_MODEL_CONFIG_FILE = "Metadata/Slic3r_PE_model.config";
-const std::string PRUSA_LAYER_CONFIG_RANGES_FILE = "Metadata/Prusa_Slicer_layer_config_ranges.xml";
+
+const std::string SLIC3R_PRINT_CONFIG_FILE = "Metadata/Slic3r.config"; // gcode-style
+const std::string SUPER_PRINT_CONFIG_FILE = "Metadata/SuperSlicer.config"; // gcode-style
+const std::string PRUSA_PRINT_CONFIG_FILE = "Metadata/Slic3r_PE.config"; // gcode-style
+const std::string BBS_PROJECT_CONFIG_FILE = "Metadata/project_settings.config"; // json
+
+const std::string SLIC3R_MODEL_CONFIG_FILE = "Metadata/Slic3r_model.config"; // xml
+const std::string SUPER_MODEL_CONFIG_FILE = "Metadata/SuperSlicer_model.config"; // xml
+const std::string PRUSA_MODEL_CONFIG_FILE = "Metadata/Slic3r_PE_model.config"; // xml
+const std::string BBS_MODEL_CONFIG_FILE = "Metadata/model_settings.config"; // xml
+
+const std::string SLIC3R_LAYER_CONFIG_RANGES_FILE = "Metadata/Slic3r_layer_config_ranges.xml"; // xml
+const std::string SUPER_LAYER_CONFIG_RANGES_FILE = "Metadata/SuperSlicer_layer_config_ranges.xml"; // xml
+const std::string PRUSA_LAYER_CONFIG_RANGES_FILE = "Metadata/Prusa_Slicer_layer_config_ranges.xml"; // xml
+const std::string BBS_LAYER_CONFIG_RANGES_FILE = "Metadata/layer_config_ranges.xml"; // xml
+
const std::string LAYER_HEIGHTS_PROFILE_FILE = "Metadata/Slic3r_PE_layer_heights_profile.txt";
+
const std::string SLA_SUPPORT_POINTS_FILE = "Metadata/Slic3r_PE_sla_support_points.txt";
const std::string SLA_DRAIN_HOLES_FILE = "Metadata/Slic3r_PE_sla_drain_holes.txt";
const std::string CUSTOM_GCODE_PER_PRINT_Z_FILE = "Metadata/Prusa_Slicer_custom_gcode_per_print_z.xml";
@@ -169,6 +180,12 @@ class version_error : public Slic3r::FileIOError
version_error(const char* what_arg) : Slic3r::FileIOError(what_arg) {}
};
+class bambu_version_error : public version_error
+{
+public:
+ bambu_version_error(const std::string& what_arg) : version_error(what_arg) {}
+ bambu_version_error(const char* what_arg) : version_error(what_arg) {}
+};
const char* get_attribute_value_charptr(const char** attributes, unsigned int attributes_size, const char* attribute_key)
{
if ((attributes == nullptr) || (attributes_size == 0) || (attributes_size % 2 != 0) || (attribute_key == nullptr))
@@ -426,6 +443,7 @@ namespace Slic3r {
// Version of the 3mf file
unsigned int m_version;
bool m_check_version;
+ bool m_trying_read_prusa = false;
// Semantic version of PrusaSlicer, that generated this 3MF.
boost::optional m_prusaslicer_generator_version;
@@ -487,7 +505,7 @@ namespace Slic3r {
void _extract_print_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, DynamicPrintConfig& config, ConfigSubstitutionContext& subs_context, const std::string& archive_filename);
bool _extract_model_config_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, Model& model);
-
+
// handlers to parse the .model file
void _handle_start_model_xml_element(const char* name, const char** attributes);
void _handle_end_model_xml_element(const char* name);
@@ -554,7 +572,7 @@ namespace Slic3r {
bool _handle_start_config_metadata(const char** attributes, unsigned int num_attributes);
bool _handle_end_config_metadata();
- bool _generate_volumes(ModelObject& object, const Geometry& geometry, const ObjectMetadata::VolumeMetadataList& volumes, ConfigSubstitutionContext& config_substitutions, DynamicPrintConfig& config_not_used_remove_plz);
+ bool _generate_volumes(ModelObject& object, const Geometry& geometry, const ObjectMetadata::VolumeMetadataList& volumes, ConfigSubstitutionContext& config_substitutions, DynamicPrintConfig& global_config);
// callbacks to parse the .model file
static void XMLCALL _handle_start_model_xml_element(void* userData, const char* name, const char** attributes);
@@ -583,6 +601,7 @@ namespace Slic3r {
_destroy_xml_parser();
}
+
bool _3MF_Importer::load_model_from_file(const std::string& filename, Model& model, DynamicPrintConfig& config, ConfigSubstitutionContext& config_substitutions, bool check_version)
{
m_version = 0;
@@ -659,6 +678,34 @@ namespace Slic3r {
add_error("Archive does not contain a valid model");
return false;
}
+ } catch (const bambu_version_error &e) {
+ // ensure the zip archive is closed and rethrow the exception
+ close_zip_reader(&archive);
+ // First, Try to parse it with bambu parser
+ PlateDataPtrs plates;
+ std::vector project_presets;
+ bool is_bbl_3mf = true;
+ Semver file_version;
+ std::function Import3mfProgressFn =
+ [](int import_stage, int current, int total, bool &cancel) {
+ BOOST_LOG_TRIVIAL(info) << "import BBS 3mf: stage " << import_stage
+ << ", current: " << current << " / " << total;
+ };
+ bool result = load_bbs_3mf(filename.c_str(),
+ &config,
+ &config_substitutions,
+ &model,
+ &plates,
+ &project_presets,
+ &is_bbl_3mf,
+ &file_version,
+ Import3mfProgressFn,
+ LoadStrategy::Default | LoadStrategy::LoadModel | LoadStrategy::LoadConfig,
+ /*BBLProject *project = nullptr,*/
+ 0);
+ if(!result)
+ throw Slic3r::FileIOError(e.what());
+ return true;
}
catch (const std::exception& e)
{
@@ -724,7 +771,9 @@ namespace Slic3r {
if (boost::algorithm::iequals(name, PRUSA_LAYER_CONFIG_RANGES_FILE)) {
// extract slic3r layer config ranges file from a bad named file
- _extract_layer_config_ranges_from_archive(archive, stat, config_substitutions);
+ m_trying_read_prusa = true;
+ _extract_layer_config_ranges_from_archive(archive, stat, config_substitutions);
+ m_trying_read_prusa = false;
break;
}
}
@@ -734,30 +783,24 @@ namespace Slic3r {
//parsed superslicer/prusa files if slic3r not found
//note that is we successfully read one of the config file, then the other ones should also have the same name
auto read_from_other_storage = [this, &print_config_parsed, num_entries, &archive, &stat, &config, &model, &filename, &config_substitutions]
- (const std::string &print_config_name, const std::string& model_config_name, const std::string& layer_config_name, bool from_prusa) -> bool {
- for (mz_uint i = 0; i < num_entries; ++i)
- {
- if (mz_zip_reader_file_stat(&archive, i, &stat))
- {
+ (const std::string &print_config_name, const std::string& model_config_name, const std::string& layer_config_name) -> bool {
+ for (mz_uint i = 0; i < num_entries; ++i) {
+ if (mz_zip_reader_file_stat(&archive, i, &stat)) {
std::string name(stat.m_filename);
std::replace(name.begin(), name.end(), '\\', '/');
- //TODO use special methods to convert them better?
+ // TODO use special methods to convert them better?
- if (boost::algorithm::iequals(name, layer_config_name))
- {
+ if (boost::algorithm::iequals(name, layer_config_name)) {
// extract slic3r layer config ranges file
_extract_layer_config_ranges_from_archive(archive, stat, config_substitutions);
- } else if (boost::algorithm::iequals(name, print_config_name))
- {
+ } else if (boost::algorithm::iequals(name, print_config_name)) {
// extract slic3r print config file
_extract_print_config_from_archive(archive, stat, config, config_substitutions, filename);
print_config_parsed = true;
- } else if (boost::algorithm::iequals(name, model_config_name))
- {
+ } else if (boost::algorithm::iequals(name, model_config_name)) {
// extract slic3r model config file
- if (!_extract_model_config_from_archive(archive, stat, model))
- {
+ if (!_extract_model_config_from_archive(archive, stat, model)) {
close_zip_reader(&archive);
add_error("Archive does not contain a valid model config");
return false;
@@ -769,16 +812,21 @@ namespace Slic3r {
return true;
};
bool use_prusa_config = false;
- if (!print_config_parsed)
- if (!read_from_other_storage(SUPER_PRINT_CONFIG_FILE, SUPER_MODEL_CONFIG_FILE, SUPER_LAYER_CONFIG_RANGES_FILE, false))
+ if (!print_config_parsed) {
+ if (!read_from_other_storage(SUPER_PRINT_CONFIG_FILE, SUPER_MODEL_CONFIG_FILE, SUPER_LAYER_CONFIG_RANGES_FILE))
return false;
- if (!print_config_parsed)
- if (!read_from_other_storage(PRUSA_PRINT_CONFIG_FILE, PRUSA_MODEL_CONFIG_FILE, PRUSA_LAYER_CONFIG_RANGES_FILE, true))
+ }
+ if (!print_config_parsed) {
+ m_trying_read_prusa = true;
+ if (!read_from_other_storage(PRUSA_PRINT_CONFIG_FILE, PRUSA_MODEL_CONFIG_FILE, PRUSA_LAYER_CONFIG_RANGES_FILE))
return false;
- else {
+ if (print_config_parsed) {
+ //succeed to read prusa
use_prusa_config = true;
- config.convert_from_prusa();
+ config.convert_from_prusa(true);
}
+ m_trying_read_prusa = false;
+ }
close_zip_reader(&archive);
@@ -853,7 +901,7 @@ namespace Slic3r {
IdToSlaSupportPointsMap::iterator obj_sla_support_points = m_sla_support_points.find(object.second + 1);
if (obj_sla_support_points != m_sla_support_points.end() && !obj_sla_support_points->second.empty()) {
model_object->sla_support_points = std::move(obj_sla_support_points->second);
- model_object->sla_points_status = sla::PointsStatus::UserModified;
+ model_object->sla_points_status = sla::PointsStatus::UserModified;
}
IdToSlaDrainHolesMap::iterator obj_drain_holes = m_sla_drain_holes.find(object.second + 1);
@@ -861,7 +909,7 @@ namespace Slic3r {
model_object->sla_drain_holes = std::move(obj_drain_holes->second);
}
- ObjectMetadata::VolumeMetadataList volumes;
+ ObjectMetadata::VolumeMetadataList volumes;
ObjectMetadata::VolumeMetadataList* volumes_ptr = nullptr;
IdToMetadataMap::iterator obj_metadata = m_objects_metadata.find(object.first);
@@ -869,12 +917,15 @@ namespace Slic3r {
// config data has been found, this model was saved using slic3r pe
// apply object's name and config data
- for (const Metadata& metadata : obj_metadata->second.metadata) {
- if (metadata.key == "name")
+ std::map opt_key_to_value;
+ for (const Metadata &metadata : obj_metadata->second.metadata) {
+ if (metadata.key == "name") {
model_object->name = metadata.value;
- else
- model_object->config.set_deserialize(metadata.key, metadata.value, config_substitutions);
+ } else {
+ opt_key_to_value.emplace(metadata.key, metadata.value);
+ }
}
+ deserialize_maybe_from_prusa(opt_key_to_value, model_object->config, config, config_substitutions, true, m_trying_read_prusa);
// select object's detected volumes
volumes_ptr = &obj_metadata->second.volumes;
@@ -893,11 +944,11 @@ namespace Slic3r {
return false;
if (use_prusa_config) {
- model_object->config.convert_from_prusa(config);
+ model_object->config.convert_from_prusa(config, false);
for (ModelVolume* volume : model_object->volumes)
- volume->config.convert_from_prusa(config);
+ volume->config.convert_from_prusa(config, false);
for (auto entry : model_object->layer_config_ranges)
- entry.second.convert_from_prusa(config);
+ entry.second.convert_from_prusa(config, false);
}
}
@@ -969,10 +1020,15 @@ namespace Slic3r {
return n;
}, &data, 0);
}
+ catch (const bambu_version_error& e)
+ {
+ // rethrow the exception
+ throw e;
+ }
catch (const version_error& e)
{
// rethrow the exception
- throw Slic3r::FileIOError(e.what());
+ throw e;
}
catch (std::exception& e)
{
@@ -1009,7 +1065,8 @@ namespace Slic3r {
// parsing 3MFs from before PrusaSlicer 2.0.0 (which can have duplicated entries in the INI.
// See https://github.com/prusa3d/PrusaSlicer/issues/7155. We'll revert it for now.
//config_substitutions.substitutions = config.load_from_ini_string_commented(std::move(buffer), config_substitutions.rule);
- ConfigBase::load_from_gcode_string_legacy(config, buffer.data(), config_substitutions);
+ //ConfigBase::load_from_gcode_string_legacy(config, buffer.data(), config_substitutions);
+ deserialize_maybe_from_prusa(ConfigBase::load_gcode_string_legacy(buffer.data()), config, config_substitutions, true, m_trying_read_prusa);
}
}
@@ -1114,7 +1171,7 @@ namespace Slic3r {
// get Z range information
DynamicPrintConfig config;
-
+ std::map opt_key_to_value;
for (const auto& option : range_tree) {
if (option.first != "option")
continue;
@@ -1122,14 +1179,16 @@ namespace Slic3r {
std::string value = option.second.data();
if (value.empty() && opt_key.find("pattern") != std::string::npos) {
add_error("Error while reading '"+ opt_key +"': no value. If you are the one who created this project file, please open an issue and put the ERROR_FILE_TO_SEND_TO_MERILL_PLZZZZ.txt file created next to the executable for debugging.");
- ConfigSubstitution config_substitution;
- config_substitution.opt_def = config.get_option_def(opt_key);
- config_substitution.old_value = "Error while reading '" + opt_key + "': no value. If you are the one who created this project file, please open an issue and put the ERROR_FILE_TO_SEND_TO_MERILL_PLZZZZ.txt file created next to the executable for debugging.";
- config_substitution.new_value = ConfigOptionUniquePtr(config_substitution.opt_def->default_value->clone());
- config_substitutions.substitutions.emplace_back(std::move(config_substitution));
- }else
- config.set_deserialize(opt_key, value, config_substitutions);
+ std::string old_value = "Error while reading '" + opt_key + "': no value. If you are the one who created this project file, please open an issue and put the ERROR_FILE_TO_SEND_TO_MERILL_PLZZZZ.txt file created next to the executable for debugging.";
+ const ConfigOptionDef *opt_def = config.get_option_def(opt_key);
+ config_substitutions.emplace(opt_def,
+ std::move(old_value),
+ ConfigOptionUniquePtr(opt_def->default_value->clone()));
+ } else {
+ opt_key_to_value.emplace(opt_key, value);
+ }
}
+ deserialize_maybe_from_prusa(opt_key_to_value, config, config_substitutions, true, m_trying_read_prusa);
config_ranges[{ min_z, max_z }].assign_config(std::move(config));
}
@@ -1830,6 +1889,8 @@ namespace Slic3r {
const std::string msg = (boost::format("The selected 3mf file has been saved with a newer version of %1% and is not compatible.") % std::string(SLIC3R_APP_NAME)).str();
throw version_error(msg);
}
+ } else if (m_curr_metadata_name == BB_3MF_VERSION) {
+ throw bambu_version_error("bambu 3mf");
} else if (m_curr_metadata_name == "Application") {
// Generator application of the 3MF.
// SLIC3R_APP_KEY - SLIC3R_VERSION
@@ -2029,7 +2090,7 @@ namespace Slic3r {
return true;
}
- bool _3MF_Importer::_generate_volumes(ModelObject& object, const Geometry& geometry, const ObjectMetadata::VolumeMetadataList& volumes, ConfigSubstitutionContext& config_substitutions, DynamicPrintConfig& config_not_used_remove_plz)
+ bool _3MF_Importer::_generate_volumes(ModelObject& object, const Geometry& geometry, const ObjectMetadata::VolumeMetadataList& volumes, ConfigSubstitutionContext& config_substitutions, DynamicPrintConfig& global_config)
{
if (!object.volumes.empty()) {
add_error("Found invalid volumes count");
@@ -2134,6 +2195,7 @@ namespace Slic3r {
volume->mmu_segmentation_facets.shrink_to_fit();
// apply the remaining volume's metadata
+ std::map opt_key_to_value;
for (const Metadata& metadata : volume_data.metadata) {
if (metadata.key == NAME_KEY)
volume->name = metadata.value;
@@ -2157,17 +2219,21 @@ namespace Slic3r {
volume->source.is_converted_from_inches = metadata.value == "1";
else if (metadata.key == SOURCE_IN_METERS)
volume->source.is_converted_from_meters = metadata.value == "1";
+ else if (metadata.key == MATRIX_KEY)
+ ;//already parsed
else
if (metadata.value.empty() && metadata.key.find("pattern") != std::string::npos) {
- add_error("Error while reading '" + metadata.key + "': no value. If you are the one who created this project file, please open an issue and put the ERROR_FILE_TO_SEND_TO_MERILL_PLZZZZ.txt file created next to the executable for debugging.");
- ConfigSubstitution config_substitution;
- config_substitution.opt_def = config_not_used_remove_plz.get_option_def(metadata.key);
- config_substitution.old_value = "Error while reading '" + metadata.key + "': no value. If you are the one who created this project file, please open an issue and put the ERROR_FILE_TO_SEND_TO_MERILL_PLZZZZ.txt file created next to the executable for debugging.";
- config_substitution.new_value = ConfigOptionUniquePtr(config_substitution.opt_def->default_value->clone());
- config_substitutions.substitutions.emplace_back(std::move(config_substitution));
- } else
- volume->config.set_deserialize(metadata.key, metadata.value, config_substitutions);
+ add_error("Error while reading '"+ metadata.key +"': no value. If you are the one who created this project file, please open an issue and put the ERROR_FILE_TO_SEND_TO_MERILL_PLZZZZ.txt file created next to the executable for debugging.");
+ std::string old_value = "Error while reading '" + metadata.key + "': no value. If you are the one who created this project file, please open an issue and put the ERROR_FILE_TO_SEND_TO_MERILL_PLZZZZ.txt file created next to the executable for debugging.";
+ const ConfigOptionDef *opt_def = global_config.get_option_def(metadata.key);
+ config_substitutions.emplace(opt_def,
+ std::move(old_value),
+ ConfigOptionUniquePtr(opt_def->default_value->clone()));
+ } else {
+ opt_key_to_value.emplace(metadata.key, metadata.value);
+ }
}
+ deserialize_maybe_from_prusa(opt_key_to_value, volume->config, global_config, config_substitutions, true, m_trying_read_prusa);
// this may happen for 3mf saved by 3rd part softwares
if (volume->name.empty()) {
diff --git a/src/libslic3r/Format/AMF.cpp b/src/libslic3r/Format/AMF.cpp
index 35d1ff478b9..910cba4bbe4 100644
--- a/src/libslic3r/Format/AMF.cpp
+++ b/src/libslic3r/Format/AMF.cpp
@@ -734,8 +734,8 @@ void AMFParserContext::endElement(const char * /* name */)
ConfigBase::load_from_gcode_string_legacy(*m_config, std::move(m_value[1].c_str()), *m_config_substitutions);
}
else if (strncmp(m_value[0].c_str(), "slic3r.", 7) == 0) {
- const char *opt_key = m_value[0].c_str() + 7;
- if (print_config_def.options.find(opt_key) != print_config_def.options.end()) {
+ const char *key = m_value[0].c_str() + 7;
+ if (print_config_def.options.find(key) != print_config_def.options.end()) {
ModelConfig *config = nullptr;
if (m_path.size() == 3) {
if (m_path[1] == NODE_TYPE_MATERIAL && m_material)
@@ -749,9 +749,19 @@ void AMFParserContext::endElement(const char * /* name */)
auto it = --m_object->layer_config_ranges.end();
config = &it->second;
}
- if (config)
- config->set_deserialize(opt_key, m_value[1], *m_config_substitutions);
- } else if (m_path.size() == 3 && m_path[1] == NODE_TYPE_OBJECT && m_object && strcmp(opt_key, "layer_height_profile") == 0) {
+ if (config) {
+ std::string opt_key = key;
+ std::string value = m_value[1];
+ PrintConfigDef::handle_legacy(opt_key, value, true);
+ if (opt_key.empty()) {
+ if (m_config_substitutions->rule != ForwardCompatibilitySubstitutionRule::Disable) {
+ m_config_substitutions->emplace(std::string(key), std::move(value));
+ }
+ } else {
+ config->set_deserialize(opt_key, value, *m_config_substitutions);
+ }
+ }
+ } else if (m_path.size() == 3 && m_path[1] == NODE_TYPE_OBJECT && m_object && strcmp(key, "layer_height_profile") == 0) {
// Parse object's layer height profile, a semicolon separated list of floats.
char *p = m_value[1].data();
std::vector data;
@@ -766,7 +776,7 @@ void AMFParserContext::endElement(const char * /* name */)
}
m_object->layer_height_profile.set(std::move(data));
}
- else if (m_path.size() == 3 && m_path[1] == NODE_TYPE_OBJECT && m_object && strcmp(opt_key, "sla_support_points") == 0) {
+ else if (m_path.size() == 3 && m_path[1] == NODE_TYPE_OBJECT && m_object && strcmp(key, "sla_support_points") == 0) {
// Parse object's layer height profile, a semicolon separated list of floats.
unsigned char coord_idx = 0;
Eigen::Matrix point(Eigen::Matrix::Zero());
@@ -788,7 +798,7 @@ void AMFParserContext::endElement(const char * /* name */)
m_object->sla_points_status = sla::PointsStatus::UserModified;
}
else if (m_path.size() == 5 && m_path[1] == NODE_TYPE_OBJECT && m_path[3] == NODE_TYPE_RANGE &&
- m_object && strcmp(opt_key, "layer_height_range") == 0) {
+ m_object && strcmp(key, "layer_height_range") == 0) {
// Parse object's layer_height_range, a semicolon separated doubles.
char* p = m_value[1].data();
char* end = strchr(p, ';');
@@ -798,38 +808,38 @@ void AMFParserContext::endElement(const char * /* name */)
m_object->layer_config_ranges[range];
}
else if (m_path.size() == 5 && m_path[3] == NODE_TYPE_VOLUME && m_volume) {
- if (strcmp(opt_key, "modifier") == 0) {
+ if (strcmp(key, "modifier") == 0) {
// Is this volume a modifier volume?
// "modifier" flag comes first in the XML file, so it may be later overwritten by the "type" flag.
m_volume->set_type((atoi(m_value[1].c_str()) == 1) ? ModelVolumeType::PARAMETER_MODIFIER : ModelVolumeType::MODEL_PART);
- } else if (strcmp(opt_key, "volume_type") == 0) {
+ } else if (strcmp(key, "volume_type") == 0) {
m_volume->set_type(ModelVolume::type_from_string(m_value[1]));
}
- else if (strcmp(opt_key, "matrix") == 0) {
+ else if (strcmp(key, "matrix") == 0) {
m_volume_transform = Slic3r::Geometry::transform3d_from_string(m_value[1]);
}
- else if (strcmp(opt_key, "source_file") == 0) {
+ else if (strcmp(key, "source_file") == 0) {
m_volume->source.input_file = m_value[1];
}
- else if (strcmp(opt_key, "source_object_id") == 0) {
+ else if (strcmp(key, "source_object_id") == 0) {
m_volume->source.object_idx = ::atoi(m_value[1].c_str());
}
- else if (strcmp(opt_key, "source_volume_id") == 0) {
+ else if (strcmp(key, "source_volume_id") == 0) {
m_volume->source.volume_idx = ::atoi(m_value[1].c_str());
}
- else if (strcmp(opt_key, "source_offset_x") == 0) {
+ else if (strcmp(key, "source_offset_x") == 0) {
m_volume->source.mesh_offset(0) = ::atof(m_value[1].c_str());
}
- else if (strcmp(opt_key, "source_offset_y") == 0) {
+ else if (strcmp(key, "source_offset_y") == 0) {
m_volume->source.mesh_offset(1) = ::atof(m_value[1].c_str());
}
- else if (strcmp(opt_key, "source_offset_z") == 0) {
+ else if (strcmp(key, "source_offset_z") == 0) {
m_volume->source.mesh_offset(2) = ::atof(m_value[1].c_str());
}
- else if (strcmp(opt_key, "source_in_inches") == 0) {
+ else if (strcmp(key, "source_in_inches") == 0) {
m_volume->source.is_converted_from_inches = m_value[1] == "1";
}
- else if (strcmp(opt_key, "source_in_meters") == 0) {
+ else if (strcmp(key, "source_in_meters") == 0) {
m_volume->source.is_converted_from_meters = m_value[1] == "1";
}
}
diff --git a/src/libslic3r/Format/BBConfig.cpp b/src/libslic3r/Format/BBConfig.cpp
new file mode 100644
index 00000000000..f635ee6c0ff
--- /dev/null
+++ b/src/libslic3r/Format/BBConfig.cpp
@@ -0,0 +1,936 @@
+#include "BBConfig.hpp"
+
+#include "../Model.hpp"
+#include "../PrintConfig.hpp"
+#include "../Config.hpp"
+
+#include "../../nlohmann/json.hpp"
+
+#include