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)
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) #底层模型数据添加
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)
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()
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