Пример #1
0
    def onAddModel_RectPrism(self):
        item = self.treeWidget.currentItem()
        if not item:
            return
        proj = item.belongToProj
        if not proj:
            return
        model = Model(self.modelType_RectPrism)
        # print(model.m_geometry_center_x)#OK
        newItem = QTreeWidgetItem(item, self.ItemType_Model_RectPrism)  #type
        newItem.setText(0, '长方体')
        newItem.setIcon(0, QIcon(":/ForwardCenter/cube"))

        newItem.belongToProj = proj
        newItem.belongToModel = model

        # print(proj.m_models.__len__())#OK

        self.treeWidget.setCurrentItem(newItem)
        add = self.onRectPrismModelSetting()  #弹出长方体模型设置dialog
        if not add:
            currentItem = self.treeWidget.currentItem()
            parentItem = currentItem.parent()
            parentItem.removeChild(currentItem)
        else:
            proj.addModel(model)
Пример #2
0
    def onAddModel_Sphere(self):
        item = self.treeWidget.currentItem()
        if not item:
            return
        proj = item.belongToProj
        if not proj:
            return

        model = Model(self.modelType_Sphere)
        #print(model.m_geometry_center_x)#OK

        #设置item
        newItem = QTreeWidgetItem(item, self.ItemType_Model_Sphere)  #type
        newItem.setText(0, '球体')
        newItem.setIcon(0, QIcon(":/ForwardCenter/sphere"))

        #设置item所属项目和模型
        newItem.belongToProj = proj
        newItem.belongToModel = model

        # print(proj.m_models.__len__())#ok

        self.treeWidget.setCurrentItem(newItem)
        add = self.onSphereModelSetting()  #弹出球体模型设置dialog
        if not add:
            currentItem = self.treeWidget.currentItem()
            parentItem = currentItem.parent()
            parentItem.removeChild(currentItem)
        else:
            proj.addModel(model)  #底层模型数据添加
Пример #3
0
    def addForwardDataIntoTree(self, item, proj, compType, newNode):
        if compType == DataComponentType().DT:
            name = '△T(nT)'
        elif compType == DataComponentType().Hax:
            name = 'Hax(nT)'
        elif compType == DataComponentType().Hay:
            name = 'Hay(nT)'
        elif compType == DataComponentType().Za:
            name = 'Za(nT)'
        elif compType == DataComponentType().Dg:
            name = '△g(g.u)'

        #设置item
        newItem = QTreeWidgetItem(item, self.ItemType_ForwardGridData)
        newItem.setText(0, name)
        newItem.setIcon(0, QIcon(":/ForwardCenter/bullet"))

        # 设置item所属项目
        newItem.belongToProj = proj
        newItem.belongToForwardDataNode = newNode

        self.treeWidget.setCurrentItem(newItem)
