方案中的实体可通过链接列表获得,每个实体类型(例如节点、三角形、四面体等)对应一个链接列表。本示例实现了若干循环,用于查看各个类型的每一个实体。
此脚本可执行以下任务:
需要读取节点数据时可使用此脚本。
'%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