答案1
我是 OrcaFlex 的作者之一。以下 Python 代码绝对不会满足您的需要,对此我没有任何保证。
import struct
def readModelStateText(fileName):
with open(fileName, 'rb') as f:
content = f.read(0x4000) # hope that the text appears this early in the file
signature = b'\xff\xfa\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
index = content.find(signature)
if index == -1:
return '<model state not found>'
index += len(signature) + 2 # skip over block length
stringLength = struct.unpack('<H', content[index:index + 2])[0]
index += 2
return content[index:index + stringLength].decode('utf-8')
这将利用块头签名在文件中寻找特定块。代码可能会找到与签名匹配的较早块的主体(我怀疑这种可能性很小)。并且还有其他方式可能导致此代码失败。
我提供它只是因为它可能有用,但附带严格的购买者自负义务。
答案2
我的聪明同事很早就注意到了字符串“Time domain dynamics complete”实际上存在于二进制文件中。所以我使用 grep 而不与 Windows 交互,这让我松了一口气,
head -10 SomeSimulation.sim | grep "Time domain dynamics complete"