Sub ConnectivityExample(ByVal ihAPsim As Happ.IHapp)
' This example displays a table showing flowsheet connectivity
Dim ihStreamList As Happ.IHNode
Dim ihBlockList As Happ.IHNode
Dim ihDestBlock As Happ.IHNode
Dim ihSourceBlock As Happ.IHNode
Dim ihStream As Happ.IHNode
Dim strHeading As String
Dim strTable As String
Dim strDestBlock As String
Dim strDestPort As String
Dim strSourceBlock As String
Dim strSourcePort As String
Dim strStreamName As String
Dim strStreamType As String
On Error GoTo ErrorHandler
ihStreamList = ihAPsim.Tree.Data.Streams
ihBlockList = ihAPsim.Tree.Data.Blocks
strTable=""
strHeading = "Stream" & Chr(9) & "From" _
& Chr(9) & Chr(9) & Chr(9) & "To" & Chr(13)
For Each ihStream In ihStreamList.Elements
strStreamName = ihStream.Name
strStreamType = ihStream.AttributeValue(Happ.HAPAttributeNumber.HAP_RECORDTYPE)
' get the destination connections
ihDestBlock = ihStream.Elements("Ports").Elements("DEST")
If (ihDestBlock.Elements.RowCount(0) > 0) Then
' there is a destination port
strDestBlock = ihDestBlock.Elements(0).Value
strDestPort = ihBlockList.Elements(strDestBlock). _
Connections.Elements(strStreamName).Value
Else
' it's a flowsheet product
strDestBlock = ""
strDestPort = ""
End If
' get the source connections
ihSourceBlock = ihStream.Elements("Ports").Elements("SOURCE")
If (ihSourceBlock.Elements.RowCount(0) > 0) Then
' there is a source port
strSourceBlock = ihSourceBlock.Elements(0).Value
strSourcePort = ihBlockList.Elements(strSourceBlock). _
Connections.Elements(strStreamName).Value
Else
' it's a flowsheet feed
strSourceBlock = ""
strSourcePort = ""
End If
strTable = strTable & Chr(13) & strStreamName _
& Chr(9) & strSourceBlock _
& Chr(9) & strSourcePort & Chr(9) _
& Chr(9) & strDestBlock & Chr(9) _
& strDestPort
Next ihStream
MsgBox(strHeading & strTable, , "ConnectivityExample")
Exit Sub
ErrorHandler:
MsgBox("ConnectivityExample raised error" & Err.Description)
End Sub
Python翻译
import win32com.client as win32
from tkinter import Tk, messagebox
HAP_RECORDTYPE = 11 # 记录类型
def connectivity_example(ih_ap_sim):
"""与 VB ConnectivityExample 功能完全一致"""
stream_list = ih_ap_sim.Tree.Data.Streams.Elements
block_list = ih_ap_sim.Tree.Data.Blocks.Elements
```VBScript
heading = "Stream\tFrom\t\t\tTo"
table_lines = [heading]
for ih_stream in stream_list:
stream_name = ih_stream.Name
stream_type = ih_stream.AttributeValue(HAP_RECORDTYPE) if ih_stream.AttributeType(HAP_RECORDTYPE) != 0 else ""
# --------- 目的连接 ---------
dest_port = ih_stream.Elements("Ports").Elements("DEST")
if dest_port.Elements.RowCount(0) > 0: # 有目的端口
dest_block = dest_port.Elements(0).Value
dest_port_name = block_list.Elements(dest_block).Connections.Elements(stream_name).Value
else: # 产品出料
dest_block = dest_port_name = ""
# --------- 源连接 ---------
src_port = ih_stream.Elements("Ports").Elements("SOURCE")
if src_port.Elements.RowCount(0) > 0: # 有源端口
src_block = src_port.Elements(0).Value
src_port_name = block_list.Elements(src_block).Connections.Elements(stream_name).Value
else: # 进料
src_block = src_port_name = ""
# --------- 拼表 ---------
table_lines.append(f"{stream_name}\t{src_block}\t{src_port_name}\t\t{dest_block}\t{dest_port_name}")
# --------- 弹窗 ---------
root = Tk(); root.withdraw()
messagebox.showinfo("ConnectivityExample", "\n".join(table_lines))
root.destroy()
---------------- 调用示例 ----------------¶
if name == "main": ap = win32.Dispatch("AspenPlus.Document.34.0") ap.InitNew2() # 或 GetObject 打开已有文件 connectivity_example(ap) ap.Quit()
```