diff options
| author | Maurizio <madmau@hotmail.it> | 2023-07-29 15:51:33 +0200 |
|---|---|---|
| committer | Maurizio <madmau@hotmail.it> | 2023-07-29 15:51:33 +0200 |
| commit | 5154ff38bb1dc526a40c4197f4f47b50d163e217 (patch) | |
| tree | 667ebd5d7bb8764a92801ef6291ce2565fd5a631 | |
| parent | 815fd05b890c4ecc52a18b63a6dbb343cf10812b (diff) | |
Added command line parser
| -rw-r--r-- | functions.py | 20 | ||||
| -rw-r--r-- | main.py | 39 | ||||
| -rw-r--r-- | requirements.txt | bin | 184 -> 202 bytes |
3 files changed, 43 insertions, 16 deletions
diff --git a/functions.py b/functions.py index 04e21f6..ad583cd 100644 --- a/functions.py +++ b/functions.py @@ -5,27 +5,31 @@ import openmesh import re -def open_file(opengl_obj, obj_path, obj_name, uv_label, material_label, drawcalls_label, vertices_label, triangles_label, edges_label): +def open_file_ask(opengl_obj, obj_path, obj_name, uv_label, material_label, drawcalls_label, vertices_label, triangles_label, edges_label): file_name = QtWidgets.QFileDialog.getOpenFileName( None, 'Open file', '', "Mesh files (*.obj *.stl *.ply *.off *.om)") if not file_name[0]: return - mesh = openmesh.read_trimesh(file_name[0]) + open_file(file_name[0], opengl_obj, obj_path, obj_name, uv_label, material_label, drawcalls_label, vertices_label, triangles_label, edges_label) + + +def open_file(file_name, opengl_obj, obj_path, obj_name, uv_label, material_label, drawcalls_label, vertices_label, triangles_label, edges_label): + mesh = openmesh.read_trimesh(file_name) opengl_obj.set_mesh(mesh) set_name(file_name, obj_path, obj_name) set_file_info(mesh, vertices_label, triangles_label, edges_label) - _, file_extension = os.path.splitext(file_name[0]) + _, file_extension = os.path.splitext(file_name) file_format = file_extension.replace(".", "") if file_format == "obj": - has_uv(file_name[0], uv_label) - materials(file_name[0], material_label) - draw_calls(file_name[0], drawcalls_label) + has_uv(file_name, uv_label) + materials(file_name, material_label) + draw_calls(file_name, drawcalls_label) def set_name(file_name, obj_path, obj_name): - file_path = os.path.normpath(file_name[0]) - ob_name = os.path.basename(file_name[0]) + file_path = os.path.normpath(file_name) + ob_name = os.path.basename(file_name) obj_path.setText(file_path) obj_name.setText(ob_name) @@ -3,13 +3,14 @@ from PyQt5.QtGui import QIcon from OpenGL.GLUT import * from engine import QGLControllerWidget import functions as f +import argparse class MainWindow(QtWidgets.QMainWindow): def __init__(self): # Load UI file QtWidgets.QMainWindow.__init__(self) - uic.loadUi("resource/3DView02.ui", self) + uic.loadUi("%s/resource/3DView02.ui" % os.path.dirname(__file__), self) # Create openGL context self.openGL = QGLControllerWidget(self) @@ -20,15 +21,11 @@ class MainWindow(QtWidgets.QMainWindow): timer.start() # Load button - load_icon = QIcon("resource/load.png") + load_icon = QIcon("%s/resource/load.png" % os.path.dirname(__file__)) self.load_button.setIcon(load_icon) - def load_file(): - f.open_file(self.openGL, self.obj_path_label, self.obj_name_label, self.uv2_label, self.material_label, - self.drawcalls_label, self.vertices_label, self.triangles_label, self.edges_label) - - self.load_button.clicked.connect(load_file) - self.actionLoad.triggered.connect(load_file) + self.load_button.clicked.connect(self.load_file) + self.actionLoad.triggered.connect(self.load_file) # Menubar Buttons self.actionQuit.triggered.connect(lambda: f.exit_app()) @@ -59,9 +56,35 @@ class MainWindow(QtWidgets.QMainWindow): self.grid_slider.valueChanged.connect(lambda: f.change_slider(self.grid_slider, self.grid_slider_value, self.openGL, "grid")) self.grid_slider_value.textChanged.connect(lambda: f.update_slider(self.grid_slider, self.grid_slider_value)) + def load_file(self, scene=None): + if isinstance(scene, str): + f.open_file(scene, self.openGL, self.obj_path_label, self.obj_name_label, self.uv2_label, self.material_label, self.drawcalls_label, self.vertices_label, self.triangles_label, self.edges_label) + else: + f.open_file_ask(self.openGL, self.obj_path_label, self.obj_name_label, self.uv2_label, self.material_label, self.drawcalls_label, self.vertices_label, self.triangles_label, self.edges_label) + + +def get_parser(): + parser = argparse.ArgumentParser(description='3D Viewer', add_help=False) + + parser.add_argument('--version', action='version', version='%(prog)s 1.0') + + parser.add_argument('--scene', type=str, required=False, default=None, help='Scene to open') + + return parser + if __name__ == '__main__': + args = get_parser().parse_args() + app = QtWidgets.QApplication(sys.argv) win = MainWindow() win.show() + + if args.scene is not None: + if os.path.exists(args.scene): + QtCore.QCoreApplication.processEvents() + win.load_file(args.scene) + else: + print('File not found: "%s"' % args.scene) + sys.exit(app.exec_()) diff --git a/requirements.txt b/requirements.txt Binary files differindex d3c5d6b..9a24b5c 100644 --- a/requirements.txt +++ b/requirements.txt |
