color
C COLOR SOURCE PASCAL 20/08/07 21:15:06 10687 c======================================================================= c c ce module permet de changer la couleur d'un objet donné. c maillage ou evolution c c======================================================================= c SUBROUTINE COLOR c c======================================================================= IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO -INC SMELEME -INC CCGEOME -INC SMEVOLL -INC SMDEFOR -INC SMVECTE -INC SMLMOTS character*8 motloc c c (fdp) Le 03 / 03 / 2015 c - Gestion des objets de type DEFORME c - Gestion des objets de type VECTEUR c - Possibilite de mettre un LISTMOTS pour les objets de type c EVOLUTIO et DEFORME c c c Acquisition de la couleur a affecter grace a un MOT ou un LISTMOTS ILMOT=0 IF (IERR.NE.0) RETURN c Cas ou l'on donne un LISTMOT IF (IRETOU.EQ.1) THEN ILMOT=1 SEGACT MLMOTS ELSE IF (IERR.NE.0) RETURN IF (ICOUL.EQ.0) THEN IF (IERR.NE.0) RETURN IF (IRETOU.EQ.0) THEN ICOUL = IDCOUL+1 ELSE IF (ICOUL.LE.0) ICOUL=IDCOUL+1 ICOUL = MOD(ICOUL-1,NBCOUL)+1 c write(6,*) 'ICOUL =',ICOUL ENDIF ENDIF ICOUL=ICOUL-1 ENDIF c c Cas 1 : objet de type maillage IF (IERR.NE.0) RETURN IF (IRETOU.EQ.1) THEN c on n'accepte pas de changer la couleur avec un LISTMOT IF (ILMOT.EQ.1) THEN MOTERR(1:8)='LISTMOT' ENDIF SEGACT MELEME NBSOUS=LISOUS(/1) NBREF=LISREF(/1) NBNN=NUM(/1) NBELEM=NUM(/2) SEGINI ,IPT1=MELEME ISAUV=IPT1 IF (NBREF.EQ.0) GOTO 16 DO 10 I=1,NBREF IPT3=LISREF(I) SEGINI ,IPT2=IPT3 IPT5=IPT2 DO 13 K=1,MAX(1,IPT2.LISOUS(/1)) IF (IPT2.LISOUS(/1).NE.0) THEN IPT4=IPT2.LISOUS(K) SEGINI ,IPT5=IPT4 IPT2.LISOUS(K)=IPT5 ENDIF DO J=1,IPT5.NUM(/2) IPT5.ICOLOR(J)=ICOUL enddo 13 CONTINUE 14 IPT1.LISREF(I)=IPT2 10 CONTINUE 16 IF (NBELEM.NE.0) THEN DO 20 I=1,NBELEM IPT1.ICOLOR(I)=ICOUL 20 CONTINUE ENDIF c cas d'objets geometriques constitues de plusieurs objets c geometriques elementaires IF (NBSOUS.EQ.0) GOTO 41 NBS=NBSOUS DO 40 I=1,NBS IPT2=LISOUS(I) SEGACT IPT2 NBSOUS=IPT2.LISOUS(/1) NBREF=IPT2.LISREF(/1) NBNN=IPT2.NUM(/1) NBELEM=IPT2.NUM(/2) SEGINI ,IPT3=IPT2 DO 35 J=1,NBELEM IPT3.ICOLOR(J)=ICOUL 35 CONTINUE IPT1.LISOUS(I)=IPT3 40 CONTINUE c ecriture du maillage resultat et sortie 41 CONTINUE GOTO 99 ENDIF c c Cas 2 : objet de type evolution IF (IERR.NE.0) RETURN IF (IRETOU.EQ.1) THEN SEGACT MEVOLL SEGINI,MEVOL1=MEVOLL c si l'on a donne un LISTMOTS, verification de sa dimension IF (ILMOT.EQ.1) THEN NEVO=MEVOLL.IEVOLL(/1) IF (NMOTS.NE.NEVO) THEN MOTERR(1:8)='LISTMOTS' INTERR(1)=NEVO ENDIF ENDIF c changement de couleur de toutes les evolutions elementaires DO 50 I=1,MEVOL1.IEVOLL(/1) KEVOLL=IEVOLL(I) SEGINI,KEVOL1=KEVOLL MEVOL1.IEVOLL(I)=KEVOL1 c determination de la couleur si donnee d'un LISTMOTS IF (ILMOT.EQ.1) THEN c on verifie meme que cette couleur est correcte IF (ICOUL.EQ.0) THEN ENDIF ICOUL=ICOUL-1 ENDIF KEVOL1.NUMEVX=ICOUL 50 CONTINUE c ecriture de l'evolution resultat et sortie GOTO 99 ENDIF c c Cas 3 : objet de type deformee IF (IERR.NE.0) RETURN IF (IRETOU.EQ.1) THEN SEGACT MDEFOR SEGINI,MDEFO1=MDEFOR c si l'on a donne un LISTMOTS, verification de sa dimension IF (ILMOT.EQ.1) THEN NDEF=MDEFOR.JCOUL(/1) IF (NMOTS.NE.NDEF) THEN MOTERR(1:8)='LISTMOTS' INTERR(1)=NDEF ENDIF ENDIF c changement de couleur de toutes les deformees DO I=1,MDEFO1.JCOUL(/1) c determination de la couleur si donnee d'un LISTMOTS IF (ILMOT.EQ.1) THEN c on verifie meme que cette couleur est correcte IF (ICOUL.EQ.0) THEN ENDIF ICOUL=ICOUL-1 ENDIF MDEFO1.JCOUL(I)=ICOUL ENDDO c ecriture de la deformee resultat et sortie SEGACT MDEFO1 GOTO 99 ENDIF c c Cas 4 : objet de type vecteur IF (IERR.NE.0) RETURN IF (IRETOU.EQ.1) THEN SEGACT MVECTE SEGINI,MVECT1=MVECTE c si l'on a donne un LISTMOTS, verification de sa dimension IF (ILMOT.EQ.1) THEN NVEC=MVECTE.NOCOUL(/1) IF (NMOTS.NE.NVEC) THEN MOTERR(1:8)='LISTMOTS' INTERR(1)=NVEC ENDIF ENDIF c changement de couleur de touts les vecteurs DO I=1,MVECT1.NOCOUL(/1) c determination de la couleur si donnee d'un LISTMOTS IF (ILMOT.EQ.1) THEN c on verifie meme que cette couleur est correcte IF (ICOUL.EQ.0) THEN ENDIF ICOUL=ICOUL-1 ENDIF MVECT1.NOCOUL(I)=ICOUL ENDDO c ecriture du vecteur resultat et sortie SEGACT,MVECT1 GOTO 99 ENDIF c c Si l'on passe ici, c'est que l'on a pas trouve d'objets du type c attendu c Fin du programme 99 CONTINUE END
© Cast3M 2003 - Tous droits réservés.
Mentions légales