bool RecBookFile::TypAdaptation( wxArrayPtrVoid params, AxProgressDlg *dlg ) { // params 0: nbfiles (unused) // params 1: paths (unused) // params 2: filenames // params 3: is the cache ok ? // params 4: fast adaptation ? (unused) wxArrayString *filenames = (wxArrayString*)params[2]; bool isCacheOk = *(bool*)params[3]; // name of model to generate - temporary... RecTypModel model( "rec_typ_adapt" ); if ( isCacheOk || wxFileExists( GetTypCacheFilename() ) ) model.Open( GetTypCacheFilename() ); else model.New(); // name of adapted model to generate - temporary... RecTypModel outModel( "rec_typ_adapt_out" ); outModel.New(); params.Add( &outModel ); bool failed = false; if ( !failed ) failed = !model.AddFiles( params, dlg ); if ( !failed ) failed = !model.Commit( dlg ); if ( !failed ) failed = !model.SaveAs( GetTypCacheFilename() ); if ( !failed ) failed = !model.Adapt( params, dlg ); if ( !failed ) failed = !outModel.SaveAs( GetTypFilename() ); if ( !failed ) { if ( isCacheOk ) { WX_APPEND_ARRAY( m_optFiles, *filenames ); } else { m_optFiles = *filenames; } } return ( !failed ); }
int main(int argc, char *argv[]) { int status, nparam, iparam; double real; char *server; gemCntxt *context; gemModel *model, *newModel; if ((argc != 2) && (argc != 3)) { printf(" usage: [d/q]mmdl filename [modeler]!\n"); return 1; } server = getenv("GEMserver"); status = gem_initialize(&context); printf(" gem_initialize = %d\n", status); if (argc == 2) { status = gem_setAttribute(context, 0, 0, "Modeler", GEM_STRING, 7, NULL, NULL, "Parasolid"); } else { status = gem_setAttribute(context, 0, 0, "Modeler", GEM_STRING, 7, NULL, NULL, argv[2]); } printf(" gem_setAttribute = %d\n", status); status = gem_loadModel(context, server, argv[1], &model); printf(" gem_loadModel = %d\n", status); printf(" \n"); if (status == GEM_SUCCESS) { outModel(model, &nparam); printf(" \n"); status = gem_copyModel(model, &newModel); printf(" gem_copyModel = %d\n", status); if (status == GEM_SUCCESS) { status = gem_releaseModel(model); printf(" gem_releaseModel = %d\n", status); model = newModel; /* set new parameter values */ do { printf(" Enter Parameter Index [0-done]: "); scanf("%d", &iparam); while (getchar() != 10); if ((iparam < 1) || (iparam > nparam)) continue; printf(" Enter Parameter Value: "); scanf("%lf", &real); while (getchar() != 10); status = gem_setParam(model, iparam, 1, NULL, &real, NULL, NULL); if (status != GEM_SUCCESS) printf(" gem_setParam &d = %d\n", iparam, status); } while ((iparam > 0) && (iparam <= nparam)); status = gem_regenModel(model); printf(" gem_regenModel = %d\n", status); printf(" \n"); outModel(model, &nparam); printf(" \n"); #ifdef QUARTZ status = gem_saveModel(model, "newModel"); printf(" gem_saveModel = %d\n", status); #else status = gem_saveModel(model, "newModel.csm"); printf(" gem_saveModel csm = %d\n", status); status = gem_saveModel(model, "newModel.egads"); printf(" gem_saveModel egads = %d\n", status); #endif } status = gem_releaseModel(model); printf(" gem_releaseModel = %d\n", status); } status = gem_terminate(context); printf(" gem_terminate = %d\n", status); return 0; }