def __init__(self, backend_str=None, *args): used_backend = load_backend(backend_str) log.info("GUI backend set to: %s", used_backend) from OCC.Display.qtDisplay import qtViewer3d, qtBaseViewer # following couple of lines is a tweak to enable ipython --gui='qt' # checks if QApplication already exists self.app = QtWidgets.QApplication.instance() if not self.app: # create QApplication if it doesnt exist self.app = QtWidgets.QApplication(sys.argv) QtWidgets.QMainWindow.__init__(self, *args) self.canvas = qtViewer3d(self) self.setWindowTitle("pythonOCC-%s 3d viewer ('%s' backend)" % (VERSION, used_backend)) self.setCentralWidget(self.canvas) if sys.platform != 'darwin': self.menu_bar = self.menuBar() else: # create a parentless menubar # see: http://stackoverflow.com/questions/11375176/qmenubar-and-qmenu-doesnt-show-in-mac-os-x?lq=1 # noticeable is that the menu ( alas ) is created in the # top-left of the screen, just next to the apple icon # still does ugly things like showing the "Python" menu in bold self.menu_bar = QtWidgets.QMenuBar() self._menus = {} self._menu_methods = {} # place the window in the center of the screen, at half the # screen size self.centerOnScreen() # show time self.timer = QtCore.QTimer(self) self.timer.timeout.connect(self.time_draw) self.timer.start(500) # msec
def __init__(self, app, parent=None): super(Application, self).__init__(parent) self.ui = Ui_poccad() self.ui.setupUi(self) self.canvas = qtDisplay.qtViewer3d(self) self.ui.OCClayout.addWidget(self.canvas) self.canvas.resize(829, 739) self.canvas.InitDriver() self.display = self.canvas._display #ASSOCIATE Functions to display self.ui.render_button.clicked.connect(self.render_file) self.ui.isoview_button.clicked.connect(lambda: self.setview('Iso')) self.ui.topview_button.clicked.connect(lambda: self.setview('Top')) self.ui.leftview_button.clicked.connect(lambda: self.setview('Left')) self.ui.frontview_button.clicked.connect(lambda: self.setview('Front')) self.ui.rightview_button.clicked.connect(lambda: self.setview('Right')) self.ui.bottomview_button.clicked.connect( lambda: self.setview('Bottom')) self.ui.rearview_button.clicked.connect(lambda: self.setview('Rear')) self.ui.actionNew.triggered.connect(self.new_file) self.ui.actionOpen.triggered.connect(self.open_file) self.ui.actionSave.triggered.connect(self.save_file) self.ui.actionSave_as.triggered.connect(self.save_file_as) self.ui.actionExport.triggered.connect(self.export_file) self.ui.actionQuit.triggered.connect(self.quit) self.ui.actionAbout.triggered.connect(self.dialog_about) self.ui.actionUser_Guide.triggered.connect(self.user_guide_html) self.ui.actionBox.triggered.connect(self.makebox) self.ui.actionCylinder.triggered.connect(self.makecylinder) self.ui.actionSphere.triggered.connect(self.makesphere) self.ui.actionPoint.triggered.connect(self.drawpoint) self.ui.actionAxis.triggered.connect(self.drawaxis) self.ui.actionCut.triggered.connect(self.boolcut) self.ui.actionTranslate.triggered.connect(self.translate) self.ui.actionExportstep.triggered.connect(self.exportstep) self.changeviewval = 0 self.render = False self.initialize() self.ui.OCCedit.textChanged.connect(self.changetext) self.ui.treeWidget.customContextMenuRequested.connect( self.on_contextmenu_tree) self.popTreeMenu = QtWidgets.QMenu(self) self.popTreeMenu.addAction("double click to display in 'Consult' Tab") self.cwd = os.getcwd() self.load_project_structure(self.cwd, self.ui.treeWidget) self.ui.treeWidget.itemDoubleClicked.connect(self.show_consult) self.ui.treelayers.itemDoubleClicked.connect(self.change_layer_state) self.lauching()
def __init__(self, *args): QtWidgets.QMainWindow.__init__(self, *args) self.canva = qtViewer3d(self) self.setWindowTitle("pythonOCC-%s 3d viewer ('%s' backend)" % (VERSION, used_backend)) self.resize(size[0], size[1]) self.setCentralWidget(self.canva) if sys.platform != 'darwin': self.menu_bar = self.menuBar() else: self.menu_bar = QtWidgets.QMenuBar() self._menus = {} self._menu_methods = {} self.centerOnScreen()
def __init__(self, parent=None): super(OCCViewer, self).__init__(parent) ComponentMixin.__init__(self) self.canvas = qtViewer3d() self.canvas.sig_topods_selected.connect(self.handle_selection) self.create_actions(self) self.layout_ = layout(self, [ self.canvas, ], top_widget=self, margin=0) self.updatePreferences()
def __init__(self): super(InteractOCC, self).__init__() self.canvas = qtViewer3d() self.setCentralWidget(self.canvas) # add Ipython console as dockwidget consoleDock = QtGui.QDockWidget("console", self) consoleDock.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea | QtCore.Qt.RightDockWidgetArea) self.console = QIPythonWidget(customBanner="Welcome to play python-occ!\n",) consoleDock.setWidget(self.console) self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, consoleDock) # push occ display into variable of Ipython console self.console.pushVariables({"canvas": self.canvas})
def __init__(self, Topology=None, *args): super(Airconics_Viewgrid, self).__init__() # Create a blank topology object if one has not been provided if Topology: self._Topology = Topology else: self._Topology = Topology() # Matplotlib colour character (different for each instance) self.color = next(self.colors) grid = QtGui.QGridLayout(self) self.setLayout(grid) viewer = qtViewer3d(*args) viewer.setMinimumSize(200, 200) self.viewer = viewer grid.setSpacing(10) grid.setMargin(10) # Add the viewer spanning 3/4 of the width of the widget grid.addWidget(viewer, 0, 0, 1, 1) self.InitDataCanvas() # Add the canvas to a new VBox layout with a title data_group = QtGui.QGroupBox("Estimated Performance Metrics") data_box = QtGui.QVBoxLayout(data_group) data_box.addWidget(self._data_canvas) data_group.setLayout(data_box) grid.addWidget(data_group, 0, 1) self.select_button = QtGui.QPushButton('Select', self) grid.addWidget(self.select_button, 1, 0, 1, 2) self.select_clicked.connect(self.Evolve) self._Topology.Display(self.viewer._display)
def __init__(self, parent=None): super(OCCViewer, self).__init__(parent) ComponentMixin.__init__(self) self.canvas = qtViewer3d(self) self.create_actions(self) self.layout_ = layout(self, [ self.canvas, ], top_widget=self, margin=0) self.canvas.InitDriver() self.show_edges() self.updatePreferences()
def createHorizontalLayout(self): self.horizontalGroupBox = QGroupBox("Display PythonOCC") layout = QHBoxLayout() disp = QPushButton('Display Box', self) disp.clicked.connect(self.displayBOX) layout.addWidget(disp) eras = QPushButton('Erase Box', self) eras.clicked.connect(self.eraseBOX) layout.addWidget(eras) self.canvas = qtDisplay.qtViewer3d(self) layout.addWidget(self.canvas) self.canvas.resize(200, 200) self.canvas.InitDriver() self.display = self.canvas._display self.horizontalGroupBox.setLayout(layout)
def __init__(self, *args): QtGui.QMainWindow.__init__(self, *args) self.canva = qtViewer3d(self) self.setWindowTitle("Siconos mechanisms visualization based on pythonOCC-%s 3d viewer ('%s' backend)" % (VERSION, USED_BACKEND)) self.resize(size[0], size[1]) self.setCentralWidget(self.canva) if not sys.platform == 'darwin': self.menu_bar = self.menuBar() else: # create a parentless menubar # see: http://stackoverflow.com/questions/11375176/qmenubar-and-qmenu-doesnt-show-in-mac-os-x?lq=1 # noticeable is that the menu ( alas ) is created in the topleft of the screen, just # next to the apple icon # still does ugly things like showing the "Python" menu in bold self.menu_bar = QtGui.QMenuBar() self._menus = {} self._menu_methods = {} # place the window in the center of the screen, at half the screen size self.centerOnScreen()
def __init__(self, *args): QtGui.QMainWindow.__init__(self, *args) self.canva = qtViewer3d(self) self.setWindowTitle("pythonOCC-%s 3d viewer ('%s' backend)" % (VERSION, USED_BACKEND)) self.resize(size[0], size[1]) self.setCentralWidget(self.canva) if not sys.platform == 'darwin': self.menu_bar = self.menuBar() else: # create a parentless menubar # see: http://stackoverflow.com/questions/11375176/qmenubar-and-qmenu-doesnt-show-in-mac-os-x?lq=1 # noticeable is that the menu ( alas ) is created in the topleft of the screen, just # next to the apple icon # still does ugly things like showing the "Python" menu in bold self.menu_bar = QtGui.QMenuBar() self._menus = {} self._menu_methods = {} # place the window in the center of the screen, at half the screen size self.centerOnScreen()
def __init__(self, parent=None): super(Main, self).__init__() self.setupUi(self) # self.display, self.start_display, self.add_menu, self.add_function_to_menu = init_display() # self.canvas = FigureCanvas(self.figure) QtCore, QtGui, QtWidgets, QtOpenGL = get_qt_modules() self.canvas = qtViewer3d(self) # self.canvas.sig_topods_selected.connect(self.handle_selection) self.display = self.canvas._display self.scrollArea.setWidget(self.canvas) # self.mess.setText('Выберите файл') # self.Bar_1.setValue(0) self.Open_frame.clicked.connect(self.open_frame) self.Random_composition.clicked.connect(self.random_composition) self.Save_result.clicked.connect(self.save_result) self.Show_frame.clicked.connect(self.show_frame) self.Add_file.clicked.connect(self.add_file) self.Start_optimization.clicked.connect(self.start_optimization) self.Remove_all.clicked.connect(self.remove_all) self.Remove_selected.clicked.connect(self.remove_selected) self.tableWidget.itemClicked.connect(self.tablewidgetclicked) self.Select_faces.clicked.connect(self.select_faces) self.Remove_all_faces.clicked.connect(self.remove_all_faces) self.Add_folder.clicked.connect(self.add_folder) # self.Random_composition.clicked.connect(self.random_composition) # self.canvas.mpl_connect('button_press_event',self.onClick) self.frame = None self.modules = {} self.path_modules = {} self.limits = [] self.faces_name = [] self.faces = [] self.faces_shape = [] self.constructor = construction.Balance_mass() ############################################################# self.limits = {'DAV_WS16.STEP': [[1, 2], [0, 45, 60, 90]], 'DAV2_WS16.STEP': [[1, 2, 3, 0], [30, 90, 180]], 'DAV3_WS16.STEP': [[0, 3], [0, 180]], 'Magnitometr.STEP': [[2], [30, 45, 90, 135]]}
def __init__(self, parent=None): super(Mywindown, self).__init__(parent) self.setupUi(self) #3D显示设置 self.canva = qtViewer3d(self.tab) #链接3D模块 self.setWindowTitle("【批量导出stp缩略图程序】") #self.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint) self.setFixedSize(self.width(), self.height()) self.canva.setGeometry(QtCore.QRect(0, 0, 420, 530)) self.canva.focusInEvent(self.event) self.centerOnScreen() #单个产品 信号和槽 self.pushButton_2.clicked.connect(self.Quit) #退出 self.pushButton_3.clicked.connect(self.Chose_Document) #选择文件夹 self.pushButton_4.clicked.connect(self.Bulk_stptoimag) # 批量导出图片 #Qss定义 self.pushButton_2.setStyleSheet(butstyle) self.pushButton_3.setStyleSheet(butstyle) self.pushButton_4.setStyleSheet(butstyle) self.pushButton_5.setStyleSheet(butstyle)
def __init__(self, *args): QtGui.QMainWindow.__init__(self, *args) # setup prefered interface self.treeArea = QtGui.QTreeWidget() self.textArea = QtGui.QTextEdit() self.viewArea = QtGui.QTabWidget() self.msgArea = QtGui.QTextBrowser() # Add tabs from OCC.Display import qtDisplay self.modelTab = qtDisplay.qtViewer3d(self) self.reportTab = QtGui.QTextBrowser() self.viewArea.addTab(self.modelTab, "Model") self.viewArea.addTab(self.reportTab, "Report") # Window area splitters self.vSplitter = QtGui.QSplitter(QtCore.Qt.Vertical) self.vSplitter.addWidget(self.viewArea) self.vSplitter.addWidget(self.msgArea) self.hSplitter = QtGui.QSplitter(QtCore.Qt.Horizontal) self.hSplitter.addWidget(self.treeArea) self.hSplitter.addWidget(self.textArea) self.hSplitter.addWidget(self.vSplitter) # Assign mainwindow self.setCentralWidget(self.hSplitter)
def __init__(self, parent = None): """ Constructor """ QMainWindow.__init__(self, parent) self.errorMarker = None self.setupUi(self) self.create_recentFileActs() self.create_exampleActs() self.updateRecentFileActions() self.glWidget = qtViewer3d() self.splitterH.addWidget(self.glWidget) self.statuslabel = QLabel("") self.statusbar.addWidget(self.statuslabel) self.filename = None self.changed = False self.object = None self.sourceEdit.setLexer(Qsci.QsciLexerPython()) self.sourceEdit.setAutoIndent(True) self.sourceEdit.setBraceMatching(Qsci.QsciScintilla.SloppyBraceMatch) self.sourceEdit.setIndentationGuides(True) self.markerNumber = self.sourceEdit.markerDefine( Qsci.QsciScintilla.Circle) self.sourceEdit.setMarkerBackgroundColor( Qt.red, self.markerNumber )
def __init__(self, *args): QtWidgets.QMainWindow.__init__(self, *args) layout = QHBoxLayout() # 水平布局 self.canva = qtViewer3d(self) self.setWindowTitle("丝杆选型软件") self.setCentralWidget(self.canva) self.setCentralWidget(self.canva) self.resize(1024, 768) self.centerOnScreen() self.items = QDockWidget('功能区', self) self.listWidget = QListWidget() self.listWidget.addItem('2D') self.listWidget.addItem('3D') self.listWidget.addItem('实物') self.items.setWidget(self.listWidget) self.items.setFloating(False) self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.items) self.setLayout(layout) if sys.platform != 'darwin': self.menu_bar = self.menuBar() else: # create a parentless menubar # see: http://stackoverflow.com/questions/11375176/qmenubar-and-qmenu-doesnt-show-in-mac-os-x?lq=1 # noticeable is that the menu ( alas ) is created in the # topleft of the screen, just # next to the apple icon # still does ugly things like showing the "Python" menu in # bold self.menu_bar = QtWidgets.QMenuBar() self._menus = {} self._menu_methods = {} # place the window in the center of the screen, at half the # screen size self.centerOnScreen()
def __init__(self, *args): super().__init__() self.canvas = qtDisplay.qtViewer3d(self) # Renaming self.canvas._display (like below) doesn't work. # self.display = self.canvas._display self.setContextMenuPolicy(Qt.CustomContextMenu) self.customContextMenuRequested.connect(self.contextMenu) self.popMenu = QMenu(self) title = f"KodaCAD {APP_VERSION} " title += f"(Using: PythonOCC version {VERSION} with PyQt5 backend)" self.setWindowTitle(title) self.resize(960, 720) self.setCentralWidget(self.canvas) self.createDockWidget() self.wcToolBar = QToolBar("2D") # Construction toolbar self.addToolBar(Qt.RightToolBarArea, self.wcToolBar) self.wcToolBar.setMovable(True) self.wgToolBar = QToolBar("2D") # Geom Profile toolbar self.addToolBar(Qt.RightToolBarArea, self.wgToolBar) self.wgToolBar.setMovable(True) self.menu_bar = self.menuBar() self._menus = {} self._menu_methods = {} self.centerOnScreen() self.calculator = None self.assy_root, self.wp_root = self.create_root_items() self.itemClicked = None # TreeView item that has been mouse clicked # Internally, everything is always in mm # scale user input and output values # (user input values) * unitscale = value in mm # (output values) / unitscale = value in user's units self._unitDict = {"mm": 1.0, "in": 25.4, "ft": 304.8} self.units = "mm" self.unitscale = self._unitDict[self.units] self.unitsLabel = QLabel() self.unitsLabel.setText("Units: %s " % self.units) self.unitsLabel.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken) self.endOpButton = QToolButton() self.endOpButton.setText("End Operation") self.endOpButton.clicked.connect(self.clearCallback) self.currOpLabel = QLabel() self.registeredCallback = None self.currOpLabel.setText("Current Operation: %s " % self.registeredCallback) self.lineEdit = QLineEdit() self.lineEdit.returnPressed.connect(self.appendToStack) status = self.statusBar() status.setSizeGripEnabled(False) status.addPermanentWidget(self.lineEdit) status.addPermanentWidget(self.currOpLabel) status.addPermanentWidget(self.endOpButton) status.addPermanentWidget(self.unitsLabel) status.showMessage("Ready", 5000) self.hide_list = [] # list of part uid's to be hidden (not displayed) self.floatStack = [] # storage stack for floating point values self.xyPtStack = [] # storage stack for 2d points (x, y) self.ptStack = [] # storage stack for gp_Pnts self.edgeStack = [] # storage stack for edge picks self.faceStack = [] # storage stack for face picks self.shapeStack = [] # storage stack for shape picks self.lineEditStack = [] # list of user inputs self.activePart = None # <TopoDS_Shape> object self.activePartUID = 0 self.transparency_dict = {} # {uid: part display transparency} self.ancestor_dict = defaultdict( list) # {uid: [list of ancestor shapes]} self.ais_shape_dict = {} # {uid: <AIS_Shape> object} self.activeWp = None # WorkPlane object self.activeWpUID = 0 self.wp_dict = {} # k = uid, v = wpObject self._wpNmbr = 1 self.activeAsyUID = 0 self.assy_list = [] # list of assy uid's self.showItemActive(0) self.setActiveAsy(self.activeAsyUID)
def addViewerTab(self, name): from OCC.Display import qtDisplay self.viewerTabs[name] = qtDisplay.qtViewer3d(self) self.tabWidget.addTab(self.viewerTabs[name], name) self.viewerTabs[name].InitDriver()