📄 geardesign.c
字号:
{1, PRO_E_STD_SECTION, {(ProValueDataType)-1}}, {2, PRO_E_STD_SEC_SETUP_PLANE, {(ProValueDataType)-1}}, {3, PRO_E_STD_SEC_PLANE, {PRO_VALUE_TYPE_SELECTION}}, {3, PRO_E_STD_SEC_PLANE_VIEW_DIR, {PRO_VALUE_TYPE_INT, PRO_SEC_VIEW_DIR_SIDE_ONE}}, {3, PRO_E_STD_SEC_PLANE_ORIENT_DIR, {PRO_VALUE_TYPE_INT, PRO_SEC_ORIENT_DIR_LEFT}}, {3, PRO_E_STD_SEC_PLANE_ORIENT_REF, {PRO_VALUE_TYPE_SELECTION}}, {1, PRO_E_FEAT_FORM_IS_THIN, {PRO_VALUE_TYPE_INT, PRO_EXT_FEAT_FORM_NO_THIN}}, {1, PRO_E_STD_DIRECTION, {PRO_VALUE_TYPE_INT, PRO_EXT_CR_IN_SIDE_TWO}}, {1, PRO_E_STD_EXT_DEPTH, {(ProValueDataType)-1}}, {2, PRO_E_EXT_DEPTH_FROM, {(ProValueDataType)-1}}, {3, PRO_E_EXT_DEPTH_FROM_TYPE, {PRO_VALUE_TYPE_INT, PRO_EXT_DEPTH_FROM_NONE}}, {2, PRO_E_EXT_DEPTH_TO, {(ProValueDataType)-1}}, {3, PRO_E_EXT_DEPTH_TO_TYPE, {PRO_VALUE_TYPE_INT, PRO_EXT_DEPTH_TO_BLIND}}, {3, PRO_E_EXT_DEPTH_TO_VALUE, {PRO_VALUE_TYPE_DOUBLE}}, }; ProError err; FeatureDef feat_def; ProFeature feature; Pro3dPnt pnt; ProModelitem modelitem; if (g_ptr->hub_out_diam == 0.0 || g_ptr->hub_depth == 0.0) return 1;/*-----------------------------------------------------------------*\ Preparation of feature data\*-----------------------------------------------------------------*/ memset(&feat_def, 0, sizeof(feat_def)); ProUtilSelectionFromSurfaceId(g_ptr->model, g_ptr->gear_type == SPUR_GEAR ? g_ptr->disk_front_surf_id : g_ptr->backplate_back_surf_id, &tree[7].data.v.r); ProUtilSelectionFromSurfaceId(g_ptr->model, g_ptr->side_surface_id, &tree[10].data.v.r); tree[18].data.v.d = g_ptr->hub_depth; feat_def.tree = tree; feat_def.sizeof_tree = SIZEOFARR(tree); feat_def.params[0].d = g_ptr->hub_out_diam; feat_def.params[1].r = tree[10].data.v.r; ProUtilSelectionFromSurfaceId(g_ptr->model, g_ptr->bottom_surface_id, &feat_def.params[2].r); feat_def.section_create_func = ProUtilCreateCircleSection; feat_def.feat_name = "Hub";/*-----------------------------------------------------------------*\ Create new feature\*-----------------------------------------------------------------*/ err = ProUtilCreateSketchedFeature(g_ptr, &feat_def, &feature); if (err == PRO_TK_NO_ERROR) { g_ptr->hub_created = 1; ProUserFeatsReorder(g_ptr); /*-----------------------------------------------------------------*\ Find and name required surfaces\*-----------------------------------------------------------------*/ pnt[0] = g_ptr->datum_x_offset; pnt[1] = g_ptr->datum_y_offset + (g_ptr->inner_diam + g_ptr->hub_out_diam)/4; if (g_ptr->gear_type == SPUR_GEAR) pnt[2] = g_ptr->datum_z_offset + g_ptr->gear_depth + g_ptr->hub_depth; else pnt[2] = g_ptr->datum_z_offset - g_ptr->backplate_depth - g_ptr->hub_depth; ProUtilGeometryAtPointFind((ProPart)g_ptr->model, pnt, &modelitem); g_ptr->hub_front_surf_id = modelitem.id; ProUtilModelitemNameSet(&modelitem, "HUB_FRONT"); pnt[0] = g_ptr->datum_x_offset; pnt[1] = g_ptr->datum_y_offset + g_ptr->hub_out_diam/2; if (g_ptr->gear_type == SPUR_GEAR) pnt[2] = g_ptr->datum_z_offset + g_ptr->gear_depth + g_ptr->hub_depth/2; else pnt[2] = g_ptr->datum_z_offset - g_ptr->backplate_depth - g_ptr->hub_depth/2; ProUtilGeometryAtPointFind((ProPart)g_ptr->model, pnt, &modelitem); g_ptr->hub_side_surf_id = modelitem.id; ProUtilModelitemNameSet(&modelitem, "HUB_SIDE"); }/*-----------------------------------------------------------------*\ Free allocated memory\*-----------------------------------------------------------------*/ ProSelectionFree(&tree[7].data.v.r); ProSelectionFree(&tree[10].data.v.r); ProSelectionFree(&feat_def.params[2].r); return (err);}/*=============================================================*\ Function: ProUserCreateBackPlate Purpose: create first gear tooth\*=============================================================*/int ProUserCreateBackPlate(GearParam *g_ptr){ static ElemTreeData tree[]={ {0, PRO_E_FEATURE_TREE, {(ProValueDataType)-1}}, {1, PRO_E_FEATURE_TYPE, {PRO_VALUE_TYPE_INT, PRO_FEAT_PROTRUSION}}, {1, PRO_E_FEATURE_FORM, {PRO_VALUE_TYPE_INT, PRO_EXTRUDE}}, {1, PRO_E_EXT_SURF_CUT_SOLID_TYPE, {PRO_VALUE_TYPE_INT, PRO_EXT_FEAT_TYPE_SOLID}}, {1, PRO_E_REMOVE_MATERIAL, {PRO_VALUE_TYPE_INT, PRO_EXT_MATERIAL_ADD}}, {1, PRO_E_STD_SECTION, {(ProValueDataType)-1}}, {2, PRO_E_STD_SEC_SETUP_PLANE, {(ProValueDataType)-1}}, {3, PRO_E_STD_SEC_PLANE, {PRO_VALUE_TYPE_SELECTION}}, {3, PRO_E_STD_SEC_PLANE_VIEW_DIR, {PRO_VALUE_TYPE_INT, PRO_SEC_VIEW_DIR_SIDE_TWO}}, {3, PRO_E_STD_SEC_PLANE_ORIENT_DIR, {PRO_VALUE_TYPE_INT, PRO_SEC_ORIENT_DIR_LEFT}}, {3, PRO_E_STD_SEC_PLANE_ORIENT_REF, {PRO_VALUE_TYPE_SELECTION}}, {1, PRO_E_FEAT_FORM_IS_THIN, {PRO_VALUE_TYPE_INT, PRO_EXT_FEAT_FORM_NO_THIN}}, {1, PRO_E_STD_DIRECTION, {PRO_VALUE_TYPE_INT, PRO_EXT_CR_IN_SIDE_TWO}}, {1, PRO_E_STD_EXT_DEPTH, {(ProValueDataType)-1}}, {2, PRO_E_EXT_DEPTH_FROM, {(ProValueDataType)-1}}, {3, PRO_E_EXT_DEPTH_FROM_TYPE, {PRO_VALUE_TYPE_INT, PRO_EXT_DEPTH_FROM_NONE}}, {2, PRO_E_EXT_DEPTH_TO, {(ProValueDataType)-1}}, {3, PRO_E_EXT_DEPTH_TO_TYPE, {PRO_VALUE_TYPE_INT, PRO_EXT_DEPTH_TO_BLIND}}, {3, PRO_E_EXT_DEPTH_TO_VALUE, {PRO_VALUE_TYPE_DOUBLE}}, }; ProError err; FeatureDef feat_def; ProFeature feature; Pro3dPnt pnt; ProModelitem modelitem; if (g_ptr->backplate_diam == 0.0 || g_ptr->backplate_depth == 0.0) return 1; /*-----------------------------------------------------------------*\ Preparation of feature data\*-----------------------------------------------------------------*/ memset(&feat_def, 0, sizeof(feat_def)); ProUtilSelectionFromSurfaceId(g_ptr->model, g_ptr->front_surface_id, &tree[7].data.v.r); ProUtilSelectionFromSurfaceId(g_ptr->model, g_ptr->side_surface_id, &tree[10].data.v.r); tree[18].data.v.d = g_ptr->backplate_depth; feat_def.tree = tree; feat_def.sizeof_tree = SIZEOFARR(tree); feat_def.params[0].d = g_ptr->backplate_diam; feat_def.params[1].r = tree[10].data.v.r; ProUtilSelectionFromSurfaceId(g_ptr->model, g_ptr->bottom_surface_id, &feat_def.params[2].r); feat_def.section_create_func = ProUtilCreateCircleSection; feat_def.feat_name = "Back_Plate";/*-----------------------------------------------------------------*\ Create new feature\*-----------------------------------------------------------------*/ err = ProUtilCreateSketchedFeature(g_ptr, &feat_def, &feature); if (err == PRO_TK_NO_ERROR) { g_ptr->backplate_created = 1; ProUserFeatsReorder(g_ptr); /*-----------------------------------------------------------------*\ Find and name required surfaces\*-----------------------------------------------------------------*/ pnt[0] = g_ptr->datum_x_offset + (g_ptr->backplate_diam - g_ptr->inner_diam)/2; pnt[1] = g_ptr->datum_y_offset; pnt[2] = g_ptr->datum_z_offset - g_ptr->backplate_depth; ProUtilGeometryAtPointFind((ProPart)g_ptr->model, pnt, &modelitem); g_ptr->backplate_back_surf_id = modelitem.id; ProUtilModelitemNameSet(&modelitem, "BACKPLATE_BACK"); pnt[0] = g_ptr->datum_x_offset; pnt[1] = g_ptr->datum_y_offset + g_ptr->backplate_diam/2; pnt[2] = g_ptr->datum_z_offset - g_ptr->backplate_depth/2; ProUtilGeometryAtPointFind((ProPart)g_ptr->model, pnt, &modelitem); g_ptr->backplate_side_surf_id = modelitem.id; ProUtilModelitemNameSet(&modelitem, "BACKPLATE_SIDE"); }/*-----------------------------------------------------------------*\ Free allocated memory\*-----------------------------------------------------------------*/ ProSelectionFree(&tree[7].data.v.r); ProSelectionFree(&tree[10].data.v.r); ProSelectionFree(&feat_def.params[2].r); return (err);}/*=============================================================*\ Function: ProUserCreateKeyway Purpose: create keyway inner\*=============================================================*/int ProUserCreateKeyway(GearParam *g_ptr){ static ElemTreeData tree[]= { {0, PRO_E_FEATURE_TREE, {(ProValueDataType)-1}}, {1, PRO_E_FEATURE_TYPE, {PRO_VALUE_TYPE_INT, PRO_FEAT_CUT}}, {1, PRO_E_FEATURE_FORM, {PRO_VALUE_TYPE_INT, PRO_EXTRUDE}}, {1, PRO_E_EXT_SURF_CUT_SOLID_TYPE, {PRO_VALUE_TYPE_INT, PRO_EXT_FEAT_TYPE_SOLID}}, {1, PRO_E_REMOVE_MATERIAL, {PRO_VALUE_TYPE_INT, PRO_EXT_MATERIAL_REMOVE}}, {1, PRO_E_STD_SECTION, {(ProValueDataType)-1}}, {2, PRO_E_STD_SEC_SETUP_PLANE, {(ProValueDataType)-1}}, {3, PRO_E_STD_SEC_PLANE, {PRO_VALUE_TYPE_SELECTION}}, {3, PRO_E_STD_SEC_PLANE_VIEW_DIR, {PRO_VALUE_TYPE_INT, PRO_SEC_VIEW_DIR_SIDE_ONE}}, {3, PRO_E_STD_SEC_PLANE_ORIENT_DIR, {PRO_VALUE_TYPE_INT, PRO_SEC_ORIENT_DIR_RIGHT}}, {3, PRO_E_STD_SEC_PLANE_ORIENT_REF, {PRO_VALUE_TYPE_SELECTION}}, {1, PRO_E_FEAT_FORM_IS_THIN, {PRO_VALUE_TYPE_INT, PRO_EXT_FEAT_FORM_NO_THIN}}, {1, PRO_E_STD_DIRECTION, {PRO_VALUE_TYPE_INT, PRO_EXT_CR_IN_SIDE_ONE}}, {1, PRO_E_STD_MATRLSIDE, {PRO_VALUE_TYPE_INT, PRO_EXT_MATERIAL_SIDE_TWO}}, {1, PRO_E_STD_EXT_DEPTH, {(ProValueDataType)-1}}, {2, PRO_E_EXT_DEPTH_FROM, {(ProValueDataType)-1}},
{3, PRO_E_EXT_DEPTH_FROM_TYPE, {PRO_VALUE_TYPE_INT, PRO_EXT_DEPTH_FROM_NONE}}, {2, PRO_E_EXT_DEPTH_TO, {(ProValueDataType)-1}}, {3, PRO_E_EXT_DEPTH_TO_TYPE, {PRO_VALUE_TYPE_INT, PRO_EXT_DEPTH_TO_ALL}} }; ProError err; FeatureDef feat_def; ProFeature feature; if (g_ptr->keyway_in_width == 0.0 || g_ptr->keyway_in_height == 0.0) return 1;/*-----------------------------------------------------------------*\ Preparation of feature data\*-----------------------------------------------------------------*/ memset(&feat_def, 0, sizeof(feat_def)); ProUtilSelectionFromSurfaceId(g_ptr->model, g_ptr->disk_front_surf_id, &tree[7].data.v.r); ProUtilSelectionFromSurfaceId(g_ptr->model, g_ptr->side_surface_id, &tree[10].data.v.r); tree[12].data.v.i = g_ptr->gear_type != RING_GEAR ? PRO_EXT_CR_IN_SIDE_ONE : PRO_EXT_CR_IN_SIDE_TWO; feat_def.tree = tree; feat_def.sizeof_tree = SIZEOFARR(tree); feat_def.params[0].d = g_ptr->keyway_in_width; feat_def.params[1].d = g_ptr->keyway_in_height; ProUtilSelectionFromSurfaceId(g_ptr->model, g_ptr->hole_side_surf_id, &feat_def.params[2].r); feat_def.section_create_func = ProUtilCreateKeySection; feat_def.feat_name = "Keyway";/*-----------------------------------------------------------------*\ Create new feature\*-----------------------------------------------------------------*/ err = ProUtilCreateSketchedFeature(g_ptr, &feat_def, &feature); if (err == PRO_TK_NO_ERROR) { g_ptr->keyway_created = 1; }/*-----------------------------------------------------------------*\ Free allocated memory\*-----------------------------------------------------------------*/ ProSelectionFree(&tree[7].data.v.r); ProSelectionFree(&tree[10].data.v.r); ProSelectionFree(&feat_def.params[2].r); return (err);}/*=============================================================*\ Function: ProUserCreateKey Purpose: create keyway outer\*=============================================================*/int ProUserCreateKey(GearParam *g_ptr){ static ElemTreeData tree[]= { {0, PRO_E_FEATURE_TREE, {(ProValueDataType)-1}}, {1, PRO_E_FEATURE_TYPE, {PRO_VALUE_TYPE_INT, PRO_FEAT_PROTRUSION}}, {1, PRO_E_FEATURE_FORM, {PRO_VALUE_TYPE_INT, PRO_EXTRUDE}}, {1, PRO_E_EXT_SURF_CUT_SOLID_TYPE, {PRO_VALUE_TYPE_INT, PRO_EXT_FEAT_TYPE_SOLID}}, {1, PRO_E_REMOVE_MATERIAL, {PRO_VALUE_TYPE_INT, PRO_EXT_MATERIAL_ADD}}, {1, PRO_E_STD_SECTION, {(ProValueDataType)-1}}, {2, PRO_E_STD_SEC_SETUP_PLANE, {(ProValueDataType)-1}}, {3, PRO_E_STD_SEC_PLANE, {PRO_VALUE_TYPE_SELECTION}}, {3, PRO_E_STD_SEC_PLANE_VIEW_DIR, {PRO_VALUE_TYPE_INT, PRO_SEC_VIEW_DIR_SIDE_ONE}}, {3, PRO_E_STD_SEC_PLANE_ORIENT_DIR, {PRO_VALUE_TYPE_INT, PRO_SEC_ORIENT_DIR_RIGHT}}, {3, PRO_E_STD_SEC_PLANE_ORIENT_REF, {PRO_VALUE_TYPE_SELECTION}}, {1, PRO_E_FEAT_FORM_IS_THIN, {PRO_VALUE_TYPE_INT, 0}}, {1, PRO_E_STD_DIRECTION, {PRO_VALUE_TYPE_INT, PRO_EXT_CR_IN_SIDE_ONE}}, {1, PRO_E_STD_MATRLSIDE, {PRO_VALUE_TYPE_INT, PRO_EXT_MATERIAL_SIDE_TWO}}, {1, PRO_E_STD_EXT_DEPTH, {(ProValueDataType)-1}}, {2, PRO_E_EXT_DEPTH_FROM, {(ProValueDataType)-1}}, {3, PRO_E_EXT_DEPTH_FROM_TYPE, {PRO_VALUE_TYPE_INT, PRO_EXT_DEPTH_FROM_NONE}}, {2, PRO_E_EXT_DEPTH_TO, {(ProValueDataType)-1}}, {3, PRO_E_EXT_DEPTH_TO_TYPE, {PRO_VALUE_TYPE_INT, PRO_EXT_DEPTH_TO_NEXT}} }; ProError err; FeatureDef feat_def; ProFeature feature; if (g_ptr->keyway_out_width == 0.0 || g_ptr->keyway_out_height == 0.0) return 1;/*-----------------------------------------------------------------*\ Preparation of feature data\*-----------------------------------------------------------------*/ memset(&feat_def, 0, sizeof(feat_def)); ProUtilSelectionFromSurfaceId(g_ptr->model, g_ptr->hub_front_surf_id, &tree[7].data.v.r); ProUtilSelectionFromSurfaceId(g_ptr->model, g_ptr->side_surface_id, &tree[10].data.v.r); tree[9].data.v.i = g_ptr->gear_type == RING_GEAR ? PRO_SEC_ORIENT_DIR_LEFT : PRO_SEC_ORIENT_DIR_RIGHT; feat_def.tree = tree; feat_def.sizeof_tree = SIZEOFARR(tree); feat_def.params[0].d = g_ptr->keyway_out_width; feat_def.params[1].d = g_ptr->keyway_out_height; ProUtilSelectionFromSurfaceId(g_ptr->model, g_ptr->hub_side_surf_id, &feat_def.params[2].r); feat_def.section_create_func = ProUtilCreateKeySection; feat_def.feat_name = "Key";/*-----------------------------------------------------------------*\ Create new feature\*-----------------------------------------------------------------*/ err = ProUtilCreateSketchedFeature(g_ptr, &feat_def, &feature); if (err == PRO_TK_NO_ERROR) { g_ptr->key_created = 1; }/*-----------------------------------------------------------------*\ Free allocated memory\*-----------------------------------------------------------------*/ ProSelectionFree(&tree[7].data.v.r); ProSelectionFree(&tree[10].data.v.r); ProSelectionFree(&feat_def.params[2].r); return (err);}/*=============================================================*\ Function: ProUserCreateBackNotch Purpose: create a notch on the Back Plate\*=============================================================*/int ProUserCreateBackNotch(GearParam *g_ptr){ static ElemTreeData tree[]={ {0, PRO_E_FEATURE_TREE, {(ProValueDataType)-1}}, {1, PRO_E_FEATURE_TYPE, {PRO_VALUE_TYPE_INT, PRO_FEAT_CUT}}, {1, PRO_E_FEATURE_FORM, {PRO_VALUE_TYPE_INT, PRO_EXTRUDE}}, {1, PRO_E_EXT_SURF_CUT_SOLID_TYPE, {PRO_VALUE_TYPE_INT, PRO_EXT_FEAT_TYPE_SOLID}}, {1, PRO_E_REMOVE_MATERIAL, {PRO_VALUE_TYPE_INT, PRO_EXT_MATERIAL_REMOVE}}, {1, PRO_E_STD_SECTION, {(ProValueDataType)-1}}, {2, PRO_E_STD_SEC_SETUP_PLANE, {(ProValueDataType)-1}}, {3, PRO_E_STD_SEC_PLANE, {PRO_VALUE_TYPE_SELECTION}}, {3, PRO_E_STD_SEC_PLANE_VIEW_DIR, {PRO_VALUE_TYPE_INT, PRO_SEC_VIEW_DIR_SIDE_ONE}}, {3, PRO_E_STD_SEC_PLANE_ORIENT_DIR, {PRO_VALUE_TYPE_INT, PRO_SEC_ORIENT_DIR_RIGHT}}, {3, PRO_E_STD_SEC_PLANE_ORIENT_REF, {PRO_VALUE_TYPE_SELECTION}}, {1, PRO_E_FEAT_FORM_IS_THIN, {PRO_VALUE_TYPE_INT, PRO_EXT_FEAT_FORM_NO_THIN}}, {1, PRO_E_STD_DIRECTION, {PRO_VALUE_TYPE_INT, PRO_EXT_CR_IN_SIDE_ONE}}, {1, PRO_E_STD_MATRLSIDE, {PRO_VALUE_TYPE_INT, PRO_EXT_MATERIAL_SIDE_TWO}}, {1, PRO_E_STD_EXT_DEPTH, {(ProValueDataType)-1}},
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -