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,©_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],°rees_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,©_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],°rees_rotation,&matrix_rotation[16],&status_totation);
FTN(uf5945)(origin,direction,°rees_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