iCAx开思工具箱

标题: 【求助】UG二次开发中UF_MODL_move_feature()函数的使用问题 [打印本页]

作者: songjian1030    时间: 2004-12-24 12:31
标题: 【求助】UG二次开发中UF_MODL_move_feature()函数的使用问题
UF_MODL_move_feature()函数是否是对特征体进行移动操作,如何正确使用,程序代码如下,系统报错:
  uf_list_p_t car_list_for_move;
    UF_MODL_create_list([$car_list_for_move)]
    UF_MODL_put_list_item(car_list_for_move, blk_obj);
    UF_MODL_put_list_item(car_list_for_move, tyre1);
    UF_MODL_put_list_item(car_list_for_move, dplane);
    UF_MODL_put_list_item(car_list_for_move, mirror_tag);
  double move_points[2][12]={0,0,0,13587,0,0};
      UF_MODL_move_feature (car_list_for_move,0,move_points);
     UF_MODL_update();
  
  
作者: hmjjh    时间: 2004-12-31 21:17
兄弟,把你的代码贴的完整点儿。
你用的是point_to_point方式,你的坐标好像也不对。
应该设置如下:
move_pt[0][0] = 0;
move_pt[0][1] = 0;
move_pt[0][2] = 0;
  
move_pt[1][0] = 5;
move_pt[1][1] = 5;
move_pt[1][2] = 5;
作者: hcq2010    时间: 2009-12-13 23:47
我在使用这个函数时也遇到了问题。建立了一个BLOCK,想用UF_MODL_move_feature移动到另一点,不知为什么就是不成功。我已经做了一整天了就是不成功。请教各位了。代码如下:

#include <stdio.h>
#include <uf.h>
#include <uf_ui.h>
#include <uf_modl.h>
#include "moveblock.h"
static void PrintErrorMessage( int errorCode );
static void dougopenapi(void)
{
  int errorCode;
  
  tag_t blocktag;
  static double corner_pt[3]={0,0,0};
  char *edge_len[3]={"10","10","10"};
  uf_list_p_t feat_list;
  static int mode=0;
  static double movecoor[2][3]={{0.0,0.0,0.0},{10.0,10.0,10.0}};

  errorCode=UF_MODL_create_block( UF_NULLSIGN,  NULL,
                                corner_pt, edge_len, &blocktag );
   PrintErrorMessage( errorCode );
   UF_MODL_create_list(&feat_list);
   UF_MODL_put_list_item(feat_list, blocktag);
   UF_MODL_move_feature(feat_list, mode, movecoor);
   UF_MODL_update();
}

extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
{
    int errorCode = UF_initialize();
    if ( 0 == errorCode )
    {
          dougopenapi();
   
        errorCode = UF_terminate(); /* Terminate the API environment */
    }
   
    PrintErrorMessage( errorCode ); /* Print out any error messages */
}

extern int ufusr_ask_unload( void )
{
    return( UF_UNLOAD_IMMEDIATELY );
}

static void PrintErrorMessage( int errorCode )/* PrintErrorMessage*/
{
    if ( 0 != errorCode )
    {
        /* Retrieve the associated error message */
        char message[133];
        UF_get_fail_message( errorCode, message );
/* Print out the message */
        UF_UI_set_status( message );
        uc1601(message,1);
    }
}
作者: ffhi    时间: 2009-12-14 10:22
移动特征的例子:将方块沿X方向移动10mm,采用点到到的方式。

extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
{
    /* Initialize the API environment */
    if( UF_CALL(UF_initialize()) )
    {
        /* Failed to initialize */
        return;
    }
   
    /* TODO: Add your application code here */
    double adCornerPnt[3] = {0.0};
    char *asEdgeLen[3] = {"100", "60", "36"};
    tag_t tBlock = NULL_TAG;
    UF_MODL_create_block1(UF_NULLSIGN, adCornerPnt, asEdgeLen, &tBlock);

    uf_list_p_t move_list;
    UF_MODL_create_list(&move_list);
    UF_MODL_put_list_item(move_list, tBlock);

    double adRealData[2][12] = {{  0.0, 0.0, 0.0,
                                                     0.0, 0.0, 0.0,
                                                     0.0, 0.0, 0.0,
                                                     0.0, 0.0, 0.0},
                                                 { 10.0, 0.0, 0.0,
                                                     0.0, 0.0, 0.0,
                                                     0.0, 0.0, 0.0,
                                                     0.0, 0.0, 0.0}
                                                  };
    UF_CALL(UF_MODL_move_feature(move_list, 0, adRealData));
    UF_MODL_update();

    /* Terminate the API environment */
    UF_CALL(UF_terminate());
}




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3