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);