sorstl
C SORSTL SOURCE CB215821 23/01/25 21:15:36 11573 SUBROUTINE SORSTL CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C But : Ecrire un maillage sous forme d'un fichier ASCII C STL C C Auteur : CB215821 C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO -INC CCNOYAU -INC CCGEOME -INC SMCOORD -INC SMELEME CHARACTER*4 COLO4 CHARACTER*(LONOM) CHNOM ITRI3 = 0 COLO4 = 'TRI3' CHNOM = ' ' C ... Si le fichier existe deja, on va l'ecraser ... REWIND IOPER IF(IERR .NE. 0) RETURN C Lecture du nom du dernier objet lu NBSOUS=MELEME.LISOUS(/1) IF(NBSOUS .NE. 0)THEN RETURN ELSE IF(ITYPEL .NE. ITRI3)THEN RETURN ENDIF ENDIF NBELEM=MELEME.NUM(/2) IF (NBELEM .EQ. 0) THEN RETURN ENDIF IF (IDIM .NE. 3) THEN INTERR(1)=IDIM RETURN ENDIF C Specification des differents FORMATS ASCII a sortir 1201 FORMAT('solid ',A) 1202 FORMAT('facet normal ',ES13.5,1X,ES13.5,1X,ES13.5) 1203 FORMAT('outer loop') 1204 FORMAT('vertex ',ES13.5,1X,ES13.5,1X,ES13.5) 1205 FORMAT('endloop') 1206 FORMAT('endfacet') 1207 FORMAT('endsolid ', A) C Debut de l'ecriture de l'objet WRITE(IOPER,1201) CHNOM NBNN=MELEME.NUM(/1) C Boucle sur les triangles SEGACT,MCOORD DO IT3=1,NBELEM C Recuperation des COORDONNEES INO =1 IPT =(NUM(INO,IT3)-1)*(IDIM+1) + 1 X1 = XCOOR(IPT ) X2 = XCOOR(IPT + 1) X3 = XCOOR(IPT + 2) INO =2 IPT =(NUM(INO,IT3)-1)*(IDIM+1) + 1 Y1 = XCOOR(IPT ) Y2 = XCOOR(IPT + 1) Y3 = XCOOR(IPT + 2) INO =3 IPT =(NUM(INO,IT3)-1)*(IDIM+1) + 1 Z1 = XCOOR(IPT ) Z2 = XCOOR(IPT + 1) Z3 = XCOOR(IPT + 2) C Calcul du produit vectoriel U1= Y1 - X1 U2= Y2 - X2 U3= Y3 - X3 V1= Z1 - X1 V2= Z2 - X2 V3= Z3 - X3 W1= (U2*V3) - (U3*V2) W2= (U3*V1) - (U1*V3) W3= (U1*V2) - (U2*V1) XNORM = SQRT((W1**2) + (W2**2) + (W3**2)) IF (XNORM .GT. REAL(0.D0)) THEN W1= W1 / XNORM W2= W2 / XNORM W3= W3 / XNORM ELSE RETURN ENDIF C Ecriture de la Normale WRITE(IOPER,1202) W1,W2,W3 WRITE(IOPER,1203) C Ecriture des coordonnees des noeuds WRITE(IOPER,1204) X1,X2,X3 WRITE(IOPER,1204) Y1,Y2,Y3 WRITE(IOPER,1204) Z1,Z2,Z3 WRITE(IOPER,1205) WRITE(IOPER,1206) ENDDO SEGDES,MCOORD WRITE(IOPER,1207) CHNOM RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales