C LIGN SOURCE CHAT 07/10/29 21:23:19 5940 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 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 NBPTS = XCOOR(/1)/(IDIM + 1) + 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