2026a
# 模型属性获取
对模型内部属性进行相关获取如获取模型的 key,名称,全名,以及模型的父类,以及模型中的注解等属性获取。
| 函数名 | 简介 |
|---|---|
| GetKeyByTypeName | 根据模型的名称获取模型key |
| GetNestedCompKeys | 获取模型下的所有组件key列表 |
| GetFullnameProp | 获取模型或元素的全名 |
| GetNameProp | 获取模型或元素的名称 |
| GetFullFileName | 获取模型所在文件路径 |
| GetPropAsString | 获取指定模型的注解或描述 |
| GetTopClassInFile | 获取文件中的顶层 |
| GetTopClassInFileByKey | 获取顶层父类 |
# GetKeyByTypeName
通过模型的类型全名查找模型 key。
# 语法
/**
* @brief 通过模型的类型全名查找模型key
* @param [in]type_name 类型全名
* @return 获取到的key
*/
MWint MwMoHandler::GetKeyByTypeName(const std::string& type_name);
# 说明
通过全名获取到对应的key,若传入的为模型的全名则查找模型 key;传入;传入模型下对应的组件全名,可查看到该组件的key。
# 示例
- 获取模型的 key
MwClassManager* classMgr = new MwClassManager();
classMgr->Initialize();
QString model_name = "Modelica.Blocks.Examples.PID_Controller";
MWint model_key = classMgr->GetMoHandler()->GetKeyByTypeName(model_name.toStdString());
- 获取模型下组件名为 PI 的 key
MwClassManager* classMgr = new MwClassManager();
classMgr->Initialize();
QString model_name = "Modelica.Blocks.Examples.PID_Controller.PI";
MWint model_key = classMgr->GetMoHandler()->GetKeyByTypeName(model_name.toStdString());
# GetNestedCompKeys
获取模型组件列表 key。
# 语法
/**
* @brief 获取模型下的所有组件key
* @param [in]cls_key 模型key
* @param [out]vec_keys 组件key列表
* @param [in]include_extends 是否包含内部组件,默认不包括
* @return 获取到的全名
*/
void MwMoHandler::GetNestedCompKeys(MWint cls_key, std::vector<MWint> &vec_keys, bool include_extends = false);
# 说明
获取模型下的所有组件的 key 列表。
# 示例
MwClassManager* classMgr = new MwClassManager();
classMgr->Initialize();
QString model_name = "Modelica.Blocks.Examples.PID_Controller";
MWint model_key = classMgr->GetMoHandler()->GetKeyByTypeName(model_name.toStdString());
std::vector<MWint> comp_list;
classMgr->GetMoHandler()->GetNestedCompKeys(model_key, comp_list);
# GetFullnameProp
获取元素的全名属性。
# 语法
/**
* @brief 通过模型的key获取全名
* @param [in]key 模型key
* @return 获取到的全名
*/
std::string MwMoHandler::GetFullnameProp (MWint key);
# 说明
通过 key 可获取到模型的全名。通过组件的key也可获取到组件的全名。
# 示例
获取模型的全名。
MwClassManager* classMgr = new MwClassManager();
classMgr->Initialize();
QString model_name = "Modelica.Blocks.Examples.PID_Controller";
MWint model_key = classMgr->GetMoHandler()->GetKeyByTypeName(model_name.toStdString());
classMgr->GetMoHandler()->GetFullnameProp(model_key);
Modelica.Blocks.Examples.PID_Controller
# GetNameProp
获取元素的名字属性。
# 语法
/**
*@brief 获取元素的名字属性
*@param [in] key 元素的键值
*@return 名字
*/
std::string MwMoHandler::GetNameProp(MWint key);
# 说明
获取模型的简名,不带全部名称。若传入模型 key 则获取到模型的简明,若传入组件 key 则获取到组件的简名(名称)。
# 示例
MwClassManager* classMgr = new MwClassManager();
classMgr->Initialize();
QString model_name = "Modelica.Blocks.Examples.PID_Controller";
MWint model_key = classMgr->GetMoHandler()->GetKeyByTypeName(model_name.toStdString());
std::string name = classMgr->GetMoHandler()->GetNameProp(model_key);
# GetFullFileName
模型所在文件的路径全名。
# 语法
/**
*@brief 获取模型所在文件的路径全名
*@param [in] class_key 元素的键值
*@param [out] full_file_name 路径全名
*/
MWstatus MwMoHandler::GetFullFileName(MWint class_key, std::wstring* full_file_name);
# 说明
获取模型所在路径包括路径下对应的 mo 文件名。
# 示例
MwClassManager* classMgr = new MwClassManager();
classMgr->Initialize();
QString model_name = "Modelica.Blocks.Examples.PID_Controller";
MWint model_key = classMgr->GetMoHandler()->GetKeyByTypeName(model_name.toStdString());
# GetPropAsString
获取指定名字的属性,属性值以字符串的形式返回。
# 语法
/**
*@brief 获取模型所在文件的路径全名
*@param [in] key 元素的键值
*@param [out] name 获取的名称
*/
std::string MwMoHandler::GetPropAsString(MWint key, std::string& name);
# 说明
获取模型描述,传入模型 key 可获取到模型对应的描述;传入组件 key 可获取到组件对应的描述。 模型描述和组件描述可查看3.1章节解释。
# 示例
MwClassManager* classMgr = new MwClassManager();
classMgr->Initialize();
QString model_name = "Modelica.Blocks.Examples.PID_Controller";
MWint model_key = classMgr->GetMoHandler()->GetKeyByTypeName(model_name.toStdString());
# GetTopClassInFile
获取文件中的顶层类。
# 语法
/**
* @brief 获取文件中的顶层类
* @param [in] strFile 模型文件物理路径
* @return 文件中的顶层类键值vector
*/
MWint MwMoHandler::GetTopClassInFile(const std::wstring &file);
# 说明
获取模型所在顶层类的 key 值。
# 示例
MwClassManager* classMgr = new MwClassManager();
classMgr->Initialize();
QString model_name = "Modelica.Blocks.Examples.PID_Controller";
MWint model_key = classMgr->GetMoHandler()->GetKeyByTypeName(model_name.toStdString());
MWint key = classMgr->GetMoHandler()->GetTopClassInFile(full_file_name);
# GetTopClassInFileByKey
获取与给定类型处于同一文件的顶层父。
# 语法
/**
* @brief 获取与给定类型处于同一文件的顶层父
* @param [in] key 模型键值
* @return 父类键值
*/
MWint MwMoHandler::GetTopClassInFileByKey(MWint key);
# 说明
获取同一文件中的顶层父类的模型 key。
# 示例
MwClassManager* classMgr = new MwClassManager();
classMgr->Initialize();
QString model_name = "Modelica.Blocks.Examples.PID_Controller";
MWint model_key = classMgr->GetMoHandler()->GetKeyByTypeName(model_name.toStdString());
MWint key = classMgr->GetMoHandler()->GetTopClassInFileByKey(model_key);