diff --git a/tractrudeuse_v2.ipynb b/tractrudeuse_v2.ipynb index bceee8d..b4db2a9 100644 --- a/tractrudeuse_v2.ipynb +++ b/tractrudeuse_v2.ipynb @@ -6,8 +6,8 @@ "metadata": { "collapsed": true, "ExecuteTime": { - "end_time": "2026-05-12T22:59:12.711790474Z", - "start_time": "2026-05-12T22:59:04.480803556Z" + "end_time": "2026-05-14T02:35:48.111465748Z", + "start_time": "2026-05-14T02:35:34.544312989Z" } }, "source": [ @@ -40,15 +40,16 @@ "tracte_extrusion_center_y_offset = tract_extrusion_cote / 2 + tract_extrusion_y_offset\n", "\n", "# extrudeuse\n", - "hauteur_extrudeuse = 80 # mm\n", - "longueur_extrudeuse = 205 # mm\n", - "largueur_extrudeuse = 122.3 # mm\n", - "# représente l'offsent du centre de la zone d'extrusion par rapport à l'avant de l'extreuse\n", + "hauteur_extrudeuse = 53 # mm\n", + "# TODO: dimensions exactes mesurées, ajouter du jeu éventuellement\n", + "longueur_extrudeuse = 130 # mm\n", + "largueur_extrudeuse = 100 # mm\n", + "# représente l'offset du centre de la zone d'extrusion par rapport à l'avant de l'extrudeuse\n", "# TODO: a compéter\n", "# offset par rapport à l'avant de l'extrudeuse\n", - "zone_extrusion_offset_avant = 40 # mm\n", + "zone_extrusion_offset_avant = 50 # mm\n", "# offset par rapport au bas de l'extrudeuse\n", - "zone_extrusion_offset_hauteur = 30 # mm\n", + "zone_extrusion_offset_hauteur = 12 # mm\n", "\n", "# Cavité perforatrice\n", "jeu_cavite = 2 # mm\n", @@ -56,6 +57,12 @@ "cav_dim_y = largueur_extrudeuse + jeu_cavite\n", "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_epaisseur = 3 # mm\n", + "ailettes_hauteur = 30 # mm\n", + "ailettes_profondeur = 20 # mm\n", + "\n", "# Trou d'évacuation (confettis)\n", "evac_taille = 48.0 # mm — côté du carré (45 + jeu)\n", "\n", @@ -70,8 +77,8 @@ "\n", "# Couvercle\n", "couvercle_epaisseur = 5 # mm\n", - "couvercle_ouv_largeur = 150 # mm — ouverture X\n", - "couvercle_ouv_profondeur = 60 # mm — ouverture Y\n", + "couvercle_ouv_largeur = 110 # mm — ouverture X\n", + "couvercle_ouv_profondeur = 30 # mm — ouverture Y\n", "\n", "# Bac\n", "bac_hauteur = 100.0 # mm\n", @@ -251,7 +258,7 @@ " cx = (min_x + max_x) / 2\n", "\n", " with BuildSketch(front_plane) as sk:\n", - " add([s.translate((-cx, 5, 0)) for s in logo_shapes])\n", + " add([s.translate((-cx, -5, 0)) for s in logo_shapes])\n", " scale(by=0.8)\n", "\n", " extrude(amount=-1, mode=Mode.SUBTRACT) # 1.5 mm de profondeur\n", @@ -261,7 +268,7 @@ " right_face = faces().filter_by(Axis.Y).sort_by(Axis.Y)[-1]\n", " for side_face in [left_face, right_face]:\n", " # side_face = Plane(side_face).rotated((0, 90, 0))\n", - " with BuildSketch(side_face) as sk:\n", + " with BuildSketch(side_face.translate((0, 0, -5))) as sk:\n", " Text(\"GUI-O-TRACTINE\\n3000\",\n", " font_size=20,\n", " align=Align.CENTER,\n", @@ -298,10 +305,25 @@ " Rectangle(encoche_longueur, encoche_largueur)\n", " extrude(amount=encoche_profondeur, mode=Mode.SUBTRACT)\n", " top_edges = edges(Select.LAST).filter_by_position(Axis.Z,\n", - " minimum=bottom_plane.origin.Z + encoche_profondeur - 0.01,\n", - " maximum=bottom_plane.origin.Z + encoche_profondeur)\n", + " minimum=bottom_plane.origin.Z + encoche_profondeur - 0.01,\n", + " maximum=bottom_plane.origin.Z + encoche_profondeur)\n", " chamfer(top_edges, length=1)\n", "\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", + " Rectangle(ailettes_profondeur, ailettes_epaisseur,\n", + " align=(Align.MAX, Align.MIN))\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", + " minimum=cav_dim_x / 2 - 0.01,\n", + " maximum=cav_dim_x / 2 + 0.01))\n", + " chamfer(face_edges, length=3)\n", + " top_edges = (edges(Select.LAST).filter_by(Axis.X).sort_by(Axis.Z)[-4:])\n", + " chamfer(top_edges, length=0.5)\n", + "\n", + "\n", " with BuildPart() as p_bottom:\n", " add(bottom)\n", " top_face = faces().filter_by(Plane.XY).sort_by(Axis.Z)[-1]\n", @@ -313,7 +335,8 @@ " with Locations(sockets_offsets):\n", " Rectangle(encoche_longueur - 0.3, encoche_largueur - 0.3)\n", " extrude(amount=encoche_profondeur - 0.3, mode=Mode.ADD)\n", - " top_edges = edges(Select.LAST).filter_by_position(Axis.Z, minimum=top_plane.origin.Z + encoche_profondeur / 2, maximum= top_plane.origin.Z + encoche_profondeur * 2)\n", + " top_edges = edges(Select.LAST).filter_by_position(Axis.Z, minimum=top_plane.origin.Z + encoche_profondeur / 2,\n", + " maximum=top_plane.origin.Z + encoche_profondeur * 2)\n", " chamfer(top_edges, length=1)\n", "\n", " return Compound(children=[p_top.part, p_bottom.part])\n", @@ -345,8 +368,8 @@ " with BuildSketch(top_face) as sk:\n", " # Position relative au centre de la face (origine du sketch)\n", " with Locations(Location((0, 0))):\n", - " Rectangle(bloc_extrudeur_ext_x - epaisseur_paroi /2,\n", - " bloc_extrudeur_ext_y - epaisseur_paroi /2)\n", + " Rectangle(bloc_extrudeur_ext_x - epaisseur_paroi / 2,\n", + " bloc_extrudeur_ext_y - epaisseur_paroi / 2)\n", "\n", " extrude(amount=-(bac_hauteur - epaisseur_paroi), mode=Mode.SUBTRACT)\n", "\n", @@ -407,7 +430,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "++++\n" + "++c+\n" ] } ],