|
|
|
|
@ -6,8 +6,8 @@
|
|
|
|
|
"metadata": { |
|
|
|
|
"collapsed": true, |
|
|
|
|
"ExecuteTime": { |
|
|
|
|
"end_time": "2026-05-15T00:06:41.549639954Z", |
|
|
|
|
"start_time": "2026-05-15T00:06:27.739048425Z" |
|
|
|
|
"end_time": "2026-05-16T16:06:57.388758263Z", |
|
|
|
|
"start_time": "2026-05-16T16:06:29.224097165Z" |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
"source": [ |
|
|
|
|
@ -61,7 +61,7 @@
|
|
|
|
|
"cav_hauteur = hauteur_extrudeuse # mm — profondeur de creusement depuis le dessus\n", |
|
|
|
|
"\n", |
|
|
|
|
"# Ailettes de maintient de la cheville du gond de la poignée d'extrudeuse\n", |
|
|
|
|
"ailettes_ecart = 24 # mm\n", |
|
|
|
|
"ailettes_ecart = 26 # mm\n", |
|
|
|
|
"ailettes_epaisseur = 3 # mm\n", |
|
|
|
|
"ailettes_hauteur = 30 # mm\n", |
|
|
|
|
"ailettes_profondeur = 20 # mm\n", |
|
|
|
|
@ -96,7 +96,7 @@
|
|
|
|
|
"# Fixation couplage des deux sous-parties du bloc extrudeur\n", |
|
|
|
|
"vis_couplage_diam_pas = 2.8\n", |
|
|
|
|
"vis_couplage_diam = 4\n", |
|
|
|
|
"vis_couplage_diam_trou = 10\n", |
|
|
|
|
"vis_couplage_diam_trou = 8\n", |
|
|
|
|
"vis_couplage_longueur = 20\n", |
|
|
|
|
"\n", |
|
|
|
|
"# Encoches d'emboitages\n", |
|
|
|
|
@ -104,6 +104,10 @@
|
|
|
|
|
"encoche_longueur = 20\n", |
|
|
|
|
"encoche_largueur = epaisseur_paroi / 3\n", |
|
|
|
|
"\n", |
|
|
|
|
"# Fente Bypass\n", |
|
|
|
|
"bypass_longueur = 50\n", |
|
|
|
|
"bypass_epaisseur = 2\n", |
|
|
|
|
"\n", |
|
|
|
|
"# ─────────────────────────────────────────────────────────────────────────────\n", |
|
|
|
|
"# DIMENSIONS DÉRIVÉES\n", |
|
|
|
|
"# ─────────────────────────────────────────────────────────────────────────────\n", |
|
|
|
|
@ -209,7 +213,7 @@
|
|
|
|
|
" length=5\n", |
|
|
|
|
" )\n", |
|
|
|
|
" # ptit coup de chamfrein le bord intérieur haut du butoir de la fente\n", |
|
|
|
|
" chamfer(edges_stop,length=1)\n", |
|
|
|
|
" chamfer(edges_stop, length=1)\n", |
|
|
|
|
"\n", |
|
|
|
|
" # # 4. Trou d'évacuation (perce le fond depuis en dessous)\n", |
|
|
|
|
" cav_floor = faces().filter_by(Axis.Z).sort_by(Axis.Z)[1]\n", |
|
|
|
|
@ -245,10 +249,11 @@
|
|
|
|
|
" -bloc_extrudeur_ext_z / 2 + fente_z_abs + fente_hauteur)[0])\n", |
|
|
|
|
"\n", |
|
|
|
|
" # Position relative au centre de la face (origine du sketch)\n", |
|
|
|
|
" y_offsets = (bloc_extrudeur_ext_y / 2 - epaisseur_paroi,\n", |
|
|
|
|
" -(bloc_extrudeur_ext_y / 2) + epaisseur_paroi)\n", |
|
|
|
|
" y_offsets = (bloc_extrudeur_ext_y / 2 - epaisseur_paroi / 2 - 2,\n", |
|
|
|
|
" -(bloc_extrudeur_ext_y / 2) + epaisseur_paroi / 2 + 2)\n", |
|
|
|
|
" x_offsets = (bloc_extrudeur_ext_x / 2 - (fente_profondeur + 10),\n", |
|
|
|
|
" - bloc_extrudeur_ext_x / 2 + epaisseur_paroi)\n", |
|
|
|
|
" - bloc_extrudeur_ext_x / 2 + epaisseur_paroi,\n", |
|
|
|
|
" bloc_extrudeur_ext_x / 2 - epaisseur_paroi)\n", |
|
|
|
|
" hole_locations = list(product(x_offsets, y_offsets))\n", |
|
|
|
|
" # Trous de couplage des deux parties du bloc une fois séparées\n", |
|
|
|
|
" with Locations(Plane(\n", |
|
|
|
|
@ -324,7 +329,7 @@
|
|
|
|
|
" # l'une dans l'autre\n", |
|
|
|
|
" y_offsets = (bloc_extrudeur_ext_y / 2 - epaisseur_paroi / 2,\n", |
|
|
|
|
" -(bloc_extrudeur_ext_y / 2) + epaisseur_paroi / 2)\n", |
|
|
|
|
" x_offsets = (bloc_extrudeur_ext_x / 2 - epaisseur_paroi * 2,\n", |
|
|
|
|
" x_offsets = (bloc_extrudeur_ext_x / 2 - epaisseur_paroi * 3,\n", |
|
|
|
|
" - bloc_extrudeur_ext_x / 2 + epaisseur_paroi * 3)\n", |
|
|
|
|
" sockets_offsets = list(product(x_offsets, y_offsets))\n", |
|
|
|
|
" with BuildPart() as p_top:\n", |
|
|
|
|
@ -345,9 +350,9 @@
|
|
|
|
|
"\n", |
|
|
|
|
" with BuildSketch(bottom_plane):\n", |
|
|
|
|
" with Locations((cav_dim_x / 2, 0)):\n", |
|
|
|
|
" with GridLocations(x_spacing=0, y_spacing=ailettes_ecart, x_count=1, y_count=2):\n", |
|
|
|
|
" with GridLocations(x_spacing=0, y_spacing=ailettes_ecart + ailettes_epaisseur, x_count=1, y_count=2):\n", |
|
|
|
|
" Rectangle(ailettes_profondeur, ailettes_epaisseur,\n", |
|
|
|
|
" align=(Align.MAX, Align.MIN))\n", |
|
|
|
|
" align=(Align.MAX, Align.CENTER))\n", |
|
|
|
|
" extrude(amount=ailettes_hauteur, mode=Mode.ADD)\n", |
|
|
|
|
" face_edges = (edges(Select.LAST).filter_by(Axis.Z)\n", |
|
|
|
|
" .filter_by_position(Axis.X,\n", |
|
|
|
|
@ -372,6 +377,17 @@
|
|
|
|
|
" maximum=top_plane.origin.Z + encoche_profondeur * 2)\n", |
|
|
|
|
" chamfer(top_edges, length=1)\n", |
|
|
|
|
"\n", |
|
|
|
|
" bottom_face = faces().filter_by(Plane.XY).sort_by(Axis.Z)[0]\n", |
|
|
|
|
" bypass_slot_plane = Plane(\n", |
|
|
|
|
" origin=(bloc_extrudeur_ext_x / 2, 0, bottom_face.center().Z + emboitement_profondeur),\n", |
|
|
|
|
" x_dir=(1, 0, 0),\n", |
|
|
|
|
" z_dir=(0, 0, 1)\n", |
|
|
|
|
" ).rotated((0, -50, 0))\n", |
|
|
|
|
" with BuildSketch(bypass_slot_plane):\n", |
|
|
|
|
" Rectangle(40, bypass_longueur)\n", |
|
|
|
|
" extrude(amount=bypass_epaisseur, mode=Mode.SUBTRACT)\n", |
|
|
|
|
" chamfer(edges(Select.LAST).filter_by(Axis.Y).sort_by(Axis.Z)[-2:], length=2)\n", |
|
|
|
|
"\n", |
|
|
|
|
" return Compound(children=[p_top.part, p_bottom.part])\n", |
|
|
|
|
"\n", |
|
|
|
|
"\n", |
|
|
|
|
@ -467,7 +483,7 @@
|
|
|
|
|
] |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
"execution_count": 108 |
|
|
|
|
"execution_count": 124 |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"metadata": { |
|
|
|
|
@ -527,7 +543,7 @@
|
|
|
|
|
" offset_plane = plane.offset(bras_patte_dist)\n", |
|
|
|
|
" with BuildSketch(offset_plane):\n", |
|
|
|
|
" with Locations((bottom_face.center().Z,)):\n", |
|
|
|
|
" Rectangle(2,5, align=(Align.MIN, Align.CENTER))\n", |
|
|
|
|
" Rectangle(2, 5, align=(Align.MIN, Align.CENTER))\n", |
|
|
|
|
" with BuildSketch(face):\n", |
|
|
|
|
" add(face.rotate(Axis.Y, 90)) # ← utilise directement la face comme sketch\n", |
|
|
|
|
" loft()\n", |
|
|
|
|
@ -535,12 +551,12 @@
|
|
|
|
|
" patte_plane = Plane(\n", |
|
|
|
|
" origin=offset_plane.origin,\n", |
|
|
|
|
" x_dir=-offset_plane.y_dir,\n", |
|
|
|
|
" z_dir=(0,0,1)\n", |
|
|
|
|
" z_dir=(0, 0, 1)\n", |
|
|
|
|
" ).offset(bottom_face.center().Z)\n", |
|
|
|
|
" with BuildSketch(patte_plane):\n", |
|
|
|
|
" Rectangle(5,bras_patte_dist - 1, align=(Align.CENTER, Align.MIN))\n", |
|
|
|
|
" Rectangle(5, bras_patte_dist - 1, align=(Align.CENTER, Align.MIN))\n", |
|
|
|
|
" with BuildSketch(patte_plane.offset(-pourtour_hauteur)):\n", |
|
|
|
|
" Rectangle(5,5, align=(Align.CENTER, Align.MIN))\n", |
|
|
|
|
" Rectangle(5, 5, align=(Align.CENTER, Align.MIN))\n", |
|
|
|
|
"\n", |
|
|
|
|
" loft()\n", |
|
|
|
|
"\n", |
|
|
|
|
@ -572,8 +588,8 @@
|
|
|
|
|
{ |
|
|
|
|
"metadata": { |
|
|
|
|
"ExecuteTime": { |
|
|
|
|
"end_time": "2026-05-12T23:02:00.063069947Z", |
|
|
|
|
"start_time": "2026-05-12T23:01:52.552843497Z" |
|
|
|
|
"end_time": "2026-05-15T13:58:22.949409543Z", |
|
|
|
|
"start_time": "2026-05-15T13:58:10.759490392Z" |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
"cell_type": "code", |
|
|
|
|
@ -589,12 +605,12 @@
|
|
|
|
|
"True" |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
"execution_count": 20, |
|
|
|
|
"execution_count": 121, |
|
|
|
|
"metadata": {}, |
|
|
|
|
"output_type": "execute_result" |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
"execution_count": 20 |
|
|
|
|
"execution_count": 121 |
|
|
|
|
} |
|
|
|
|
], |
|
|
|
|
"metadata": { |
|
|
|
|
|