- Basic polygon to body
This commit is contained in:
77
main.py
77
main.py
@@ -1,8 +1,9 @@
|
||||
from PySide6.QtWidgets import QApplication, QMainWindow, QSizePolicy
|
||||
from Gui import Ui_fluencyCAD # Import the generated GUI module
|
||||
from modules.gl_widget import OpenGLWidget
|
||||
from drawing_modules.gl_widget import OpenGLWidget
|
||||
from drawing_modules.draw_widget2d import SnapLineWidget
|
||||
from sdf import *
|
||||
|
||||
import python_solvespace
|
||||
|
||||
class MainWindow(QMainWindow):
|
||||
def __init__(self):
|
||||
@@ -13,14 +14,40 @@ class MainWindow(QMainWindow):
|
||||
self.ui.setupUi(self)
|
||||
|
||||
self.openGLWidget = OpenGLWidget()
|
||||
self.openGLWidget.setParent(self.ui.gl_canvas)
|
||||
# Connect the resizeEvent of the parent widget to a function
|
||||
self.ui.gl_canvas.resizeEvent = self.glCanvasResized
|
||||
layout = self.ui.gl_box.layout()
|
||||
layout.addWidget(self.openGLWidget)
|
||||
size_policy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding)
|
||||
#self.openGLWidget.setSizePolicy(size_policy)
|
||||
|
||||
self.ui.pb_apply_code.pressed.connect(self.generate_mesh)
|
||||
self.sketchWidget = SnapLineWidget()
|
||||
layout2 = self.ui.sketch_tab.layout() # Get the layout of self.ui.gl_canvas
|
||||
layout2.addWidget(self.sketchWidget)
|
||||
size_policy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding)
|
||||
self.sketchWidget.setSizePolicy(size_policy)
|
||||
self.sketchWidget.setStyleSheet("background-color: white; border: 1px solid red;")
|
||||
|
||||
self.ui.pb_apply_code.pressed.connect(self.check_current_tab)
|
||||
|
||||
def check_current_tab(self):
|
||||
if self.ui.InputTab.currentIndex() == 0:
|
||||
self.generate_mesh_from_draw()
|
||||
elif self.ui.InputTab.currentIndex() == 1:
|
||||
self.generate_mesh_from_code()
|
||||
|
||||
def load_and_render(self, file, centroid):
|
||||
self.openGLWidget.draw_stl(file)
|
||||
self.openGLWidget.update()
|
||||
|
||||
|
||||
def generate_mesh(self):
|
||||
|
||||
class Geometry:
|
||||
def distance(self, p1, p2):
|
||||
"""Calculate the distance between two points."""
|
||||
print("p1", p1)
|
||||
print("p2", p2)
|
||||
return math.sqrt((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2)
|
||||
|
||||
def generate_mesh_from_code(self):
|
||||
code_bytes = self.ui.textEdit.toPlainText().encode('utf-8')
|
||||
code_text = code_bytes.decode('utf-8')
|
||||
save_string = "\nf.save('out.stl', samples=2**12)"
|
||||
@@ -39,12 +66,38 @@ class MainWindow(QMainWindow):
|
||||
except Exception as e:
|
||||
print("Error executing code:", e)
|
||||
|
||||
def generate_mesh_from_draw(self, points, ):
|
||||
f = None
|
||||
points = MainWindow().sketchWidget.points
|
||||
print(points)
|
||||
p_list = []
|
||||
dimension = 0.001
|
||||
for ps in points:
|
||||
p_list.append((ps.x() , ps.y()))
|
||||
|
||||
#p_list.append(p_list[0])
|
||||
print(p_list)
|
||||
f = polygon(p_list).extrude(100)
|
||||
|
||||
"""if len(points) > 3:
|
||||
p1 = [points[0].x(), points[0].y()]
|
||||
p2 = [points[1].x(), points[1].y()]
|
||||
dimension = self.distance(p1, p2)
|
||||
scale = 0.001
|
||||
f = box(dimension * scale)
|
||||
elif len(points) < 3:
|
||||
p1 = [points[0].x(), points[0].y()]
|
||||
p2 = [points[1].x(), points[1].y()]
|
||||
dimension = self.distance(p1, p2)
|
||||
scale = 0.001
|
||||
print(dimension * scale)
|
||||
f = sphere(dimension * scale)"""
|
||||
|
||||
if f:
|
||||
f.save('out.stl', samples=2**12, sparse=False)
|
||||
|
||||
|
||||
|
||||
def glCanvasResized(self, event):
|
||||
# Get the size of the gl_canvas
|
||||
canvas_size = self.ui.gl_canvas.size()
|
||||
# Resize the OpenGL widget to match the size of the gl_canvas
|
||||
self.openGLWidget.resize(canvas_size)
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = QApplication([])
|
||||
|
||||
Reference in New Issue
Block a user