ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/app/VMM/win32/visuarbre.cpp
Revision: 98
Committed: Fri May 9 14:38:25 2008 UTC (17 years, 3 months ago) by francois
Original Path: magic/app/VMM/VMM/win32/visuarbre.cpp
File size: 28063 byte(s)
Log Message:
Version des applications aux 9 mai 2008

File Contents

# User Rev Content
1 5 //---------------------------------------------------------------------------
2    
3     #include <vcl.h>
4     #pragma hdrstop
5     #include <stdio.h>
6     #include "visuarbre.h"
7     #include "mg_gestionnaire.h"
8     #include "mt_gestionnaire.h"
9     #include "mt_materiau.h"
10     //---------------------------------------------------------------------------
11     #pragma package(smart_init)
12     #pragma resource "*.dfm"
13     Tfvisuarbre *fvisuarbre;
14     //---------------------------------------------------------------------------
15     __fastcall Tfvisuarbre::Tfvisuarbre(TComponent* Owner,MG_GESTIONNAIRE *mgest)
16     : TForm(Owner),gest(mgest)
17     {
18     }
19     //---------------------------------------------------------------------------
20     void __fastcall Tfvisuarbre::FormClose(TObject *Sender,
21     TCloseAction &Action)
22     {
23     Action=caFree;
24     }
25     //---------------------------------------------------------------------------
26    
27     void __fastcall Tfvisuarbre::FormCreate(TObject *Sender)
28     {
29     TTreeNode *root=TreeView1->Items->Add(NULL,"Modèle Géométrique du modèle MAGiC");
30     int nbgeo=gest->get_nb_mg_geometrie();
31     char mess[255];
32     for (int i=0;i<nbgeo;i++)
33     {
34     MG_GEOMETRIE* geo=gest->get_mg_geometrie(i);
35     sprintf(mess,"%lu",geo->get_id());
36     TTreeNode* rootgeo=TreeView1->Items->AddChild(root,mess);
37     int nb_volume=geo->get_nb_mg_volume();
38     int nb_coque=geo->get_nb_mg_coque();
39     int nb_poutre=geo->get_nb_mg_poutre();
40     if (nb_volume>0)
41     {
42     TTreeNode* rootvolume=TreeView1->Items->AddChild(rootgeo,"Volume");
43     for (int j=0;j<nb_volume;j++)
44     {
45     MG_VOLUME* vol=geo->get_mg_volume(j);
46     sprintf(mess,"%lu",vol->get_id());
47     TTreeNode* rootvolj=TreeView1->Items->AddChild(rootvolume,mess);
48     int num=vol->get_num_materiau();
49     if (num>-1)
50     {
51     char nommat[50];
52     get_nom_materiau(num,nommat);
53     sprintf(mess,"Matériau = %s",nommat);
54     TTreeNode *node=TreeView1->Items->AddChild(rootvolj,mess);
55     node->ImageIndex=6;
56     node->SelectedIndex=6;
57     node->StateIndex=6;
58     }
59     int nbccf=vol->get_nb_ccf();
60     for (int k=0;k<nbccf;k++)
61     {
62     char type[3];
63     double val;
64     vol->get_type_ccf(k,type);
65     val=vol->get_valeur_ccf(k);
66 francois 98 sprintf(mess,"%s = %e",type,val);
67 5 TTreeNode *node=TreeView1->Items->AddChild(rootvolj,mess);
68     node->ImageIndex=6;
69     node->SelectedIndex=6;
70     node->StateIndex=6;
71     }
72     TTreeNode* rootface=TreeView1->Items->AddChild(rootvolj,"face");
73     int nb_coquille=vol->get_nb_mg_coquille();
74     for (int k=0;k<nb_coquille;k++)
75     {
76     MG_COQUILLE* coq=vol->get_mg_coquille(k);
77     int nbcoface=coq->get_nb_mg_coface();
78     for (int l=0;l<nbcoface;l++)
79     {
80     MG_COFACE* coface=coq->get_mg_coface(l);
81     MG_FACE* face=coface->get_face();
82     sprintf(mess,"%lu",face->get_id());
83     TTreeNode* rootfacel=TreeView1->Items->AddChild(rootface,mess);
84     int nbccf=face->get_nb_ccf();
85     for (int kk=0;kk<nbccf;kk++)
86     {
87     char type[3];
88     double val;
89     face->get_type_ccf(kk,type);
90     val=face->get_valeur_ccf(kk);
91 francois 98 sprintf(mess,"%s = %e",type,val);
92 5 TTreeNode *node=TreeView1->Items->AddChild(rootfacel,mess);
93     node->ImageIndex=6;
94     node->SelectedIndex=6;
95     node->StateIndex=6;
96     }
97     int nb_boucle=face->get_nb_mg_boucle();
98     TTreeNode* rootarete=TreeView1->Items->AddChild(rootfacel,"arête");
99     for (int m=0;m<nb_boucle;m++)
100     {
101     MG_BOUCLE* boucle=face->get_mg_boucle(m);
102     int nbcoarete=boucle->get_nb_mg_coarete();
103     for (int n=0;n<nbcoarete;n++)
104     {
105     MG_COARETE* coare=boucle->get_mg_coarete(n);
106     MG_ARETE* are=coare->get_arete();
107     sprintf(mess,"%lu",are->get_id());
108     TTreeNode* rootaren=TreeView1->Items->AddChild(rootarete,mess);
109     int nbccf=are->get_nb_ccf();
110     for (int kk=0;kk<nbccf;kk++)
111     {
112     char type[3];
113     double val;
114     are->get_type_ccf(kk,type);
115     val=are->get_valeur_ccf(kk);
116 francois 98 sprintf(mess,"%s = %e",type,val);
117 5 TTreeNode *node=TreeView1->Items->AddChild(rootaren,mess);
118     node->ImageIndex=6;
119     node->SelectedIndex=6;
120     node->StateIndex=6;
121     }
122    
123     TTreeNode* rootsommet=TreeView1->Items->AddChild(rootaren,"Sommet");
124     MG_SOMMET* som1=are->get_cosommet1()->get_sommet();
125     sprintf(mess,"%lu",som1->get_id());
126     TTreeNode* rootsom1=TreeView1->Items->AddChild(rootsommet,mess);
127     MG_SOMMET* som2=are->get_cosommet2()->get_sommet();
128     sprintf(mess,"%lu",som2->get_id());
129     TTreeNode* rootsom2=TreeView1->Items->AddChild(rootsommet,mess);
130     nbccf=som1->get_nb_ccf();
131     for (int kk=0;kk<nbccf;kk++)
132     {
133     char type[3];
134     double val;
135     som1->get_type_ccf(kk,type);
136     val=som1->get_valeur_ccf(kk);
137 francois 98 sprintf(mess,"%s = %e",type,val);
138 5 TTreeNode *node=TreeView1->Items->AddChild(rootsom1,mess);
139     node->ImageIndex=6;
140     node->SelectedIndex=6;
141     node->StateIndex=6;
142     }
143     nbccf=som2->get_nb_ccf();
144     for (int kk=0;kk<nbccf;kk++)
145     {
146     char type[3];
147     double val;
148     som2->get_type_ccf(kk,type);
149     val=som2->get_valeur_ccf(kk);
150 francois 98 sprintf(mess,"%s = %e",type,val);
151 5 TTreeNode *node=TreeView1->Items->AddChild(rootsom2,mess);
152     node->ImageIndex=6;
153     node->SelectedIndex=6;
154     node->StateIndex=6;
155     }
156     }
157     }
158     }
159     }
160    
161     }
162     }
163     if (nb_coque>0)
164     {
165     TTreeNode* rootcoque=TreeView1->Items->AddChild(rootgeo,"Coque");
166     for (int j=0;j<nb_coque;j++)
167     {
168     MG_COQUE* coque=geo->get_mg_coque(j);
169     sprintf(mess,"%lu",coque->get_id());
170     TTreeNode* rootcoqj=TreeView1->Items->AddChild(rootcoque,mess);
171     int num=coque->get_num_materiau();
172     if (num>-1)
173     {
174     char nommat[50];
175     get_nom_materiau(num,nommat);
176     sprintf(mess,"Matériau = %s",nommat);
177     TTreeNode *node=TreeView1->Items->AddChild(rootcoqj,mess);
178     node->ImageIndex=6;
179     node->SelectedIndex=6;
180     node->StateIndex=6;
181     }
182     int nbccf=coque->get_nb_ccf();
183     for (int k=0;k<nbccf;k++)
184     {
185     char type[3];
186     double val;
187     coque->get_type_ccf(k,type);
188     val=coque->get_valeur_ccf(k);
189 francois 98 sprintf(mess,"%s = %e",type,val);
190 5 TTreeNode *node=TreeView1->Items->AddChild(rootcoqj,mess);
191     node->ImageIndex=6;
192     node->SelectedIndex=6;
193     node->StateIndex=6;
194     }
195     TTreeNode* rootface=TreeView1->Items->AddChild(rootcoqj,"face");
196     int nb_coquille=coque->get_nb_mg_coquille();
197     for (int k=0;k<nb_coquille;k++)
198     {
199     MG_COQUILLE* coq=coque->get_mg_coquille(k);
200     int nbcoface=coq->get_nb_mg_coface();
201     for (int l=0;l<nbcoface;l++)
202     {
203     MG_COFACE* coface=coq->get_mg_coface(l);
204     MG_FACE* face=coface->get_face();
205     sprintf(mess,"%lu",face->get_id());
206     TTreeNode* rootfacel=TreeView1->Items->AddChild(rootface,mess);
207     int nbccf=face->get_nb_ccf();
208     for (int kk=0;kk<nbccf;kk++)
209     {
210     char type[3];
211     double val;
212     face->get_type_ccf(kk,type);
213     val=face->get_valeur_ccf(kk);
214 francois 98 sprintf(mess,"%s = %e",type,val);
215 5 TTreeNode *node=TreeView1->Items->AddChild(rootfacel,mess);
216     node->ImageIndex=6;
217     node->SelectedIndex=6;
218     node->StateIndex=6;
219     }
220     int nb_boucle=face->get_nb_mg_boucle();
221     TTreeNode* rootarete=TreeView1->Items->AddChild(rootfacel,"arête");
222     for (int m=0;m<nb_boucle;m++)
223     {
224     MG_BOUCLE* boucle=face->get_mg_boucle(m);
225     int nbcoarete=boucle->get_nb_mg_coarete();
226     for (int n=0;n<nbcoarete;n++)
227     {
228     MG_COARETE* coare=boucle->get_mg_coarete(n);
229     MG_ARETE* are=coare->get_arete();
230     sprintf(mess,"%lu",are->get_id());
231     TTreeNode* rootaren=TreeView1->Items->AddChild(rootarete,mess);
232     int nbccf=are->get_nb_ccf();
233     for (int kk=0;kk<nbccf;kk++)
234     {
235     char type[3];
236     double val;
237     are->get_type_ccf(kk,type);
238     val=are->get_valeur_ccf(kk);
239 francois 98 sprintf(mess,"%s = %e",type,val);
240 5 TTreeNode *node=TreeView1->Items->AddChild(rootaren,mess);
241     node->ImageIndex=6;
242     node->SelectedIndex=6;
243     node->StateIndex=6;
244     }
245    
246     TTreeNode* rootsommet=TreeView1->Items->AddChild(rootaren,"Sommet");
247     MG_SOMMET* som1=are->get_cosommet1()->get_sommet();
248     sprintf(mess,"%lu",som1->get_id());
249     TTreeNode* rootsom1=TreeView1->Items->AddChild(rootsommet,mess);
250     MG_SOMMET* som2=are->get_cosommet2()->get_sommet();
251     sprintf(mess,"%lu",som2->get_id());
252     TTreeNode* rootsom2=TreeView1->Items->AddChild(rootsommet,mess);
253     nbccf=som1->get_nb_ccf();
254     for (int kk=0;kk<nbccf;kk++)
255     {
256     char type[3];
257     double val;
258     som1->get_type_ccf(kk,type);
259     val=som1->get_valeur_ccf(kk);
260 francois 98 sprintf(mess,"%s = %e",type,val);
261 5 TTreeNode *node=TreeView1->Items->AddChild(rootsom1,mess);
262     node->ImageIndex=6;
263     node->SelectedIndex=6;
264     node->StateIndex=6;
265     }
266     nbccf=som2->get_nb_ccf();
267     for (int kk=0;kk<nbccf;kk++)
268     {
269     char type[3];
270     double val;
271     som2->get_type_ccf(kk,type);
272     val=som2->get_valeur_ccf(kk);
273 francois 98 sprintf(mess,"%s = %e",type,val);
274 5 TTreeNode *node=TreeView1->Items->AddChild(rootsom2,mess);
275     node->ImageIndex=6;
276     node->SelectedIndex=6;
277     node->StateIndex=6;
278     }
279     }
280     }
281     }
282     }
283    
284     }
285     }
286     if (nb_poutre>0)
287     {
288     TTreeNode* rootpoutre=TreeView1->Items->AddChild(rootgeo,"Poutre");
289     for (int j=0;j<nb_poutre;j++)
290     {
291     MG_POUTRE* pou=geo->get_mg_poutre(j);
292     sprintf(mess,"%lu",pou->get_id());
293     TTreeNode* rootpouj=TreeView1->Items->AddChild(rootpoutre,mess);
294     int num=pou->get_num_materiau();
295     if (num>-1)
296     {
297     char nommat[50];
298     get_nom_materiau(num,nommat);
299     sprintf(mess,"Matériau = %s",nommat);
300     TTreeNode *node=TreeView1->Items->AddChild(rootpouj,mess);
301     node->ImageIndex=6;
302     node->SelectedIndex=6;
303     node->StateIndex=6;
304     }
305     int nbccf=pou->get_nb_ccf();
306     for (int k=0;k<nbccf;k++)
307     {
308     char type[3];
309     double val;
310     pou->get_type_ccf(k,type);
311     val=pou->get_valeur_ccf(k);
312 francois 98 sprintf(mess,"%s = %e",type,val);
313 5 TTreeNode *node=TreeView1->Items->AddChild(rootpouj,mess);
314     node->ImageIndex=6;
315     node->SelectedIndex=6;
316     node->StateIndex=6;
317     }
318     int nb_boucle=pou->get_nb_mg_boucle();
319     TTreeNode* rootarete=TreeView1->Items->AddChild(rootpouj,"arête");
320     for (int m=0;m<nb_boucle;m++)
321     {
322     MG_BOUCLE* boucle=pou->get_mg_boucle(m);
323     int nbcoarete=boucle->get_nb_mg_coarete();
324     for (int n=0;n<nbcoarete;n++)
325     {
326     MG_COARETE* coare=boucle->get_mg_coarete(n);
327     MG_ARETE* are=coare->get_arete();
328     sprintf(mess,"%lu",are->get_id());
329     TTreeNode* rootaren=TreeView1->Items->AddChild(rootarete,mess);
330     int nbccf=are->get_nb_ccf();
331     for (int kk=0;kk<nbccf;kk++)
332     {
333     char type[3];
334     double val;
335     are->get_type_ccf(kk,type);
336     val=are->get_valeur_ccf(kk);
337 francois 98 sprintf(mess,"%s = %e",type,val);
338 5 TTreeNode *node=TreeView1->Items->AddChild(rootaren,mess);
339     node->ImageIndex=6;
340     node->SelectedIndex=6;
341     node->StateIndex=6;
342     }
343    
344     TTreeNode* rootsommet=TreeView1->Items->AddChild(rootaren,"Sommet");
345     MG_SOMMET* som1=are->get_cosommet1()->get_sommet();
346     sprintf(mess,"%lu",som1->get_id());
347     TTreeNode* rootsom1=TreeView1->Items->AddChild(rootsommet,mess);
348     MG_SOMMET* som2=are->get_cosommet2()->get_sommet();
349     sprintf(mess,"%lu",som2->get_id());
350     TTreeNode* rootsom2=TreeView1->Items->AddChild(rootsommet,mess);
351     nbccf=som1->get_nb_ccf();
352     for (int kk=0;kk<nbccf;kk++)
353     {
354     char type[3];
355     double val;
356     som1->get_type_ccf(kk,type);
357     val=som1->get_valeur_ccf(kk);
358 francois 98 sprintf(mess,"%s = %e",type,val);
359 5 TTreeNode *node=TreeView1->Items->AddChild(rootsom1,mess);
360     node->ImageIndex=6;
361     node->SelectedIndex=6;
362     node->StateIndex=6;
363     }
364     nbccf=som2->get_nb_ccf();
365     for (int kk=0;kk<nbccf;kk++)
366     {
367     char type[3];
368     double val;
369     som2->get_type_ccf(kk,type);
370     val=som2->get_valeur_ccf(kk);
371 francois 98 sprintf(mess,"%s = %e",type,val);
372 5 TTreeNode *node=TreeView1->Items->AddChild(rootsom2,mess);
373     node->ImageIndex=6;
374     node->SelectedIndex=6;
375     node->StateIndex=6;
376     }
377     }
378     }
379     }
380     }
381    
382     }
383     int nb_node=TreeView1->Items->Count;
384     for (int i=0;i<nb_node;i++)
385     {
386     TTreeNode* node=TreeView1->Items->Item[i];
387     if (node->Count>0)
388     {
389     node->ImageIndex=7;
390     node->SelectedIndex=7;
391     node->StateIndex=7;
392     }
393     else if (node->ImageIndex!=6)
394     {
395     node->ImageIndex=55;
396     node->SelectedIndex=55;
397     node->StateIndex=55;
398     }
399     }
400     }
401     //---------------------------------------------------------------------------
402     void __fastcall Tfvisuarbre::get_nom_materiau(int num,char* nom)
403     {
404     int res;
405     HKEY clef;
406     DWORD type,taille;
407     char *name;
408     char mess[255];
409     res=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\UQTR\\VMM\\",0,KEY_EXECUTE,&clef);
410     if (res!=ERROR_SUCCESS)
411     {
412     MessageBox(Handle,"Problème d'installation.","Erreur", MB_OK);
413     TerminateProcess(GetCurrentProcess(),0);
414     }
415     res=RegQueryValueEx(clef,"Materiau",0,&type,0,&taille);
416     if (res!=ERROR_SUCCESS)
417     {
418     MessageBox(Handle,"Problème d'installation","Erreur", MB_OK);
419     TerminateProcess(GetCurrentProcess(),0);
420     }
421     name=new char[taille];
422     RegQueryValueEx(clef,"Materiau",0,&type,name,&taille);
423     MT_GESTIONNAIRE mgest(name);
424     MT_MATERIAU* mat=mgest.get_materiau(num);
425     delete [] name;
426     strcpy(nom,mat->get_nom());
427     }
428     void __fastcall Tfvisuarbre::Etendre1Click(TObject *Sender)
429     {
430     TreeView1->FullExpand();
431     }
432     //---------------------------------------------------------------------------
433    
434     void __fastcall Tfvisuarbre::Rassembler1Click(TObject *Sender)
435     {
436     TreeView1->FullCollapse();
437     }
438     //---------------------------------------------------------------------------
439    
440     void __fastcall Tfvisuarbre::Dvelopper1Click(TObject *Sender)
441     {
442     TTreeNode *node=TreeView1->Selected;
443     node->Expand(false);
444     }
445     //---------------------------------------------------------------------------
446    
447     void __fastcall Tfvisuarbre::Rduire1Click(TObject *Sender)
448     {
449     TTreeNode *node=TreeView1->Selected;
450     node->Collapse(false);
451     }
452     //---------------------------------------------------------------------------
453    
454     void __fastcall Tfvisuarbre::Dveloppertout1Click(TObject *Sender)
455     {
456     TTreeNode *node=TreeView1->Selected;
457     node->Expand(true);
458     }
459     //---------------------------------------------------------------------------
460    
461     void __fastcall Tfvisuarbre::Rduiretout1Click(TObject *Sender)
462     {
463     TTreeNode *node=TreeView1->Selected;
464     node->Collapse(true);
465    
466     }
467     //---------------------------------------------------------------------------
468