zoukankan      html  css  js  c++  java
  • Parameter操作

    ProE的一大特色就是参数化设计,可见,参数在ProE中的作用。

    在ProE中,单击Tools->Parameters菜单项,即可弹出参数对话框。如下图所示:

    通过该对话框即可查看、新建、删除、修改参数。

    红线框住部分用于切换参数所属的是当前模型,某个特征,还是某个面等等。

    那么怎样用代码实现参数的新增、删除、修改与查询呢?

    下面通过例子来说明:

    Ex01:新增参数------------------------------------------------------

    为当前模型新增参数,参数类型为Double,参数名为Param_Double_Test,参数值为123.45

     1  // 获取当前模型
     2  ProError err;
     3  ProMdl mdl_curr;
     4  ProModelitem mdl_item_curr;
     5  err = ProMdlCurrentGet(&mdl_curr);
     6  err = ProMdlToModelitem(mdl_curr, &mdl_item_curr);
     7 
     8  // 添加参数
     9  ProParamvalue param_val;
    10  double d_val = 123.45;
    11  err = ProParamvalueSet(&param_val, &d_val, PRO_PARAM_DOUBLE);
    12  ProParameter param;
    13  err = ProParameterCreate(&mdl_item_curr, L"Param_Double_Test", &param_val, &param);
    14  if (err == PRO_TK_NO_ERROR)
    15  {
    16      AfxMessageBox(TEXT("成功新增参数!"));
    17  }
    18  else
    19  {
    20      AfxMessageBox(TEXT("新增参数失败!"));
    21  }

    Ex02:删除参数------------------------------------------------------

    在当前模型中删除参数名为Param_Int_Test的参数

     1  // 获取当前模型
     2  ProError err;
     3  ProMdl mdl_curr;
     4  ProModelitem mdl_item_curr;
     5  err = ProMdlCurrentGet(&mdl_curr);
     6  err = ProMdlToModelitem(mdl_curr, &mdl_item_curr);
     7 
     8  // 获取参数
     9  ProParameter param;
    10  err = ProParameterInit(&mdl_item_curr, L"Param_Int_Test", &param);
    11  if (err == PRO_TK_NO_ERROR)
    12  {
    13      AfxMessageBox(TEXT("成功获取参数!"));
    14  }
    15  else
    16  {
    17      AfxMessageBox(TEXT("获取参数失败!"));
    18      return -1;
    19  }
    20 
    21  // 删除获取的参数
    22  err = ProParameterDelete(&param);
    23  if (err == PRO_TK_NO_ERROR)
    24  {
    25      AfxMessageBox(TEXT("成功删除参数!"));
    26  }
    27  else
    28  {
    29      AfxMessageBox(TEXT("删除参数失败!"));
    30  }

    Ex03:修改参数值------------------------------------------------------

    将当前模型中名为Param_String_Test的String参数值修改为"Hello Kitty"

    并输出修改之前的参数值

     1 // 获取当前模型
     2  ProError err;
     3  ProMdl mdl_curr;
     4  ProModelitem mdl_item_curr;
     5  err = ProMdlCurrentGet(&mdl_curr);
     6  err = ProMdlToModelitem(mdl_curr, &mdl_item_curr);
     7 
     8  // 获取参数
     9  ProParameter param;
    10  err = ProParameterInit(&mdl_item_curr, L"Param_String_Test", &param);
    11  if (err == PRO_TK_NO_ERROR)
    12  {
    13      AfxMessageBox(TEXT("成功获取参数!"));
    14  }
    15  else
    16  {
    17      AfxMessageBox(TEXT("获取参数失败!"));
    18      return -1;
    19  }
    20 
    21  // 获取参数值并输出
    22  ProParamvalue param_value;
    23  ProParamvalueType param_type;
    24  err = ProParameterValueGet(&param, &param_value);
    25  if (param_value.type != PRO_PARAM_STRING)
    26  {
    27      AfxMessageBox(TEXT("参数类型不为String."));
    28      return -1;
    29  }
    30  ProLine old_value;
    31  err = ProParamvalueValueGet(&param_value, PRO_PARAM_STRING, old_value);
    32  CStringW cstr_old_val;
    33  cstr_old_val.Format(L"Old Value: %s", old_value);
    34  MessageBoxW(NULL, LPCWSTR(cstr_old_val), L"Test", MB_OK);
    35 
    36  // 设置新的参数值
    37  ProLine new_value = L"Hello Kitty";
    38  err = ProParamvalueSet(&param_value, new_value, PRO_PARAM_STRING);
    39  err = ProParameterValueSet(&param, &param_value);
    40  if (err == PRO_TK_NO_ERROR)
    41  {
    42      AfxMessageBox(TEXT("修改参数值成功!"));
    43  }
    44  else
    45  {
    46      AfxMessageBox(TEXT("修改参数值失败!"));
    47  }

    对于特征&面等包含的参数的操作类同。

  • 相关阅读:
    UVALive 7509 Dome and Steles
    HDU 5884 Sort
    Gym 101194H Great Cells
    HDU 5451 Best Solver
    HDU 5883 The Best Path
    HDU 5875 Function
    卡特兰数
    UVa 11729 Commando War 突击战
    UVa 11292 The Dragon of Loowater 勇者斗恶龙
    Spark Scala Flink版本对应关系
  • 原文地址:https://www.cnblogs.com/Hisin/p/2614188.html
Copyright © 2011-2022 走看看