C LIGN      SOURCE    CB215821  20/06/08    21:15:00     10619          
C     1234567890124567890124567898012456789012345678901234567890123456

C     SOURCE : L. DI VALENTIN    LE 17/06/97

      SUBROUTINE LIGN

C     Suivant le mot cle ROTA ou TRAN, cet operateur appelle les
C     subroutines ROND ou LIGNE pour construire soit un arc de cercle
C     soit une droite de vecteur directeur donne.


      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)

-INC PPARAM
-INC CCOPTIO
-INC CCGEOME
-INC SMCOORD


      INTEGER     POINT1,POINT2,VECT,INBR
      CHARACTER*4 MOTCLE(2)

      DATA MOTCLE/'ROTA','TRAN'/



      CALL LIRMOT(MOTCLE,2,IRET,0)

      IF (IRET.EQ.1) THEN
        CALL ROND

      ELSEIF (IRET.EQ.2) THEN

C       Lecture du point de reference.
        CALL LIROBJ('POINT',POINT1,1,IRET)
        IF (IRET.EQ.0) RETURN

C       Lecture du vecteur de translation
        CALL LIROBJ('POINT',VECT,1,IRET)
        IF (IRET.EQ.0) RETURN

C       On cree une place memoire pour le deuxieme point extremite
        segact mcoord*mod
        NBPTS  = NBPTS + 1
        POINT2 = NBPTS
        SEGADJ MCOORD

C       Calcul du 2eme point extremite
        XCOOR((POINT2-1)*(IDIM+1)+1) = XCOOR((POINT1-1)*(IDIM+1)+1)
     &                                + XCOOR((VECT-1)*(IDIM+1)+1)
        XCOOR((POINT2-1)*(IDIM+1) + 2) = XCOOR((POINT1-1)*(IDIM+1)+2)
     &                                + XCOOR((VECT-1)*(IDIM+1)+2)
        IF (IDIM.EQ.3) THEN
         XCOOR((POINT2-1)*(IDIM+1) + 3) = XCOOR((POINT1-1)*(IDIM+1)+3)
     &                                + XCOOR((VECT-1)*(IDIM+1)+3)
        ENDIF

        XCOOR(POINT2*(IDIM+1)) = XCOOR(POINT1*(IDIM+1))

        CALL ECROBJ('POINT',POINT1)
        CALL ECROBJ('POINT',POINT2)

        CALL LIGNE (1,1,DEN1,DEN2,INBR)


      ELSE
        CALL ERREUR (857)
      ENDIF

      RETURN

      END







 
