problème d'affichage en c++

problème d'affichage en c++ - C++ - Programmation

Marsh Posté le 21-12-2006 à 19:42:29    

Code :
  1. Bonjour tout le monde j'ai un petit problème d'affichage dans mon programme
  2. //read the file .vtk format
  3. vtkPolyDataReader *Reader = vtkPolyDataReader::New();
  4. Reader->SetFileName("filename.vtk" );
  5. Reader->Update();
  6. Window->SetInput(Reader);//////c'est là mon problème
  7. Window->Render();
  8. Window->Interact();
  9. void RenderWindow::SetInput(vtkPolyData *)' : cannot convert parameter 1 from 'vtkOBJReader *' to 'vtkPolyData *'
  10. Alors j'ai fais une écriture avant àa est je voudrai la lire en utilisant ces codes mais ca m'affiche ce problème comment je pourrai l'éviter on vous remerciant de vos précieux aides

Reply

Marsh Posté le 21-12-2006 à 19:42:29   

Reply

Marsh Posté le 21-12-2006 à 20:48:52    

hamoudasafira1 a écrit :

Code :
  1. Bonjour tout le monde j'ai un petit problème d'affichage dans mon programme
  2. //read the file .vtk format
  3. vtkPolyDataReader *Reader = vtkPolyDataReader::New();
  4. Reader->SetFileName("filename.vtk" );
  5. Reader->Update();
  6. Window->SetInput(Reader);//////c'est là mon problème
  7. Window->Render();
  8. Window->Interact();
  9. void RenderWindow::SetInput(vtkPolyData *)' : cannot convert parameter 1 from 'vtkOBJReader *' to 'vtkPolyData *'
  10. Alors j'ai fais une écriture avant àa est je voudrai la lire en utilisant ces codes mais ca m'affiche ce problème comment je pourrai l'éviter on vous remerciant de vos précieux aides



 
http://www.vtk.org/Wiki/VTK_FAQ
 The C++ compiler cannot convert some pointer type to another pointer type in my little program
 
For instance, the C++ compiler cannot convert a vtkDataSet * type to a vtkImageData * type.
 
It means the compiler does not know the relationship between a vtkDataSet and a vtkImageData. This relationship is actually inheritance: vtkImageData is a subclass of vtkDataSet. The only way for the compiler to know this relationship is to include the header file of the subclass, that is:
 
#include "vtkImageData.h"
 
If you wonder why the compiler did not complain about an unknown type, it is because somewhere (probably in a filter header file) there is forward class declaration, like:
 
class vtkImageData;

Reply

Marsh Posté le 21-12-2006 à 21:11:46    

thanks cry much but i wa try to do to make an include for the subclass
#include "vtkPolyData.h" but it's not working the problem if i change this line  
vtkPolyDataReader *Reader = vtkPolyDataReader::New();
by this:vtkPolyData *Reader = vtkPolyData::New();
 
the problem is that the SetFileName is not identified in this class so what can i do to resolve this problem?

Reply

Marsh Posté le 21-12-2006 à 21:16:01    

hamoudasafira1 a écrit :

thanks cry much but i wa try to do to make an include for the subclass
#include "vtkPolyData.h" but it's not working the problem if i change this line  
vtkPolyDataReader *Reader = vtkPolyDataReader::New();
by this:vtkPolyData *Reader = vtkPolyData::New();
 
the problem is that the SetFileName is not identified in this class so what can i do to resolve this problem?


ok ok spreek ik Frans, ik net een kopiëren/wiki plakken had je laten. :)

Reply

Marsh Posté le 21-12-2006 à 21:18:17    

can u explain in english or in french please

Reply

Marsh Posté le 21-12-2006 à 21:19:59    

ouiiiii, je plaisantais.  :)  
Dans le wiki, ils disent juste de mettre l'include de la classe fille. Après tu n'as rien d'autre à changer dans ton code. C'est juste pour dire au compilo comment faire la conversion de pointeurs.


Message édité par GrosBocdel le 21-12-2006 à 21:21:01
Reply

Marsh Posté le 21-12-2006 à 21:33:38    

oui c'est à peut prés la même probléme sauf que là j'ai pas une class de vtkPolyDataReader j'initialise seulement comme ça mais j'ai pas un class qui s'appel vtkPolyDataReader
on fait je veut te mettre comment je lis et écrire mais le problème et toujours dans Reader

Code :
  1. // save the output mesh to .vtk format
  2. char hassoun[500];
  3. if (OutputDirectory)
  4. {
  5.  strcpy (hassoun,OutputDirectory);
  6.  strcat (hassoun,"hassoun.vtk" );
  7. }
  8. else
  9.  strcpy(hassoun,"hassoun.vtk" );
  10. vtkPolyDataWriter *Writer=vtkPolyDataWriter::New();
  11. Writer->SetInput(cube);
  12. Writer->SetFileName(hassoun);
  13. Writer->Write();
  14. //read the file .vtk format
  15. vtkPolyDataReader *Reader = vtkPolyDataReader::New();
  16. Reader->SetFileName("hassoun.vtk" );
  17. Reader->Update();
  18. RenderWindow *Window=RenderWindow::New();
  19. Window->SetInput(Reader);////c'est là le probléme de conversion  
  20. Window->Render();
  21. Window->Interact();


voilà si tu pourra m'aider ç'est juste ça qui me bloque tout

Reply

Marsh Posté le 21-12-2006 à 21:48:34    

et si tu mets plutot :
 Window->SetInput(Reader->GetOutput());
ça ne marche pas mieux?  

Reply

Marsh Posté le 21-12-2006 à 21:57:35    

