来源: https://www.ugsnx.com/thread-363041-1-1.html
网友(22***67)提问:
请问二次开发中, 可变轮廓铣, 如何设置边界驱动,下面是我写的代码, message返回信息是 Object is not the desired type 应该如何加进去?

int count = 0;
tag_t *objects = NULL;
UF_UI_ONT_ask_selected_nodes(&count, &objects);
int count1 =1;
tag_t curves[1] = {45219};
UF_CAMBND_boundary_data_t boundary_data;
boundary_data.boundary_type = UF_CAM_boundary_type_closed;
boundary_data.plane_type = 1;
boundary_data.material_side = UF_CAM_material_side_in_left;
boundary_data.origin[0] = 0.0;
boundary_data.origin[1] = 0.0;
boundary_data.origin[2] = 0.0;
boundary_data.matrix[0] = 1.0;
boundary_data.matrix[1] = 0.0;
boundary_data.matrix[2] = 0.0;
boundary_data.matrix[3] = 0.0;
boundary_data.matrix[4] = 1.0;
boundary_data.matrix[5] = 0.0;
boundary_data.matrix[6] = 0.0;
boundary_data.matrix[7] = 0.0;
boundary_data.matrix[8] = 1.0;
boundary_data.ignore_holes = 0;
boundary_data.ignore_islands = 0;
boundary_data.ignore_chamfers = 0;
boundary_data.app_data = NULL;
UF_CAMBND_app_data_t app_data;
app_data.has_stock = 0;
app_data.has_tolerances = 0;
app_data.has_feedrate = 0;
app_data.has_blank_distance = 0;
app_data.has_tool_position = 0;
UF_CAMBND_app_data_p_t dates = &app_data;
int err = UF_CAMBND_append_bnd_from_curve(objects[0], UF_CAM_drive, count1, curves,&boundary_data, &dates);
char message[133];
UF_get_fail_message(1345005, message);
lw->Open();
lw->WriteFullline(message);
UF_free(objects);大神(不小明我们不约)回复:
我把代码部分修改了下,增加了一些分配内存的功能,关键是UF_CAMBND_append_bnd_from_curve这里改成了UF_CAM_trim,不是UF_CAM_drive,我测试了下问题不大。
int count1 =2;
int ErrCode;
tag_t* Curve_list = NULL;
Curve_list = (tag_t*)UF_allocate_memory(count1 * sizeof(tag_t), &ErrCode);
Curve_list[0] = 34254;
Curve_list[1] = 34253;
UF_DISP_set_highlight(34253,1);
UF_CAMBND_boundary_data_p_t boundary_data;
boundary_data = (UF_CAMBND_boundary_data_p_t) UF_allocate_memory(sizeof(UF_CAMBND_boundary_data_t), &ErrCode);
boundary_data->boundary_type = UF_CAM_boundary_type_open;
boundary_data->plane_type = 1;
boundary_data->material_side = UF_CAM_material_side_in_left;
boundary_data->origin[0] = 0.0;
boundary_data->origin[1] = 0.0;
boundary_data->origin[2] = 0.0;
boundary_data->matrix[0] = 1.0;
boundary_data->matrix[1] = 0.0;
boundary_data->matrix[2] = 0.0;
boundary_data->matrix[3] = 0.0;
boundary_data->matrix[4] = 1.0;
boundary_data->matrix[5] = 0.0;
boundary_data->matrix[6] = 0.0;
boundary_data->matrix[7] = 0.0;
boundary_data->matrix[8] = 1.0;
boundary_data->ignore_holes = 0;
boundary_data->ignore_islands = 0;
boundary_data->ignore_chamfers = 0;
boundary_data->app_data = NULL;
UF_CAMBND_app_data_p_t *AppData;
AppData = (UF_CAMBND_app_data_p_t *)UF_allocate_memory( count1* sizeof(UF_CAMBND_app_data_p_t ), &ErrCode);
UF_CAMBND_app_data_p_t app_data;
app_data = (UF_CAMBND_app_data_p_t ) UF_allocate_memory(sizeof(UF_CAMBND_app_data_p_t ), &ErrCode);
app_data->has_stock = 0;
//app_data->has_cut_stock = 0;
app_data->has_tolerances = 0;
app_data->has_feedrate = 0;
//app_data->has_offset = 0;
//app_data->has_avoidance_type = 0;
app_data->has_blank_distance = 0;
app_data->has_tool_position = 0;
AppData[0] = app_data;
AppData[1] = app_data;
//int err = UF_CAMGEOM_append_items(objects[i], UF_CAM_drive, count1, Curve_list,AppData);
int err = UF_CAMBND_append_bnd_from_curve(objects[i], UF_CAM_trim, count1, Curve_list,boundary_data, AppData);
char message[133];
UF_get_fail_message(err, message);
uc1601(message,1);
UF_free(boundary_data);
UF_free(AppData);楼主(22***67)回复(不小明我们不约):
设置成功了, 太感谢了。
全部回帖 还未有人评论,快来评论抢沙发吧!
本周热门
相关帖子
