/*****************************************************************************\ FILE : UgSheetsList.c PURPOSE : Pro/TOOLKIT User Guide Example - drawing sheets examples HISTORY.. DATE BUILD AUTHOR MODIFICATIONS 04-Dec-97 H-02-02 Philippe $$1 Created from online browser \*****************************************************************************/ /*-------------------------- Pro/Develop includes ---------------------------*/ #include #include /*-------------------------- Pro/Toolkit includes ---------------------------*/ #include #include #include /*-------------------------- Application includes ---------------------------*/ #include /*---------------------------------------------------------------------------*\ Function : UserSheetsList() Purpose : List all the sheets in a drawing \*---------------------------------------------------------------------------*/ ProError UserSheetsList(void * arg1, int arg2) { int status; int cur_sheet, n_sheets, count; double matrix[4][4]; ProMdl p_drawing; ProMdldata drawing_data; ProCharName drawing_name; ProCharName drawing_type; ProName sheet_size_wname; ProCharName sheet_size_name; ProCharName filename = {'s','h','e','e','t','s','.','l','s','t','\0'}; ProFileName wfilename; FILE * fp; ProStringToWstring(wfilename, filename); /*------------------------------------------*\ get information about the current drawing \*------------------------------------------*/ status = ProMdlCurrentGet( &p_drawing); ERROR_CHECK( "UserSheetsList", "ProMdlCurrentGet", status ); if (status != PRO_TK_NO_ERROR) return (status); status = ProMdlDataGet( p_drawing, &drawing_data); ERROR_CHECK( "UserSheetsList", "ProMdlDataGet", status ); if (status != PRO_TK_NO_ERROR) return (status); n_sheets = prodrw_number_sheets ( (Prohandle) p_drawing); ERROR_CHECK( "UserSheetsList", "prodrw_number_sheets", (n_sheets <= 0)); if (n_sheets <= 0) return (PRO_TK_GENERAL_ERROR); /*------------------------------------------*\ store the current sheet number \*------------------------------------------*/ cur_sheet = prodrw_get_current_sheet ( (Prohandle) p_drawing); ERROR_CHECK( "UserSheetsList", "prodrw_get_current_sheet",(cur_sheet<=0)); if (cur_sheet<=0) return (PRO_TK_E_NOT_FOUND); /*------------------------------------------*\ Open file and write drawing data as header \*------------------------------------------*/ fp = fopen(filename, "w"); ProWstringToString(drawing_name, drawing_data.name); ProWstringToString(drawing_type, drawing_data.type); fprintf(fp, "%s.%s contains the following %d sheets :\n", drawing_name, drawing_type, n_sheets); /*------------------------------------------*\ Visit all the sheets of the current drawing \*------------------------------------------*/ for (count = 1; count <= n_sheets; count++) { status = prodrw_set_current_sheet ( (Prohandle) p_drawing, count); ERROR_CHECK( "UserSheetsList", "prodrw_set_current_sheet", (status <= 0)); if (status <= 0) return (PRO_TK_GENERAL_ERROR); status = prodb_drawing_sheet_info ( (Prohandle) p_drawing, sheet_size_wname, matrix); ERROR_CHECK( "UserSheetsList", "prodb_drawing_sheet_info", (status <= 0)); if (status <= 0) return (PRO_TK_GENERAL_ERROR); ProWstringToString(sheet_size_name, sheet_size_wname); fprintf(fp, "\t%d)\t%s\n", count, sheet_size_name); } /*------------------------------------------*\ restore the current sheet \*------------------------------------------*/ status = prodrw_set_current_sheet ( (Prohandle) p_drawing, cur_sheet); ERROR_CHECK( "UserSheetsList", "prodrw_set_current_sheet", (status <= 0)); if (status <= 0) return (PRO_TK_GENERAL_ERROR); fclose(fp); /*------------------------------------------*\ display the file in an information window \*------------------------------------------*/ status = ProInfoWindowDisplay(wfilename, NULL, NULL); ERROR_CHECK( "UserSheetsList", "ProInfoWindowDisplay", status ); return (status); }