$$$$ TRACPART * TRACPART PROCEDUR GOUNAND 26/01/12 21:15:04 12448 ************************************************************************ * NOM : TRACPART * DESCRIPTION : Visualisation des partitions d'un maillage telles que * creees avec l'operateur PART ************************************************************************ * ENTREES : TAB [TABLE] = TABLE RENVOYEE PAR L'OPERATEUR PART * MCL1 [MOT] = MOT-CLE VALANT 'TOUT', 'ANIM' OU 'NCLK' * MCL2 [MOT] = MOT-CLE VALANT 'NCLK' * ENT1 [ENTIER] = ENTIER ENTRE 1 ET LA DIMENSION DE TAB * SORTIES : AUCUNE ************************************************************************ * SYNTAXE : * * TRACPART TAB ( | 'TOUT' | ) 'NCLK' ; * | 'ANIM' | * | ENTI1 | * ************************************************************************ DEBP TRACPART TAB*'TABLE' MCL1/'MOT' ; * CHANGER LA VALEUR DE __ANIM__ DIRECTEMENT DANS LE JEU DE DONNEES * AVANT D'APPELER TRACPART POUR MODIFIER LA VITESSE DE L'ANIMATION * **************************************************************** SI (NON (EGA (TYPE __ANIM__) 'ENTIER')) ; __ANIM__ = 1000000 ; FINS ; __ANIM__ = (ABS __ANIM__) + 1 ; * **************************************************************** * NOMBRE DE ZONES DANS LA PARTITION NZ = DIME TAB ; SI (EXIS TAB 'SOUSTYPE') ; NZ = NZ - 1 ; FINS ; SI (EXIS TAB 'CREATEUR') ; NZ = NZ - 1 ; FINS ; SI (NZ EGA 0) ; ERRE 215 ; FINS ; * LECTURE OPTIONNELLE D'UN PREMIER MOT-CLE (OPTION DU MENU OU 'NCLK') TX = ' ' ; M = -1 ; SI (EXIS MCL1) ; SI ((EGA MCL1 'TOUT') OU (EGA MCL1 'ANIM')) ; R = MOT MCL1 ; M = 1 ; * LECTURE OPTIONNELLE DU SECOND MOT-CLE (FORCEMENT 'NCLK') ARGU MCL2/'MOT' ; SI (EXIS MCL2) ; SI (EGA MCL2 'NCLK') ; TX = ' NCLK' ; SINON ; ERRE 1052 'AVEC' MCL1 'TOUT ANIM NCLK' ; FINS ; FINS ; SINON ; SI (EGA MCL1 'NCLK') ; TX = ' NCLK' ; SINON ; ERRE 1052 'AVEC' MCL1 'TOUT ANIM NCLK' ; FINS ; FINS ; FINS ; TX = TEXT TX ; * LECTURE OPTIONNELLE DU NUMERO DE LA PARTITION A TRACER SI (M EGA -1) ; ARGU ENT1/'ENTIER' ; SI (EXIS ENT1) ; SI ((ENT1 < 1) OU (ENT1 > NZ)) ; ERRE 36 'AVEC' ENT1 ; FINS ; R = CHAI ENT1 ; M = 1 ; FINS ; FINS ; * ON FORCE UN FOND BLANC (PLUS ESTHETIQUE POUR AFFICHER SIMULTANEMENT * DES PARTIES EN FILAIRE ET DES PARTIES REMPLIES) BK = VALE 'COSC' ; OPTI 'COSC' 'BLAN' ; * LISTE DES COULEURS UTILISEES LCLR = MOTS 'BLEU' 'ROUG' 'ROSE' 'VERT' 'TURQ' 'JAUN' 'VIOL' 'ORAN' 'AZUR' 'OCEA' 'CYAN' 'OLIV' 'GRIS' 'POUR' 'BRUN' 'BRIQ' 'CORA' 'BEIG' 'OR ' 'MARI' 'BOUT' 'LIME' 'LAVA' 'BRON' 'KAKI' 'PEAU' 'CARA' 'INDI' ; * LCLR = MOTS 'BLEU' 'ROUG' 'ROSE' 'VERT' 'TURQ' 'JAUN' 'VIOL' 'ORAN' * 'AZUR' 'OCEA' 'CYAN' 'OLIV' 'GRIS' ; NCLR = DIME LCLR ; * ASSEMBLAGE DES DIFFERENTES ZONES DE LA PARTITION MA = VIDE 'MAILLAGE' ; LB = MOTS (NZ+2)*'TOUT' ; REMP LB 2 'ANIM' ; REPE K NZ ; CO = EXTR LCLR ((@MOD (&K - 1) NCLR) + 1) ; MA = MA ET (COUL CO (TAB.&K)) ; REMP LB (&K+2) (CHAI &K) ; FIN K ; MA = UNIQ MA ; * CREATION DU MAILLAGE FILAIRE (SI POSSIBLE, SINON ON SE RABATTRA * SUR UN AFFICHAGE UN PEU MOINS ESTHETIQUE...) OER = VALE 'ERRE' ; OPTI 'ERRE' 'CONTINUER' ; ML = COUL 'NOIR' (CHAN 'LIGN' MA) ; OPTI 'ERRE' OER ; SI (NEG (TYPE ML) 'MAILLAGE') ; ML = COUL 'GRIS' MA ; FINS ; * BOUCLE SUR L'AFFICHAGE DES PARTITIONS TIT1 = CHAI 'ENSEMBLE DES ' NZ ' PARTITION(S)' ; SI (M < 0) ; TRAC MA 'FACE' TX 'TITR' TIT1 ; FINS ; REPE BMENU M ; SI (M < 0) ; R = MENU LB ; FINS ; * Fin de la procedure SI (EGA R 'Quitter') ; QUIT BMENU ; * Affichage de toutes les partitions en meme temps SINON ; SI (EGA R 'TOUT') ; TRAC MA 'FACE' TX 'TITR' TIT1 ; * Mise en evidence des partitions les unes apres les autres SINON ; SI (EGA R 'ANIM') ; REPE K NZ ; CO = EXTR LCLR ((@MOD (&K - 1) NCLR) + 1) ; TI = CHAI 'PARTITION ' &K ' SUR ' NZ ; TRAC (ML ET (COUL CO (TAB.&K))) 'FACE' 'NCLK' 'TITR' TI ; REPE BLOC1 __ANIM__ ; * ON NE FAIT RIEN, ON VEUT JUSTE RALENTIR L'ANIMATION ! FIN BLOC1 ; FIN K ; * Mise en evidence d'une partition specifique SINON ; KK = ENTI R ; CO = EXTR LCLR ((@MOD (KK - 1) NCLR) + 1) ; TI = CHAI 'PARTITION ' KK ' SUR ' NZ ; TRAC (ML ET (COUL CO (TAB.KK))) 'FACE' TX 'TITR' TI ; FINS ; FINS ; FINS ; FIN BMENU ; * RETABLISSEMENT DE LA COULEUR DU FOND OPTI 'COSC' BK ; FINP ;