camper/testy.ipynb

251 lines
9.8 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": 3,
"id": "d3c7da8b-6cb5-4f1c-8f89-f7f07742c08b",
"metadata": {},
"outputs": [],
"source": [
"from snippets_panel import show_snippet_panel"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "6b9e7de0-66d6-49cd-8935-c8dd3fcca18d",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d03f993365f64ff7bbbfb3b47955476f",
"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": 7,
"id": "2a686127-10fb-46ca-a1bf-463060dbadf5",
"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": [
"\n",
"from build123d import *\n",
"from jupyter_cadquery import show, show_all,open_viewer, show_clear\n",
"from IPython.display import display\n",
"import ipywidgets as widgets"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "b862c8ca-ecc7-4ea8-a26d-1cf2f5a08f23",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "6f1460081e7842b195ccebf7c1f0306d",
"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": 19,
"id": "530b84eb-9792-4117-bf83-cda7ab89c52e",
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "No objects to create a hull",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[19], line 34\u001b[0m\n\u001b[1;32m 31\u001b[0m Circle(pin_diameter \u001b[38;5;241m/\u001b[39m \u001b[38;5;241m2\u001b[39m)\n\u001b[1;32m 32\u001b[0m \u001b[38;5;66;03m# Przesunięcie okręgu do odpowiedniej pozycji na skrzydle\u001b[39;00m\n\u001b[1;32m 33\u001b[0m \u001b[38;5;66;03m# Pozycja jest na środku długości, przy krawędzi szerokości\u001b[39;00m\n\u001b[0;32m---> 34\u001b[0m \u001b[43mmake_face\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 35\u001b[0m s\u001b[38;5;241m.\u001b[39mvertices()\u001b[38;5;241m.\u001b[39mfilter_by_position(Axis\u001b[38;5;241m.\u001b[39mX, hinge_leaf_width \u001b[38;5;241m/\u001b[39m \u001b[38;5;241m2\u001b[39m, tolerance\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.1\u001b[39m)\u001b[38;5;241m.\u001b[39mmove(\n\u001b[1;32m 36\u001b[0m Location((hinge_leaf_width \u001b[38;5;241m/\u001b[39m \u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m0\u001b[39m))\n\u001b[1;32m 37\u001b[0m )\n\u001b[1;32m 38\u001b[0m \u001b[38;5;66;03m# Wycięcie otworu przez całą grubość skrzydła\u001b[39;00m\n",
"File \u001b[0;32m/usr/local/lib/python3.12/site-packages/build123d/operations_sketch.py:217\u001b[0m, in \u001b[0;36mmake_face\u001b[0;34m(edges, mode)\u001b[0m\n\u001b[1;32m 215\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo objects to create a face\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 216\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m outer_edges:\n\u001b[0;32m--> 217\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo objects to create a hull\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 218\u001b[0m validate_inputs(context, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmake_face\u001b[39m\u001b[38;5;124m\"\u001b[39m, outer_edges)\n\u001b[1;32m 220\u001b[0m pending_face \u001b[38;5;241m=\u001b[39m Face(Wire\u001b[38;5;241m.\u001b[39mcombine(outer_edges)[\u001b[38;5;241m0\u001b[39m])\n",
"\u001b[0;31mValueError\u001b[0m: No objects to create a hull"
]
}
],
"source": [
"# Importowanie niezbędnych modułów z build123d\n",
"from build123d import *\n",
"\n",
"# Definicja wymiarów zawiasu\n",
"# Szerokość każdej \"skrzydła\" zawiasu (części mocowanej do drzwi/ramy)\n",
"hinge_leaf_width = 30\n",
"# Długość każdej skrzydła\n",
"hinge_leaf_length = 60\n",
"# Grubość skrzydła\n",
"hinge_leaf_thickness = 3\n",
"# Średnica trzpienia (oś obrotu zawiasu)\n",
"pin_diameter = 4\n",
"# Długość trzpienia (nieco dłuższy niż całkowita długość segmentów zawiasu)\n",
"pin_length = hinge_leaf_length * 1.05\n",
"# Promień zaokrąglenia na krawędziach\n",
"radius = 1\n",
"\n",
"# Tworzenie pierwszej \"skrzydła\" zawiasu\n",
"with BuildPart() as hinge_leaf1:\n",
" # Szkic prostokąta, który będzie podstawą skrzydła\n",
" with BuildSketch() as s:\n",
" Rectangle(hinge_leaf_width, hinge_leaf_length)\n",
" # Zaokrąglenie rogów prostokąta\n",
" fillet(s.vertices(), radius)\n",
" # Wyciągnięcie szkicu, aby nadać mu grubość\n",
" extrude(amount=hinge_leaf_thickness)\n",
"\n",
" # Tworzenie otworu na trzpień w pierwszej skrzydle\n",
" with BuildSketch(Plane.XZ) as s:\n",
" # Rysowanie okręgu, który będzie otworem\n",
" Circle(pin_diameter / 2)\n",
" # Przesunięcie okręgu do odpowiedniej pozycji na skrzydle\n",
" # Pozycja jest na środku długości, przy krawędzi szerokości\n",
" make_face()\n",
" s.vertices().filter_by_position(Axis.X, hinge_leaf_width / 2, tolerance=0.1).move(\n",
" Location((hinge_leaf_width / 2, 0, 0))\n",
" )\n",
" # Wycięcie otworu przez całą grubość skrzydła\n",
" extrude(amount=-hinge_leaf_thickness, mode=Mode.SUBTRACT)\n",
"\n",
"# Tworzenie drugiej \"skrzydła\" zawiasu\n",
"# Jest identyczna jak pierwsza, więc możemy ją skopiować\n",
"hinge_leaf2 = hinge_leaf1.part.copy()\n",
"\n",
"# Tworzenie trzpienia zawiasu\n",
"with BuildPart() as pin:\n",
" # Szkic okręgu, który będzie podstawą trzpienia\n",
" with BuildSketch() as s:\n",
" Circle(pin_diameter / 2)\n",
" # Wyciągnięcie szkicu, aby nadać mu długość\n",
" extrude(amount=pin_length)\n",
"\n",
"# Montaż zawiasu\n",
"with BuildPart() as hinge_assembly:\n",
" # Dodanie pierwszej skrzydła do złożenia\n",
" add(hinge_leaf1.part)\n",
"\n",
" # Dodanie drugiej skrzydła\n",
" # Przesunięcie jej tak, aby była obok pierwszej, ale z odstępem na trzpień\n",
" # i obrócona o 180 stopni wokół osi Y, aby symulować złożenie zawiasu\n",
" add(hinge_leaf2, Location((0, 0, hinge_leaf_thickness + pin_diameter), (0, 1, 0), 180))\n",
"\n",
" # Dodanie trzpienia\n",
" # Pozycjonowanie trzpienia w otworach skrzydeł\n",
" add(pin.part, Location((hinge_leaf_width / 2, 0, (hinge_leaf_thickness + pin_diameter) / 2)))\n",
"\n",
"# Opcjonalnie: wyświetlenie modelu (jeśli używasz środowiska z wizualizacją)\n",
"# show(hinge_assembly) # Odkomentuj, jeśli chcesz wizualizować w środowisku build123d\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "ee62118f-0893-4002-ac93-4e7b017ab335",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"+\n"
]
},
{
"data": {
"text/plain": [
"<cad_viewer_widget.widget.CadViewer at 0x1552b223e6c0>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"show(my_part) # Powinien pokazać złożenie my_part"
]
}
],
"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
}