分析脚本结构
- 更新时间2025-12-03
- 阅读时长5分钟
可使用Visual Basic Script或Python为分析自动化创建分析脚本。分析自动化程序中包含脚本(Main.vbsa或Main.py),可在其中定义分析。可将必须添加至分析自动化程序的其他脚本加入该脚本中。分析脚本Main.vbsa或Main.py中默认包含下列元素。
| 脚本代码 | 说明 |
|---|---|
| On_Initialize(oContext) | 初始化并行求值。开始处理数据之前该方法会被调用一次。 |
| On_RunAnalysisProcedure(oContext) | 对检索到的数据元素进行实际求值。
|
| On_Finalize(oContext) | 结束并行求值。数据处理结束后该方法会被调用一次。 |
传输参数oContext用于在分析自动化和分析脚本之间交换信息,并提供对检索到的数据元素的访问权限。
分析脚本main.py还包含下列元素。
| 脚本代码 | 说明 |
|---|---|
Import DIAdem dd = DIAdem.Application | 启用对DIAdem命令、变量和对象的访问。大部分DIAdem命令均可在Python环境中使用,但并非所有DIAdem命令都在Python中进行过测试。 |
下表列出了处理数据时最重要的DIAdem命令和方法。
| 脚本代码 | 说明 |
|---|---|
| ApplicationSetLocale("english") | 设置国别变量和数量,例如时间格式、纸张大小及页边距。 |
| oContext.DataLinks | 包含检索到的数据元素。 |
| Navigator.LoadData | 加载数据。 |
| ChannelsToArray | 将DIAdem通道转换为数组,以便在Python中进行处理。 |
| ArrayToChannels | 将Python数组转换为DIAdem通道。 |
| DataFileSave | 保存数据。 |
分析脚本中可能不需使用下列命令:
- 需要交互的命令。
- 控制DIAdem界面的命令。
- 控制VIEW模块的命令。
- 控制Microsoft Office或其他应用程序的命令。
以下是以Visual Basic Script编写的分析脚本范例。On_Initialize程序用于检查传输参数的结果路径是否存在。On_Run_AnalysisProcedure程序用于加载待分析元素、执行分析并以PDF格式输出结果。On_Finalize程序用于检查On_Initialize和On_Run_AnalysisProcedure程序是否成功。
Sub On_Initialize(oContext)
Call ApplicationSetLocale("english")
Dim ResultsPath
If oContext.Procedure.Arguments.Exists("ResultsPath") Then
ResultsPath = oContext.Procedure.Arguments.Item("ResultsPath").Value
Call oContext.LogResult("Results path: " & ResultsPath)
Else
Call oContext.LogError("Results path missing")
End If
End Sub
Sub On_Run_AnalysisProcedure(oContext)
Call ApplicationSetLocale("english")
Dim ResultsPath
ResultsPath = oContext.Procedure.Arguments.Item("ResultsPath").Value
Dim oMyDataLinks, iCount
Set oMyDataLinks = oContext.DataLinks
For iCount = 1 To oMyDataLinks.Count
Call Navigator.LoadData(oContext.DataLinks.Item(iCount))
' Enter your analysis commands
Next
Call Report.LoadLayout(oContext.Procedure.ScriptPath & "MyLayout.tdr")
Call Report.Sheets.ExportToPDF(ResultsPath & & "MyResult.pdf",FALSE)
End Sub
Sub On_Finalize(oContext)
Call oContext.LogResult("Init ok: " & oContext.Status.On_Initialize_Succeeded)
Call oContext.LogResult("Analysis ok: " & oContext.Status.On_Run_AnalysisProcedure_Succeeded)
End Sub