⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 geardesignui.c

📁 Pro.TOOLKIT.Wildfire插件设计.配套光盘-141M.zip
💻 C
📖 第 1 页 / 共 3 页
字号:
/*====================================================================*\FILE	: GearDesignUI.cPURPOSE	: UI for Gear Design Application Demo (all dialog and UI logic)\*====================================================================*/#include <GearDesign.h>#include <ProUI.h>#include <ProUIDialog.h>#include <ProParameter.h>#include <pd_prototype.h>#define GD_UI_MAIN "geardesigndlg"#define GD_UI_CLOSEBTN "CloseBtn"#define GD_UI_CLOSEBTN_M "CloseBtn_M"#define GD_UI_LOADBTN_M "LoadBtn_M"#define GD_UI_GEARTYPE_GROUP_M "GearTypeGroup_M"#define GD_UI_LOADBTN_RMB "LoadBtn_RMB"#define GD_UI_GEARTYPE_GROUP_RMB "GearTypeGroup_RMB"#define GD_UI_TOOL_DELETE_M "DeleteBtn_M"#define GD_UI_TOOL_MODIFY_M "ModifyBtn_M"#define GD_UI_TOOL_REGENERATE_M "RegenerateBtn_M"#define GD_UI_TOOL_MATERIAL_M "MaterialBtn_M"#define GD_UI_TOOL_SAVEDVIEWS_CASCADE_M  "SavedViewsCascade_M"#define GD_UI_TOOL_VIEW_CHOICE_M "SavedViewsChoice_M"#define GD_UI_TOOL_VIEW_DEFAULTCREATE_M "CreateDefaultView_M"#define GD_UI_TOOL_VIEW_STORE_M "StoreView_M"#define GD_UI_GROUP_SPUR "SPUR"#define GD_UI_GROUP_RING "RING"#define GD_UI_LOADBTN "LoadBtn"#define GD_UI_CREATEBTN "CreateButton"#define GD_UI_MAINTAB "GearDesignSteps"#define GD_UI_DATUM_LAYOUT "DefaultDatums"#define GD_UI_DISK_LAYOUT "GearDisk"#define GD_UI_HOLE_LAYOUT "GearHole"#define GD_UI_HUB_LAYOUT "GearHub"#define GD_UI_BACKPLATE_LAYOUT "GearBackPlate"#define GD_UI_TEETH_LAYOUT "GearTeeth"#define GD_UI_LABEL_COMPLETED "CreatedLabel"#define GD_UI_LABEL_NOT_COMPLETED "NotCreatedLabel"#define GD_UI_STATUS_TABLE "ComponentsTable"#define GD_UI_STATUS_DONECOL "Created"#define GD_UI_STATUS_COMPCOL "Component"#define GD_UI_STATUS_REQCOL "Required"#define GD_UI_DATUM_ROW "Datums"#define GD_UI_DISK_ROW "Disk"#define GD_UI_HOLE_ROW "Hole"#define GD_UI_HUB_ROW "Hub"#define GD_UI_BACKPLATE_ROW "Back Plate"#define GD_UI_TEETH_ROW "Teeth"#define GD_UI_XOFFSET_INPUT "XOffsetInput"#define GD_UI_YOFFSET_INPUT "YOffsetInput"#define GD_UI_ZOFFSET_INPUT "ZOffsetInput"#define GD_UI_GEARDISK_W_INPUT "GearDiskWidth"#define GD_UI_GEARDISK_D_INPUT "GearDiskDiameter"#define GD_UI_GEARHOLE_D_INPUT "GearHoleDiameter"#define GD_UI_KEYWAY_W_INPUT "KeywayWidth"#define GD_UI_KEYWAY_H_INPUT "KeywayHeight"#define GD_UI_KEYWAY_W_LABEL "KeywayWidthLabel"#define GD_UI_KEYWAY_H_LABEL "KeywayHeightLabel"#define GD_UI_INCLUDE_KEYWAY "IncludeKeywayCheck"#define GD_UI_GEARHUB_D_INPUT "HubDiameter"#define GD_UI_GEARHUB_T_INPUT "HubThickness"#define GD_UI_KEY_W_INPUT "KeyWidth"#define GD_UI_KEY_H_INPUT "KeyHeight"#define GD_UI_KEY_W_LABEL "KeyWidthLabel"#define GD_UI_KEY_H_LABEL "KeyHeightLabel"#define GD_UI_INCLUDE_KEY "IncludeKeyCheck"#define GD_UI_BN_R_INPUT "BackNotchRadius"#define GD_UI_BP_D_INPUT "BackPlateDiameter"#define GD_UI_BP_T_INPUT "BackPlateThickness"#define GD_UI_BN_R_LABEL "BackNotchRadiusLabel"#define GD_UI_INCLUDE_BN "IncludeBacknotchCheck"#define GD_UI_N_TEETH_SPINBOX "NumTeeth"#define GD_UI_TOOTH_INNER_SURF_LABEL "ToothInnerSurfaceLabel"#define GD_UI_TOOTH_INNER_SURF_INPUT "ToothInnerSurface"#define GD_UI_TOOTH_PRESSURE_ANGLE "GearToothPressureAngle"#define GD_UI_TOOTH_P1_INPUT "GearToothParam1"#define GD_UI_MENUPANE_RMB "MenuPane_RMB" //Menu for Right Click static int ProTKGDUIDatumFromUIUpdate (GearParam* g_ptr);static int ProTKGDUIDatumUIUpdate (GearParam* g_ptr);static int ProTKGDUIDiskFromUIUpdate (GearParam* g_ptr);static int ProTKGDUIDiskUIUpdate (GearParam* g_ptr);static int ProTKGDUIHoleFromUIUpdate (GearParam* g_ptr);static int ProTKGDUIHoleUIUpdate (GearParam* g_ptr);static int ProTKGDUIHubFromUIUpdate (GearParam* g_ptr);static int ProTKGDUIHubUIUpdate (GearParam* g_ptr);static int ProTKGDUIBackplateFromUIUpdate (GearParam* g_ptr);static int ProTKGDUIBackplateUIUpdate (GearParam* g_ptr);static int ProTKGDUITeethFromUIUpdate (GearParam* g_ptr);static int ProTKGDUITeethUIUpdate (GearParam* g_ptr);static ProBoolean ProTKGDUICreateButtonUpdate (GearParam* g_ptr);typedef int (*ProTKGDUIInteractionFunction) (GearParam* g_ptr);/*--------------------------------------------------------------------*\    Links creation step to table and layouts in the UI.\*--------------------------------------------------------------------*/typedef struct {  ProTKGDStep  step;  char*        step_layout;  char*        step_row_name;  ProTKGDUIInteractionFunction  update_from_ui_function;  ProTKGDUIInteractionFunction  update_ui_function;} ProTKGDUIStepComponent;static ProTKGDUIStepComponent gd_components [] = {  {PTK_GD_DATUM, GD_UI_DATUM_LAYOUT, GD_UI_DATUM_ROW,    ProTKGDUIDatumFromUIUpdate, ProTKGDUIDatumUIUpdate},  {PTK_GD_DISK, GD_UI_DISK_LAYOUT, GD_UI_DISK_ROW,    ProTKGDUIDiskFromUIUpdate, ProTKGDUIDiskUIUpdate},  {PTK_GD_HOLE, GD_UI_HOLE_LAYOUT, GD_UI_HOLE_ROW,   ProTKGDUIHoleFromUIUpdate, ProTKGDUIHoleUIUpdate},  {PTK_GD_HUB, GD_UI_HUB_LAYOUT, GD_UI_HUB_ROW,    ProTKGDUIHubFromUIUpdate, ProTKGDUIHubUIUpdate},  {PTK_GD_BACKPLATE, GD_UI_BACKPLATE_LAYOUT, GD_UI_BACKPLATE_ROW,    ProTKGDUIBackplateFromUIUpdate, ProTKGDUIBackplateUIUpdate},  {PTK_GD_TEETH, GD_UI_TEETH_LAYOUT, GD_UI_TEETH_ROW,    ProTKGDUITeethFromUIUpdate, ProTKGDUITeethUIUpdate},};static ProError status;/*=============================================================*\  Function: 	ProTKGDUIDatumUIUpdate  Purpose:	Datum parameters -> UI\*=============================================================*/int ProTKGDUIDatumUIUpdate (GearParam* g_ptr){  status = ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_XOFFSET_INPUT, g_ptr->datum_x_offset);  status = ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_YOFFSET_INPUT, g_ptr->datum_y_offset);  status = ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_ZOFFSET_INPUT, g_ptr->datum_z_offset);  ProTKGDUICreateButtonUpdate (g_ptr);  return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIDatumFromUIUpdate  Purpose:	Datum parameters <- UI\*=============================================================*/int ProTKGDUIDatumFromUIUpdate (GearParam* g_ptr){  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_XOFFSET_INPUT, &g_ptr->datum_x_offset);  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_YOFFSET_INPUT, &g_ptr->datum_y_offset);  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_ZOFFSET_INPUT, &g_ptr->datum_z_offset);  return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIDiskUIUpdate  Purpose:	Disk parameters -> UI\*=============================================================*/int ProTKGDUIDiskUIUpdate (GearParam* g_ptr){  status = ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_GEARDISK_W_INPUT, g_ptr->gear_depth);  status = ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_GEARDISK_D_INPUT, g_ptr->gear_diam);  if (ProTKGDUICreateButtonUpdate (g_ptr))    {      if (g_ptr->gear_depth == 0.0 || g_ptr->gear_diam == 0.0)	ProUIPushbuttonDisable (GD_UI_MAIN, GD_UI_CREATEBTN);      else	ProUIPushbuttonEnable (GD_UI_MAIN, GD_UI_CREATEBTN);    }   return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIDiskFromUIUpdate  Purpose:	Disk parameters <- UI\*=============================================================*/int ProTKGDUIDiskFromUIUpdate (GearParam* g_ptr){  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_GEARDISK_W_INPUT, &g_ptr->gear_depth);  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_GEARDISK_D_INPUT, &g_ptr->gear_diam);    return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIKeywayUIUpdate  Purpose:	Keyway parameters -> UI\*=============================================================*/int ProTKGDUIKeywayUIUpdate (GearParam* g_ptr, ProBoolean create){  if (create)    {      ProUILabelEnable (GD_UI_MAIN, GD_UI_KEYWAY_W_LABEL);      ProUILabelEnable (GD_UI_MAIN, GD_UI_KEYWAY_H_LABEL);      ProUIInputpanelEnable (GD_UI_MAIN, GD_UI_KEYWAY_W_INPUT);      ProUIInputpanelEnable (GD_UI_MAIN, GD_UI_KEYWAY_H_INPUT);    }  else    {      ProUILabelDisable (GD_UI_MAIN, GD_UI_KEYWAY_W_LABEL);      ProUILabelDisable (GD_UI_MAIN, GD_UI_KEYWAY_H_LABEL);      ProUIInputpanelDisable (GD_UI_MAIN, GD_UI_KEYWAY_W_INPUT);      ProUIInputpanelDisable (GD_UI_MAIN, GD_UI_KEYWAY_H_INPUT);    }  ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_KEYWAY_W_INPUT, g_ptr->keyway_in_width);  ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_KEYWAY_H_INPUT, g_ptr->keyway_in_height);   return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIKeywayFromUIUpdate  Purpose:	Keyway parameters <- UI\*=============================================================*/int ProTKGDUIKeywayFromUIUpdate (GearParam* g_ptr){  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_KEYWAY_W_INPUT, &g_ptr->keyway_in_width);  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_KEYWAY_H_INPUT, &g_ptr->keyway_in_height);    return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIHoleUIUpdate  Purpose:	Hole parameters -> UI\*=============================================================*/int ProTKGDUIHoleUIUpdate (GearParam* g_ptr){  ProBoolean show_keyway;  status = ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_GEARHOLE_D_INPUT, g_ptr->inner_diam);    if (ProTKGDUICreateButtonUpdate (g_ptr))    {      if (g_ptr->inner_diam == 0.0)	ProUIPushbuttonDisable (GD_UI_MAIN, GD_UI_CREATEBTN);      else	ProUIPushbuttonEnable (GD_UI_MAIN, GD_UI_CREATEBTN);    }   show_keyway = (g_ptr->keyway_created)?PRO_B_TRUE:PRO_B_FALSE;  ProTKGDUIKeywayUIUpdate (g_ptr, show_keyway);  if (g_ptr->keyway_created)    ProUICheckbuttonSet (GD_UI_MAIN, GD_UI_INCLUDE_KEYWAY);   return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIHoleFromUIUpdate  Purpose:	Hole parameters <- UI\*=============================================================*/int ProTKGDUIHoleFromUIUpdate (GearParam* g_ptr){  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_GEARHOLE_D_INPUT, &g_ptr->inner_diam);   return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIKeyUIUpdate  Purpose:	Key parameters -> UI\*=============================================================*/int ProTKGDUIKeyUIUpdate (GearParam* g_ptr, ProBoolean create){  if (create)    {      ProUILabelEnable (GD_UI_MAIN, GD_UI_KEY_W_LABEL);      ProUILabelEnable (GD_UI_MAIN, GD_UI_KEY_H_LABEL);      ProUIInputpanelEnable (GD_UI_MAIN, GD_UI_KEY_W_INPUT);      ProUIInputpanelEnable (GD_UI_MAIN, GD_UI_KEY_H_INPUT);    }  else    {      ProUILabelDisable (GD_UI_MAIN, GD_UI_KEY_W_LABEL);      ProUILabelDisable (GD_UI_MAIN, GD_UI_KEY_H_LABEL);      ProUIInputpanelDisable (GD_UI_MAIN, GD_UI_KEY_W_INPUT);      ProUIInputpanelDisable (GD_UI_MAIN, GD_UI_KEY_H_INPUT);    }  ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_KEY_W_INPUT, g_ptr->keyway_out_width);  ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_KEY_H_INPUT, g_ptr->keyway_out_height);   return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIKeyFromUIUpdate  Purpose:	Key parameters <- UI\*=============================================================*/int ProTKGDUIKeyFromUIUpdate (GearParam* g_ptr){  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_KEY_W_INPUT, &g_ptr->keyway_out_width);  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_KEY_H_INPUT, &g_ptr->keyway_out_height);    return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIHubUIUpdate  Purpose:	Hub parameters -> UI\*=============================================================*/int ProTKGDUIHubUIUpdate (GearParam* g_ptr){  ProBoolean show_key;  status = ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_GEARHUB_D_INPUT, g_ptr->hub_out_diam);  status = ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_GEARHUB_T_INPUT, g_ptr->hub_depth);  if (ProTKGDUICreateButtonUpdate (g_ptr))    {      if (g_ptr->hub_out_diam == 0.0 || g_ptr->hub_depth == 0.0)	ProUIPushbuttonDisable (GD_UI_MAIN, GD_UI_CREATEBTN);      else	ProUIPushbuttonEnable (GD_UI_MAIN, GD_UI_CREATEBTN);    }  show_key = (g_ptr->key_created)?PRO_B_TRUE:PRO_B_FALSE;  ProTKGDUIKeyUIUpdate (g_ptr, show_key);  if (g_ptr->key_created)    ProUICheckbuttonSet (GD_UI_MAIN, GD_UI_INCLUDE_KEY);   return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIHubFromUIUpdate  Purpose:	Hub parameters <- UI\*=============================================================*/int ProTKGDUIHubFromUIUpdate (GearParam* g_ptr){  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_GEARHUB_D_INPUT, &g_ptr->hub_out_diam);  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_GEARHUB_T_INPUT, &g_ptr->hub_depth);   return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIBacknotchUIUpdate  Purpose:	Backnotch parameters -> UI\*=============================================================*/int ProTKGDUIBacknotchUIUpdate (GearParam* g_ptr, ProBoolean create){  if (create)    {      ProUILabelEnable (GD_UI_MAIN, GD_UI_BN_R_LABEL);      ProUIInputpanelEnable (GD_UI_MAIN, GD_UI_BN_R_INPUT);    }  else    {      ProUILabelDisable (GD_UI_MAIN, GD_UI_BN_R_LABEL);      ProUIInputpanelDisable (GD_UI_MAIN, GD_UI_BN_R_INPUT);    }  ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_BN_R_INPUT, g_ptr->backnotch_rad);   return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIBacknotchFromUIUpdate  Purpose:	Backnotch parameters <- UI\*=============================================================*/int ProTKGDUIBacknotchFromUIUpdate (GearParam* g_ptr){  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_BN_R_INPUT, &g_ptr->backnotch_rad);    return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIBackplateUIUpdate  Purpose:	Backplate parameters -> UI\*=============================================================*/int ProTKGDUIBackplateUIUpdate (GearParam* g_ptr){  ProBoolean show_bn;  status = ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_BP_D_INPUT, g_ptr->backplate_diam);  status = ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_BP_T_INPUT, g_ptr->backplate_depth);  if (ProTKGDUICreateButtonUpdate (g_ptr))    {      if (/*g_ptr->backplate_created || */g_ptr->backplate_diam == 0.0 || g_ptr->backplate_depth == 0.0)	ProUIPushbuttonDisable (GD_UI_MAIN, GD_UI_CREATEBTN);      else	ProUIPushbuttonEnable (GD_UI_MAIN, GD_UI_CREATEBTN);    }  show_bn = (g_ptr->backnotch_created)?PRO_B_TRUE:PRO_B_FALSE;  ProTKGDUIBacknotchUIUpdate (g_ptr, show_bn);  if (g_ptr->backnotch_created)    ProUICheckbuttonSet (GD_UI_MAIN, GD_UI_INCLUDE_BN);   return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUIBackplateFromUIUpdate  Purpose:	Backplate parameters <- UI\*=============================================================*/int ProTKGDUIBackplateFromUIUpdate (GearParam* g_ptr){  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_BP_D_INPUT, &g_ptr->backplate_diam);  status = ProUIInputpanelDoubleGet (GD_UI_MAIN, GD_UI_BP_T_INPUT, &g_ptr->backplate_depth);   return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUITeethUIUpdate  Purpose:	Teeth parameters -> UI\*=============================================================*/int ProTKGDUITeethUIUpdate (GearParam* g_ptr){  status = ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_TOOTH_PRESSURE_ANGLE, g_ptr->Pressure_angle);  status = ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_TOOTH_P1_INPUT, g_ptr->tooth_par1);  status = ProUISpinboxIntegerSet (GD_UI_MAIN, GD_UI_N_TEETH_SPINBOX, g_ptr->n_of_teeth);  if (g_ptr->gear_type == RING_GEAR)    { //     ProUILabelShow (GD_UI_MAIN, GD_UI_TOOTH_INNER_SURF_LABEL); //     ProUIInputpanelShow (GD_UI_MAIN, GD_UI_TOOTH_INNER_SURF_INPUT);      ProUIInputpanelDoubleSet (GD_UI_MAIN, GD_UI_TOOTH_INNER_SURF_INPUT,				g_ptr->inner_diam);    }  else    {      ProUILabelHide (GD_UI_MAIN, GD_UI_TOOTH_INNER_SURF_LABEL);      ProUIInputpanelHide (GD_UI_MAIN, GD_UI_TOOTH_INNER_SURF_INPUT);    }  if (ProTKGDUICreateButtonUpdate (g_ptr))    {      if ( g_ptr->Pressure_angle == 0.0 ||	   g_ptr->tooth_par1  == 0.0 || g_ptr->n_of_teeth == 0)	ProUIPushbuttonDisable (GD_UI_MAIN, GD_UI_CREATEBTN);      else	ProUIPushbuttonEnable (GD_UI_MAIN, GD_UI_CREATEBTN);    }   return PRO_TK_NO_ERROR;}/*=============================================================*\  Function: 	ProTKGDUITeethFromUIUpdate  Purpose:	Teeth parameters <- UI

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -