#-------关联C++库--------------- import ctypes import platform import os from ctypes import * system = platform.system() if system == "Windows": pre = "./" suff = ".dll" else: pre = "./lib" suff = ".so" libfile = ctypes.cdll.LoadLibrary filename = pre+"MeshModule"+suff meshModule = libfile(filename) filename = pre+"ConfigOption"+suff configOp = libfile(filename) #--------------------------------- #--------------New_script_FilterClip--------- def setValue(index, name, stype, svalue): name = bytes(name,encoding='utf-8') stype=bytes(stype,encoding='utf-8') svalue=bytes(svalue,encoding='utf-8') configOp.setValue(index, name, stype, svalue) pass def exportMesh(filename,suffix,modelID): str = bytes(filename,encoding='utf-8') suf = bytes(suffix,encoding='utf-8') meshModule.exportMesh(str,suf,modelID) pass class MeshPara: def __init__(self): self.solidList = dict() self.surfaceList = dict() self.pointsSizeList = list() self.fieldsList = list() self.fluidfield = list() self.dimensionList = list() self.method2d = -1 self.method3d = -1 self.dim = -1 self.isAuto = -1 self.meshSize = -1 self.autoMeshPara = 0 self.autoLocalSetting = 0 self.fastAlgorithm = 0 self.threadNumber = 8 def appendSurface(self, geoset, index): self.surfaceList.setdefault(geoset, set()).add(index) def appendSolid(self, geoset, index): self.solidList.setdefault(geoset, set()).add(index) def setElementType(self, etype): self.elementType = etype def setThreadNumber(self, number): self.threadNumber = number def setElementOrder(self,order): self.elementOrder = order def set2DMethod(self,m2): self.method2d = m2 def set3DMethod(self,m3): self.method3d = m3 def setMinSize(self, min): self.minSize = min def setMaxSize(self, max): self.maxSize = max def setIsAuto(self, au): self.isAuto = au def setAutoMeshPara(self, samp): self.autoMeshPara = samp def setAutoLocalSetting(self, sals): self.autoLocalSetting = sals def setFastAlgorithm(self, fa): self.fastAlgorithm = fa def appendSizeFiled(self,px,py,pz,pv): pointsList = [px,py,pz,pv] self.pointsSizeList.append(pointsList) def appendBoxFields(self,thick,vin,vout,x,y,z,length,width,height,bg): boxlist = [1,thick,vin,vout,x,y,z,length,width,height,bg] self.fieldsList.append(boxlist) def appendBallFields(self,radius,thick,vin,vout,x,y,z,bg): balllist = [2,radius,thick,vin,vout,x,y,z,bg] self.fieldsList.append(balllist) def appendCylinderFields(self,radius,length,x,y,z,xaxis,yaxis,zaxis,vin,vout,bg): cylinderlist = [3,radius,length,x,y,z,xaxis,yaxis,zaxis,vin,vout,bg] self.fieldsList.append(cylinderlist) def appendSolidsFields(self,vi,vo,tn,setid,index,bg): solidsList = [4,vi,vo,tn,setid,index,bg] self.fieldsList.append(solidsList) def appendFrustumFields(self,rin1,rout1,rin2,rout2,length,x,y,z,xaxis,yaxis,zaxis,vin,vout,bg): frustumlist = [5,rin1,rout1,rin2,rout2,length,x,y,z,xaxis,yaxis,zaxis,vin,vout,bg] self.fieldsList.append(frustumlist) def appendCurveFileds(self,bodyid,curveid,value): curvelist = [6,bodyid,curveid,value] self.fieldsList.append(curvelist) def appendSurfaceFileds(self,bodyid,surfaceid,value): surfacelist = [7,bodyid,surfaceid,value] self.fieldsList.append(surfacelist) def setDim(self,dim): self.dim = dim def setMeshID(self,id): self.meshID = id def appendToDimension(self,dim): self.dimensionList.append(dim) def saveMeshPara(self): eletypestr = bytes(self.elementType,encoding='utf-8') pointsize = "" for pointlist in self.pointsSizeList: pointstr = "" for point in pointlist: pointstr = pointstr + str(point) + "," pointstr = pointstr[:-1] pointsize = pointsize + pointstr + ";" pointsize = pointsize[:-1] pointsizestr = bytes(pointsize, encoding='utf-8') fields = "" for fieldlist in self.fieldsList: fieldstr = "" for field in fieldlist: fieldstr = fieldstr + str(field) + "," fieldstr = fieldstr[:-1] fields = fields + fieldstr + ";" fields = fields[:-1] fieldsStr = bytes(fields, encoding = 'utf-8') if self.dim == 2: keyList = self.surfaceList.keys() strcom = "" for key in keyList: setstr = "" values = self.surfaceList.get(key) for v in values: setstr = setstr + str(v) + "," setstr = str(key) + ":" + setstr[:-1] strcom = strcom + setstr + ";" strcom = strcom[:-1] surfacestr = bytes(strcom, encoding='utf-8') meshModule.setMeshPara(c_int(self.dim), surfacestr, eletypestr, c_int(self.elementOrder), c_int(self.method2d), \ c_int(self.method3d), c_double(self.minSize), c_double(self.maxSize), \ c_bool(self.isAuto), c_int(self.autoMeshPara), c_bool(self.autoLocalSetting), c_bool(self.fastAlgorithm), \ pointsizestr, fieldsStr, c_int(self.threadNumber)) elif self.dim == 3: keyList = self.solidList.keys() strcom = "" for key in keyList: setstr = "" values = self.solidList.get(key) for v in values: setstr = setstr + str(v) + "," setstr = str(key) + ":" + setstr[:-1] strcom = strcom + setstr + ";" strcom = strcom[:-1] objstr = bytes(strcom, encoding='utf-8') meshModule.setMeshPara(c_int(self.dim), objstr, eletypestr, c_int(self.elementOrder), c_int(self.method2d), \ c_int(self.method3d), c_double(self.minSize), c_double(self.maxSize), \ c_bool(self.isAuto), c_int(self.autoMeshPara), c_bool(self.autoLocalSetting), c_bool(self.fastAlgorithm), \ pointsizestr, fieldsStr, c_int(self.threadNumber)) del self