camper/Camper.ipynb

370 lines
11 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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
}