iCAx开思工具箱

标题: 请教关于uf5947的问题(附代码) [打印本页]

作者: pericles    时间: 2008-10-16 12:26
标题: 请教关于uf5947的问题(附代码)
我先打开一个已有的part,随后用UF_PART_IMPORT导入另外一个已有的part ,调试成功.
现在使用uf5943获得平移矩阵,然后用uf5947进行移动,编译组建均通过,但是在UG中执行时没有反应.
哪位高手能告诉我,这是什么原因,谢谢啦!
下面是代码.



char part_name[132]="c:\\pump.prt";
    tag_t  part;
    UF_PART_load_status_t error_status;
UF_PART_open(part_name,&part,&error_status);

    char  file_name1[] = "c:\\electrode.prt"; //导入操作的源文件
  UF_import_part_modes_t  modes; //导入对象时的模式设置
  double  dest_csys[6]; //导入后对象所处的坐标系
  double  dest_point[3]; //导入后确定对象位置的基准点
  double  scale = 1.0;
  tag_t   group;
  modes.layer_mode = 0;
  modes.group_mode = 0;
  modes.view_mode = 0;
  modes.cam_mode = FALSE;
  dest_csys[0] = 1; //坐标系X轴的矢量
  dest_csys[1] = 0;
  dest_csys[2] = 0;
  dest_csys[3] = 0; //坐标系Y轴的矢量
  dest_csys[4] = 1;
  dest_csys[5] = 0;
  dest_point[0] = 0.0; //基准点设为原点
  dest_point[1] = 0.0;
  dest_point[2] = 0.0;
  UF_PART_import ( file_name1, &modes, dest_csys, dest_point, scale, &group );

  
        double translation[3];
  double matrix[16];
        translation[0]=1;
  translation[1]=0;
        translation[2]=0;
        FTN(uf5943) (translation,matrix);
        int n_object=1;
        int copy_or_move=1;
  int dest_layer=0;
  int trace_curve=2;
  tag_t copies;
  tag_t trace_curve_group;
  int status;
  FTN(uf5947) (matrix,&group,&n_object,&copy_or_move,&dest_layer,&trace_curve,&copies,&trace_curve_group,&status);
作者: jackie2003    时间: 2008-10-16 16:48
首先,请让你的程序通过编译再说

设置modes.group_mode = 1,看看UF_import_part_modes_t的定义就明白了

编译测试,对于一个block part,我测试通过了
作者: pericles    时间: 2008-10-16 18:37
to jackie2003:
   按照你的方法,果然调试通过,真的很感谢!
   我仔细看了看帮助和网上的介绍,如下,希望能对其他人有一些帮助
UF_import_part_modes_t modes;
                modes.layer_mode = 0; // add objects to work layer
                modes.group_mode = 1; // don't group the objects
               modes.view_mode  = 0; // don't merge views
作者: pericles    时间: 2008-10-16 23:32
现在又有一个问题要请教ackie2003兄以及各位了.
我在平移成功之后,想再将导入的prt做一个旋转,应该是用UF5945和UF5947吧,编译和组建通过,但是在UG中执行时显示UF5947的错误号为4,即 Shear Matrix With Non-shearable  Objects In The List ,而UF5945的错误号为0,即执行成功.附代码如下:

double origin[3]={1,0,0};
  double direction[3]={0,0,1};
  double degrees_rotation=30;
  double matrix_rotation[16];
  int status_totation;
  FTN(uf5945)(&origin[3],&direction[3],&degrees_rotation,&matrix_rotation[16],&status_totation);
  int n_object_r=1;
  int copy_or_move_r=1;
  int dest_layer_r=0;
  int trace_curve_r=2;
  tag_t copies_r;
  tag_t trace_curve_group_r;
  int status_r;
  FTN(uf5947) (matrix_rotation,&group,&n_object_r,&copy_or_move_r,&dest_layer_r,&trace_curve_r,&copies_r,&trace_curve_group_r,&status_r);

注:这段代码是紧接着上面代码后面加上的
作者: jackie2003    时间: 2008-10-17 15:40
不喜欢这种错误
自己学会debug

FTN(uf5945)(&origin[3],&direction[3],&degrees_rotation,&matrix_rotation[16],&status_totation);


FTN(uf5945)(origin,direction,&degrees_rotation,matrix_rotation,&status_totation);
作者: pericles    时间: 2008-10-17 15:57
让jackie2003前辈见笑了``````
我才开始搞UG OPEN API,对编程也没经验,不过我这个错误犯的还是很低级```
真的很感谢你给我的解答!




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