rep1/bin/pyScripts/CommandManager.py

204 lines
7.3 KiB
Python
Raw Permalink Normal View History

2024-11-21 09:00:42 +08:00
#-------关联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