summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Rubin <119959756+alonrubintec@users.noreply.github.com>2023-07-29 19:36:05 +0300
committerGitHub <noreply@github.com>2023-07-29 19:36:05 +0300
commitd30bc2da629944b715a7823515fab56fda5b7391 (patch)
tree667ebd5d7bb8764a92801ef6291ce2565fd5a631
parent815fd05b890c4ecc52a18b63a6dbb343cf10812b (diff)
parent5154ff38bb1dc526a40c4197f4f47b50d163e217 (diff)
Merge pull request #1 from mauriziocasini/master
Added command line parser
-rw-r--r--functions.py20
-rw-r--r--main.py39
-rw-r--r--requirements.txtbin184 -> 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)
diff --git a/main.py b/main.py
index 1d62edb..53f21c5 100644
--- a/main.py
+++ b/main.py
@@ -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
index d3c5d6b..9a24b5c 100644
--- a/requirements.txt
+++ b/requirements.txt
Binary files differ