Hackerspace Ventres mous - Mot-clé - openscadVentres mous est un hackerspace à Rouen. Tous les lundis soir, nous développons, faisons de l'administration systèmes, de l'électronique, des bidouillages et des bricolages qui ont même inspiré Mc Gyver. Arduino Raspberry pi. Nous débattons sur nos préférences entre LINUX et BSD.2022-11-30T08:59:44+01:00urn:md5:9aeab4d75d94b55f491d1b8e41db6777DotclearJ'ai dessiné et imprimé ma monture de lunettesurn:md5:562da4873b2a6a5648ca1ffb9d86f6312020-09-14T12:55:00+02:002020-09-14T13:24:54+02:00gniearkProjets - réalisations - documentationsopenscadreprapsvg <p><img src="https://www.ventresmous.fr/public/lunettes/.IMG_20200914_123114_1_m.jpg" alt="" style="display:table; margin:0 auto;" /></p>
<p>Lunettes cassées.</p>
<p><img src="https://www.ventresmous.fr/public/lunettes/.IMG_20200907_123545_1_m.jpg" alt="" style="display:table; margin:0 auto;" /></p>
<p>Le rendez-vous chez l'ophtalmo n'est que dans trois semaines <sup>[<a href="https://www.ventresmous.fr/post/2020/09/13/J-ai-dessin%C3%A9-et-imprim%C3%A9-ma-monture-de-lunettes#wiki-footnote-1" id="rev-wiki-footnote-1">1</a>]</sup>.</p>
<p>En parallèle, j'ai un nouveau joujou (une imprimante delta, pour laquelle je ferai un billet de blog, sur mon blog dans les jours qui viennent).</p>
<p>Vous avez compris le "projet": Dessiner une nouvelle monture de lunettes.</p>
<p>La première difficulté a été de dessiner le profil des verres.</p>
<p><img src="https://www.ventresmous.fr/public/lunettes/.IMG_20200907_190019_1_m.jpg" alt="" style="display:table; margin:0 auto;" /></p>
<p>A partir de cette photographie, avec un verre posé sur une feuille de papier millimétré, l'ami Zigazou, avec Inkscape a réussi à créer un fichier vectoriel du profil:</p>
<p><img src="https://www.ventresmous.fr/public/lunettes/verre.svg" alt="" style="display:table; margin:0 auto;" /></p>
<p>Une fois ce prérequis, c'était lancé.</p>
<p>J'ai créé les profils 2D de la monture au format dxf avec LibreCad</p>
<p><img src="https://www.ventresmous.fr/public/lunettes/.Capture_d_ecran_de_2020-09-14_12-17-08_m.png" alt="" style="display:table; margin:0 auto;" /></p>
<p>Et "extrudais" les calques pour mettre tout ça en 3D avec Openscad:</p>
<p><img src="https://www.ventresmous.fr/public/lunettes/.Capture_d_ecran_de_2020-09-14_12-20-04_m.png" alt="" style="display:table; margin:0 auto;" /></p>
<p>Ensuite, j'imprimais,</p>
<p><img src="https://www.ventresmous.fr/public/lunettes/.IMG_20200908_231130_m.jpg" alt="" style="display:table; margin:0 auto;" /></p>
<p>testais, corrigeais, réimprimais... beaucoup de fois:</p>
<p><img src="https://www.ventresmous.fr/public/lunettes/.IMG_20200913_222250_1_m.jpg" alt="" style="display:table; margin:0 auto;" /></p>
<p>Voilà:</p>
<p><img src="https://www.ventresmous.fr/public/lunettes/.IMG_20200913_221554_1_m.jpg" alt="" style="display:table; margin:0 auto;" /></p>
<p>Les fichiers 3D et les fichiers de constructions sont tous sur le dépot git <a href="https://git.ventresmous.fr/gnieark/lunettes">Lunettes</a>.</p>
<p>Petites précisions:</p>
<ul>
<li>Les branches sont assez fines pour être déformées à l'aide d'un peu de chaleur (sèche cheveux) afin de les adapter.</li>
<li>C'est du dépannage en attendant le RDV chez l'ophtalmo puis l'opticien. Si quelqu'un vient me voir pour que je répare ses lunettes, vu le temps que j'y ai passé, qu'il faudrait presque tout reconcevoir pour adapter à la forme de ses verres. Je l'inviterai à prendre une mutuelle.</li>
</ul>
<p>Les améliorations prévues:</p>
<ul>
<li>Affiner le bas des lunettes,</li>
<li>faire un support pour le nez plus agréable,</li>
<li>Donner un petit angle aux branches.</li>
</ul>
<p>Si jamais un opticien geek arrivait à me faire "fuiter" (légalement ou non) les formes de tous les verres / toutes les marques, je tenterai bien de créer un générateur de monture de lunettes.</p>
<div class="footnotes"><h4>Note</h4>
<p>[<a href="https://www.ventresmous.fr/post/2020/09/13/J-ai-dessin%C3%A9-et-imprim%C3%A9-ma-monture-de-lunettes#rev-wiki-footnote-1" id="wiki-footnote-1">1</a>] Et encore je pense que j'ai de la chance d'être en Seine Maritime, et ni dans un désert médical ni en Île de France</p></div>
Convertir un SVG en DXF pour OpenSCADurn:md5:542cafb6ccbe8d4e4d13dd19c77bdcc02018-07-12T07:04:00+02:002018-07-12T08:47:46+02:00ZigazouProjets - réalisations - documentationsopenscadreprap <p>OpenSCAD est un logiciel libre qui permet de concevoir des modèles 3D à partir d'instructions saisies sous forme de programme.</p>
<p>Sa simplicité permet de s'attaquer au monde de la 3D rapidement sans passer par une phase complexe d'apprentissage d'interfaces graphiques (si vous regardez les tutos de base de logiciels comme Blender, vous vous apercevrez qu'on passe un temps non négligeable à vous apprendre à utiliser l'interface avant même de penser à créer).</p>
<p>Cette simplicité a un coût : il n'est pas facile de créer des formes libres.</p>
<p>Pour contourner le problème, il est possible de recourir à des fichiers DXF qu'on importe via la commande "import" d'OpenSCAD.</p>
<p>N'étant pas plus un utilisateur de LibreCAD ou de FreeCAD, je préfère utiliser Inkscape, un outil de dessin vectoriel.</p>
<p>Se posent alors trois problèmes :</p>
<ul>
<li>Comment préparer un dessin dans Inkscape pour son import dans OpenSCAD ?</li>
<li>Comment convertir du SVG en DXF ?</li>
<li>Comment utiliser le fichier obtenu dans OpenSCAD ?</li>
</ul>
<h3>Comment préparer un dessin dans Inkscape pour son import dans OpenSCAD ?</h3>
<p>Le format SVG est beaucoup trop versatile pour pouvoir être importé dans OpenSCAD après conversion.</p>
<p>Voici un petit florilège d'éléments qui poseront problème une fois le dessin converti :</p>
<p><a href="https://www.ventresmous.fr/public/zigazou-original.png"><img src="https://www.ventresmous.fr/public/.zigazou-original_m.png" alt="" style="display:table; margin:0 auto;" /></a></p>
<p>Et voici les transformations à leur appliquer :</p>
<ul>
<li>n'utiliser qu'un seul calque</li>
<li>n'utiliser que la couleur noire</li>
<li>tout dégrouper (Édition → Sélectionner tout <a href="https://www.ventresmous.fr/post/2018/07/12/ctrl+A" title="ctrl+A">ctrl+A</a>, Objet → Dégrouper <a href="https://www.ventresmous.fr/post/2018/07/12/maj+ctrl+G" title="maj+ctrl+G">maj+ctrl+G</a> jusqu’à ce qu'il n’y ait plus de groupe</li>
<li>convertir les lignes droites et courbes de Bézier en chemins (Chemin → Contour en chemin <a href="https://www.ventresmous.fr/post/2018/07/12/ctrl+alt+c" title="ctrl+alt+c">ctrl+alt+c</a>)</li>
<li>convertir les cercles, ellipses, rectangles et autres formes géométriques en chemins (Chemin → Objet en chemin <a href="https://www.ventresmous.fr/post/2018/07/12/maj+ctrl+C" title="maj+ctrl+C">maj+ctrl+C</a>)</li>
<li>supprimer les à-plat</li>
<li>effectuer une union de tous les objets (Édition → Sélectionner tout <a href="https://www.ventresmous.fr/post/2018/07/12/ctrl+A" title="ctrl+A">ctrl+A</a>, Chemin → Union <a href="https://www.ventresmous.fr/post/2018/07/12/ctrl++" title="ctrl++">ctrl++</a>)</li>
</ul>
<p>Après ces modifications, enregistrez le résultat dans un nouveau fichier, histoire de conserver le fichier original pour de future modifications.</p>
<h3>Comment convertir du SVG en DXF ?</h3>
<p>Inkscape ne sait pas exporter en DXF.</p>
<p>En revanche, il sait exporter en EPS et il existe "pstoedit", un outil en ligne de commande sous Linux facilement installable sous Debian/Ubuntu (sudo apt-get install pstoedit).</p>
<p>Il va cependant falloir passer les bons paramètres et ce n'est pas toujours choses aisée.</p>
<p>Voici donc un script Bash qui s'en charge :</p>
<pre class="brush: bash">#!/bin/bash
# The assert function for Bash
function assert {
local rc
local message="$1"
shift
"$@" 2>&1 > /dev/null
rc=$?
[ $rc -eq 0 ] && return 0
set $(caller)
date=$(date "+%Y-%m-%d %T%z")
echo "$date $2 [$$]: $message (line=$1, rc=$rc)" >&2
exit $rc
}
# Retrieves the input and output filenames
infile="$1"
outfile="$2"
# Checks the system
assert "Inkscape not found" which inkscape
assert "Pstoedit not found" which pstoedit
assert "svg2dxf takes 2 arguments (infile, outfile)" test $# -eq 2
assert "Input file not found" test -f "$infile"
# Converts the SVG to DXF
printf "Converting %s to %s..." "$infile" "$outfile" >&2
inkscape --file="$infile" --export-eps=/dev/stderr 2>&1 >/dev/null \
| pstoedit -dt -f 'dxf:-polyaslines -mm' /dev/stdin /dev/stdout \
> "$outfile" 2> /dev/null
printf " OK\n" >&2</pre>
<p>Le script prend 2 paramètres : le premier correspond au fichier SVG à convertir, le second au fichier DXF à récupérer.</p>
<h3>Comment utiliser le fichier obtenu dans OpenSCAD ?</h3>
<p>Le fichier peut désormais être importé dans OpenSCAD en utilisant la commande "import" imbriquée dans une commande "linear_extrude" ou "rotate_extrude" suivant le résultat souhaité. L'exemple ci-dessous inclut également un commande "translate" pour centrer l'objet.</p>
<pre>
translate([-40,-60,0])
linear_extrude(height = 30, convexity = 5)
import(file = "zigazou.dxf", layer = "0");
</pre>
<p>La calque à utiliser est le calque "0".</p>
<p><a href="https://www.ventresmous.fr/public/zigazou-openscad.png"><img src="https://www.ventresmous.fr/public/.zigazou-openscad_m.png" alt="" style="display:table; margin:0 auto;" /></a></p>