From 6cf70b9ae218ff1625bf9aeb7e0fd8fc13bf366d Mon Sep 17 00:00:00 2001 From: bklronin Date: Sun, 13 Apr 2025 16:40:54 +0200 Subject: [PATCH] - Fixed redraw when component changed --- doc/flow.md | 2 +- main.py | 36 +++++++++++++++++++----------------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/doc/flow.md b/doc/flow.md index b7b9690..613ac32 100644 --- a/doc/flow.md +++ b/doc/flow.md @@ -32,4 +32,4 @@ So far these are the elements: - Code: A special type that directly builds bodys from sdfCAD code. - Body: The 3D meshed result from sdfCAD - Sketch: The base to draw new entities. -- Interactor: A special component mesh that is used to manipulate the bodys in 3d view. \ No newline at end of file +- Interactor (edges): A special component mesh that is used to manipulate the bodys in 3d view. \ No newline at end of file diff --git a/main.py b/main.py index b8fcddc..edc4842 100644 --- a/main.py +++ b/main.py @@ -285,7 +285,7 @@ class MainWindow(QMainWindow): # Register sketch to timeline ### Add selection compo here compo_id = self.get_activated_compo() - print("newsketch_name", sketch.id) + #print("newsketch_name", sketch.id) self.project.timeline[compo_id].sketches[sketch.id] = sketch # Add Item to slection menu @@ -299,6 +299,7 @@ class MainWindow(QMainWindow): self.ui.sketch_list.setCurrentItem(items) def on_compo_change(self): + '''This function redraws the sdf and helper mesh from available bodies and adds the names back to the list entries''' self.custom_3D_Widget.clear_body_actors() self.custom_3D_Widget.clear_actors_interactor() self.custom_3D_Widget.clear_actors_projection() @@ -308,27 +309,27 @@ class MainWindow(QMainWindow): self.ui.sketch_list.clear() self.ui.body_list.clear() - print("id", compo_id) - print("sketch_registry", self.project.timeline[compo_id].sketches) + #print("id", compo_id) + #print("sketch_registry", self.project.timeline[compo_id].sketches) for sketch in self.project.timeline[compo_id].sketches: - print(sketch) + #print(sketch) self.ui.sketch_list.addItem(sketch) for body in self.project.timeline[compo_id].bodies: self.ui.body_list.addItem(body) - if self.project.timeline[compo_id].bodies: - item = self.ui.body_list.findItems(body , Qt.MatchExactly)[0] - self.ui.body_list.setCurrentItem(item) - self.draw_mesh() + if self.project.timeline[compo_id].bodies: + item = self.ui.body_list.findItems(body , Qt.MatchExactly)[0] + self.ui.body_list.setCurrentItem(item) + self.draw_mesh() - selected = self.ui.body_list.currentItem() - name = selected.text() + selected = self.ui.body_list.currentItem() + name = selected.text() - edges = self.project.timeline[compo_id].bodies[name].interactor.edges - offset_vec = self.project.timeline[compo_id].bodies[name].interactor.offset_vector - self.custom_3D_Widget.load_interactor_mesh(edges, offset_vec) + edges = self.project.timeline[compo_id].bodies[name].interactor.edges + offset_vec = self.project.timeline[compo_id].bodies[name].interactor.offset_vector + self.custom_3D_Widget.load_interactor_mesh(edges, offset_vec) def edit_sketch(self): selected = self.ui.sketch_list.currentItem() @@ -382,7 +383,7 @@ class MainWindow(QMainWindow): model_data = vesta.generate_mesh_from_sdf(model, resolution=64, threshold=0) vertices, faces = model_data - vesta.save_mesh_as_stl(vertices, faces, 'test.stl') + #vesta.save_mesh_as_stl(vertices, faces, 'test.stl') self.custom_3D_Widget.render_from_points_direct_with_faces(vertices, faces) def on_item_changed(self, current_item, previous_item): @@ -426,8 +427,9 @@ class MainWindow(QMainWindow): #print(sketch) points = sketch.sdf_points + # detect loop that causes problems in mesh generation if points[-1] == points[0]: - #detect loop that causes problems in mesh generation + print("overlap") del points[-1] dialog = ExtrudeDialog(self) @@ -446,8 +448,8 @@ class MainWindow(QMainWindow): centroid = self.custom_3D_Widget.centroid if centroid is None: centroid = [0, 0, 0] - else: - centroid = list(centroid) + """else: + centroid = list(centroid)""" #print("This centroid ", centroid) sketch.origin = centroid