66 lines
3.7 KiB
Plaintext
66 lines
3.7 KiB
Plaintext
import os, sys, json, traceback
|
|
import FreeCAD as App
|
|
import FreeCADGui as Gui
|
|
from PySide import QtCore, QtGui, QtWidgets
|
|
from PySide6 import QtTest
|
|
from PySide6 import QtOpenGLWidgets
|
|
ROOT = os.path.abspath(os.environ.get('QI_ROOT') or os.getcwd())
|
|
sys.path.insert(0, os.path.join(ROOT, 'src', 'QInventor'))
|
|
os.environ['QI_TEST'] = 'camera'
|
|
App.ParamGet('User parameter:BaseApp/Preferences/View').SetString('NavigationStyle', 'Gui::RevitNavigationStyle')
|
|
|
|
def run():
|
|
rows=[]
|
|
try:
|
|
Gui.activateWorkbench('QInventorWorkbench')
|
|
import qi_ui, qi_commands, qi_model
|
|
main=Gui.getMainWindow(); main.resize(1440,940); main.hide(); main.showNormal(); main.raise_(); main.activateWindow()
|
|
QtTest.QTest.qWaitForWindowExposed(main.windowHandle(),5000)
|
|
for force in [False, True]:
|
|
App.ParamGet('User parameter:BaseApp/Preferences/Mod/Sketcher/General').SetBool('ForceOrtho',force)
|
|
doc=qi_model.new_part('Проверка камеры')
|
|
body=doc.addObject('PartDesign::Body','Body')
|
|
sketch=body.newObject('Sketcher::SketchObject','Sketch')
|
|
doc.recompute()
|
|
Gui.activeDocument().setEdit(sketch.Name)
|
|
QtTest.QTest.qWait(1400)
|
|
view=Gui.activeDocument().activeView()
|
|
row={'force':force,'camera':view.getCamera(),'viewer_type':str(type(view.getViewer())), 'viewer_dir':dir(view.getViewer())}
|
|
row['exposed']=main.windowHandle().isExposed()
|
|
rows.append(row)
|
|
manager=view.getViewer().getSoRenderManager()
|
|
row['auto_clip']=manager.getAutoClipping()
|
|
row['auto_redraw']=manager.isAutoRedraw()
|
|
row['viewport']=str(manager.getViewportRegion().getViewportSizePixels().getValue())
|
|
row['manager_graph']=str(manager.getSceneGraph())
|
|
row['manager_camera']=str(manager.getCamera())
|
|
graph=view.getSceneGraph()
|
|
row['root_children']=[str(graph.getChild(i).getTypeId().getName()) for i in range(graph.getNumChildren())]
|
|
root=sketch.ViewObject.RootNode
|
|
row['edit_children']=[str(root.getChild(i).getTypeId().getName()) for i in range(root.getNumChildren())]
|
|
gl=[w for w in main.findChildren(QtWidgets.QWidget) if w.isVisible() and w.metaObject().className()=='QOpenGLWidget' and w.parent().metaObject().className()=='Gui::View3DInventorViewer'][0]
|
|
row['gl_valid']=gl.isValid()
|
|
row['gl_context_valid']=gl.context().isValid() if gl.context() else None
|
|
row['gl_geometry']=[gl.width(),gl.height()]
|
|
main.grab().save(os.path.join(ROOT,'artifacts','camera-%s.png'%force))
|
|
Gui.runCommand('Sketcher_CreateRectangle')
|
|
QtTest.QTest.qWait(200)
|
|
for x,y in [(.25,.65),(.42,.35)]:
|
|
pt=QtCore.QPoint(int(gl.width()*x),int(gl.height()*y))
|
|
QtGui.QCursor.setPos(gl.mapToGlobal(pt))
|
|
QtTest.QTest.mouseMove(gl,pt); QtTest.QTest.qWait(80)
|
|
QtTest.QTest.mouseClick(gl,QtCore.Qt.LeftButton,QtCore.Qt.NoModifier,pt)
|
|
QtTest.QTest.qWait(120)
|
|
row['geometry']=sketch.GeometryCount
|
|
QtTest.QTest.keyClick(gl,QtCore.Qt.Key_Escape)
|
|
Gui.runCommand('Sketcher_LeaveSketch')
|
|
App.closeDocument(doc.Name)
|
|
except Exception:
|
|
rows.append({'error':traceback.format_exc()})
|
|
with open(os.path.join(ROOT,'artifacts','camera-probe.json'),'w',encoding='utf-8') as f:
|
|
json.dump(rows,f,indent=2,ensure_ascii=False,default=str)
|
|
for n in list(App.listDocuments()):App.closeDocument(n)
|
|
Gui.getMainWindow().close()
|
|
QtCore.QTimer.singleShot(100,QtCore.QCoreApplication.quit)
|
|
QtCore.QTimer.singleShot(5000,run)
|