#-------关联C++库--------------- import ctypes import platform from ctypes import * system = platform.system() if system == "Windows": pre = "./" suff = ".dll" else: pre = "./lib" suff = ".so" libfile = ctypes.cdll.LoadLibrary filename = pre+"CommandManager"+suff cmdManager = libfile(filename) #--------------------------------- #-------定义函数------------------ def undo(): cmdManager.undo() pass def redo(): cmdManager.redo() pass def geometryRename(geometryIDs, newName): sgeometryIDs = bytes(geometryIDs,encoding='utf-8') snewName = bytes(newName,encoding='utf-8') cmdManager.geometryRename(sgeometryIDs,snewName) pass def setGeoTransparency(geometryIDs, alpha): sgeometryIDs = bytes(geometryIDs,encoding='utf-8') cmdManager.setGeoTransparency(sgeometryIDs,alpha) pass def setGeoColor(geometryIDs, r, g, b): sgeometryIDs = bytes(geometryIDs,encoding='utf-8') cmdManager.setGeoColor(sgeometryIDs,c_int(r),c_int(g),c_int(b)) pass def setMaterialByName(geometry_id, material_name): cmdManager.setMaterialByName(c_int(geometry_id),bytes(material_name,encoding='utf-8')) pass def setMeshGroupFrontMaterialByName(meshID,groupIDs,materialName): cmdManager.setMeshGroupFrontMaterialByName(c_int(meshID),bytes(groupIDs,encoding='utf-8'),bytes(materialName,encoding='utf-8')) pass def setMeshGroupBackMaterialByName(meshID,groupIDs,materialName): cmdManager.setMeshGroupBackMaterialByName(c_int(meshID),bytes(groupIDs,encoding='utf-8'),bytes(materialName,encoding='utf-8')) pass def setMeshGroupSurfaceType(meshID,groupIDs,surfaceType): cmdManager.setMeshGroupSurfaceType(c_int(meshID),bytes(groupIDs,encoding='utf-8'),c_int(surfaceType)) pass def createRelativeCoordinateSystem(id,basicID,name,csType,basicPointX,basicPointY,basicPointZ,rotateAxis,angle,isReverse): sname = bytes(name,encoding='utf-8') sRotateAxis = bytes(rotateAxis,encoding='utf-8') cmdManager.createRelativeCoordinateSystem(c_int(id),c_int(basicID),sname,c_int(csType),c_double(basicPointX),c_double(basicPointY),c_double(basicPointZ),sRotateAxis,c_double(angle),c_bool(isReverse)) pass def editRelativeCoordinateSystem(editID,basicID,name,csType,basicPointX,basicPointY,basicPointZ,rotateAxis,angle,isReverse): sname = bytes(name,encoding='utf-8') sRotateAxis = bytes(rotateAxis,encoding='utf-8') cmdManager.editRelativeCoordinateSystem(c_int(editID),c_int(basicID),sname,c_int(csType),c_double(basicPointX),c_double(basicPointY),c_double(basicPointZ),sRotateAxis,c_double(angle),c_bool(isReverse)) pass def deleteRelativeCoordinateSystem(deleteCoorSysIDs): sdeleteCoorSysIDs = bytes(deleteCoorSysIDs,encoding='utf-8') cmdManager.deleteRelativeCoordinateSystem(sdeleteCoorSysIDs) pass def translateRelativeCoordinateSystem(translateCoorSysID): cmdManager.translateRelativeCoordinateSystem(c_int(translateCoorSysID)) pass def modifyNameRelativeCoordinateSystem(coorSysID, newName): snewName = bytes(newName,encoding='utf-8') cmdManager.modifyNameRelativeCoordinateSystem(c_int(coorSysID),snewName) pass def setMeshTransparency(kernalIDs,transparency): cmdManager.setMeshTransparency(bytes(kernalIDs,encoding='utf-8'),c_int(transparency)) class SolvingContent: def __init__(self): #待求解项 self.m_monostaticRCSFlag = 0 self.m_bistaticRCSFlag = 0 self.m_gainFlag = 0 self.m_jSufFlag = 0 self.m_sparameterFlag = 0 self.m_RadiationEfficiency = 0 self.m_ElectricField = 0 self.m_MagneticField = 0 #远场坐标相关 self.m_isUpdateFarField = False #是否更新远场坐标 self.m_phiStart = 0.0 self.m_phiEnd = 0.0 self.m_phiStep = 0.0 self.m_thetaStart = 0.0 self.m_thetaEnd = 0.0 self.m_thetaStep = 0.0 #近场坐标相关 self.m_isUpdateNearField = False #是否更新近场坐标 self.m_startX = 0.0 self.m_startY = 0.0 self.m_startZ = 0.0 self.m_endX = 0.0 self.m_endY = 0.0 self.m_endZ = 0.0 self.m_stepX = 0.0 self.m_stepY = 0.0 self.m_stepZ = 0.0 #------------------------- 待求解项 ----------------------------- #设置求解单站RCS是否开启 def setRCSFlag(self,rcsFlag): self.m_monostaticRCSFlag = rcsFlag #设置求解双站RCS是否开启 def setBistaticRCS(self,rcsFlag): self.m_bistaticRCSFlag = rcsFlag def setGainFlag(self,gainFlag): self.m_gainFlag = gainFlag def setJSufFlag(self,jSufFlag): self.m_jSufFlag = jSufFlag #设置网络参数是否开启 def setSparameterFlag(self,sparameterFlag): self.m_sparameterFlag = sparameterFlag #设置天线效率求解是否开启 def setRadiationEfficiency(self,radiationEfficiency): self.m_RadiationEfficiency = radiationEfficiency #设置电场求解是否开启 def setElectricField(self,electricField): self.m_ElectricField = electricField #设置磁场求解是否开启 def setMagneticField(self,magneticField): self.m_MagneticField = magneticField #------------------------- 远场坐标 ----------------------------- def setPhiStart(self,phiStart): self.m_phiStart = phiStart self.m_isUpdateFarField = True def setPhiEnd(self,phiEnd): self.m_phiEnd = phiEnd self.m_isUpdateFarField = True def setPhiStep(self,phiStep): self.m_phiStep = phiStep self.m_isUpdateFarField = True def setThetaStart(self,thetaStart): self.m_thetaStart = thetaStart self.m_isUpdateFarField = True def setThetaEnd(self,thetaEnd): self.m_thetaEnd = thetaEnd self.m_isUpdateFarField = True def setThetaStep(self,thetaStep): self.m_thetaStep = thetaStep self.m_isUpdateFarField = True #------------------------- 近场坐标 ----------------------------- def setStart(self,x,y,z): self.m_startX = x self.m_startY = y self.m_startZ = z self.m_isUpdateNearField = True def setEnd(self,x,y,z): self.m_endX = x self.m_endY = y self.m_endZ = z self.m_isUpdateNearField = True def setStep(self,x,y,z): self.m_stepX = x self.m_stepY = y self.m_stepZ = z self.m_isUpdateNearField = True def save(self): cmdManager.initSolvingContentData() if self.m_isUpdateFarField: cmdManager.setSimulationMOMFarFieldCoordinateData(c_double(self.m_thetaStart),c_double(self.m_thetaEnd),c_double(self.m_thetaStep),c_double(self.m_phiStart),c_double(self.m_phiEnd),c_double(self.m_phiStep)) if self.m_isUpdateNearField: cmdManager.setSimulationMOMNearFieldCoordinateData(c_double(self.m_startX),c_double(self.m_startY),c_double(self.m_startZ),c_double(self.m_endX),c_double(self.m_endY),c_double(self.m_endZ),c_double(self.m_stepX),c_double(self.m_stepY),c_double(self.m_stepZ)) cmdManager.setMOMSolvingContent(c_int(self.m_monostaticRCSFlag),c_int(self.m_bistaticRCSFlag),c_int(self.m_gainFlag),c_int(self.m_jSufFlag),c_int(self.m_sparameterFlag),c_int(self.m_RadiationEfficiency),c_int(self.m_ElectricField),c_int(self.m_MagneticField)) del self