De Inkscape à Openscad

Fiche projet

Gdesign et quelques plugins permettent de concevoir des objets 3D à partir d'Inkscape

Conception

Inkscape est un excellent outil de créaion de formes 2D qui permet de dessiner des formes à partir de segments, arcs et courbes de Bézier.

Openscad est un outil très intéressant de modélisation 3D qui permet de réaliser des solides à parir de primitives.

J'ai écrit le package gdesign afin de pouvoir intégrer des solides extrudés à partir de formes 2D créées sous Inkscape dans Openscad.

Ce package est encore en développement.

Installation

Le package gdesign est disponible sur https://github.com/tdasse/gdesign-inkscape.git

Copier les fichiers du dossier extensions dans le dossier des extensions d'Inkscape
Windows : “C:\Program Files\Inkscape\share\extensions”
Linux : ”/usr/share/inkscape/extensions”
Mac : ”/Applications/Inkscape.app/Contents/Resources/extensions”

Dans Enregistrer sous… apparaît Openscad File(.scad) qui permet d'exporter en Openscad.

Openscad unit : convertit en mm, cm ou inches
number of digits : nombre de chiffres significatifs
header : entête du fichier .scad (utile pour y mettre des paramêtres type $fn= 60; …)
header of path : entête de chaque chemin (on peut y mettre des commandes openscad comme linear_extrude() ou rotate_extrude())
footer of path : pied de chaque chemin
footer : pied du fichier .scad

error max : erreur max lors de la conversion des courbes de Bezier et des arcs en lignes polygonales
error unit en mm, cm, in, pt or px
includes definit les groupes et calques à inclure dans le fichier .scad
Si le champ est vide, tous les grooupes et calques seront inclus
Si le champ contient une liste séparée par des + et -, les éléments de la liste seront inclus(+) ou exclus.
all représente tous les groupes et calques. Par exemple 'all - calque1' représente tous les calques sauf calque1

les éléments et opérateurs doivent être séparés par un espace. Les noms de groupes et calques, eux, ne doivent pas comporter d'espaces.
Pour les calques, inkscape:label est utilisé à la place de id

Exemples

Exemple 1

Pour réaliser des solides en extrusion, on peut ajouter linear_extrude(hauteur) dans le champ header of path de l'enregistrer sous…
Si Openscad est paramétré de manière à recharger et recompiler le fichier automatiquement (menu Design), on peut modifier les points sur inkscape et voir les modifications à chaque enregistrement du fichier.
Attention, en cas de modifications, penser à les enregistrer aussi en svg.

Exemple 2

Pour réaliser des solides de révolution, on peut ajouter rotate_extrude() dans le champ header of path de l'enregistrer sous… et éventuellement $fn = 50; dans le champ header pour ajuster la qualité.

Exemple 3

Pour réaliser des modèles plus compliqués, il faut ajouter les commandes openscad directement dans les chemins.
Pour cela, sélectionner le chemin et utiliser extensions/scad parameters/définir.
On peut aussi créer et modifier les champs scad-header, scad-footer et scad-pos dans l'éditeur XML.

scad-header est appliqué avant le chemin (transformé en polygone), scad-footer après.
scad-pos permet de repositionner le chemin, non pas à partir de sa position dans le svg mais à partir de l'origine.
Il peut prendre les valeurs center, top-left, top, top-right, left, right, bottom-left, bottom, bottom-right

Avantages:
* on peut mettre des commandes différentes par chemin
* on enregistre les paramètres scad directement dans le fichier svg
* on peut mixer avec le menu enregistrer sous… (les commandes de chemins seront appliquées d'abord)

Attention:
On peut modifier les points d'un chemin après avoir ajoutés des paramètres scad. Par contre, lors d'opérations de type union, intersection, …
inkscape élimine tous les champs inconnus donc les scad parameters.
Pour contourner le problème, on peut les enregistrer d'abord sur un fichier temporaire extensions/scad parameters/enregistrer et les restaurer après l'opération.