Modifier 1 (24/03/15): Ajout du support à double extrusion.
EDIT 2 (24/03/2015): Ajout de l'option pour avoir l'entrée et les quitter fermées, ég...alement un paramètre ajouté pour fabriquer un chemin de vecteur 2D au lieu du maillage 3D. Correction d'une redondance mineure dans le code.
Edit 3 (25/03/15): Correction du conflit des paramètres mineurs, ajoutait plus de commentaires pour plus de clarté.
J'ai donc une chose pour la génération de labyrinthe depuis un moment. Alors que j'ai écrit quelques jeux différents dans HTML 5 / JavaScript et C, je voulais faire quelque chose qui était en fait physiquement réel.
Une recherche sur Thingiverse m'a conduit à un
Script python qui a généré une description d'ouvrir un labyrinthe
, mais cela semblait trop rond pour moi. En outre, j'aime l'apparence de l'algorithme classique récursif de retour de dossiers plus que tout autre, et c'est si délicieusement simple à mettre en œuvre. De plus, j'aime vraiment, vraiment générer des labyrinthes. :) Alors, j'ai décidé d'écrire le mien.
Initialement, je voulais l'implémenter dans OpenSCAD, mais parce qu'il utilise un langage fonctionnel, a déterminé qu'il était impossible. (
Apparemment, j'avais totalement tort!
) Cependant, je l'ai finalement fait fonctionner comme un script python dans Blender.
Cela a pris environ un an de bricolage très clairsemé. Au départ, j'essayais d'utiliser des booléens pour ajouter et soustraire des cuboïdes (comme OpenSCAD), mais cela s'est avéré problématique en raison de la nature capricieuse des normales et des trucs. Donc, j'ai fini par faire le labyrinthe comme un maillage 2D (sommet par sommet, face par visage), puis l'extruder et l'ajout de la base plus tard.
Ceci est entièrement fonctionnel, mais il y a quelques fonctionnalités que je veux toujours. Je veux vraiment pouvoir marquer le début et la fin, mais je ne sais pas comment je devrais le faire. Laissez un commentaire et donnez-moi vos idées!
P.S.
Pour le plaisir, le 20X20_HUMANSIZE.STL est un labyrinthe 20 x 20 qui conviendrait à un humain pour se promener. (62600 mm x 626000 mm au total, soit environ 98,6 acres). Voici les paramètres: (Merci, Google!)
Largeur = 20 #Comment de nombreuses cellules de large
Longueur = 20 #Comment de nombreuses cellules
CellThickness = 2500 #Width of Passages [mm]
wallthickness = 600 #width of murs [mm]
wallheight = 2500 #height des murs [mm]
BaseHeight = 300 #height de la base [mm]
Bonne chance l'impression de cette échelle à 1: 1.
Paramètres d'impression du modèle 3D
Pour faire votre propre labyrinthe, téléchargez `Maze Generator.Blend`, ouvrez-le dans Blender et lisez les instructions dans le script en haut à g...auche. Lorsque cela est fait, sélectionnez-le, puis * Fichier> Exporter> STL (.stl) *. Imprimez et profitez! Aucun support nécessaire! Je recommanderais que la largeur du mur soit un multiple de votre diamètre de buse afin que vous puissiez les imprimer solides en utilisant uniquement des coquilles. Par exemple, si vous avez une buse de 0,4 mm, vous pouvez imprimer les murs solidement en utilisant 1 coquille * (ce qui rendra les murs 2 coquilles d'épaisseur) * Si elles ont 0,4 * 2 mm d'épaisseur. Alternativement, vous pouvez les couper au laser! La prise en charge de ceci est limité ATM, mais si vous définissez le `wallHeight = 0`, il fera un chemin * (vraiment, 2 chemins) * au lieu d'un maillage. Utilisez le [Blender SVG Exporter] (http://wiki.blender.org/index.php/extensions:2.6/py/scripts/import-export/inkscape_svg_exporter) pour l'obtenir en tant que SVG et en faire tout ce que vous en voulez ! Bien sûr, il n'est pas apte à la coupe du laser tout de suite, vous devez faire preuve de créativité avec! * (Si vous utilisez Inkscape, réduisez les chemins de 125% avant de les utiliser. Illustrator travaille en tant que.) * Les fichiers pour le labyrinthe à billes coupés laser sont `15x15_ball_maze.ai` et` 15x15_ball_maze.svg`. Les instructions se trouvent dans les fichiers. Si vous faites vos propres conceptions 3D ou Laser Cut de ce projet, veuillez me créditer et l'ajouter en tant que remix à cette chose. Au lieu d'utiliser le fichier .Blend, vous pouvez également charger le mixeur `Blender_maze_gen.py` dans Blender, mais il n'y a pas beaucoup de raisons de faire cette IMO. Utilisez simplement le fichier .Blend. Actuellement, l'entrée et la sortie se ressemblent. L'entrée est le trou qui vous fera face à votre imprimé * (ou celui du 3ème quadrant [-x, -y], pour ceux qui veulent être spécifiques) *. Commentez pour me donner des idées sur la façon de les marquer, parce que je suis à court.