Warning: file(datafile/online) [function.file]: failed to open stream: No such file or directory in /home/all2one/public_html/bbs/topic.php on line 200
阳光精品论坛 > 『 CAD 专栏 』 > [二次开发] evaluate all expressions
 
欢迎您,客人:高级登录 | 注册 | 取回密码 新贴 | 发帖 | 会员 | 搜索 | 帮助

阳光精品论坛 >> 『 CAD 专栏 』 >> [二次开发] evaluate all expressions本主题已阅读1790次,回复0
发表一个新主题 回复贴子
批量引用回复把本贴加入论坛收藏夹向管理员报告帖子问题
作者 | 本页主题: [二次开发] evaluate all expressions 上一个主题:[二次开发] report selected features objects(conta 下一个主题:一种精度较高的建模方式  
even2004 

 
 究级天王 [荣誉]
信息:坛主标志 该用户目前离线
来自:未填 align=absmiddle
发贴:1239 贴 查找所有我发的帖子
积分:244
货币:5814 阳光币
注册时间:2008/12/31
 查看会员个人资料资料 将其加入好友列表好友 发短信息消息 引用回复这个贴子引用直接回复贴子回复

[二次开发] evaluate all expressions


#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;
}


修改贴子编辑 |  发表于 2009/09/19/07:52  |  1 层 

发表一个新主题 回复贴子 推荐给朋友 可打印版本 文章模式 
论坛跳转:


  快速回复  

文章内容:

HTML 代码不可用


BMB代码选项:
[img] - 开启
[flash] - 开启
[size] - 开启

上传附件[还可传0个]:
开启

最大字节: 200000 字节
最少发帖: 20 篇

标题:


  [使用 Ctrl+Enter 直接提交贴子]

你的用户名  你的密码: 忘了密码?

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



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