iCAx开思工具箱

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 24614|回复: 0
打印 上一主题 下一主题

【原创】动态调整特征参数的例子

[复制链接]
跳转到指定楼层
楼主
发表于 2003-7-15 10:39:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
      在参数化CAD系统的二次开发中,我们不可避免的需要图形随控件的值动态的变化,以增加可视化的效果。以下是一个用滑动条控件控制长方体特征其中一个参数的例子,虽然例子比较简单,但如果可以抛砖引玉,能够给各位一个小小的启发,已达到我所期望。下面是创建过程和部分源代码,请各位给予指导!
进入UG界面后,Application->User Interface Styler...进行对话框的设置。加入滑动条控件,并设置Drag一项的回调函数,进行对话框的回调函数设置!保存生成*.h,*.template.c和*.dlg三个文件。
将*.dlg放入相应的application目录下。利用VC建立工程,删除系统生成的文件,添加*.h,*.template.c两个文件,设置用户入口函数
//#ifdef DISPLAY_FROM_USER_EXIT
  extern void ufusr (char *param, int *retcode, int rlen)
然后在对话框的构造函数中生成立方体特征。
tag_t blk_obj;//全局变量
int DT_construction ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{
     /* Make sure User Function is available. */  
    
     char *block_len[3]={"25","25","25"};   
   double block_orig[3]={0.0,0.0,0.0};
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
  
     /* ---- Enter your callback code here ----- */
     UF_MODL_create_block1(UF_NULLSIGN,block_orig,block_len,[$blk_obj)]
     UF_terminate ();
  
    /* Callback acknowledged, do not terminate dialog */
    return (UF_UI_CB_CONTINUE_DIALOG);  
    /* A return value of UF_UI_CB_EXIT_DIALOG will not be accepted    */
    /* for this callback type.  You must continue dialog construction.*/
  
}
在滑动条控件回调函数中进行动态更新
int DT_scale_real_valuechanged ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{
     /* Make sure User Function is available. */  
  
/////////////////////////////////////////////////
    
////////////////////////////////////////////
//  double exp_value;
//  int number_of_exps=0,i;
//  tag_t *exps;
  double p0_value;
   char string[256];
  
  char length[256];
  UF_STYLER_item_value_type_t data;
  data.item_attr=UF_STYLER_VALUE;
  data.item_id=DT_SCALE_REAL_0;
  
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
  
     /* ---- Enter your callback code here ----- */
  
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
  
     /* ---- Enter your callback code here ----- */
  
    UF_STYLER_ask_value(dialog_id,[$data)]
  sprintf(length,"%f",data.value.real);
    p0_value=data.value.real;
  strcpy(string,"p0=");
    strcat(string,length);
  UF_MODL_edit_exp(string);
  UF_MODL_update();
  
     UF_terminate ();
  
    /* Callback acknowledged, do not terminate dialog */
    return (UF_UI_CB_CONTINUE_DIALOG);  
    
    /* or Callback acknowledged, terminate dialog.  */
    /* return ( UF_UI_CB_EXIT_DIALOG );             */
  
}
编译,连接生成*.dl文件。
进入UG界面,File—>Execute UG/OPEN—>User Function...调用*.dl文件即可!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 支持支持
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手板模型制作,在线3D打印服务

QQ|小黑屋|手机版|开思工具箱 CAD工具箱_CAM工具箱  

GMT+8, 2024-12-22 19:53 , Processed in 0.014244 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表