Skip to content

FrankSAURET/OptimLaser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ OptimLaser ⚡

Version Inkscape License Python

🔥 Extension Inkscape pour l'optimisation de découpe laser
🔥 Inkscape extension for laser cutting optimization

FR EN


🇫🇷 Français

📋 Présentation

OptimLaser est une extension Inkscape qui optimise un dessin vectoriel pour la découpe laser.

✨ Fonctionnalités principales :

  • ✂️ Supprime les tracés en double (lignes superposées), sauf les courbes de Bézier ;
  • 🎨 Supprime les chemins dont la couleur n'est pas gérée par la découpeuse ;
  • 🚀 Optimise l'ordre de découpe pour réduire les déplacements à vide ;
  • 💾 Sauvegarde le fichier optimisé sous un nouveau nom (suffixe « - découpe ») ;
  • 🖥️ Interface graphique dynamique avec mémorisation des derniers réglages.
  • 🩶 Les éléments gris sont préservés pour la gravure.

📦 Installation

Copiez le dossier optimlaser dans le répertoire d'extensions d'Inkscape :

🖥️ Système 📂 Emplacement
🪟 Windows %appdata%\inkscape\extensions</b>
🐧 Linux ~/.config/inkscape/extensions/
🍎 macOS ~/Library/Application Support/org.inkscape.Inkscape/config/inkscape/extensions/
💡 Vous pouvez vérifier le chemin exact dans Inkscape : Édition > Préférences > Système (ligne « Extensions de l'utilisateur »).

🔁 Redémarrez Inkscape après la copie.

💡Elle peut être installée et mise à jour avec l'extension Màj : extensions > Mise à jour des extensions de Frank SAURET....

Màj est téléchargeable ici : https://github.com/FrankSAURET/Maj

🚀 Lancement

Dans Inkscape, allez dans :

📌 Extensions > Découpe Laser > Optimisation pour découpe laser…

La fenêtre de paramétrage s'ouvre automatiquement.


⚙️ Paramètres

🔧 Onglet « Paramètres »

⚙️ Paramètre 📝 Description
📏 Tolérance de détection (mm) Distance en dessous de laquelle deux tracés sont considérés comme superposés (défaut : 0,15 mm).
🔀 Chevauchement partiel Active la détection des segments partiellement superposés.
🌐 Optimisation globale Active la réorganisation de l'ordre des chemins pour minimiser les trajets à vide.
🧠 Stratégie d'optimisation Choix entre : Plus proche voisin (rapide), Optimisation locale (2-opt amélioré), Zonage (découpage géographique en colonnes ou lignes).
🔢 Itérations max Nombre maximal d'itérations pour la stratégie d'optimisation locale.
📐 Direction / Taille du zonage Pour la stratégie Zonage : direction (colonnes ou lignes) et taille des zones en mm.

🔩 Onglet « Paramètres avancés »

⚙️ Paramètre 📝 Description
🎨 Supprimer les couleurs non gérées Supprime tous les éléments dont la couleur de trait n'est pas dans la liste des couleurs gérées.
💾 Sauvegarder sous Découpe Enregistre le fichier optimisé avec le suffixe « - découpe ».
⏱️ Vitesses (mm/s) Préréglages de vitesses de découpe par matériau (ex. : Contreplaqué, Acrylique, Carton…). Vitesse de découpe et vitesse à vide configurables. Les préréglages sont éditables et personnalisables.
🌈 Ordre des couleurs Définit l'ordre de priorité des couleurs pour la découpe. Les couleurs peuvent être réordonnées, ajoutées ou supprimées.

📄 Configuration (OptimLaser.json)

Le fichier OptimLaser.json dans le dossier de l'extension contient :

  • 🎨 colors : liste ordonnée des couleurs gérées par la découpeuse ;
  • ⏱️ speeds : préréglages de vitesses par matériau ;
  • 💾 last_used : derniers paramètres utilisés (sauvegardés automatiquement).

🌍 Traduction

L'interface d'OptimLaser est traduisible grâce au système gettext.

Un fichier modèle de traduction vierge (.pot) se trouve dans :

📂 optimlaser/locale/none/LC_MESSAGES/OptimLaser.pot

Pour créer une traduction :

1️⃣ Copiez le fichier OptimLaser.pot et renommez-le en OptimLaser.po ;

2️⃣ Traduisez les chaînes msgstr "" dans le fichier .po avec un éditeur de texte ou un outil comme Poedit ;

3️⃣ Compilez le fichier .po en .mo avec la commande :

msgfmt OptimLaser.po -o OptimLaser.mo

4️⃣ Placez les fichiers .po et .mo dans le dossier :

📂 optimlaser/locale/<code_langue>/LC_MESSAGES/

(par exemple optimlaser/locale/de/LC_MESSAGES/ pour l'allemand)

🤝 Contribuer avec une traduction : si vous réalisez une traduction, envoyez-moi le fichier .po ou faites une pull request sur le dépôt GitHub — je l'intégrerai avec plaisir !


📜 Licence

Tout le code est proposé sous licence GPLv2. ✍️ Auteur : Frank SAURET



🇬🇧 English

📋 Overview

OptimLaser is an Inkscape extension that optimizes vector drawings for laser cutting.

✨ Key features:

  • ✂️ Removes duplicate paths (overlapping lines), except Bézier curves;
  • 🎨 Removes paths whose color is not managed by the laser cutter;
  • 🚀 Optimizes cutting order to reduce idle travel distance;
  • 💾 Saves the optimized file with a new name (suffix " - découpe");
  • 🖥️ Dynamic GUI with automatic memorization of last-used settings.

📦 Installation

Copy the optimlaser folder into Inkscape's extensions directory:

🖥️ System 📂 Location
🪟 Windows %appdata%\inkscape\extensions\
🐧 Linux ~/.config/inkscape/extensions/
🍎 macOS ~/Library/Application Support/org.inkscape.Inkscape/config/inkscape/extensions/
💡 You can check the exact path in Inkscape: Edit > Preferences > System ("User extensions" line).

🔁 Restart Inkscape after copying.


🚀 Launch

In Inkscape, go to:

📌 Extensions > Découpe Laser > Optimisation pour découpe laser…

The settings window opens automatically.


⚙️ Settings

🔧 "Paramètres" tab (Settings)

⚙️ Setting 📝 Description
📏 Detection tolerance (mm) Distance below which two paths are considered overlapping (default: 0.15 mm).
🔀 Partial overlap Enables detection of partially overlapping segments.
🌐 Global optimization Enables reordering of paths to minimize idle travel.
🧠 Optimization strategy Choose from: Nearest neighbor (fast), Local optimization (improved 2-opt), Zoning (geographic grouping by columns or rows).
🔢 Max iterations Maximum iterations for the local optimization strategy.
📐 Zoning direction / size For the Zoning strategy: direction (columns or rows) and zone size in mm.

🔩 "Paramètres avancés" tab (Advanced settings)

⚙️ Setting 📝 Description
🎨 Remove unmanaged colors Removes all elements whose stroke color is not in the managed colors list.
💾 Save as "Découpe" Saves the optimized file with the " - découpe" suffix.
⏱️ Speeds (mm/s) Cutting speed presets per material (e.g., Plywood, Acrylic, Cardboard…). Cutting speed and idle speed are configurable. Presets are editable and customizable.
🌈 Color order Defines the priority order of colors for cutting. Colors can be reordered, added, or removed.

📄 Configuration (OptimLaser.json)

The OptimLaser.json file in the extension folder contains:

  • 🎨 colors: ordered list of colors managed by the laser cutter;
  • ⏱️ speeds: cutting speed presets per material;
  • 💾 last_used: last-used parameters (saved automatically).

🌍 Translation

OptimLaser's interface is translatable using the gettext system.

A blank translation template file (.pot) is located at:

📂 optimlaser/locale/none/LC_MESSAGES/OptimLaser.pot

To create a translation:

1️⃣ Copy the file OptimLaser.pot and rename it to OptimLaser.po;

2️⃣ Translate the msgstr "" strings in the .po file using a text editor or a tool like Poedit;

3️⃣ Compile the .po file into .mo with the command:

msgfmt OptimLaser.po -o OptimLaser.mo

4️⃣ Place both .po and .mo files in:

📂 optimlaser/locale/<language_code>/LC_MESSAGES/

(e.g. optimlaser/locale/de/LC_MESSAGES/ for German)

🤝 Contribute a translation: if you create a translation, send me the .po file or submit a pull request on the GitHub repository — I'll gladly include it!


📜 License

All code is offered under GPLv2 license. ✍️ Author: Frank SAURET

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages