CutOptim

De Kernel Fablab Lannion
Révision datée du 7 avril 2019 à 12:35 par Thierry (discussion | contributions) (Page créée avec « <!-- Page pouvant servir d'exemple pour la création d'un projet. Pour l'utiliser, copiez-collez le code de celle-ci vers votre page de projet --> Fichier:CutOptim... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Présentation

Tous les utilisateurs de la découpeuse laser ont sans doute été confronté au problème: mon dessin ne rentre pas dans la feuille de bois à ma disposition ou même dans la découpeuse laser ! Pour tenter de remédier à ce problème, je me suis attelé à l'écriture d'un programme d'optimisation de placement d'objets sur une feuille.
Pour les lecteurs intéressés, il s'agit d'une variante d'un problème bien connu dans le monde de l'optimisation (bin packing problem).En faisant une petite recherche sur le Web, on trouve d'ailleurs de nombreux liens vers des programmes réalisant cette tâche, mais les versions gratuites sont souvent très limitées, elles se contentent d'optimiser la découpe de rectangles. Cela peut aider un fabricant de meubles, mais c'est trop limitant pour une découpeuse laser !


Ce programme lit un fichier SVG en entrée contenant les objets à placer et crée en sortie un second fichier SVG contenant les objets placés.
Il peut être utilisé tel quel (ligne de commande, pas d'interface graphique !) ou comme une extension inkscape qui fournit alors l'interface graphique.


Environnement

Comme indiqué ci dessus, ce programme peut être utilisé seul ou comme une extension inkscape.
Le travail à réaliser peut prendre un temps relativement long, il est préférable de l'exécuter sur un processeur moderne, mais si vous n'êtes pas pressés...
La consommation mémoire reste raisonnable, pas la peine de se précipiter pour acheter de nouvelles barrettes de RAM !

Logiciels

Tout d'abord comme il s'agit d'un programme écrit en C++ pour une question de performance, celui-ci devra être compilé sur votre machine.
J'ai écrit ce programme sous Linux/Ubuntu (compilé avec gcc), mais comme il n'y a pas de dépendance système, il devrait fonctionner tel quel sous tout autre version de Linux. Pour les inconditionnels de Windows (il y en a !), j'ai créé un projet Visual Studio qui permet de compiler sur cette plate-forme. Pour les utilisateurs de Mac, désolé je n'en ai pas, il faudra vous débrouiller par vous même, mais le C++ utilisé est vraiment standard, cela devrait fonctionner dès lors que vous avez accès à un compilateur. Pour information, je n'ai rien changé au code entre Linux et Windows, c'est dire !

Installation Linux

Le code est disponible ici : https://github.com/thierry7100/CutOptim Pour les non initiés, vous clonez (ou téléchargez) le répertoire, celui-ci arrive sous forme d'une archive .zip, qu'il faut extraire. Ensuite vous ouvrez un terminal, vous allez dans le répertoire créé et lancez les commandes :

  1. make release
  2. make install : ceci va copier le logiciel dans le répertoire ~/.local/bin qui se trouve dans la liste des répertoires d’exécutables, ce qui vous permettra de l'utiliser directement (ceci est peut-être spécifique Ubuntu, à vous de mettre le programme ailleurs sur un autre système.
  3. make install_inkscape : ceci va copier le programme dans le répertoire d'extension inkscape (~/.config/inkscape/extensions). Si vous voulez mettre à disposition cette extension pour tous les comptes de votre machine, copiez le fichier cutoptim.inx + l'exécutable dans /usr/share/inkscape/extensions (vous devez être root).

Si vous avez opté pour l'extension inkscape, lors du prochain démarrage vous allez avoir une extension Fablab/Laser Cutting Optimizer

Installation Windows

Le code est disponible ici : https://github.com/thierry7100/CutOptim Pour les non initiés, vous clonez (ou téléchargez) le répertoire, celui-ci arrive sous forme d'une archive .zip, qu'il faut extraire. Ensuite vous lancez Visual Studio, vous pouvez obtenir une version gratuite à titre particulier, voir https://visualstudio.microsoft.com/fr/thank-you-downloading-visual-studio/?sku=Community&rel=16 Ensuite, une fois Visual studio démarré, vous ouvez le projet CutOptim, puis :

  1. Vous demandez à générer la version Release du projet si ce n'est pas celle qui s'affiche dans la barre de menu.
  2. Vous choisissez la plateforme (x86 ou x64) de votre choix. Par défaut le fichier est configuré en x64, si vous avez une version 32bit de Windows, changez en x86.
  3. Vous cliquez sur Générer / Générer la solution, la compilation débute et au bout de quelques secondes, votre programme est disponible.
  4. Ensuite, sous windows, mieux vaut utiliser ce programme comme extension inkscape, la ligne de commande n'étant guère utilisée? ! Pour cela copiez les fichiers cutoptim.inx et CutOptm/x64/Release/CutOptim.exe dans le répertoire d'extensions inkscape. Celui-ci peut être trouvé via la commande Edition/Préférences/Système, mais c'est généralement sous C:\USERS\<Votre nom d'utilisateur>\AppData\Roaming/inkscape/extensions. Attention, pour voir ce répertoire, vous devrez valider la visualisation de fichiers cachés sous l'explorateur de fichiers, si ce n'était pas fait.

Comme sous Linux, au prochain démarrage d'inkscape vous allez avoir une extension Fablab/Laser Cutting Optimizer

Si vous avez opté pour l'extension inkscape, lors du prochain démarrage vous allez avoir une extension Fablab/Laser Cutting Optimizer

Architecture

Languages

Évolutions possibles

Que peut-on faire de plus une fois la 1ère version réalisée ?

Bilbiographie

  • pourquoi pas
  • une liste
  • de liens