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

📄 geardesign.c

📁 Pro.TOOLKIT.Wildfire插件设计.配套光盘-141M.zip
💻 C
📖 第 1 页 / 共 5 页
字号:
/*====================================================================*\FILE	: GearDesign.cPURPOSE	: Gear Design Application Demo \*====================================================================*//*--------------------------------------------------------------------*\    Pro/TOOLKIT includes\*--------------------------------------------------------------------*/#include "GearDesign.h"#include "ProDimension.h"#include "ProDtmPln.h"#include "ProDtmCrv.h"#include "ProElement.h"#include "ProElempath.h"#include "ProExtrude.h"#include "ProFeature.h"#include "ProFeatForm.h"#include "ProFeatType.h"#include "ProGroup.h"#include "ProHole.h"#include "ProLayer.h"#include "ProMdl.h"#include "ProMenu.h"#include "ProMenuBar.h"#include "ProMessage.h"#include "ProModelitem.h"#include "ProModFeat.h"#include "ProParameter.h"#include "ProParamval.h"#include "ProPattern.h"#include "ProSecdim.h"#include "ProSelection.h"#include "ProSolid.h"#include "ProSurface.h"#include "ProStdSection.h"#include "ProUtil.h"/*--------------------------------------------------------------------*\    Pro/DEVELOP includes\*--------------------------------------------------------------------*/#include "prodevelop.h"#include "pro_unit.h"/*--------------------------------------------------------------------*\    C System includes\*--------------------------------------------------------------------*/#include <malloc.h>#include <math.h>/*--------------------------------------------------------------------*\    Application includes\*--------------------------------------------------------------------*/#include "TestError.h"#include "UtilMessage.h"#include "UtilString.h"#include "UtilMath.h"#include "UtilMenu.h"#include "UtilTree.h"#include "UtilCollect.h"/*--------------------------------------------------------------------*\    Macros\*--------------------------------------------------------------------*/#define SIZEOFARR(a) (sizeof(a)/sizeof(a[0]))#define STR_PARAM   0#define INT_PARAM   1#define DOUB_PARAM  2#define TAB_PARAM   3static ProError status;typedef struct tableraw{    char *string_val;    int  int_val;} TableRaw;typedef struct param{    int type;	/* 0 - string, 1 - int, 2 - double, 3 - table */    int length; /* for string - max lenght */    char *param_name;    ProBool  required; /* 1 - required, 0 - optional */    TableRaw *table; /* for table only */    int	 tablesize;  /* for table only */       ProBool  set;        void *value;} Param;/*--------------------------------------------------------------------*\    Application global/external data\*--------------------------------------------------------------------*/static TableRaw Length_unit[] = {    {"cm", UNIT_CM},    {"foot", UNIT_FOOT},    {"inch", UNIT_INCH},    {"m", UNIT_M},    {"mm", UNIT_MM}};static TableRaw Yes_no_tab[] = {    {"no", 0},    {"yes", 1}};static TableRaw GearType [] = {    {"spur", SPUR_GEAR},    {"ring", RING_GEAR}};static Param param_def[] = {    {STR_PARAM,  PRO_NAME_SIZE, "Name_of_model", 1},    {TAB_PARAM,  0, "Units", 1, Length_unit, SIZEOFARR(Length_unit)},    {STR_PARAM,  PRO_NAME_SIZE, "Material", 0},    {TAB_PARAM,  0, "GearType", 0, GearType, SIZEOFARR(GearType)},    {DOUB_PARAM, 0, "Datum_X_Offset", 0},    {DOUB_PARAM, 0, "Datum_Y_Offset", 0},    {DOUB_PARAM, 0, "Datum_Z_Offset", 0},    {DOUB_PARAM, 0, "Gear_Outer_Diameter", 1},    {DOUB_PARAM, 0, "Gear_Disk_Depth", 1},    {DOUB_PARAM, 0, "Outer_Plate_Diameter", 0},    {DOUB_PARAM, 0, "Outer_Plate_Depth", 0},    {DOUB_PARAM, 0, "Support_Hub_Outer_Diameter", 0},    {DOUB_PARAM, 0, "Support_Hub_Depth", 0},    {DOUB_PARAM, 0, "Inner_Diameter", 1},    {INT_PARAM,  0, "Number_of_teeth", 1},    {DOUB_PARAM, 0, "Keyway_inner_width", 0},    {DOUB_PARAM, 0, "Keyway_inner_height", 0},    {DOUB_PARAM, 0, "Key_outer_width", 0},      {DOUB_PARAM, 0, "Key_outer_height", 0},      {DOUB_PARAM, 0, "GearTooth_param1", 1},      {DOUB_PARAM, 0, "GearTooth_param2", 0},      {DOUB_PARAM, 0, "GearTooth_param3", 0},      {DOUB_PARAM, 0, "Backnotch_Radius", 0},    {DOUB_PARAM, 0, "Pressure_angle", 1},};static int ProUserFeatsReorder(GearParam *g_ptr);/*=============================================================*\  Function: 	ProUserDeleteDesign  Purpose:	delete current design\*=============================================================*/int ProUserDeleteDesign(GearParam *g_ptr) {    int n_sel, *feat_ids, i;    ProSelection *p_sel;    ProFeatureDeleteOptions opt[]= {PRO_FEAT_DELETE_CLIP};    ProModelitem modelitem;    ProError err;    ProMessageDisplay(MSGFIL , "PROTKGD Select feature(s) to be deleted");    err = ProSelect("feature", -1, NULL, NULL, NULL, NULL, &p_sel, &n_sel);    if (err != PRO_TK_NO_ERROR || n_sel<=0)	return 0;    feat_ids = (int *)calloc(n_sel, sizeof(int));    for (i=0; i<n_sel; i++)    {	ProSelectionModelitemGet(p_sel[i], &modelitem);	feat_ids[i] = modelitem.id;    }    ProFeatureDelete((ProSolid)g_ptr->model, feat_ids, n_sel, opt, 1);    ProTreetoolRefresh(g_ptr->model);    ProSolidDisplay((ProSolid)g_ptr->model);    free (feat_ids);    return (0);}/*=============================================================*\  Function: 	ProUserModifyDesign  Purpose:	modify current design\*=============================================================*/int ProUserModifyDesign(GearParam *g_ptr){    int dim_id;    ProSelection  *p_sel;    int n_sels;    int err, brk=0;    double value, drange[2];    ProModelitem item;    do    {	ProMessageDisplay(MSGFIL , "PROTKGD Select feature or dimension");	if (ProSelect("dimension,feature", 1, NULL, NULL, NULL, NULL,		      &p_sel, &n_sels) != PRO_TK_NO_ERROR)	    return 0;	ProSelectionModelitemGet (p_sel [0], &item);	if (item.type == PRO_FEATURE)	{	    ProFeatureParamsDisplay(p_sel[0], PRO_DIM_PARAM);	}	else	{	  ProDimensionValueGet (&item, &value);	  ProMessageDisplay(MSGFIL , 			    "PROTKGD Enter new value for dimension [%0f]",			    &value);	  drange[0] = 0;	  drange[1] = 1e10;	  if (ProMessageDoubleRead(drange, &value)==PRO_TK_NO_ERROR)	    {	      ProDimensionValueSet (&item, value);	      ProDimensionDisplayUpdate (&item);	    }	}    } while (!brk);

    return(0);}/*=============================================================*\  Function: 	ProUserRegenerate  Purpose:	regenerate model\*=============================================================*/int ProUserRegenerate(GearParam *g_ptr){    if (g_ptr->model != NULL)	ProSolidRegenerate((ProSolid)g_ptr->model, PRO_B_FALSE);    ProSolidDisplay((ProSolid)g_ptr->model);    return (0);}/*=============================================================*\  Function: 	ProUserMaterial  Purpose:	change material for gear\*=============================================================*/int ProUserMaterial(GearParam *g_ptr){    ProName name;    ProError err;    err = ProPartMaterialNameGet((ProPart)g_ptr->model, name);    if (err != PRO_TK_NO_ERROR)	ProStringToWstring(name, "");    do     {	err = PRO_TK_NO_ERROR;	ProMessageDisplay(MSGFIL, "PROTKGD Enter material name [%0w]", name);	if (ProMessageStringRead(PRO_NAME_SIZE, name) == PRO_TK_NO_ERROR)	{	    err = ProPartMaterialSet((ProPart)g_ptr->model, name);	    if (err != PRO_TK_NO_ERROR)		ProMessageDisplay(MSGFIL, "PROTKGD Unable assign material %0w", 		    name);	    else		ProMessageDisplay(MSGFIL, "PROTKGD Material %0w was assigned to part", 		    name);	}    } while (err!=PRO_TK_NO_ERROR);       return (0);}/*=============================================================*\  Function: 	ProUserCreateViewAuto  Purpose:	Create "FRONT", "SIDE" and "BOTTOM" views\*=============================================================*/int ProUserCreateViewAuto(GearParam *g_ptr){    ProView view;    ProName name;    int i;    static char *names[]={"FRONT", "SIDE", "BOTTOM"};    ProMatrix ident={{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}};    double m[4];    for (i=0; i<3; i++)    {	ProStringToWstring(name, names[i]);	ProViewStore(g_ptr->model, name, &view);	ProViewMatrixSet(g_ptr->model, view, ident);	memcpy(m, ident[0], 3*sizeof(double));	memcpy(ident[0], ident[1], 3*sizeof(double));	memcpy(ident[1], ident[2], 3*sizeof(double));	memcpy(ident[2], m, 3*sizeof(double));    }    return (0);}/*=============================================================*\  Function: 	ProUserCreateViewManual  Purpose:	Create an user defined view\*=============================================================*/int ProUserCreateViewManual(GearParam *g_ptr){    ProView view;    ProName name;    ProError err;    ProMessageDisplay(MSGFIL, "PROTKGD Enter a view name");    err = ProMessageStringRead(PRO_NAME_SIZE, name);    if (err == PRO_TK_NO_ERROR)    {	err = ProViewStore(g_ptr->model, name, &view);    }    return (err);}/*=============================================================*\  Function: 	ProUserCreateDatum  Purpose:	create "FRONT", "SIDE", "BOTTOM" datum planes \*=============================================================*/int ProUserCreateDatum(GearParam *g_ptr){    static ElemTreeData def_tree[]={	{0, PRO_E_FEATURE_TREE, {(ProValueDataType)-1}},	{1, PRO_E_FEATURE_TYPE, {PRO_VALUE_TYPE_INT, PRO_FEAT_DATUM}},	{1, PRO_E_DTMPLN_CONSTRAINTS, {(ProValueDataType)-1}},	{2, PRO_E_DTMPLN_CONSTRAINT, {(ProValueDataType)-1}},	{3, PRO_E_DTMPLN_CONSTR_TYPE, {PRO_VALUE_TYPE_INT, PRO_DTMPLN_DEF_X}}    };    static ElemTreeData offs_tree[]={      {0, PRO_E_FEATURE_TREE, {(ProValueDataType)-1}},      {1, PRO_E_FEATURE_TYPE, {PRO_VALUE_TYPE_INT, PRO_FEAT_DATUM}},      {1, PRO_E_DTMPLN_CONSTRAINTS, {(ProValueDataType)-1}},      {2, PRO_E_DTMPLN_CONSTRAINT, {(ProValueDataType)-1}},      {3, PRO_E_DTMPLN_CONSTR_TYPE, {PRO_VALUE_TYPE_INT, PRO_DTMPLN_OFFS}},      {3, PRO_E_DTMPLN_CONSTR_REF, {PRO_VALUE_TYPE_SELECTION, NULL}},      {3, PRO_E_DTMPLN_CONSTR_REF_OFFSET, {PRO_VALUE_TYPE_DOUBLE, 0.0}}    };        int axes[3] = { 	PRO_DTMPLN_DEF_X,	PRO_DTMPLN_DEF_Y,	PRO_DTMPLN_DEF_Z    };    wchar_t *names[]={L"GD_SIDE",L"GD_BOTTOM",L"GD_FRONT"};    int  i, *id[3], *dim_id[3];    ProSelection featsel;    ProModelitem modelitem;    ProFeature f;    ProErrorlist errs;    ProError err;    ProElement elem_tree;    double offset;      if (!g_ptr->datum_created)      {	id[0] = &g_ptr->side_surface_id;	id[1] = &g_ptr->bottom_surface_id;	id[2] = &g_ptr->front_surface_id;	dim_id[0] = &g_ptr->datum_x_offset_dim_id;	dim_id[1] = &g_ptr->datum_y_offset_dim_id;	dim_id[2] = &g_ptr->datum_z_offset_dim_id;		for (i=0; i<3; i++)	  {

⌨️ 快捷键说明

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