{ "cells": [ { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from scipy import constants\n", "from scipy.special import kv,kvp,erf\n", "import matplotlib.pyplot as plt\n", "import matplotlib.colors as colors\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "#Modifier ici pour changer la taille du siphon\n", "#dimensions en cm\n", "\n", "H_bocal=11\n", "L_bocal=8\n", "L_paille=0.4\n", "L_paille_ref=1.2\n", "H_paille=10\n", "z_paille_bot_right=-2\n", "z_paille_top=8\n", "z_paille_top_ref=8\n", "z_paille_bot_left=1\n", "col='red'" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def semi_circle(r,l):\n", " center = (L_bocal+l,z_paille_top)\n", " radius = r\n", " # Create an array of angles from 0 to pi\n", " angles = np.linspace(0, np.pi, 40)\n", "\n", " # Calculate the x and y coordinates of the semi-circle\n", " x = center[0] + radius * np.cos(angles)\n", " y = center[1] + radius * np.sin(angles)\n", " return(x,y)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Bocal:\n", "L_paille=0.80\n", "z_paille_top=L_paille_ref-L_paille+z_paille_top_ref\n", "X_c,Y_c=semi_circle(L_paille,0)\n", "col='red'\n", "plt.plot([0,0],[H_bocal,0],c=col)\n", "plt.plot([0,L_bocal],[0,0],c=col)\n", "plt.plot([L_bocal,L_bocal],[0,z_paille_top],c=col)\n", "plt.plot([L_bocal,L_bocal],[z_paille_top+L_paille,H_bocal],c=col)\n", "\n", "#paille\n", "\n", "plt.plot([L_bocal-L_paille,L_bocal-L_paille],[z_paille_bot_left,z_paille_top],c=col)\n", "plt.plot(X_c,Y_c,c=col)\n", "plt.plot([L_bocal+L_paille,L_bocal+L_paille],[z_paille_top,z_paille_bot_right],c=col)\n", "plt.plot([L_bocal,L_bocal],[0,z_paille_bot_right],c=col)\n", "plt.axis('equal')\n", "plt.axis('off')\n", "\n", "#plt.savefig('siphon_paille4.svg')\n", "plt.show()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Sauvegarder l'image précédente au format svg ().\n", "\n", "Ouvrir l'image sur inkscape.\n", "\n", "Tout selectionner puis 'command+u'. Suprimer le fond et garder uniquement les traits.\n", "\n", "Elargir l'épaisseur des traits dans 'fond et contour'.\n", "\n", "Supprimer le fond.\n", "\n", "Dans contour cliquer sur 'aplat'.\n", "\n", "Dans 'fond et contour', redeinir l'épaisseur des traits au minimum.\n", "\n", "\"Editer les noeuds\" et joindre les contours 'command+j'.\n", "\n", "Mettre tout en rgb=(255,0,0) pour découpeuse laser.\n", "\n", "Ajouter le cadre autour du motif.\n", "\n", "Enregistrer au format svg. Le motif est alors pret pour découpeuse laser.\n", "\n", "Enregistrer uniquement le cadre au format svg. Le cadre du dessous est alors pret pour découpeuse laser.\n", "\n", "Dans un nouveau inkscape mettre le cadre et l'image initiale. Le cadre du dessus est alors pret pour découpeuse laser.\n", "\n", "3 fichiers pour 3 plaques de plexi. Examples dans la doc." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [] } ], "metadata": { "kernelspec": { "display_name": "base", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.13" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }