iCAx开思工具箱

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 28964|回复: 26
打印 上一主题 下一主题

初次做的UG二次开发,请各位大哥指导

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

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

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

x
      我开始接触UG二次开发有好天了。因为要做个项目,加上自己有编程的基础,所以导师叫我去做个二次开发的课题。 我虽然有程序设计的基础,但是UG 和VC之间的接口还有点搞不明白。我有几个问题想向各位大哥请教,如果能得到深夜摔键盘兄的指导,那就更好了。
       我的问题是这样的:老师叫我开发个小程序,利用参数输入,生成模型。
于是我做了个垫片参数建模的小程序。在UG下做了如下的对话框:
      
内径:
外径:
厚度:
创建(按钮)
  
在输入如上参数的基础上点击创建按钮,就能生成垫圈了。我的程序如下:
首先预设置参数值。找到  construct_cb(创建函数),然后加入如下代码:
  
int CY_construct_cb ( int dialog_id,
              void * client_data,
              UF_STYLER_item_value_type_p_t callback_data)
{
      UF_STYLER_item_value_type_t data;
   /* Make sure User Function is available. */   
      if ( UF_initialize() != 0)  
           return ( UF_UI_CB_CONTINUE_DIALOG );
  
      /* ---- Enter your callback code here ----- */
   // UF_STYLER_item_value_type_t data;
     data.item_attr=UF_STYLER_VALUE;
    data.item_id=CY_RMIN;
    data.value.real=2;
    UF_STYLER_set_value(dialog_id,[$data)]
  
    data.item_id=CY_RMAX;
    data.value.real=3;
    UF_STYLER_set_value(dialog_id,[$data)]
  
    data.item_id=CY_HE;
    data.value.real=4;
   UF_STYLER_set_value(dialog_id,[$data)]
   
  
      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.*/
  
}
  
上部分的程序是给对话框预设置值的,运行上叙程序后,我预想对话框的值如下:
  
内径:2
外径:3
厚度:4
  
在创建按钮的回调函数中输入如下代码:
  
int CY_creat_cb ( int dialog_id,
              void * client_data,
              UF_STYLER_item_value_type_p_t callback_data)
{
      
  
    UF_STYLER_item_value_type_t data;
    double rx,rd,he;                    //  为什么这个定义一定要放  tag_t cy1_tag, cy2_tag;
    int ret;                            //  前面呢
    tag_t cy1_tag, cy2_tag;
    double origin[3]={0,0,0};
    double d[3]={0,0,1};
      char dmin[256],dmax[256],hig[256];
    dmin[0]='\0';
    dmax[0]='\0';
    hig[0]='\0';
    //double rx,rd,he;
   
     /* Make sure User Function is available. */   
      if ( UF_initialize() != 0)  
           return ( UF_UI_CB_CONTINUE_DIALOG );
  
      /* ---- Enter your callback code here ----- */
   data.item_attr=UF_STYLER_VALUE;
    data.item_id=CY_RMIN;
    UF_STYLER_ask_value(dialog_id,[$data)]
    rx=data.value.real;
      
    data.item_id=CY_RMAX;
    UF_STYLER_ask_value(dialog_id,[$data)]
    rd=data.value.real;
     
    data.item_id=CY_HE;
    UF_STYLER_ask_value(dialog_id,[$data)]
    he=data.value.real;
  
    sprintf(dmin,"%f",rx);
    sprintf(dmax,"%f",rd);
    sprintf(hig,"%f",he);
  
    ret=UF_MODL_create_cyl1(UF_NULLSIGN,origin,hig,dmax,d,[$cy1_tag)]
    ret=UF_MODL_create_cyl1(UF_NEGATIVE,origin,hig,dmin,d,[$cy2_tag)]
  
      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 );               */
  
}
  
程序的运行:输入参数,点击创建,然后生成垫圈:
上面的程序通过编译与连接,生成了DLL。但是我在UG中调用对话框却出现了这样的问题,都是要点击两次,才会出现对话框。此时,对话框参数的预设置值并不是我在程序中设置的,而全部是零。我的程序是没问题的啊,这是怎么回事??是不是我的UG出什么问题了啊?? 还有我输入参数后点击创建,并没有生成我要的垫圈(我是在建模模块下进行的)。这又是怎么回事啊?请各位大哥指教,小弟感激不尽!!
  
这是一个学UG开发的好例子,短小精悍,五脏俱全。--zzz
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 支持支持
沙发
发表于 2005-7-7 22:39:20 | 只看该作者

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

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

x
板凳
 楼主| 发表于 2005-7-7 22:44:42 | 只看该作者

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

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

x
地板
 楼主| 发表于 2005-7-8 07:38:49 | 只看该作者

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

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

x
5
发表于 2005-7-8 08:11:31 | 只看该作者

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

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

x
6
 楼主| 发表于 2005-7-8 08:20:39 | 只看该作者

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

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

x
7
发表于 2005-7-8 09:50:26 | 只看该作者

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

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

x
8
 楼主| 发表于 2005-7-8 12:11:46 | 只看该作者

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

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

x
9
发表于 2005-7-8 22:34:17 | 只看该作者

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

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

x
10
发表于 2005-7-8 22:51:16 | 只看该作者

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

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

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

GMT+8, 2024-11-24 08:40 , Processed in 0.014695 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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