Bootstrap
mdo 云课精选 发表于:08-08 10:10   阅读(61)   回复(0)

来源: 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)回复(不小明我们不约):

设置成功了, 太感谢了。