Skip to main content

Psim_DS_RunScript

Usage

psim.Psim_DS_RunScript();

Python Help

py.help(psim.Psim_DS_RunScript)

Python def

PSIM 2025 and above:

def Psim_DS_RunScript(self, schFilePath_or_Obj, ScriptIndex, parameters):
result = 0
ErrorMessage = ""

try:
if not self.IsValid():
ErrorMessage = "PSIM object was not loaded."
Result = 0;
return result , ErrorMessage;

szParameters = ""

if isinstance(parameters, dict):
for key, value in parameters.items():
szParameters += str(key) + " = " + str(value) + ";\n"
elif isinstance(parameters, str):
szParameters = parameters
elif isinstance(parameters, list):
for p in parameters:
szParameters += p + ";\n"
else:
ErrorMessage = "in Psim_DS_RunScript function, parameters is of an unknown type"
Result = 0;
return result , ErrorMessage;

sch_closeFile = False
schHandle = 0
#is schFilePath a filePath or schematicID?
if isinstance(schFilePath_or_Obj, PSIM_schematic):
schHandle = schFilePath_or_Obj.value
elif isinstance(schFilePath_or_Obj, str):
schFilePath = schFilePath_or_Obj
SimOpenSchematicFileW = getattr(self.psimHandle, "SimOpenSchematicFileW")
if not SimOpenSchematicFileW:
raise AttributeError(self.VersionErrorMessage)

SimOpenSchematicFileW.restype = ctypes.c_int
# int SimOpenSchematicFileW(const wchar_t * szFileName, UINT nFlag)
schHandle = SimOpenSchematicFileW(ctypes.c_wchar_p(schFilePath), ctypes.c_int (1)); #returns 0 on error
if schHandle == 0 :
ErrorMessage = "Unable to open schematic file " + schFilePath
Result = 0;
return result , ErrorMessage;

sch_closeFile =True
elif schFilePath_or_Obj is None:
ErrorMessage = "in Psim_DS_RunScript function, schFilePath_or_Obj is None"
Result = 0;
return result , ErrorMessage;
else:
ErrorMessage = "in Psim_DS_RunScript function, schFilePath_or_Obj is of an unknown type"
Result = 0;
return result , ErrorMessage;

# int EXPORT DS_RunScript(int nID, int nScriptIndex, const char* szParameters, char** pszError)
# get the function pointer
DS_RunScript = getattr(self.psimHandle, "DS_RunScript")
if not DS_RunScript:
raise AttributeError(self.VersionErrorMessage)

DS_RunScript.argtypes = [
ctypes.c_int, # int nID
ctypes.c_int, # int nScriptIndex
ctypes.c_char_p, # const char* szParameters
ctypes.POINTER(ctypes.c_char_p) # char** pszError
]
DS_RunScript.restype = ctypes.c_int # Return type

# call DS_UpdateParameterFile
szParameters_encoded = szParameters.encode('utf-8') # Encode the string to bytes

# Prepare pszError as a c_char_p pointer
pszError = ctypes.c_char_p()
pszError_ptr = ctypes.pointer(pszError)

pszError = ctypes.c_char_p()
nRes1 = DS_RunScript(schHandle, ScriptIndex, szParameters_encoded, pszError_ptr)
if nRes1 == 0:
ErrorMessage = ctypes.string_at(pszError.value).decode('utf-8')
result = 0
else:
result = 1


if sch_closeFile:
CloseSchematicFile = getattr(self.psimHandle, "SimCloseSchematicFile")
if not CloseSchematicFile:
raise AttributeError(self.VersionErrorMessage)

CloseSchematicFile.restype = ctypes.c_int
# int SimCloseSchematicFile(int nSchematicID)
res = CloseSchematicFile(schHandle); #returns 0 on error

except Exception as e:
Result = 0
ErrorMessage += f"Error: {e}"

return result , ErrorMessage;