C CHDITI    SOURCE    CHAT      05/01/12    21:56:21     5004
C   CE SOUS PROGRAMME AJOUTE LE CHPOINT IPCH A UN OBJET ELEMENTAIRE
C   IL RELAIE A CHDITE
C
      SUBROUTINE CHDITI(IPCH,IPT1,IPT2,ICPR,ISENS)
      IMPLICIT INTEGER(I-N)

-INC PPARAM
-INC CCOPTIO
-INC SMELEME
      SEGACT IPT1
C  ON TRAVAILLE SUR LES SOUS-OBJETS ET SUR LES REFERENCES ELEMENTAIRES
      IF (IPT1.LISOUS(/1).NE.0) GOTO 50
      CALL CHDITE(IPCH,IPT1,IPT2,ICPR,1,ISENS)
      IF (IPT1.LISREF(/1).EQ.0) GOTO 100
      NBREF=IPT1.LISREF(/1)
      GO TO 60
  50  NBELEM=0
      NBNN=0
      NBSOUS=IPT1.LISOUS(/1)
      NBREF=IPT1.LISREF(/1)
      SEGINI IPT2
      DO 51 I=1,IPT1.LISOUS(/1)
      IPT3=IPT1.LISOUS(I)
      SEGACT IPT3
C  ON ENLEVE LES REFERENCES
      CALL CHDITE(IPCH,IPT3,IPT5,ICPR,0,ISENS)
      SEGDES IPT3,IPT5
      IPT2.LISOUS(I)=IPT5
  51  CONTINUE
  60  CONTINUE
      IF (IPT1.LISREF(/1).EQ.0) GOTO 100
C  POUR LES REFERENCES  ON ESSAYE D'EN PRENDRE LES REFERENCES ICI
      DO 61 I=1,IPT1.LISREF(/1)
      IPT3=IPT1.LISREF(I)
      SEGACT IPT3
      IF (IPT3.LISOUS(/1).NE.0) GOTO 67
      CALL CHDITE(IPCH,IPT3,IPT5,ICPR,1,ISENS)
      IF (IPT5.LISREF(/1).EQ.0) GOTO 62
      DO 63 J=1,IPT3.LISREF(/1)
      IPT6=IPT3.LISREF(J)
      SEGACT IPT6
      IF (IPT6.LISOUS(/1).NE.0) GOTO 64
      CALL CHDITE(IPCH,IPT6,IPT8,ICPR,0,ISENS)
      SEGDES IPT6,IPT8
      IPT5.LISREF(J)=IPT8
      GOTO 63
C  FAUX MAIS NE PLANTE PAS
  64  IPT5.LISREF(J)=IPT6
  63  CONTINUE
  62  CONTINUE
      SEGDES IPT5
      IPT2.LISREF(I)=IPT5
      GOTO 68
  67  CONTINUE
      NBREF=0
      NBSOUS=IPT3.LISOUS(/1)
      NBNN=0
      NBELEM=0
      SEGINI IPT8
      DO 69 I2=1,IPT3.LISOUS(/1)
      IPT5=IPT3.LISOUS(I2)
      SEGACT IPT5
      CALL CHDITE(IPCH,IPT5,IPT7,ICPR,0,ISENS)
      IPT8.LISOUS(I2)=IPT7
      SEGDES IPT5,IPT7
  69  CONTINUE
      IPT2.LISREF(I)=IPT8
  68  CONTINUE
      SEGDES IPT3
  61  CONTINUE
 100  CONTINUE
      SEGDES IPT1,IPT2
      RETURN
      END

