#include #include #include #include #include #include #include #include #include #include #include #include #include #include /* Routine to deduce directory for file based on project number */ int getpath (char partfilename[32], char pathname[64]) { FILE *fp; int c,i; char *p_partfilename=partfilename; char projnum[4],*p_projnum=projnum; char partprojnum[4]="--"; char projnam[32]; strcpy(pathname,"/data/d257/release/"); strncpy(partprojnum,p_partfilename+4,2); fp = fopen ("/data/d257/release/projects","r"); if(fp!=0) /* printf("File opened\n"); */ while (fscanf(fp, "%s %s\n",projnum,projnam) != EOF) { if(strcmp(partprojnum,projnum)==0) { strcat(pathname,projnam); strcat(pathname,"/"); fclose(fp); return(0); } } else { /* printf("Error opening file \n"); */ return(-1); } } /* Main body of program */ main (int argc, char *argv[]) { int fail_status,status,i,c; int plotid,dircount=1; int units,sizecode; char buf[133],opname[128]="",*draw_name[62],vw_name[25]=""; char *tempstr,errfile[64]; char partfilename[32],*p_partfilename=partfilename; char pathname[64],*p_pathname=pathname; char *p_plotque="ps_mono"; int numcopies, errflg, ctr, inlp, outlp, didswap; extern char *optarg; extern int optind, optopt; char errstring[150]=""; double draw_size[2]; tag_t part_tag,vw_tag=NULL_TAG,draw_tag; char *searchdirs={"/data/d257/release"}; logical subdirsearch ={TRUE},out_of_date; UF_PART_load_status_t error_status; UF_ASSEM_options_t assem_opts; UF_PLOT_options_t options = { 1.0,0.0, /* Scale and Rotation */ {0.0,0.0,0.0}, /* origin */ {0.0,0.0}, /* offset */ "psfile", /* plotter */ "ws3371", /* node */ "123456789012345", /* JOBNAME */ "", /* pause message */ "", /* baner message */ 0, /* banner flag = off */ UF_PLOT_PLOT_SAVE, /* plot and save */ 1,1, /* media and copies */ 1, /* pen type = width */ {3,3,3} }; /* Sort passed Args */ numcopies=1; while ((c = getopt(argc, argv, ":c:f:q:")) != -1) switch (c) { case 'c': numcopies=0; numcopies=atoi(optarg); break; case 'f': strcpy(partfilename,optarg); status = getpath (partfilename,pathname); if (status == -1) printf("Failed to get valid path\n"); break; case 'q': options.plotter = optarg; break; } options.copies = numcopies; /* Redirect stderr */ i=getpid(); sprintf(errfile,"/home/m223242/plot/plterr_%d",i); freopen(&errfile,"w",stderr); /* Initialize UF license */ if(!UF_is_initialized()) { status = UF_initialize(); if(status != 0) { fail_status = UF_get_fail_message(status, buf); if(fail_status == 0) { printf("Initialization failed because %s\n", buf); fflush(stdout); } else { printf("Initialization failed for unknown reason %d\n",fail_status); fflush(stdout); exit(-1); } } status=UF_set_variable("UGII_PATDIR", "/data/d257/release/patterns/dwg_formats"); status=UF_ASSEM_set_search_directories(dircount, &searchdirs,&subdirsearch); status=UF_ASSEM_ask_assem_options(&assem_opts); assem_opts.load_options=1; assem_opts.update=1; assem_opts.failure_action=1; assem_opts.load_components=1; assem_opts.load_fully=0; status=UF_ASSEM_set_assem_options(&assem_opts); } if(UF_is_initialized()) { } /* Open part file */ strcpy(opname,pathname); strcat(opname,partfilename); strcat(opname,".prt"); status = UF_PART_open(opname,&part_tag,&error_status); if (status) { printf("Open Failed %d\n",status); fail_status=UF_get_fail_message(status,buf); printf("opname = %s\n",opname); printf("Fail Message %s \n",buf); fflush(stdout); exit(-1); } sprintf(options.jobname,"%.10s",partfilename); fprintf(stderr,"Part %s Opened\n",partfilename); /* Initialize drawing name array to 20 char blank strings */ for (inlp=0;inlp<25;inlp++) { draw_name[inlp]=(char *)malloc(48);} /* Get Array of drawings */ tempstr=""; do { status = uc6497(tempstr); strcpy(draw_name[ctr],tempstr); fprintf(stderr,"Read Drawing %s, tempstr was %s--\n",draw_name[ctr],tempstr); ctr++; fflush(stdout); } while (strcmp(tempstr,"")); /* Sort drawing names */ for (outlp = 0; outlp < ctr; outlp++) { didswap=0; for (inlp = (outlp+1); inlp < (ctr-1); inlp++) { if (strlen(draw_name[outlp]) == strlen(draw_name[inlp])) { if (strcmp(draw_name[outlp],draw_name[inlp]) > 0) { tempstr = draw_name[outlp]; draw_name[outlp]=draw_name[inlp]; draw_name[inlp]=tempstr; didswap=1; } } else { if (strlen(draw_name[outlp]) > strlen(draw_name[inlp])) { tempstr = draw_name[outlp]; draw_name[outlp]=draw_name[inlp]; draw_name[inlp]=tempstr; didswap=1; } } } /* if (!didswap) { break;} */ } /* Drawings sorted, now plot */ for (inlp = 0; inlp < (ctr-1); inlp++) { tempstr=draw_name[inlp]; fprintf(stderr,"Will priocess %s aka %s\n",tempstr,draw_name[inlp]); /* get drawing size */ status = uc6479(tempstr,&units,&sizecode,draw_size); /* get drawing tag */ status = uc5028(tempstr,strlen(tempstr),&draw_tag); if (sizecode==1) { /* Do not scale up A size drawings */ options.scale=1; options.rotation = 0; options.offset[0]=0; options.offset[1]=0;} else{ options.scale=17/draw_size[1]; if (11/draw_size[0]