Beispiel #1
0
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 );
}
Beispiel #2
0
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;
}