oui ça marche comme ça mais je ne comprend pas pourqoui ça ne change rien du tout je lis mais bon c'est je voudrai c'est d'avoir lancer le fichier .vtk que je l'ai déjà enregistrer mais on fait il y une deusiéme méthode en utilisant  

Code :
  1. void vtkSurface::CreateFromFile(const char *FileName)


donc c'est que j'ai fais c'est le suivant:

Code :
  1. vtkSurface *Create=vtkSurface::New();
  2. void vtkSurface::CreateFromFile(const char *Create);
  3. {
  4. int ch;
  5. char *terminaison;
  6. char fin[500];
  7. strcpy(hassoun,Create);
  8. if (hassoun != NULL)
  9. {
  10.  char *p;
  11.  for (p = hassoun; *p; ++p)
  12.   *p = tolower(*p);
  13. }
  14. ch='.';
  15. strcpy (fin,"hassoun.vtk" );
  16. terminaison = strstr(hassoun,fin);
  17. if (terminaison!=NULL)
  18. {
  19.  vtkPolyDataReader *Reader = vtkPolyDataReader::New();
  20.  Reader->SetFileName(Create);
  21.  Reader->Update();
  22.  Reader->Delete();
  23.  return;
  24. }
  25. ch='.';
  26. strcpy (fin,"hassoun.vtk" );
  27. terminaison = strstr(hassoun,fin);
  28. }


mais j'ai toujours une erreur et elle se trouve ici :

Code :
  1. void vtkSurface::CreateFromFile(const char *Create);


parce que il me disait qu'il y on a aussi un problème de conversion de char chez pas qoui à ton avis c'est laquelle la meuilleur et comment je pourrai résolu ce problème. tandis que mon prof m'a dis que la deuxième est mieux

Reply

Marsh Posté le 21-12-2006 à 22:25:08    

hamoudasafira1 a écrit :

oui ça marche comme ça mais je ne comprend pas pourqoui ça ne change rien du tout je lis mais bon c'est je voudrai c'est d'avoir lancer le fichier .vtk que je l'ai déjà enregistrer mais on fait il y une deusiéme méthode en utilisant  

Code :
  1. void vtkSurface::CreateFromFile(const char *FileName)


donc c'est que j'ai fais c'est le suivant:

Code :
  1. vtkSurface *Create=vtkSurface::New();
  2. void vtkSurface::CreateFromFile(const char *Create);
  3. {
  4. int ch;
  5. char *terminaison;
  6. char fin[500];
  7. strcpy(hassoun,Create);
  8. if (hassoun != NULL)
  9. {
  10.  char *p;
  11.  for (p = hassoun; *p; ++p)
  12.   *p = tolower(*p);
  13. }
  14. ch='.';
  15. strcpy (fin,"hassoun.vtk" );
  16. terminaison = strstr(hassoun,fin);
  17. if (terminaison!=NULL)
  18. {
  19.  vtkPolyDataReader *Reader = vtkPolyDataReader::New();
  20.  Reader->SetFileName(Create);
  21.  Reader->Update();
  22.  Reader->Delete();
  23.  return;
  24. }
  25. ch='.';
  26. strcpy (fin,"hassoun.vtk" );
  27. terminaison = strstr(hassoun,fin);
  28. }


mais j'ai toujours une erreur et elle se trouve ici :

Code :
  1. void vtkSurface::CreateFromFile(const char *Create);


parce que il me disait qu'il y on a aussi un problème de conversion de char chez pas qoui à ton avis c'est laquelle la meuilleur et comment je pourrai résolu ce problème. tandis que mon prof m'a dis que la deuxième est mieux


 
Je pense que la deuxième méthode que tu présentes est exactement la même que la première!
Trop de C et pas assez de C++ à mon goût  :??:  
Quel est le message d'erreur à void vtkSurface::CreateFromFile(const char *Create); ????
Enlève le ; après la parenthèse


Message édité par GrosBocdel le 21-12-2006 à 22:28:40
Reply

Marsh Posté le 21-12-2006 à 22:25:08   

Reply

Marsh Posté le 21-12-2006 à 22:30:26    

c'est mon problème
error C2761: 'void vtkSurface::CreateFromFile(const char *)' : member function redeclaration not allowed
 
et je m'excuse si je te dérange là je suis toujours au labo et je dois lui présenter la résultat demain
et comme je suis tout au début de programmation j'ai peur qu'il se fache contre moi un jour et qu'il me balance de la fenêtre  :lol:

Reply

Marsh Posté le 21-12-2006 à 22:34:26    

enlève le ; après void vtkSurface::CreateFromFile(const char *Create)

Reply

Marsh Posté le 21-12-2006 à 22:37:42    

:pt1cable:  
error C2601: 'vtkSurface::CreateFromFile' : local function definitions are illegal
pourtant j'ai bien initialiser vtkSurface  

Code :
  1. vtkSurface *vtkSurface=vtkSurface::New();


c'est bizard

Reply

Marsh Posté le 21-12-2006 à 22:48:54    

hamoudasafira1 a écrit :

:pt1cable:  
error C2601: 'vtkSurface::CreateFromFile' : local function definitions are illegal
pourtant j'ai bien initialiser vtkSurface  

Code :
  1. vtkSurface *vtkSurface=vtkSurface::New();


c'est bizard


 
Je ne comprends pas bien ce que tu fais, parce que tu sembles réécrire une fonction membre de vtkSurface sans avoir créé une classe dérivée.

Reply

Marsh Posté le 21-12-2006 à 23:05:54    

je te remercie pour tout  
je veux essayer avec la premiere methode et je verai avec mon tuteur demain si non si on ce poura se connecter sur msn si tu pourras me passer ton mail en privée si jamais j'ai des soucis si bien sûr ça ne te dérange pas je serai ravi de te connaître  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed