Buckets:
| import cadquery as cq | |
| from trame.app import get_server | |
| from trame.ui.vuetify import SinglePageLayout | |
| from trame.widgets import vuetify, vtk as vtk_widgets | |
| # 1. Configuration du serveur Trame | |
| server = get_server() | |
| state, ctrl = server.state, server.controller | |
| # Valeur initiale de la taille de notre pièce | |
| state.box_size = 10 | |
| # 2. Logique de génération CAO (CadQuery) | |
| def generate_mesh(size): | |
| # On crée une boîte avec CadQuery et un trou au milieu | |
| result = ( | |
| cq.Workplane("XY") | |
| .box(size, size, size) | |
| .faces(">Z") | |
| .hole(size / 2) | |
| ) | |
| # On exporte en format polygone pour l'affichage (VTK) | |
| # Note : Dans un vrai projet, on utiliserait un convertisseur direct | |
| return result.toVtkPolyData() | |
| # 3. Mise à jour de la vue 3D | |
| def update_view(box_size, **kwargs): | |
| polydata = generate_mesh(box_size) | |
| ctrl.view_update(polydata) | |
| # 4. Interface Utilisateur (UI) avec Vuetify | |
| with SinglePageLayout(server) as layout: | |
| layout.title.set_text("Mon Mini-Onshape Python") | |
| with layout.sidebar: | |
| vuetify.VSlider( | |
| v_model=("box_size", 10), | |
| min=5, max=50, step=1, | |
| label="Taille de la boîte", | |
| classes="pa-4" | |
| ) | |
| vuetify.VBtn("Réinitialiser", click="box_size = 10", classes="ma-4") | |
| with layout.content: | |
| with vuetify.VContainer(fluid=True, classes="pa-0 fill-height"): | |
| # Fenêtre de rendu 3D | |
| view = vtk_widgets.VtkRemoteView(server) | |
| ctrl.view_update = view.update | |
| # 5. Lancement de l'application | |
| if __name__ == "__main__": | |
| server.start() |
Xet Storage Details
- Size:
- 1.64 kB
- Xet hash:
- 4c723b8ef16db3f20e13fdc21e6a248ab2f594e179cf6163bd7cfb0ec13d699f
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.