X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=examples%2Fpymeshviewer.py;h=29e7f48e5b2d110a3c91652de943cc61d6675de7;hb=5ba11b5ad53ce8feccba2c2b916569237fef6bb5;hp=2063c8e12d6bda3679a6dd0025b9a724305e2fb9;hpb=a2aac66072e1037a90172a366f43beb5886cf245;p=meshio%2Fpymeshio.git diff --git a/examples/pymeshviewer.py b/examples/pymeshviewer.py index 2063c8e..29e7f48 100644 --- a/examples/pymeshviewer.py +++ b/examples/pymeshviewer.py @@ -2,12 +2,14 @@ # coding: utf-8 import sys +import os import tkinter import tkinter.filedialog import togl import opengl import opengl.rokuro -import triangle +import mqobuilder +import pmdbuilder class Frame(tkinter.Frame): @@ -20,26 +22,47 @@ class Frame(tkinter.Frame): self.master.config(menu=menu_bar) menu_file = tkinter.Menu(menu_bar, tearoff=False) - menu_bar.add_cascade(label='FILE', menu=menu_file, underline=0) + menu_bar.add_cascade(label='File', menu=menu_file, underline=0) menu_file.add_command(label='Open', under=0, command=self.onOpen) # setup opengl widget - self.glworld=opengl.BaseController(opengl.rokuro.RokuroView(25), triangle.Triangle(5)) - glwidget=togl.Widget(self, self.glworld, width=width, height=height) - glwidget.pack(fill=tkinter.BOTH, expand=True) + self.view=opengl.rokuro.RokuroView() + self.glworld=opengl.BaseController(self.view) + self.glwidget=togl.Widget(self, self.glworld, width=width, height=height) + self.glwidget.pack(fill=tkinter.BOTH, expand=True) # event binding self.bind('', self.onKeyDown) - self.bind('', lambda e: self.glworld.onWheel(-e.delta) and glwidget.onDraw()) + self.bind('', lambda e: self.glworld.onWheel(-e.delta) and self.glwidget.onDraw()) def onOpen(self): - filename=tkinter.filedialog.askopenfilename( + path=tkinter.filedialog.askopenfilename( filetypes=[ ('poloygon model files', '*.mqo;*.pmd'), ], initialdir=self.current) - print('open: %s' % filename) + self.current=os.path.dirname(path) + self.load(path) + + def load(self, path): + model=self.loadModel(path) + if not model: + print('fail to load %s' % path) + return + print('load %s' % path) + print(model) + self.glworld.setRoot(model) + bb=model.get_boundingbox() + print(bb) + self.view.look_bb(*bb) + self.glwidget.onDraw() + + def loadModel(self, path): + if path.lower().endswith(".mqo"): + return mqobuilder.build(path) + elif path.lower().endswith(".pmd"): + return pmdbuilder.build(path) def onKeyDown(self, event): key=event.keycode @@ -57,5 +80,7 @@ if __name__ == '__main__': f = Frame(width=600, height=600) f.pack(fill=tkinter.BOTH, expand=True) f.focus_set() + if len(sys.argv)>1: + f.load(sys.argv[1]) f.mainloop()