You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用OMPython/OMShell提取模型中组件的连接器/端口?

高效提取Modelica模型组件连接器的方案

不用手动枚举所有连接器类型,你可以通过以下几种高效方法获取组件的连接器信息:

方法一:通过OMPython调用OpenModelica内置类型判断函数

利用OpenModelica的isConnector()函数自动识别连接器类型,无需手动定义所有可能的连接器类:

  1. 加载并实例化模型:
from OMPython import OMCSessionZMQ

omc = OMCSessionZMQ()
# 加载Modelica标准库
omc.sendExpression('loadModel(Modelica)')
# 加载你的模型文件
omc.sendExpression('loadFile("YourModel.mo")')
# 实例化模型(处理参数化组件,确保获取正确的实例化后结构)
omc.sendExpression('instantiateModel(YourModel)')
  1. 遍历组件并筛选连接器:
# 获取模型所有组件(recursive=true可获取子组件的连接器)
components = omc.sendExpression('listComponents(YourModel, recursive=true)')

connectors = []
for comp in components:
    # 拆分组件名称和类型
    comp_info = comp.split(':', 1)
    if len(comp_info) < 2:
        continue
    comp_name = comp_info[0].strip()
    comp_type = comp_info[1].strip()
    
    # 调用内置函数判断是否为连接器类型
    if omc.sendExpression(f'isConnector({comp_type})'):
        connectors.append({
            'component_name': comp_name,
            'connector_type': comp_type
        })

# 输出结果
print(connectors)

isConnector()会自动检查类型是否继承自Modelica的Connector类,覆盖所有自定义和标准库的连接器类型,彻底避免手动枚举的麻烦。

方法二:通过OpenModelica CLI生成XML并解析

使用OpenModelica的dumpXMLDAE命令生成包含完整模型结构的XML文件,其中会专门标记连接器组件:

  1. 执行CLI命令生成XML:
omc -d=xmlDAE YourModel.mo

执行后会生成YourModel.xml文件。

  1. 用Python解析XML提取连接器:
import xml.etree.ElementTree as ET

tree = ET.parse('YourModel.xml')
root = tree.getroot()

connectors = []
# 遍历所有<Connector>标签
for connector in root.findall('.//Connector'):
    connectors.append({
        'name': connector.attrib.get('name'),
        'type': connector.attrib.get('type')
    })

print(connectors)

这种方法无需编写复杂的模型交互逻辑,直接解析结构化的XML数据即可获取所有连接器信息。

方法三:直接访问OpenModelica编译器内部数据(进阶)

如果需要更底层的控制,可以通过MetaModelica编写简单的扩展函数,直接从编译器的AST(抽象语法树)中提取连接器信息,然后通过OMPython调用该函数。不过这种方法需要熟悉MetaModelica语法,适合深度定制需求的场景。

内容的提问来源于stack exchange,提问作者Esben F.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:05:01