@ -6,8 +6,8 @@
"metadata": {
"metadata": {
"collapsed": true,
"collapsed": true,
"ExecuteTime": {
"ExecuteTime": {
"end_time": "2026-05-12T16:07:33.781803143 Z",
"end_time": "2026-05-12T22:59:12.711790474 Z",
"start_time": "2026-05-12T16:07:26.817563805 Z"
"start_time": "2026-05-12T22:59:04.480803556 Z"
}
}
},
},
"source": [
"source": [
@ -77,10 +77,10 @@
"bac_hauteur = 100.0 # mm\n",
"bac_hauteur = 100.0 # mm\n",
"\n",
"\n",
"# Fixations couvercle\n",
"# Fixations couvercle\n",
"vis_diam = 4 + 0. 1\n",
"vis_diam = 4 + 1\n",
"vis_longueur = 40\n",
"vis_longueur = 40\n",
"vis_profondeur_trou_bloc = vis_longueur - couvercle_epaisseur\n",
"vis_profondeur_trou_bloc = vis_longueur - couvercle_epaisseur\n",
"vis_ecrou_diam = 7 + 0.15 \n",
"vis_ecrou_diam = 7 + 2 \n",
"vis_ecrou_hauteur = 3.2 + 0.15\n",
"vis_ecrou_hauteur = 3.2 + 0.15\n",
"\n",
"\n",
"# Fixation couplage des deux sous-parties du bloc extrudeur\n",
"# Fixation couplage des deux sous-parties du bloc extrudeur\n",
@ -116,12 +116,12 @@
"cav_y = 0\n",
"cav_y = 0\n",
"\n",
"\n",
"# Bac\n",
"# Bac\n",
"bac_ext_x = bloc_extrudeur_ext_x + 2 * ( epaisseur_paroi + emboitement_jeu) \n",
"bac_ext_x = bloc_extrudeur_ext_x + epaisseur_paroi + 2 * emboitement_jeu\n",
"bac_ext_y = bloc_extrudeur_ext_y + 2 * ( epaisseur_paroi + emboitement_jeu) \n",
"bac_ext_y = bloc_extrudeur_ext_y + epaisseur_paroi + 2 * emboitement_jeu\n",
"\n",
"\n",
"# Couvercle\n",
"# Couvercle\n",
"couv_ext_x = bloc_extrudeur_ext_x + 2 * ( epaisseur_paroi + emboitement_jeu) \n",
"couv_ext_x = bloc_extrudeur_ext_x + epaisseur_paroi + 2 * emboitement_jeu\n",
"couv_ext_y = bloc_extrudeur_ext_y + 2 * ( epaisseur_paroi + emboitement_jeu) \n",
"couv_ext_y = bloc_extrudeur_ext_y + epaisseur_paroi + 2 * emboitement_jeu\n",
"couv_ext_z = couvercle_epaisseur + emboitement_profondeur\n",
"couv_ext_z = couvercle_epaisseur + emboitement_profondeur\n",
"\n",
"\n",
"offset_couv = epaisseur_paroi + emboitement_jeu\n",
"offset_couv = epaisseur_paroi + emboitement_jeu\n",
@ -284,7 +284,7 @@
" y_offsets = (bloc_extrudeur_ext_y / 2 - epaisseur_paroi / 2,\n",
" y_offsets = (bloc_extrudeur_ext_y / 2 - epaisseur_paroi / 2,\n",
" -(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 * 2,\n",
" - bloc_extrudeur_ext_x / 2 + epaisseur_paroi * 2 )\n",
" - bloc_extrudeur_ext_x / 2 + epaisseur_paroi * 3 )\n",
" sockets_offsets = list(product(x_offsets, y_offsets))\n",
" sockets_offsets = list(product(x_offsets, y_offsets))\n",
" with BuildPart() as p_top:\n",
" with BuildPart() as p_top:\n",
" add(top)\n",
" add(top)\n",
@ -297,6 +297,10 @@
" with Locations(sockets_offsets):\n",
" with Locations(sockets_offsets):\n",
" Rectangle(encoche_longueur, encoche_largueur)\n",
" Rectangle(encoche_longueur, encoche_largueur)\n",
" extrude(amount=encoche_profondeur, mode=Mode.SUBTRACT)\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",
" chamfer(top_edges, length=1)\n",
"\n",
"\n",
" with BuildPart() as p_bottom:\n",
" with BuildPart() as p_bottom:\n",
" add(bottom)\n",
" add(bottom)\n",
@ -307,8 +311,8 @@
" )\n",
" )\n",
" with BuildSketch(top_plane):\n",
" with BuildSketch(top_plane):\n",
" with Locations(sockets_offsets):\n",
" with Locations(sockets_offsets):\n",
" Rectangle(encoche_longueur - 0.4, encoche_largueur - 0.4 )\n",
" Rectangle(encoche_longueur - 0.3, encoche_largueur - 0.3 )\n",
" extrude(amount=encoche_profondeur - 0.2 , mode=Mode.ADD)\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, maximum= top_plane.origin.Z + encoche_profondeur * 2)\n",
" chamfer(top_edges, length=1)\n",
" chamfer(top_edges, length=1)\n",
"\n",
"\n",
@ -333,14 +337,16 @@
" with BuildSketch(top_face) as sk:\n",
" with BuildSketch(top_face) as sk:\n",
" # Position relative au centre de la face (origine du sketch)\n",
" # Position relative au centre de la face (origine du sketch)\n",
" with Locations(Location((0, 0))):\n",
" with Locations(Location((0, 0))):\n",
" Rectangle(bac_ext_x - 2 * epaisseur_paroi, bac_ext_y - 2 * epaisseur_paroi)\n",
" Rectangle(bloc_extrudeur_ext_x + emboitement_jeu * 2,\n",
" bloc_extrudeur_ext_y + emboitement_jeu * 2)\n",
"\n",
"\n",
" extrude(amount=-emboitement_profondeur, mode=Mode.SUBTRACT)\n",
" extrude(amount=-emboitement_profondeur, mode=Mode.SUBTRACT)\n",
"\n",
"\n",
" with BuildSketch(top_face) as sk:\n",
" with BuildSketch(top_face) as sk:\n",
" # Position relative au centre de la face (origine du sketch)\n",
" # Position relative au centre de la face (origine du sketch)\n",
" with Locations(Location((0, 0))):\n",
" with Locations(Location((0, 0))):\n",
" Rectangle(bac_ext_x - 3 * epaisseur_paroi, bac_ext_y - 3 * epaisseur_paroi)\n",
" Rectangle(bloc_extrudeur_ext_x - epaisseur_paroi /2,\n",
" bloc_extrudeur_ext_y - epaisseur_paroi /2)\n",
"\n",
"\n",
" extrude(amount=-(bac_hauteur - epaisseur_paroi), mode=Mode.SUBTRACT)\n",
" extrude(amount=-(bac_hauteur - epaisseur_paroi), mode=Mode.SUBTRACT)\n",
"\n",
"\n",
@ -361,7 +367,8 @@
" with BuildSketch(bottom_face) as sk:\n",
" with BuildSketch(bottom_face) as sk:\n",
" # Position relative au centre de la face (origine du sketch)\n",
" # Position relative au centre de la face (origine du sketch)\n",
" with Locations(Location((0, 0))):\n",
" with Locations(Location((0, 0))):\n",
" Rectangle(couv_ext_x - 2 * epaisseur_paroi, couv_ext_y - 2 * epaisseur_paroi, )\n",
" Rectangle(bloc_extrudeur_ext_x + emboitement_jeu * 2,\n",
" bloc_extrudeur_ext_y + emboitement_jeu * 2)\n",
" extrude(amount=-emboitement_profondeur, mode=Mode.SUBTRACT)\n",
" extrude(amount=-emboitement_profondeur, mode=Mode.SUBTRACT)\n",
"\n",
"\n",
" # 3. Ouverture rectangulaire centrée sur la cavité\n",
" # 3. Ouverture rectangulaire centrée sur la cavité\n",
@ -400,35 +407,38 @@
"name": "stdout",
"name": "stdout",
"output_type": "stream",
"output_type": "stream",
"text": [
"text": [
"c+c +\n"
"+++ +\n"
]
]
}
}
],
],
"execution_count": 14
"execution_count": 19
},
},
{
{
"metadata": {
"metadata": {
"ExecuteTime": {
"ExecuteTime": {
"end_time": "2026-05-09T14:28:52.711328232 Z",
"end_time": "2026-05-12T23:02:00.063069947 Z",
"start_time": "2026-05-09T14:28:52.689567682 Z"
"start_time": "2026-05-12T23:01:52.552843497 Z"
}
}
},
},
"cell_type": "code",
"cell_type": "code",
"source": "make_brake_formed",
"source": [
"full = Compound(children=[make_couvercle(), make_bac_recup(), make_bloc_extrudeur()])\n",
"export_step(full, \"/tmp/tractotine.step\")"
],
"id": "810fb3a101c2fccd",
"id": "810fb3a101c2fccd",
"outputs": [
"outputs": [
{
{
"data": {
"data": {
"text/plain": [
"text/plain": [
"234.5 "
"True "
]
]
},
},
"execution_count": 111 ,
"execution_count": 20 ,
"metadata": {},
"metadata": {},
"output_type": "execute_result"
"output_type": "execute_result"
}
}
],
],
"execution_count": 111
"execution_count": 20
}
}
],
],
"metadata": {
"metadata": {