欢迎您,客人:高级登录 | 注册 | 取回密码 新贴 | 发帖 | 会员 | 搜索 | 帮助

阳光精品论坛 >> 『 CAD 专栏 』 >> [二次开发] evaluate all expressions本主题已阅读1752次,回复0

本文章信息
作 者 资 料
作 者 主 页
我 要 收 藏
发 表 主 题
转 发 该 文

[二次开发] evaluate all expressions

(这条文章已经被阅读了 1752 次) 时间:2009/09/19/07:52   来源:even2004

#define WRITE(X)   UF_UI_open_listing_window(); UF_UI_write_listing_window(X)

#define WRITE_F(X) (write_double_to_listing_window(#X, X))

static void write_double_to_listing_window(char *title, double n)
{
   char
       msg[UF_UI_MAX_STRING_LEN+1];

   UF_CALL(UF_UI_open_listing_window());
   sprintf(msg, "%s = %fn", title, n);
   UF_CALL(UF_UI_write_listing_window(msg));
}

#define WRITE_L(X) (write_logical_to_listing_window(#X, X))

static void write_logical_to_listing_window(char *title, logical flag)
{
   char
       msg[UF_UI_MAX_STRING_LEN+1];

   UF_CALL(UF_UI_open_listing_window());
   if (flag)
       sprintf(msg, "%s = TRUEn", title);
   else
       sprintf(msg, "%s = FALSEn", title);
   UF_CALL(UF_UI_write_listing_window(msg));
}

/*  There is no API method equvalent to these interactive options:

       Tools-> Update-> Update for External Change
       Tools-> Expression-> Refresh values from external spreadsheet-
       Tools-> Spreadsheet-> Edit-> Update NX part

   This program demonstrates a method which worked to update the model
   in a test case after changing values in an external spreadsheet.
*/

static logical evaluate_all_expressions(tag_t part, logical verbose)
{
   logical
       something_changed = FALSE;
   int
       ii,
       n_exp;
   tag_t
       *exps;
   double
       new_value,
       old_value;
   char
       *full_string;

   UF_CALL(UF_MODL_ask_exps_of_part(part, &n_exp, &exps));
   if (n_exp > 0)+
   {
       for (ii = 0; ii < n_exp; ii++)
       {
           UF_CALL(UF_MODL_ask_exp_tag_string(exps[ii], &full_string));
           if (verbose) WRITE(full_string);
           if (verbose) WRITE("n");

           UF_CALL(UF_MODL_ask_exp_tag_value(exps[ii], &old_value));
           if (verbose) WRITE_F(old_value);

           UF_CALL(UF_MODL_edit_exp(full_string));
           UF_free(full_string);

           UF_CALL(UF_MODL_ask_exp_tag_value(exps[ii], &new_value));
           if (verbose) WRITE_F(new_value);

           if (new_value != old_value) something_changed = TRUE;
       }
       if (verbose) WRITE_L(something_changed);
       UF_free(exps);
   }

   return something_changed;
}



此文章相关评论:(论坛方式查看)
此文章暂时没有评论



本论坛言论纯属发表者个人意见,与 阳光精品论坛 立场无关 联系我们
Powered by BMForum v5.0 Skin by Bob Shen