Initial commit: QInventor CAD workbench for Windows
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import sys, os, json, traceback
|
||||
import FreeCAD as App
|
||||
import FreeCADGui as Gui
|
||||
from PySide import QtCore, QtGui, QtWidgets
|
||||
from PySide6 import QtTest
|
||||
ROOT = os.path.abspath(os.environ.get('QI_ROOT') or os.getcwd())
|
||||
sys.path.insert(0, ROOT + '/src/QInventor')
|
||||
sys.path.insert(0, ROOT + '/tests')
|
||||
os.environ['QI_TEST'] = 'ribbon'
|
||||
|
||||
def probe():
|
||||
result = {}
|
||||
try:
|
||||
Gui.activateWorkbench('QInventorWorkbench')
|
||||
main = Gui.getMainWindow()
|
||||
main.resize(1440, 940)
|
||||
main.show()
|
||||
main.activateWindow()
|
||||
import qi_model, qi_commands, qi_ui
|
||||
doc = qi_model.new_part('Проба Qt')
|
||||
old = qi_ui.choose_plane
|
||||
qi_ui.choose_plane = lambda: 'XY'
|
||||
try:
|
||||
qi_commands._new_sketch()
|
||||
finally:
|
||||
qi_ui.choose_plane = old
|
||||
QtWidgets.QApplication.processEvents()
|
||||
QtTest.QTest.qWait(500)
|
||||
result['gui_command_api'] = {n: str(getattr(Gui, n)) for n in dir(Gui) if 'Command' in n}
|
||||
result['gui_command_dir'] = dir(Gui.Command) if hasattr(Gui, 'Command') else []
|
||||
if hasattr(Gui, 'Command'):
|
||||
try:
|
||||
item = Gui.Command.get('Sketcher_Dimension')
|
||||
result['command'] = {'repr': str(item), 'dir': dir(item), 'info': item.getInfo()}
|
||||
action = item.getAction()
|
||||
result['command_action'] = {'repr':str(action), 'type':str(type(action)), 'dir':dir(action), 'is_active':item.isActive(), 'shortcut_doc':item.setShortcut.__doc__, 'action_doc':item.getAction.__doc__}
|
||||
result['native_info'] = {n:Gui.Command.get(n).getInfo() for n in ['Sketcher_NewSketch','Sketcher_CreatePolyline','Sketcher_CreateLine','Sketcher_CreateRectangle','Sketcher_CreateCircle','Sketcher_CreateArc','Sketcher_Dimension','Sketcher_ConstrainHorizontal','Sketcher_ConstrainVertical','Sketcher_ConstrainCoincident','Sketcher_ConstrainParallel','Sketcher_ConstrainPerpendicular','Sketcher_ConstrainEqual','Sketcher_ConstrainTangent','Sketcher_ConstrainBlock','Sketcher_ToggleConstruction','Sketcher_Trimming','Part_Box','Part_Cylinder','Std_New','Std_Open','Std_Save','Std_Export','Std_ViewFitAll','Assembly_CreateAssembly','Spreadsheet_NewSheet','TechDraw_PageDefault','TechDraw_View','TechDraw_ProjectionGroup'] if n in Gui.listCommands()}
|
||||
result['gui_icon_api'] = {n:str(getattr(Gui,n)) for n in dir(Gui) if 'icon' in n.lower()}
|
||||
except Exception:
|
||||
result['command_error'] = traceback.format_exc()
|
||||
result['widgets'] = [{'name': w.objectName(), 'class': w.metaObject().className(), 'size': [w.width(),w.height()], 'visible':w.isVisible()} for w in main.findChildren(QtWidgets.QWidget) if ('quarter' in w.metaObject().className().lower() or 'view' in w.objectName().lower())]
|
||||
result['large_widgets'] = [{'name':w.objectName(),'class':w.metaObject().className(),'size':[w.width(),w.height()],'parent':w.parent().metaObject().className() if w.parent() else None} for w in main.findChildren(QtWidgets.QWidget) if w.isVisible() and w.width()>300 and w.height()>250]
|
||||
result['active_view_methods'] = dir(Gui.activeDocument().activeView())
|
||||
result['actions'] = [{'name': a.objectName(), 'text': a.text(), 'shortcuts':[s.toString() for s in a.shortcuts()], 'enabled':a.isEnabled()} for a in main.findChildren(QtGui.QAction) if ('Sketcher_Dimension' in a.objectName() or 'Std_New' in a.objectName() or 'QI_' in a.objectName())]
|
||||
result['session'] = {'key': qi_commands._SKETCH_SESSION['key'], 'content':type(qi_commands._SKETCH_SESSION['content']).__name__}
|
||||
result['pyside'] = __import__('PySide').__version__
|
||||
main.grab().save(ROOT + '/artifacts/ribbon-probe.png')
|
||||
qi_commands._cancel_sketch()
|
||||
result['cancel_new'] = len([o for o in doc.Objects if o.isDerivedFrom('Sketcher::SketchObject')]) == 0
|
||||
except Exception:
|
||||
result['error'] = traceback.format_exc()
|
||||
with open(ROOT + '/artifacts/ribbon-probe.json','w',encoding='utf-8') as stream:
|
||||
json.dump(result,stream,ensure_ascii=False,indent=2,default=str)
|
||||
for docname in list(App.listDocuments()):
|
||||
App.closeDocument(docname)
|
||||
Gui.getMainWindow().close()
|
||||
|
||||
QtCore.QTimer.singleShot(1800, probe)
|
||||
Reference in New Issue
Block a user