可使用Visual Basic Script或Python为分析自动化创建分析脚本。分析自动化程序中包含脚本(Main.vbsaMain.py),可在其中定义分析。可将必须添加至分析自动化程序的其他脚本加入该脚本中。分析脚本Main.vbsaMain.py中默认包含下列元素。

脚本代码 说明
On_Initialize(oContext) 初始化并行求值。开始处理数据之前该方法会被调用一次。
On_RunAnalysisProcedure(oContext) 对检索到的数据元素进行实际求值。
  • 并行求值:为每个检索到的数据元素调用该方法一次。DataLinks集合中只有一个数据元素可用。
  • 比较求值:该方法只被调用一次。DataLinks集合中所有检索到的数据元素均可用。
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_InitializeOn_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