370 lines
11 KiB
Plaintext
370 lines
11 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"id": "0a626b10-f8c1-4fa1-a186-71d6f989e162",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Overwriting auto display for cadquery Workplane and Shape\n",
|
||
"Overwriting auto display for build123d BuildPart, BuildSketch, BuildLine, ShapeList\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from build123d import *\n",
|
||
"\n",
|
||
"from jupyter_cadquery import show, show_all,open_viewer, show_clear\n",
|
||
"\n",
|
||
"from IPython.display import display\n",
|
||
"import ipywidgets as widgets\n",
|
||
"\n",
|
||
"from snippets_panel import show_snippet_panel"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"id": "51e61e11-473c-492c-9b2b-4504dadfa938",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "5edd1cdb172b42abb9247da9bd5e859e",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
"Dropdown(description='Snippet:', options=('-- wybierz snippet --', '📥 Start', '🧲 Import STEP', '🖥️ view'), val…"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"show_snippet_panel()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"id": "67a54d02-2fd4-4f9a-8391-64e8617a5aef",
|
||
"metadata": {
|
||
"jupyter": {
|
||
"source_hidden": true
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"#cv = open_viewer(\"Build123d\", anchor=\"split-bottom\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"id": "cd726fcd-9dea-4a0d-9710-519b45a58f88",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#cv = open_viewer(\"Build123d\", anchor=\"right\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"id": "8521687b-c556-461d-b0ff-4d861806a762",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "e4759fe05e6641bd838a1d77bd76e614",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
"HBox(children=(Button(description='Viewer dół', style=ButtonStyle()), Button(description='Viewer prawo', style…"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
" \n",
|
||
"cv = None # viewer globalny\n",
|
||
"\n",
|
||
"def open_bottom(b):\n",
|
||
" global cv\n",
|
||
" print(\"Otwieram viewer (split-bottom)\")\n",
|
||
" cv = open_viewer(\"Build123d\", anchor=\"split-bottom\")\n",
|
||
"\n",
|
||
"def open_right(b):\n",
|
||
" global cv\n",
|
||
" print(\"Otwieram viewer (right)\")\n",
|
||
" cv = open_viewer(\"Build123d\", anchor=\"right\")\n",
|
||
"\n",
|
||
"# Przycisk 1 – bottom\n",
|
||
"btn_bottom = widgets.Button(description=\"Viewer dół\")\n",
|
||
"btn_bottom.on_click(open_bottom)\n",
|
||
"\n",
|
||
"# Przycisk 2 – right\n",
|
||
"btn_right = widgets.Button(description=\"Viewer prawo\")\n",
|
||
"btn_right.on_click(open_right)\n",
|
||
"\n",
|
||
"# Wyświetl przyciski\n",
|
||
"display(widgets.HBox([btn_bottom, btn_right]))\n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"id": "b7afe8de-f86e-4a84-91c2-1321d247f20e",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "cd3fbdb82a2648078f14548d5df544c7",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
"Button(description='open/closed', style=ButtonStyle())"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"podnies_karnister = False\n",
|
||
"otwarta_szuflada = True\n",
|
||
"\n",
|
||
"# Funkcja przełączająca wartość\n",
|
||
"def toggle_szuflada(change):\n",
|
||
" global otwarta_szuflada\n",
|
||
" otwarta_szuflada = not otwarta_szuflada\n",
|
||
"\n",
|
||
"button = widgets.Button(description=\"open/closed\")\n",
|
||
"button.on_click(toggle_szuflada)\n",
|
||
"display(button)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 105,
|
||
"id": "177fa70e-22e7-4c1e-823f-faf4b807a78c",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"comet_up = import_step(\"./cometup.step\")\n",
|
||
"comet_down = import_step(\"./cometdown.step\")\n",
|
||
"comet_up.color = Color(117/255,117/255,117/255)\n",
|
||
"comet_down.color = Color(117/255,117/255,117/255)\n",
|
||
"okranik = comet_up.move(Location((-1165.250-130,150+30,546.500-24-17.50-7.5),((0,0,-0))))\n",
|
||
"zkranik = comet_down.move(Location((-1165.250-130+1100,150+30,546.500-24-17.50-7.5),((0,0,-0))))\n",
|
||
"\n",
|
||
"# zawias = import_step(\"./zawias.step\")\n",
|
||
"# zawias.color = Color(\"black\")\n",
|
||
"\n",
|
||
"# zawias1 = import_step(\"./hinge1.STEP\")\n",
|
||
"# zawias1 = zawias1.move(Location((-80/4,0,wys+6.3),(90,90,0)))\n",
|
||
"# zawias2 = import_step(\"./hinge2.STEP\")\n",
|
||
"# zawias2 = zawias2.move(Location((-80/4,26+4,wys+10-0.5),(90,90,180)))\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 142,
|
||
"id": "0859af03-2222-4b9d-b6fe-04bbc2794516",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"cccccccc+\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"\n",
|
||
"# Wymiary szkieletu boxa (mm)\n",
|
||
"\n",
|
||
"dl = 1800\n",
|
||
"sz = 570.5\n",
|
||
"wys = 560\n",
|
||
"profil = 30\n",
|
||
"profil_3060 = 60 \n",
|
||
"sklejka = 15\n",
|
||
"prowadnica = 19\n",
|
||
"\n",
|
||
"# Wymiary karnistra\n",
|
||
"dl_k = 360\n",
|
||
"sz_k = 500\n",
|
||
"wys_k = 230\n",
|
||
"\n",
|
||
"\n",
|
||
"# Wymiary Skrzyni\n",
|
||
"dl_sz = 1100\n",
|
||
"sz_sz = sz - (2*profil)\n",
|
||
"wys_sz = wys - profil - 50\n",
|
||
"\n",
|
||
"# wymiary zlewu\n",
|
||
"\n",
|
||
"dl_z = 320\n",
|
||
"sz_z = 260\n",
|
||
"wys_z = 150\n",
|
||
"odstep_zlewu_od_konca = 260\n",
|
||
"\n",
|
||
"dl_sklejki = dl-dl_sz\n",
|
||
"deska = 80\n",
|
||
"\n",
|
||
"\n",
|
||
"with BuildPart() as szkielet:\n",
|
||
" with Locations((0,-sz/2 + profil/2,0)):\n",
|
||
" # Poziome\n",
|
||
" with Locations((0, 0, profil/2), (0, sz - profil, profil/2)):\n",
|
||
" Box(dl-(2*profil), profil, 60)\n",
|
||
" with Locations((0, 0, wys - profil), (0, sz - profil, wys - profil)):\n",
|
||
" Box(dl-(2*profil), profil, profil)\n",
|
||
" # Pionowe\n",
|
||
" with Locations((dl/2-(profil/2),0,wys/2-(profil/2)),(dl/2-(profil/2),sz-(profil),wys/2-(profil/2))):\n",
|
||
" Box(profil,profil,wys)\n",
|
||
" with Locations((-dl/2+(profil/2),0,wys/2-(profil/2)),(-dl/2+(profil/2),sz-(profil),wys/2-(profil/2))):\n",
|
||
" Box(profil,profil,wys)\n",
|
||
" # Boczne\n",
|
||
" with Locations((dl/2-(profil/2),sz/2-(profil/2),0),(dl/2-(profil/2),sz/2-(profil/2),wys-(profil))):\n",
|
||
" Box(profil,sz-(2*profil),profil)\n",
|
||
" # sklejka pod karnister\n",
|
||
" with Locations((dl/2-dl_sklejki/2,0,0)):\n",
|
||
" Box(dl_sklejki,sz,sklejka)\n",
|
||
"\n",
|
||
"\n",
|
||
"szkielet.color = Color(178/255,178/255,178/255)\n",
|
||
"\n",
|
||
"\n",
|
||
"if podnies_karnister == True:\n",
|
||
" podnies_karnister = 600\n",
|
||
"else: \n",
|
||
" podnies_karnister = wys_k/2 + profil/2 + sklejka\n",
|
||
"\n",
|
||
"with BuildPart() as karnister:\n",
|
||
" with Locations((dl/2-dl_k/2-profil,0,podnies_karnister)):\n",
|
||
" Box(dl_k,sz_k,wys_k)\n",
|
||
" \n",
|
||
"karnister.part.color = Color(\"Blue\")\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"if otwarta_szuflada == True:\n",
|
||
" szuflada_stan = (-dl/2+dl_sz/2-dl_sz,0,wys/2-profil)\n",
|
||
"else:\n",
|
||
" szuflada_stan = (-dl/2+dl_sz/2,0,wys/2-profil)\n",
|
||
" \n",
|
||
"with BuildPart() as wyciecie:\n",
|
||
" with Locations(szuflada_stan):\n",
|
||
" with Locations((dl_sz/2 - sz_z/2 - odstep_zlewu_od_konca ,0,wys_sz/2-wys_z/2-sklejka/2+1)):\n",
|
||
" Box(sz_z,dl_z,wys_z)\n",
|
||
" to_edges = wyciecie.edges().filter_by(Axis.Z)\n",
|
||
" fillet(to_edges,radius=20)\n",
|
||
"\n",
|
||
"with BuildPart() as szuflada:\n",
|
||
" with Locations(szuflada_stan):\n",
|
||
" Box(dl_sz,sz_sz-(2*prowadnica),wys_sz)\n",
|
||
" offset(amount=-15, openings=szuflada.faces().filter_by(Axis.Z)[-1])\n",
|
||
" if otwarta_szuflada == True:\n",
|
||
" with Locations((-dl_sz/4,74.5,wys_sz/2+200-27.64)):\n",
|
||
" Box(dl_sz/2,sz_sz-2*prowadnica,sklejka, rotation=(-45,0,0))\n",
|
||
" with Locations((dl_sz/4,0,wys_sz/2)):\n",
|
||
" Box(dl_sz/2,sz_sz-2*prowadnica,sklejka)\n",
|
||
" else: \n",
|
||
" with Locations((-dl_sz/4,0,wys_sz/2)):\n",
|
||
" Box(dl_sz/2,sz_sz-2*prowadnica,sklejka)\n",
|
||
" with Locations((dl_sz/4,0,wys_sz/2)):\n",
|
||
" Box(dl_sz/2,sz_sz-2*prowadnica,sklejka)\n",
|
||
" with Locations((0,0,20)):\n",
|
||
" add(wyciecie,mode=Mode.SUBTRACT)\n",
|
||
" \n",
|
||
" \n",
|
||
"\n",
|
||
"\n",
|
||
"with BuildPart() as zlew:\n",
|
||
" with Locations(szuflada_stan):\n",
|
||
" with Locations((dl_sz/2 - sz_z/2 - odstep_zlewu_od_konca ,0,wys_sz/2-wys_z/2-sklejka/2+sklejka)):\n",
|
||
" Box(sz_z,dl_z,wys_z)\n",
|
||
" # with Locations(zlew.faces().last):\n",
|
||
" # Hole(10)\n",
|
||
" offset(amount=-10,openings=zlew.part.faces().filter_by(Axis.Z)[-1])\n",
|
||
" test = zlew.faces().last\n",
|
||
" with Locations((0,0,0)):\n",
|
||
" Hole(20)\n",
|
||
" to_edges = zlew.edges().filter_by(Axis.Z)\n",
|
||
" fillet(to_edges,radius=10)\n",
|
||
"\n",
|
||
" zlew.color = Color(114/255,114/255,114/255)\n",
|
||
"\n",
|
||
"# comet_up.move(Location((szuflada_stan)))\n",
|
||
" \n",
|
||
"\n",
|
||
"\n",
|
||
"# render_part(my_part.part) # jeśli używasz jupyter + ocp_vscode\n",
|
||
"\n",
|
||
"with BuildPart() as zabudowa_bed:\n",
|
||
" with Locations((0,sz/2-10,wys-5)):\n",
|
||
" Box(dl,20,20)\n",
|
||
" with Locations((0,-10,wys-5)):\n",
|
||
" with GridLocations(300,0,6,1):\n",
|
||
" Box(deska,sz-20,20)\n",
|
||
" with Locations((0,-10,wys-5)):\n",
|
||
" with GridLocations(300,0,5,1):\n",
|
||
" Box(deska,sz-20,20)\n",
|
||
"\n",
|
||
"\n",
|
||
"# show(szuflada,wyciecie)\n",
|
||
"# show(zlew)\n",
|
||
"# show_all()\n",
|
||
"if otwarta_szuflada == True:\n",
|
||
" show(szkielet,szuflada,karnister,zlew,okranik,zabudowa_bed)\n",
|
||
"else:\n",
|
||
" show(szkielet,szuflada,karnister,zlew,zkranik,zabudowa_bed)\n",
|
||
"\n",
|
||
"# show(comet_up)\n",
|
||
"#\n",
|
||
"# show(szkielet)\n",
|
||
"# show(zawias2)\n",
|
||
"# export_step(szkielet.part,\"./szkielet.step\")"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3 (ipykernel)",
|
||
"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.12.10"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|