方案中的实体可通过链接列表获得,每个实体类型(例如节点、三角形、四面体等)对应一个链接列表。本示例实现了若干循环,用于查看各个类型的每一个实体。
此脚本可执行以下任务:
需要读取节点数据时可使用此脚本。
'%RunPerInstance '@ '@ DESCRIPTION '@ Example of how to loop through entities using the API '@ '@ SYNTAX '@ LoopThroughEntities '@ '@ PARAMETERS '@ none '@ '@ DEPENDENCIES/LIMITATIONS '@ none '@ '@ History '@ Created DRA 9/8/2006 '@@ Option Explicit SetLocale("en-us") Dim SynergyGetter, Synergy On Error Resume Next Set SynergyGetter = GetObject(CreateObject("WScript.Shell").ExpandEnvironmentStrings("%SAInstance%")) On Error GoTo 0 If (Not IsEmpty(SynergyGetter)) Then Set Synergy = SynergyGetter.GetSASynergy Else Set Synergy = CreateObject("synergy.Synergy") End If Synergy.SetUnits "METRIC" Dim StudyDoc Dim MaxNumber, Node, NodeNumber, Count, Tri, Tet, Beam Set StudyDoc = Synergy.StudyDoc ' Loop through all nodes and find the highest Node Number MaxNumber = 0 Set Node = StudyDoc.GetFirstNode() While Not Node Is Nothing NodeNumber = StudyDoc.GetEntityID(Node) If NodeNumber > MaxNumber Then MaxNumber = NodeNumber End if Set Node = StudyDoc.GetNextNode(Node) Wend MsgBox "Maximum Node Number in Model is: " & CStr(MaxNumber) ' Count all Triangular Elements in the Model Count = 0 Set Tri = StudyDoc.GetFirstTri() While Not Tri Is Nothing Count = Count + 1 Set Tri = StudyDoc.GetNextTri(Tri) Wend MsgBox "Model Contains " & CStr(Count) & " Triangular Elements" ' Count all Tet Elements in the Model Count = 0 Set Tet = StudyDoc.GetFirstTet() While Not Tet Is Nothing Count = Count + 1 Set Tet = StudyDoc.GetNextTet(Tet) Wend MsgBox "Model Contains " & CStr(Count) & " Tet Elements" ' Count all Beam Elements in the Model Count = 0 Set Beam = StudyDoc.GetFirstBeam() While Not Beam Is Nothing Count = Count + 1 Set Beam = StudyDoc.GetNextBeam(Beam) Wend MsgBox "Model Contains " & CStr(Count) & " Beam Elements" MsgBox "Script Complete" Wscript.Quit