Пример #4
0
    def createNewForwardProject(self, type):
        # type 0 磁 1 重
        ins = yForwardProjectManager()
        if type == 0:
            proj = ins.createProject(ForwardProject.projectType_Mag)
            txt = '正演项目(磁)'
            iconName = ":/ForwardCenter/magnetic"
        elif type == 1:
            proj = ins.createProject(ForwardProject.projectType_Grv)
            txt = '正演项目(重)'
            iconName = ':/ForwardCenter/gravity'
        else:
            return

        #print(ins.m_forwardProjs.__len__())#做实验OK

        projectRoot = QTreeWidgetItem(self.treeWidget,
                                      self.ItemType_ForwardProjectRoot)
        projectRoot.setIcon(0, QIcon(iconName))
        projectRoot.setText(0, txt)
        projectRoot.belongToProj = proj  #设置各个模块所属的项目

        #网格信息

        gridInfoRoot = QTreeWidgetItem(projectRoot,
                                       self.ItemType_GridInfo_Root)
        gridInfoRoot.setText(0, '网格信息')
        gridInfoRoot.setIcon(0, QIcon(":/ForwardCenter/gridInfoSetting"))
        gridInfoRoot.belongToProj = proj

        #网格参数具体信息
        setting = proj.gridSetting()  #
        xTxt = 'x:%d~%d' % (setting.xMin, setting.xMax)  #是要用%d吗?
        yTxt = 'y:%d~%d' % (setting.yMin, setting.yMax)
        sizeTxt = '%d(行)~%d(列)' % (setting.rows, setting.cols)

        projectInfo_XRange = QTreeWidgetItem(gridInfoRoot,
                                             self.ItemType_GridInfo)
        projectInfo_XRange.setText(0, xTxt)
        projectInfo_XRange.setIcon(0, QIcon(":/ForwardCenter/gridXRange"))

        projectInfo_YRange = QTreeWidgetItem(gridInfoRoot,
                                             self.ItemType_GridInfo)
        projectInfo_YRange.setText(0, yTxt)
        projectInfo_YRange.setIcon(0, QIcon(":/ForwardCenter/gridYRange"))

        projectInfo_Size = QTreeWidgetItem(gridInfoRoot,
                                           self.ItemType_GridInfo)
        projectInfo_Size.setText(0, sizeTxt)
        projectInfo_Size.setIcon(0, QIcon(":/ForwardCenter/gridSize"))

        #地磁参数信息

        if type == 0:
            geoMag = proj.geoMagInfo()  # 地磁参数信息
            geoMagRoot = QTreeWidgetItem(projectRoot,
                                         self.ItemType_GeoMag_Root)
            geoMagRoot.setText(0, '地磁参数')
            geoMagRoot.setIcon(
                0, QIcon(":/ForwardCenter/Resources/geoMagSetting.png"))
            geoMagRoot.belongToProj = proj  #设置各个模块所属的项目

            #print(geoMag.T0)#做实验ok
            #弹出对话框设置地磁参数
            dlg = yQGeoMagFieldSettingDialog()
            #print(dlg.T0.text())#做实验ok
            dlg.set(geoMag.T0, geoMag.I0, geoMag.D0)
            dlg.exec_()
            if dlg.accept:
                geoMag.T0, geoMag.I0, geoMag.D0 = dlg.get()
                #print(geoMag.T0)#做实验ok
            t0Txt = '磁场强度:%d(nT)' % geoMag.T0
            i0Txt = '地磁倾角:%d(度)' % geoMag.I0
            d0Txt = '地磁偏角:%d(度)' % geoMag.D0

            T0 = QTreeWidgetItem(geoMagRoot, self.ItemType_GeoMag_Info)
            T0.setIcon(0, QIcon(":/ForwardCenter/bullet"))
            T0.setText(0, t0Txt)

            I0 = QTreeWidgetItem(geoMagRoot, self.ItemType_GeoMag_Info)
            I0.setIcon(0, QIcon(":/ForwardCenter/bullet2"))
            I0.setText(0, i0Txt)

            D0 = QTreeWidgetItem(geoMagRoot, self.ItemType_GeoMag_Info)
            D0.setIcon(0, QIcon(":/ForwardCenter/bullet3"))
            D0.setText(0, d0Txt)

        #理论模型
        modelsRoot = QTreeWidgetItem(projectRoot, self.ItemType_Model_Root)
        modelsRoot.setText(0, '模型')
        modelsRoot.setIcon(0, QIcon(":/ForwardCenter/model"))
        modelsRoot.belongToProj = proj  #设置各个模块所属的项目

        #正演数据(磁或重)
        forwardDataRoot = QTreeWidgetItem(projectRoot,
                                          self.ItemType_ForwardGridData_Root)
        forwardDataRoot.setText(0, '正演数据')
        forwardDataRoot.setIcon(0, QIcon(":/ForwardCenter/forwardData"))
        forwardDataRoot.belongToProj = proj  #设置各个模块所属的项目

        #暂时留着
        '''
        SetDataToTreeItem(proj,gridInfoRoot)
        SetDataToTreeItem(proj,modelsRoot)
        SetDataToTreeItem(proj,forwardDataRoot)

        if geoMagRoot:
            SetDataToTreeItem(proj, geoMagRoot)
        '''
        self.treeWidget.expandAll()
Пример #5
0
    def onImportModel(self):
        item = self.treeWidget.currentItem()
        if not item:
            return
        parentItem = item.parent()
        if not parentItem:
            return
        proj = parentItem.belongToProj
        if not proj:
            return
        filename = QFileDialog.getOpenFileName(
            self, '导入模型', '', "Model Files(*.txt);;All Files(*.*)",
            'Model Files(*.txt)')
        if filename[0] != '':
            with open(filename[0], 'r') as f:
                if int(f.readline()) == proj.m_projectType:
                    modelCount = int(f.readline())
                    for i in np.arange(modelCount):
                        modelType = int(f.readline())
                        if modelType == self.modelType_Sphere:  #球体
                            model = Model(self.modelType_Sphere)

                            # 设置item
                            newItem = QTreeWidgetItem(
                                item, self.ItemType_Model_Sphere)  # type
                            newItem.setText(0, '球体')
                            newItem.setIcon(0, QIcon(":/ForwardCenter/sphere"))

                            # 设置item所属项目和模型
                            newItem.belongToProj = proj
                            newItem.belongToModel = model

                            model.m_geometry_center_x = int(f.readline())
                            model.m_geometry_center_y = int(f.readline())
                            model.m_geometry_center_z = int(f.readline())
                            model.m_geometry_radius = int(f.readline())
                            if proj.m_projectType == 1:  # 重力模型
                                model.density = float(f.readline())
                            elif proj.m_projectType == 0:  #磁法模型
                                model.K = float(f.readline())

                            proj.addModel(model)  # 底层模型数据添加
                        elif modelType == self.modelType_RectPrism:  #长方体
                            model = Model(self.modelType_RectPrism)

                            newItem = QTreeWidgetItem(
                                item, self.ItemType_Model_RectPrism)  # type
                            newItem.setText(0, '长方体')
                            newItem.setIcon(0, QIcon(":/ForwardCenter/cube"))

                            newItem.belongToProj = proj
                            newItem.belongToModel = model

                            model.m_geometry_center_x = int(f.readline())
                            model.m_geometry_center_y = int(f.readline())
                            model.m_geometry_center_z = int(f.readline())
                            model.m_geometry_xLen = int(f.readline())
                            model.m_geometry_yLen = int(f.readline())
                            model.m_geometry_zLen = int(f.readline())
                            if proj.m_projectType == 1:  # 重力模型
                                model.density = float(f.readline())
                            elif proj.m_projectType == 0:  # 磁法模型
                                model.K = float(f.readline())
                            proj.addModel(model)
                else:
                    QMessageBox.information(self, '提示', '该文件不符合对应的正演项目!')
                    return