Numérotation des lignes :

* BOA       PROCEDUR  CHAT      93/08/24    21:15:07     918            'DEBPROC' BOA TUYO1/'TABLE' ;                                                   *                                                                               ************************************************************************        *                                                                               *                           B O A                                               *                           -----                                               *                                                                               * FONCTION:                                                                     * ---------                                                                     *                                                                               *     MAILLER DES LIGNES DE TUYAUTERIE.                                         *                                                                               * PHRASE D'APPEL (EN GIBIANE):                                                  * ----------------------------                                                  *                                                                               *     TUYO2 = BOA ( TUYO1 ) ;                                                   *                                                                               * OPERANDES:                                                                    * ----------                                                                    *                                                                               *     TUYO1 = 'TABLE' CONTENANT LES LIGNES DE TUYAUTERIE A COMPLETER            *             OU RECTIFIER (PRODUITES PAR "BOA").                               *                                                                               * RESULTATS:                                                                    * ----------                                                                    *                                                                               *     TUYO2 = 'TABLE' CONTENANT LES LIGNES DE TUYAUTERIE CREEES OU              *             COMPLETEES.                                                       *                                                                               *   AVEC:                                                                       *                                                                               *     TUYO2 'MAILLAGE' = 'MAILLAGE' TOTAL.                                      *                                                                               *     TUYO2 "XYZ"      = 'TABLE' DECRIVANT LA LIGNE DE TUYAUTERIE DE            *                          NOM "XYZ".                                           *                                                                               * DETAILS DES RESULTATS:                                                        * ----------------------                                                        *                                                                               *     TUYO2 "XYZ" 'MAILLAGE' = MAILLAGE DE LA LIGNE "XYZ".                      *     TUYO2 "XYZ" 'TRONCON'  = TABLE DES MAILLAGES DES TRONCONS D'UNE           *                              LIGNE (INDICES PAR LEUR NOM).                    *     TUYO2 "XYZ" 'ELEMENT'  = TYPE D'ELEMENT GEOMETRIQUE POUR LA LIGNE         *                              "XYZ".                                           *     TUYO2 "XYZ" 'DENSITE'  = LARGEUR DE MAILLE PAR DEFAUT POUR LA             *                              LIGNE "XYZ".                                     *     TUYO2 "XYZ" 'PENTE'    = PENTE PAR DEFAUT POUR LA LIGNE "XYZ".            *     TUYO2 "XYZ" 'ENTREE'   = UNITE DE LONGUEUR EN ENTREE.                     *     TUYO2 "XYZ" 'SORTIE'   = UNITE DE LONGUEUR EN SORTIE.                     *     TUYO2 "XYZ" 'COULEUR'  = COULEUR POUR LA LIGNE "XYZ".                     *                                                                               * VARIABLES:                                                                    * ----------                                                                    *                                                                               *     COEF_SOR = RAPPORT ENTRE UNITES D'ENTREE ET UNITES DE SORTIE.             *     DECOUP   = "VRAI" SI POSSIBILITE D'INTRODUIRE EXPLICITEMENT LE            *                DECOUPAGE DE CHAQUE TRONCON.                                   *     DH       = DISTANCE HORIZONTALE.                                          *     LIG_TUYO = LIGNE CONTINUE DE TUYAUTERIE.                                  *              = (TUYO2 NOM_TUYO)                                               *     PENTE    = "VRAI" SI POSSIBILITE D'INTRODUIRE EXPLICITEMENT LA            *                PENTE DE CHAQUE TRONCON.                                       *     P0       = POINT DE DEPART D'UNE LIGNE.                                   *     P1       = POINT DE DEPART D'UN TRONCON DE LIGNE.                         *     P8       = POINT D'ARRIVEE D'UN TRONCON DE LIGNE.                         *     TAB_TRON = TABLE DE TRONCONS D'UNE MEME LIGNE DE TUYAUTERIE.              *              = (LIG_TUYO 'TRONCON')                                           *                                                                               *     ...._DEF = ... PAR DEFAUT.                                                *     ...._LOC = ... LOCAL AU TRONCON.                                          *     NB_..... = NOMBRE DE .....                                                *                                                                               * PARTICULARITES DU LANGAGE UTILISEES:                                          * ------------------------------------                                          *                                                                               *     DIRECTIVE "OBTENIR": LA DIRECTIVE RENVOIE LA VALEUR 'NON' SI              *     L'UTILISATEUR APPUIE SUR "ENTREE" AU LIEU DE DONNER LA VALEUR             *     DEMANDEE.                                                                 *                                                                               *     OPERATEUR "EGA": RETOUR DE LA VALEUR "FAUX" SI LES 2 OBJETS NE            *     SONT PAS DE MEME TYPE.                                                    *     OPERATEUR "NEG": RETOUR DE LA VALEUR "VRAI" SI LES 2 OBJETS NE            *     SONT PAS DE MEME TYPE.                                                    *                                                                               *     DIRECTIVE "MESSAGE": L'INSTRUCTION  (MESSAGE '   ' '......' ;)            *     PRODUIT LA CHAINE '    ......' A L'IMPRESSION                             *     (3 BLANCS + 1 BLANC AVANT LES '...', SANS COMPRESSION DES BLANCS)         *                                                                               * AUTEUR, DATE DE CREATION:                                                     * -------------------------                                                     *                                                                               *     P. M.              JUIN 1988                                              *                                                                               ************************************************************************        *                                                                               * ______________________                                                        *                                                                               * DECLARATIONS GENERALES                                                        * ______________________                                                        *                                                                               SI = 'MOT' 'SI' ; SINON = 'MOT' 'SINON' ; FINSI = 'MOT' 'FINSI' ;               REPETER = 'MOT' 'REPETER'; QUITTER = 'MOT' 'QUITTER'; FIN = 'MOT' 'FIN';        EXISTE = 'MOT' 'EXISTE' ; EGA = 'MOT' 'EGA' ;                                   ERREUR = 'MOT' 'ERREUR' ;                                                       OBTENIR = 'MOT' 'OBTENIR' ;                                                     *                                                                               ENTIER   = 'MOT' 'ENTIER  ' ;                                                   FLOTTANT = 'MOT' 'FLOTTANT' ;                                                   MOT      = 'MOT' 'MOT     ' ;                                                   *                                                                               'OPTION' 'DIMENSION' 3 ;                                                        *                                                                               REPRISE = EXISTE TUYO1 ;                                                          LIST REPRISE;                                                                 PREMIERE = 'NON' REPRISE ;                                                      SI REPRISE ;                                                                       TUYO2 = TUYO1 ;                                                              SINON;                                                                             TUYO2 = 'TABLE' ;                                                            FINSI ;                                                                         *                                                                               DEB_ERR = '*****  ERREUR  *****' ;                                              *                                                                               * OBJET "BOUCLE" CREE POUR PERMETTRE UNE SORTIE PREMATUREE DE LA                * PROCEDURE EN CAS D'ERREUR OU DE DEMANDE EXPLICITE DE L'UTILISATEUR.           REPETER PROC 1 ;                                                                *                                                                               * ________________________________                                              *                                                                               * DEMANDE D'INFORMATIONS GENERALES                                              * ________________________________                                              *                                                                               *LETYPE = 'TYPE' POINTSPH ;                                                     *SI ('NEG' LETYPE 'PROCEDUR') ;                                                 *   MESSAGE DEB_ERR ;                                                           *   MESSAGE 'LE NOM "POINTSPH" SE TROUVE DANS VOTRE FICHIER DE DONNEES.';       *   MESSAGE 'POUR DES RAISONS INDEPENDANTES DE NOTRE VOLONTE, LA ';             *   MESSAGE                                                                     *   'PROCEDURE "BOA" NE PEUT PAS FONCTIONNER DANS CES CONDITIONS.' ;            *   MESSAGE 'VEUILLEZ NOUS EN EXCUSER.' ;                                       *   MESSAGE ' ' ;                                                               *   MESSAGE 'APPUYEZ SUR LA TOUCHE "ENTREE" POUR CONTINUER' ;                   *   OBTENIR VAS_Y ;                                                             *   QUITTER PROC ;                                                              *FINSI ;                                                                        *                                                                               'SAUTER' 'PAGE' ;                                                               MESSAGE                                                                         'CETTE PROCEDURE VOUS PERMET DE MAILLER SIMPLEMENT DES LIGNES';                 MESSAGE                                                                         'DE TUYAUTERIE DANS UN ESPACE DE DIMENSION 3, L"AXE "Z" ETANT';                 MESSAGE                                                                         'SUPPOSE VERTICAL ASCENDANT.                                 ';                 MESSAGE ' ' ;                                                                   *                                                                               MESSAGE                                                                         'VOUS AVEZ TOUJOURS LA POSSIBILITE D"APPUYER SUR LA TOUCHE "ENTREE"' ;          MESSAGE                                                                         'POUR REPONDRE PAR LA NEGATIVE OU SIGNIFIER QU"UNE QUESTION NE VOUS' ;          MESSAGE                                                                         'INTERESSE PAS' ;                                                               SI REPRISE ;                                                                       MESSAGE                                                                         'OU ENCORE SIGNIFIER QUE VOUS AVEZ DEJA REPONDU LORS D"UN' ;                    MESSAGE 'PRECEDENT APPEL A "BOA".' ;                                         FINSI ;                                                                         MESSAGE ' ' ;                                                                   MESSAGE 'APPUYEZ SUR LA TOUCHE "ENTREE" POUR CONTINUER' ;                       OBTENIR VAS_Y ;                                                                 *                                                                               *                                                                               REPETER REP_LIGN ;                                                              *                                                                               *                                                                               *  _______________________________                                              *                                                                               *  DEBUT DE TRAITEMENT D'UNE LIGNE                                              *  _______________________________                                              *                                                                                  'SAUTER' 'PAGE' ;                                                            *                                                                                  MESSAGE 'NOM DE LA LIGNE A DECRIRE ?' ;                                         MESSAGE '(APPUYEZ SUR "ENTREE" POUR ARRETER LA PROCEDURE)' ;                    OBTENIR NOM_TUYO*MOT ;                                                          SI ('EGA' NOM_TUYO 'NON') ;                                                        QUITTER REP_LIGN ;                                                           FINSI;                                                                       *                                                                                  NEW_TUYO = 'NON' ('EXISTE' TUYO2 NOM_TUYO) ;                                    SI ('NON' NEW_TUYO) ;                                                              MESSAGE ' ';                                                                    MESSAGE                                                                         'S"AGIT-IL DE REFAIRE (=R) OU DE COMPLETER (=C) LA LIGNE'                       NOM_TUYO '?' ;                                                                  MESSAGE '(PAR DEFAUT: COMPLETER)' ;                                             OBTENIR REPONSE*MOT ;                                                           NEW_TUYO = 'EGA' REPONSE 'R' ;                                               FINSI ;                                                                      *                                                                                  SI (NEW_TUYO) ;                                                                    LIG_TUYO = 'TABLE' ;                                                            TUYO2.NOM_TUYO = LIG_TUYO ;                                                     TAB_TRON = 'TABLE' ;                                                            LIG_TUYO.'TRONCON' = TAB_TRON ;                                              SINON;                                                                             LIG_TUYO = TUYO2.NOM_TUYO ;                                                     TAB_TRON = LIG_TUYO.'TRONCON' ;                                              FINSI ;                                                                      *                                                                                  MESSAGE ' ';                                                                    MESSAGE 'COULEUR DE LA LIGNE ?';                                                OBTENIR COUL_DEF*MOT ;                                                          SI ( 'NEG' COUL_DEF 'NON') ;                                                       'OPTION' 'COULEUR' COUL_DEF ;                                                   LIG_TUYO . 'COULEUR' = COUL_DEF ;                                            SINON; SI (EXISTE LIG_TUYO 'COULEUR') ;                                            COUL_DEF =  LIG_TUYO . 'COULEUR' ;                                              'OPTION' 'COULEUR' COUL_DEF ;                                                FINSI ; FINSI ;                                                              *                                                                                  MESSAGE ' ';                                                                    MESSAGE 'TYPE D"ELEMENT GEOMETRIQUE (SEG2 OU SEG3) ?';                          OBTENIR ELEM_DEF*MOT ;                                                          SI ( 'OU' ('EGA' ELEM_DEF 'SEG2') ('EGA' ELEM_DEF 'SEG3') );                       'OPTION' 'ELEMENTS' ELEM_DEF ;                                                  LIG_TUYO . 'ELEMENT' =  ELEM_DEF ;                                           SINON; SI (EXISTE LIG_TUYO 'ELEMENT') ;                                            ELEM_DEF =  LIG_TUYO . 'ELEMENT' ;                                              'OPTION' 'ELEMENTS' ELEM_DEF ;                                               FINSI ; FINSI ;                                                              *                                                                               *  UNITES DE LONGUEUR: ELLES SONT CHOISIES UNE FOIS POUR TOUTES POUR UNE        *                      LIGNE DONNEE.                                            *                                                                                  SI ( 'EXISTE' LIG_TUYO 'ENTREE' ) ;                                                UNIT_ENT =  LIG_TUYO . 'ENTREE' ;                                               MESSAGE ' ' ;                                                                   MESSAGE 'UNITE DE LONGUEUR EN ENTREE:' UNIT_ENT ;                            SINON;                                                                             MESSAGE ' ';                                                                    MESSAGE 'UNITE DE LONGUEUR EN ENTREE ?';                                        MESSAGE                                                                   'MM = MILLIMETRE, CM = CENTIMETRE, M = METRE, IN = POUCE, FT = PIED';                 OBTENIR UNIT_ENT*MOT ;                                                          SI ( 'NEG' UNIT_ENT 'NON' ) ;                                                      LIG_TUYO . 'ENTREE' =  UNIT_ENT ;                                            FINSI ;                                                                      FINSI;                                                                       *                                                                                  SI ( 'EXISTE' LIG_TUYO 'SORTIE' ) ;                                                UNIT_SOR =  LIG_TUYO . 'SORTIE' ;                                               MESSAGE ' ' ;                                                                   MESSAGE 'UNITE DE LONGUEUR EN SORTIE:' UNIT_SOR ;                            SINON;                                                                             MESSAGE ' ';                                                                    MESSAGE 'UNITE DE LONGUEUR EN SORTIE ?';                                        MESSAGE                                                                         'MM = MILLIMETRE, CM = CENTIMETRE, M = METRE, ID = IDEM' ;                      OBTENIR UNIT_SOR*MOT ;                                                          SI ( 'NEG' UNIT_SOR 'NON' ) ;                                                      LIG_TUYO . 'SORTIE' =  UNIT_SOR ;                                            FINSI ;                                                                      FINSI;                                                                       *                                                                                  UNITES = 'ET' ('EXISTE' LIG_TUYO 'ENTREE')                                                    ('EXISTE' LIG_TUYO 'SORTIE') ;                                    SI UNITES ;                                                                        UNITES = 'ET' ('NEG' UNIT_ENT UNIT_SORT)                                                      ('NEG' UNIT_SOR 'ID') ;                                        FINSI;                                                                       *                                                                                  SI UNITES ;                                                                  *     PRECAUTION EN CAS DE MAUVAISE LECTURE: ON NE CHANGE PAS D'UNITES.               COEF_SOR = 1.D0 ;                                                               SI ('EGA' UNIT_ENT 'MM') ;                                                         SI ('EGA' UNIT_SOR 'CM') ;                                                         COEF_SOR = 1.D-1 ;                                                           SINON; SI ('EGA' UNIT_SOR 'M') ;                                                   COEF_SOR = 1.D-3 ;                                                           FINSI; FINSI;                                                                SINON; SI ('EGA' UNIT_ENT 'CM') ;                                                  SI ('EGA' UNIT_SOR 'MM') ;                                                         COEF_SOR = 10.D0 ;                                                           SINON; SI ('EGA' UNIT_SOR 'M') ;                                                   COEF_SOR = 1.D-2 ;                                                           FINSI; FINSI;                                                                SINON; SI ('EGA' UNIT_ENT 'M') ;                                                   SI ('EGA' UNIT_SOR 'MM') ;                                                         COEF_SOR = 1.D3 ;                                                            SINON; SI ('EGA' UNIT_SOR 'CM') ;                                                  COEF_SOR = 1.D2 ;                                                            FINSI; FINSI;                                                                SINON; SI ('EGA' UNIT_ENT 'IN') ;                                                  SI ('EGA' UNIT_SOR 'MM') ;                                                         COEF_SOR = 25.4D0 ;                                                          SINON; SI ('EGA' UNIT_SOR 'CM') ;                                                  COEF_SOR = 2.54D0 ;                                                          SINON; SI ('EGA' UNIT_SOR 'M') ;                                                   COEF_SOR = 2.54D-2 ;                                                         FINSI; FINSI; FINSI;                                                         SINON; SI ('EGA' UNIT_ENT 'FT') ;                                                  SI ('EGA' UNIT_SOR 'MM') ;                                                         COEF_SOR = 304.8D0 ;                                                         SINON; SI ('EGA' UNIT_SOR 'CM') ;                                                  COEF_SOR = 30.48D0 ;                                                         SINON; SI ('EGA' UNIT_SOR 'M') ;                                                   COEF_SOR = 0.3048D0 ;                                                        FINSI; FINSI; FINSI;                                                         FINSI; FINSI; FINSI; FINSI; FINSI;                                        *     OUF |                                                                        SINON;                                                                             COEF_SOR = 1.D0 ;                                                            FINSI ;                                                                      *                                                                                  MESSAGE ' ';                                                                    MESSAGE                                                                         'LARGEUR DE MAILLE PAR DEFAUT ?';                                               OBTENIR DENS_DEF*FLOTTANT ;                                                     SI ( 'EGA' ('TYPE' DENS_DEF) 'FLOTTANT' ) ;                                        'DENSITE' (DENS_DEF * COEF_SOR) ;                                               LIG_TUYO.'DENSITE' = DENS_DEF ;                                              SINON; SI ( 'EXISTE' LIG_TUYO 'DENSITE' ) ;                                        DENS_DEF = LIG_TUYO.'DENSITE' ;                                                 'DENSITE' (DENS_DEF * COEF_SOR) ;                                            FINSI ; FINSI;                                                               *                                                                                  MESSAGE ' ';                                                                    MESSAGE                                                                         'SOUHAITEZ-VOUS POUVOIR DONNER EXPLICITEMENT LE NOMBRE D"ELEMENTS' ;            MESSAGE                                                                         'DANS LES DIFFERENTS TRONCONS DE LA LIGNE ?' ;                                  OBTENIR REPONSE*MOT ;                                                           DECOUP = 'EGA' REPONSE 'OUI' ;                                               *                                                                                  MESSAGE ' ';                                                                    MESSAGE                                                                         'PENTE PAR DEFAUT POUR L"ENSEMBLE DES TRONCONS ?' ;                             MESSAGE '(VALEUR INFERIEURE A 1. , POSITIVE SI DESCENTE)' ;                     OBTENIR PENT_DEF*FLOTTANT ;                                                     SI ( 'EGA' ('TYPE' PENT_DEF) 'FLOTTANT' ) ;                                        LIG_TUYO.'PENTE' = PENT_DEF ;                                                SINON; SI ( 'EXISTE' LIG_TUYO  'PENTE' ) ;                                         PENT_DEF = LIG_TUYO.'PENTE' ;                                                FINSI ; FINSI;                                                               *                                                                                  MESSAGE ' ';                                                                    MESSAGE                                                                         'SOUHAITEZ-VOUS POUVOIR DONNER EXPLICITEMENT LA PENTE' ;                        MESSAGE                                                                         'DANS LES DIFFERENTS TRONCONS DE LA LIGNE ?' ;                                  OBTENIR REPONSE*MOT ;                                                           PENTE = 'EGA' REPONSE 'OUI' ;                                                *                                                                               *  POINT DE DEPART DE LA LIGNE                                                  *                                                                                  MESSAGE ' ';                                                                 *+*SI (NEW_TUYO) ;                                                                    MESSAGE 'COORDONNEES DU POINT INITIAL ?' ;                                      OBTENIR X0*FLOTTANT Y0*FLOTTANT Z0*FLOTTANT ;                                   SI UNITES;                                                                         X0 = X0 * COEF_SOR ;                                                            Y0 = Y0 * COEF_SOR ;                                                            Z0 = Z0 * COEF_SOR ;                                                         FINSI;                                                                          P0 = X0 Y0 Z0 ;                                                           *+*SINON;                                                                       *+*   CA NE VA PAS: ON N'A PAS SU ORDONNER LES TRONCONS.                        *     P0 = 'POINT' (LIG_TUYO 'MAILLAGE') 'FINAL' ;                              *     X0 Y0 Z0 = 'COORDONNEES' P0 ;                                             *     SI UNITES;                                                                *        X00 = X0 / COEF_SOR ;                                                  *        Y00 = Y0 / COEF_SOR ;                                                  *        Z00 = Z0 / COEF_SOR ;                                                  *     SINON;                                                                    *        X00 = X0 ;                                                             *        Y00 = Y0 ;                                                             *        Z00 = Z0 ;                                                             *     FINSI;                                                                    *     MESSAGE                                                                   *     'LA LIGNE VA ETRE PROLONGEE DEPUIS LE POINT DE COORDONNEES:' ;            *     MESSAGE X00 Y00 Z00 ;                                                     *     MESSAGE '(UNITES D"ENTREE)' ;                                             *     MESSAGE ' ' ;                                                             *     MESSAGE 'APPUYEZ SUR LA TOUCHE "ENTREE" POUR CONTINUER' ;                 *     OBTENIR VAS_Y ;                                                           *+*FINSI ;                                                                      *                                                                                  P8 = P0 ;                                                                       X8 = X0 ;                                                                       Y8 = Y0 ;                                                                       Z8 = Z0 ;                                                                    *                                                                                  REPETER REP_TRON ;                                                           *                                                                               *                                                                               *     _______________________                                                   *                                                                               *     TRAITEMENT D'UN TRONCON                                                   *     _______________________                                                   *                                                                                     'SAUTER' 'PAGE' ;                                                               REPETER LECTUR01 10 ;                                                              MESSAGE 'NOM DU TRONCON A DECRIRE ?' ;                                          MESSAGE                                                                         '(APPUYEZ SUR "ENTREE" POUR CHANGER DE LIGNE DE TUYAUTERIE)' ;                  OBTENIR NOM_TRON*MOT ;                                                          SI ('EGA' NOM_TRON 'NON') ;                                                        QUITTER REP_TRON ;                                                           FINSI;                                                                          SI ('EXISTE' TAB_TRON NOM_TRON) ;                                                  MESSAGE ' ';                                                                    MESSAGE                                                                         'LE TRONCON' NOM_TRON 'EXISTE DEJA POUR LA LIGNE' NOM_TUYO ;                    MESSAGE 'SOUHAITEZ-VOUS VRAIMENT REFAIRE CE TRONCON ' ;                         MESSAGE '(OU, A LA LIMITE, LE SUPPRIMER) ?' ;                                   OBTENIR REFAIRE*MOT ;                                                           SI ('EGA' REFAIRE 'OUI') ;                                                         QUITTER LECTUR01 ;                                                           FINSI ;                                                                      SINON;                                                                             QUITTER LECTUR01 ;                                                           FINSI ;                                                                      FIN LECTUR01 ;                                                            *                                                                                     OLD_TRON = 'EXISTE' TAB_TRON NOM_TRON ;                                   *                                                                               *     DEBUT DU TRONCON = FIN DU TRONCON PRECEDENT, SAUF SI ON REFAIT            *     UN TRONCON EXISTANT, EVIDEMMENT.                                          *                                                                                     SI OLD_TRON ;                                                                      P1 = 'POINT' (TAB_TRON.NOM_TRON) 'INITIAL' ;                                    X1 Y1 Z1 = 'COORDONNEES' P1 ;                                                SINON;                                                                             P1 = P8 ;                                                                       X1 = X8 ;                                                                       Y1 = Y8 ;                                                                       Z1 = Z8 ;                                                                    FINSI ;                                                                   *                                                                                     MESS1A = 'MOT'                                                                  'SEGMENT DE DROITE DEFINI PAR LES COORDONNEES CARTESIENNES';                    MESS1B = 'MOT' 'DU POINT EXTREMITE.' ;                                    *                                                                                     MESS2A = 'MOT'                                                                  'SEGMENT DE DROITE DEFINI PAR:' ;                                               MESS2B = 'MOT' '- UN VECTEUR DIRECTEUR COLINEAIRE AU TRONCON,' ;                MESS2C = 'MOT' '- LA LONGUEUR DU TRONCON.' ;                              *                                                                                     MESS3A = 'MOT'                                                                  'SEGMENT DE DROITE DONT LES EXTREMITES SONT COTEES PAR';                        MESS3B = 'MOT' '- 2 VECTEURS DIRECTEURS ORTHOGONAUX,' ;                         MESS3C = 'MOT' '- LEURS LONGUEURS.' ;                                     *                                                                                     MESS4A = 'MOT'                                                                  'SEGMENT DE DROITE DEFINI PAR UN VECTEUR EN COORDONNEES' ;                      MESS4B = 'MOT' 'CARTESIENNES.' ;                                          *                                                                                     MESS5A = 'MOT'                                                                  'SEGMENT DE DROITE DEFINI PAR UN VECTEUR EN COORDONNEES' ;                      MESS5B = 'MOT' 'SPHERIQUES, C-A-D:';                                            MESS5C = 'MOT' '- LA LONGUEUR DU TRONCON,' ;                                    MESS5D = 'MOT' '- UN ANGLE COMPRIS ENTRE 0 ET 360 DEGRES,' ;                    MESS5E = 'MOT' '- UN ANGLE COMPRIS ENTRE -90 ET +90 DEGRES.' ;            *                                                                                     MESS6A = 'MOT' 'GRAND ARC, DEFINI PAR:' ;                                       MESS6B = 'MOT'                                                                  '- UN VECTEUR PARALLELE A LA CORDE SOUS-TENDANT LE TRONCON,';                   MESS6C = 'MOT' '- LA LONGUEUR DE LA CORDE,' ;                                   MESS6D = 'MOT'                                                                  '- UN VECTEUR DIRIGE DU CENTRE VERS LA 2IEME EXTREMITE DE L"ARC,';              MESS6E = 'MOT' '- LE RAYON DE L"ARC.';                                    *                                                                                     MESS7A = 'MOT' 'COUDE, DEFINI PAR:' ;                                           MESS7B = 'MOT' '- LES 2 TRONCONS A RACCORDER,';                                 MESS7C = 'MOT' '- LE RAYON DU COUDE.' ;                                   *                                                                                     MESS8A = 'MOT' 'DOUBLE COUDE, DEFINI PAR:' ;                                    MESS8B = 'MOT' '- LES 2 TRONCONS (PARALLELES) A RACCORDER,';                    MESS8C = 'MOT' '- LE RAYON (COMMUN) DES 2 COUDES.' ;                      *                                                                               *                                                                                     'SAUTER' 'PAGE' ;                                                               MESSAGE '=====  CREATION D"UN TRONCON  =====';                                  'SAUTER' 'LIGNE' ;                                                              MESSAGE                                                                         'DONNEZ LE NUMERO DU TYPE DE TRONCON QUE VOUS VOULEZ INTRODUIRE';               MESSAGE ' ' ;                                                                   MESSAGE ' 1 =' MESS1A ;                                                         MESSAGE '    ' MESS1B ;                                                         MESSAGE ' ' ;                                                                   MESSAGE ' 2 =' MESS2A ;                                                         MESSAGE '    ' MESS2B ;                                                         MESSAGE '    ' MESS2C ;                                                         MESSAGE ' ' ;                                                                   MESSAGE ' 3 =' MESS3A ;                                                         MESSAGE '    ' MESS3B ;                                                         MESSAGE '    ' MESS3C ;                                                         MESSAGE ' ' ;                                                                   MESSAGE ' 4 =' MESS4A ;                                                         MESSAGE '    ' MESS4B ;                                                         MESSAGE ' ' ;                                                                   MESSAGE ' 5 =' MESS5A ;                                                         MESSAGE '    ' MESS5B ;                                                         MESSAGE '    ' MESS5C ;                                                         MESSAGE '    ' MESS5D ;                                                         MESSAGE '    ' MESS5E ;                                                         MESSAGE ' ' ;                                                                   MESSAGE ' 6 =' MESS6A ;                                                         MESSAGE '    ' MESS6B ;                                                         MESSAGE '    ' MESS6C ;                                                         MESSAGE '    ' MESS6D ;                                                         MESSAGE '    ' MESS6E ;                                                         MESSAGE ' ' ;                                                                   MESSAGE ' 7 =' MESS7A ;                                                         MESSAGE '    ' MESS7B ;                                                         MESSAGE '    ' MESS7C ;                                                         MESSAGE ' ' ;                                                                   MESSAGE ' 8 =' MESS8A ;                                                         MESSAGE '    ' MESS8B ;                                                         MESSAGE '    ' MESS8C ;                                                         SI OLD_TRON ;                                                                      MESSAGE ' ' ;                                                                   MESSAGE ' 0 = SUPPRESSION DU TRONCON.' ;                                     FINSI;                                                                    *                                                                                     OBTENIR TYP_TRON*ENTIER ;                                                 *                                                                                     SI (OLD_TRON 'ET' ('EGA' TYP_TRON 0) ) ;                                  *                        ----------------                                       *        SUPPRESSION DE TRONCON:                                                         TAB_TRON = 'ENLEVER' TAB_TRON NOM_TRON ;                                        LIG_TUYO.'TRONCON' = TAB_TRON ;                                                 'ITERER' REP_TRON ;                                                          FINSI;                                                                    *                                                                                     SI ('OU' ('EGA' TYP_TRON 'NON') ('&lt;EG' TYP_TRON 0) ) ;                             QUITTER REP_TRON ;                                                           FINSI ;                                                                   *                                                                                     'SAUTER' 'PAGE' ;                                                         *                                                                                     NBEL_LOC = 'TEXTE' ' ' ;                                                        SI DECOUP ;                                                                        MESSAGE ' ';                                                                    MESSAGE 'NOMBRE D"ELEMENTS POUR REPRESENTER LE TRONCON ?' ;                     OBTENIR _NBEL_*ENTIER ;                                                         SI ('EGA' ('TYPE' _NBEL_) 'ENTIER  ') ;                                            NBEL_LOC = 'TEXTE' '_NBEL_' ;                                                FINSI ;                                                                      FINSI;                                                                    *                                                                                     PENT_LOC = 'MOT' 'NON' ;                                                        SI (PENTE 'ET' (TYP_TRON &lt;EG 6) ) ;                                                MESSAGE ' ';                                                                    MESSAGE 'PENTE DU TRONCON ?' ;                                                  MESSAGE '(VALEUR INFERIEURE A 1. , POSITIVE SI DESCENTE)';                      OBTENIR PENT_LOC*FLOTTANT ;                                                  FINSI;                                                                    *                                                                               *                                                                                        'SAUTER' 'PAGE';                                                       *                                                                                     SI ('EGA' TYP_TRON 1) ;                                                   *         ----------------                                                      *                                                                                        MESSAGE MESS1A ;                                                                MESSAGE MESS1B ;                                                                MESSAGE ' ';                                                                    MESSAGE 'DONNEZ LES 3 COORDONNEES DU POINT:' ;                                  OBTENIR X8*FLOTTANT Y8*FLOTTANT Z8*FLOTTANT ;                                   SI UNITES;                                                                         X8 = X8 * COEF_SOR ;                                                            Y8 = Y8 * COEF_SOR ;                                                            Z8 = Z8 * COEF_SOR ;                                                         FINSI ;                                                                         SI ( ('ABS' (Z8 - Z1) ) < 1.D-5) ;                                                 SI ('EGA' ('TYPE' PENT_LOC) 'FLOTTANT') ;                                          DH = ( ((X8 - X1) ** 2) + ((Y8 - Y1) ** 2) ) ** 0.5 ;                           Z8 = Z8 - (DH * PENT_LOC) ;                                                  SINON; SI ('EGA' ('TYPE' PENT_DEF) 'FLOTTANT') ;                                   DH = ( ((X8 - X1) ** 2) + ((Y8 - Y1) ** 2) ) ** 0.5 ;                           Z8 = Z8 - (DH * PENT_DEF) ;                                                  FINSI; FINSI;                                                                FINSI;                                                                          P8 = X8 Y8 Z8 ;                                                                 TAB_TRON.NOM_TRON = 'DROITE' NBEL_LOC P1 P8 ;                          *                                                                                     SINON; SI ((TYP_TRON >EG 2) 'ET' (TYP_TRON &lt;EG 5 )) ;                     *                 -------------------------------------                         *                                                                                        SI ('EGA' TYP_TRON 2) ;                                                *            ----------------                                                               MESSAGE MESS2A ;                                                                MESSAGE MESS2B ;                                                                MESSAGE MESS2C ;                                                                MESSAGE ' ';                                                                    MESSAGE 'DONNEZ LES 3 COORDONNEES DU VECTEUR DIRECTEUR ';                       MESSAGE 'ET LA LONGUEUR DU TRONCON ENTRE POINTS D"EPURE:';                      OBTENIR X8*FLOTTANT Y8*FLOTTANT Z8*FLOTTANT LONG*FLOTTANT ;                     SI UNITES;                                                                         LONG = LONG * COEF_SOR ;                                                     FINSI ;                                                                         LVECT = ( (X8 ** 2) + (Y8 ** 2) + (Z8 ** 2) ) ** 0.5 ;                          RAP = LONG / LVECT ;                                                            X8 = X8 * RAP ;                                                                 Y8 = Y8 * RAP ;                                                                 Z8 = Z8 * RAP ;                                                     *                                                                                        SINON ; SI ('EGA' TYP_TRON 3) ;                                        *                    ----------------                                                       MESSAGE MESS3A ;                                                                MESSAGE MESS3B ;                                                                MESSAGE MESS3C ;                                                                MESSAGE ' ';                                                                    MESSAGE                                                                         'DONNEZ LES 3 COORDONNEES DU 1ER VECTEUR ET SA LONGUEUR:' ;                     OBTENIR X8*FLOTTANT Y8*FLOTTANT Z8*FLOTTANT LONG*FLOTTANT ;                     SI UNITES;                                                                         LONG = LONG * COEF_SOR ;                                                     FINSI ;                                                                         LVECT = ( (X8 ** 2) + (Y8 ** 2) + (Z8 ** 2) ) ** 0.5 ;                          RAP = LONG / LVECT ;                                                            XX8 = X8 * RAP ;                                                                YY8 = Y8 * RAP ;                                                                ZZ8 = Z8 * RAP ;                                                                MESSAGE ' ';                                                                    MESSAGE                                                                         'DONNEZ LES 3 COORDONNEES DU 2EME VECTEUR ET SA LONGUEUR:';                     OBTENIR X8*FLOTTANT Y8*FLOTTANT Z8*FLOTTANT LONG*FLOTTANT ;                     SI UNITES;                                                                         LONG = LONG * COEF_SOR ;                                                     FINSI ;                                                                         LVECT = ( (X8 ** 2) + (Y8 ** 2) + (Z8 ** 2) ) ** 0.5 ;                          RAP = LONG / LVECT ;                                                            X8 = (X8 * RAP) + XX8 ;                                                         Y8 = (Y8 * RAP) + YY8 ;                                                         Z8 = (Z8 * RAP) + ZZ8 ;                                             *                                                                                        SINON ; SI ('EGA' TYP_TRON 4) ;                                        *                    ----------------                                                       MESSAGE MESS4A ;                                                                MESSAGE MESS4B ;                                                                MESSAGE ' ';                                                                    MESSAGE 'DONNEZ LES 3 COORDONNEES DU VECTEUR: ';                                OBTENIR X8*FLOTTANT Y8*FLOTTANT Z8*FLOTTANT ;                                   SI UNITES;                                                                         X8 = X8 * COEF_SOR ;                                                            Y8 = Y8 * COEF_SOR ;                                                            Z8 = Z8 * COEF_SOR ;                                                         FINSI ;                                                             *                                                                                        SINON;                                                                 *           TYP_TRON  VAUT  5 :                                                 *           -----------------                                                               MESSAGE MESS5A ;                                                                MESSAGE MESS5B ;                                                                MESSAGE MESS5C ;                                                                MESSAGE MESS5D ;                                                                MESSAGE MESS5E ;                                                                MESSAGE ' ';                                                                    MESSAGE                                                                         'DONNEZ LA LONGUEUR DU TRONCON ENTRE POINTS D"EPURE' ;                          MESSAGE 'ET LES 2 ANGLES EN DEGRES DECIMAUX:';                                  OBTENIR LONG*FLOTTANT TETA*FLOTTANT PHI*FLOTTANT ;                              SI UNITES;                                                                         LONG = LONG * COEF_SOR ;                                                     FINSI ;                                                                         P8 = POINTSPH LONG TETA PHI ;                                                   X8 Y8 Z8 = 'COORDONNEES' P8 ;                                       *                                                                                        FINSI; FINSI; FINSI;                                                   *                                                                                        SI ( ('ABS' Z8) < 1.D-5) ;                                                         SI ('EGA' ('TYPE' PENT_LOC) 'FLOTTANT') ;                                          DH = ( (X8 ** 2) + (Y8 ** 2) ) ** 0.5 ;                                         Z8 = Z8 - (DH * PENT_LOC) ;                                                  SINON; SI ('EGA' ('TYPE' PENT_DEF) 'FLOTTANT') ;                                   DH = ( (X8 ** 2) + (Y8 ** 2) ) ** 0.5 ;                                         Z8 = Z8 - (DH * PENT_DEF) ;                                                  FINSI; FINSI;                                                                FINSI;                                                                          X8 = X1 + X8 ;                                                                  Y8 = Y1 + Y8 ;                                                                  Z8 = Z1 + Z8 ;                                                                  P8 = X8 Y8 Z8 ;                                                                 TAB_TRON.NOM_TRON = 'DROITE' NBEL_LOC P1 P8 ;                          *                                                                                     SINON; SI ('EGA' TYP_TRON 6) ;                                            *                ----------------                                               *                                                                                        MESSAGE MESS6A ;                                                                MESSAGE MESS6B ;                                                                MESSAGE MESS6C ;                                                                MESSAGE MESS6D ;                                                                MESSAGE MESS6E ;                                                                MESSAGE ' ';                                                                    MESSAGE                                                                         'DONNEZ LES 3 COORDONNEES DU VECTEUR PARALLELE A LA CORDE' ;                    MESSAGE 'ET LA LONGUEUR DE LA CORDE:' ;                                         OBTENIR X8*FLOTTANT Y8*FLOTTANT Z8*FLOTTANT LONG*FLOTTANT ;                     SI UNITES;                                                                         LONG = LONG * COEF_SOR ;                                                     FINSI ;                                                                         LVECT = ( (X8 ** 2) + (Y8 ** 2) + (Z8 ** 2) ) ** 0.5 ;                          RAP = LONG / LVECT ;                                                            X8 = X1 + (X8 * RAP) ;                                                          Y8 = Y1 + (Y8 * RAP) ;                                                          Z8 = Z1 + (Z8 * RAP) ;                                                          MESSAGE ' ';                                                                    MESSAGE                                                                         'DONNEZ LES 3 COORDONNEES DU VECTEUR PARALLELE AU RAYON' ;                      MESSAGE 'ET LA VALEUR DU RAYON:' ;                                              OBTENIR X4*FLOTTANT Y4*FLOTTANT Z4*FLOTTANT LONG*FLOTTANT ;                     SI UNITES;                                                                         LONG = LONG * COEF_SOR ;                                                     FINSI ;                                                                         LVECT = ( (X4 ** 2) + (Y4 ** 2) + (Z4 ** 2) ) ** 0.5 ;                          RAP = LONG / LVECT ;                                                            X4 = X8 - (X4 * RAP) ;                                                          Y4 = Y8 - (Y4 * RAP) ;                                                          Z4 = Z8 - (Z4 * RAP) ;                                                 *                                                                                        SI ( ('ABS' (Z8 - Z1) ) < 1.D-5) ;                                                 SI ('EGA' ('TYPE' PENT_LOC) 'FLOTTANT') ;                                          DH = ( ((X8 - X1) ** 2) + ((Y8 - Y1) ** 2) ) ** 0.5 ;                           DH = DH * PENT_LOC ;                                                            Z8 = Z8 - DH ;                                                                  Z4 = Z4 - (DH / 2.D0) ;                                                      SINON; SI ('EGA' ('TYPE' PENT_DEF) 'FLOTTANT') ;                                   DH = ( ((X8 - X1) ** 2) + ((Y8 - Y1) ** 2) ) ** 0.5 ;                           DH = DH * PENT_DEF ;                                                            Z8 = Z8 - DH ;                                                                  Z4 = Z4 - (DH / 2.D0) ;                                                      FINSI; FINSI;                                                                FINSI;                                                                          C4 = X4 Y4 Z4 ;                                                                 P8 = X8 Y8 Z8 ;                                                                 TAB_TRON.NOM_TRON = 'CERCLE' NBEL_LOC P1 C4 P8 ;                       *                                                                                     SINON; SI ('EGA' TYP_TRON 7) ;                                            *                ----------------                                               *                                                                                        MESSAGE MESS7A ;                                                                MESSAGE MESS7B ;                                                                MESSAGE MESS7C ;                                                                MESSAGE ' ';                                                                    MESSAGE                                                                         'DONNEZ LES NOMS DES 2 TRONCONS ET LE RAYON DE RACCORDEMENT:' ;                 OBTENIR NOM1TRON*MOT NOM2TRON*MOT RAYON*FLOTTANT ;                              SI UNITES;                                                                         RAYON = RAYON * COEF_SOR ;                                                   FINSI ;                                                                         L1 RAC L2 = 'CONGE' NBEL_LOC RAYON                                                          (TAB_TRON.NOM1TRON) (TAB_TRON.NOM2TRON) ;                           TAB_TRON.NOM1TRON = L1  ;                                                       TAB_TRON.NOM_TRON = RAC ;                                                       TAB_TRON.NOM2TRON = L2  ;                                              *        ON GARDE LES VALEURS PRECEDENTES DE P8, X8, Y8 ET Z8.                  *        ON N'EN A PAS BESOIN ICI.                                              *                                                                                     SINON; SI ('EGA' TYP_TRON 8) ;                                            *                ----------------                                               *                                                                                        MESSAGE MESS8A ;                                                                MESSAGE MESS8B ;                                                                MESSAGE MESS8C ;                                                                MESSAGE 'LES 2 TRONCONS A RACCORDER DOIVENT ETRE PARALLELES.';                  MESSAGE                                                                         'LE DOUBLE COUDE EST CENTRE SUR L"EXTREMITE DU 1ER TRONCON.';                   MESSAGE ' ';                                                                    MESSAGE                                                                         'DONNEZ LES NOMS DES 2 TRONCONS ET LE RAYON DE RACCORDEMENT:';                  OBTENIR NOM1TRON*MOT NOM2TRON*MOT RAYON*FLOTTANT ;                              SI UNITES;                                                                         RAYON = RAYON * COEF_SOR ;                                                   FINSI ;                                                                         L1 RAC L2 = 'CONGE' NBEL_LOC RAYON 'DOUBLE'                                                 (TAB_TRON.NOM1TRON) (TAB_TRON.NOM2TRON) ;                           TAB_TRON.NOM1TRON = L1  ;                                                       TAB_TRON.NOM_TRON = RAC ;                                                       TAB_TRON.NOM2TRON = L2  ;                                              *        ON GARDE LES VALEURS PRECEDENTES DE P8, X8, Y8 ET Z8.                  *        ON N'EN A PAS BESOIN ICI.                                              *                                                                               *                                                                                     FINSI; FINSI; FINSI; FINSI; FINSI;                                        *                                                                                  FIN REP_TRON ;                                                               *                                                                               *                                                                               *  ________________________________                                             *                                                                               *  REUNION DES TRONCONS D'UNE LIGNE                                             *  ________________________________                                             *                                                                                  NB_TRON = 'DIMENSION' TAB_TRON ;                                             *                                                                                  SI (NB_TRON > 0) ;                                                           *                                                                                     LIS_TRON = 'INDEX' TAB_TRON ;                                                   I_TRON = 1 ;                                                                    NB_TRON = NB_TRON - 1 ;                                                         MAIL_LIG = TAB_TRON . ( LIS_TRON . 1 ) ;                                        SI (NB_TRON > 0) ;                                                                 NB_ET = 0 ;                                                                     REPETER REP_SOM4 NB_TRON ;                                                         I_TRON = I_TRON + 1 ;                                                           INDICE =  LIS_TRON . I_TRON ;                                                   MAIL_LI1 = MAIL_LIG 'ET' (TAB_TRON.INDICE) ;                                    NB_ET = NB_ET + 1 ;                                                             SI (NB_ET > 1) ;                                                                   'DETRUIRE' MAIL_LIG ;                                                        FINSI;                                                                          MAIL_LIG = MAIL_LI1 ;                                                        FIN REP_SOM4 ;                                                               FINSI ;                                                                   *                                                                                     LIG_TUYO.'MAILLAGE' = MAIL_LIG ;                                          *                                                                                  SINON;                                                                       *                                                                               *     CETTE LIGNE DE TUYAUTERIE EST DESESPEREMENT VIDE.                               SI ('EXISTE' TUYO2 NOM_TUYO) ;                                                     TUYO2 = 'ENLEVER' TUYO2 NOM_TUYO ;                                           FINSI;                                                                    *                                                                                  FINSI ;                                                                      *                                                                               FIN REP_LIGN ;                                                                  *                                                                               *                                                                               * ________________________________                                              *                                                                               * REUNION DES LIGNES DE TUYAUTERIE                                              * ________________________________                                              *                                                                               NB_LIG = 'DIMENSION' TUYO2 ;                                                    *                                                                               SI (NB_LIG > 0) ;                                                                  LIST_LIG = 'INDEX' TUYO2 ;                                                      SI ('EXISTE' TUYO2 'MAILLAGE') ;                                                   TUYO2 = 'ENLEVER' TUYO2 'MAILLAGE' ;                                            LIST_LIG = 'INDEX' TUYO2 ;                                                      NB_LIG = NB_LIG - 1 ;                                                        FINSI;                                                                       FINSI;                                                                          *                                                                               SI (NB_LIG > 0) ;                                                               *  TUYO2ENS = TUYO2.('MOT' LIST_LIG.1).'MAILLAGE' ;                                TUYO2ENS = TUYO2 . ( LIST_LIG . 1 ) . 'MAILLAGE' ;                              I_LIG = 1 ;                                                                     NB_LIG = NB_LIG - 1 ;                                                           SI (NB_LIG > 0) ;                                                               REPETER REP_SOM2 NB_LIG ;                                                          I_LIG = I_LIG + 1 ;                                                             INDICE =  LIST_LIG . I_LIG ;                                                    TUYO2EN1 = TUYO2ENS 'ET' (TUYO2.INDICE.'MAILLAGE') ;                            SI (I_LIG > 2) ;                                                                   'DETRUIRE' TUYO2ENS ;                                                        FINSI;                                                                          TUYO2ENS = TUYO2EN1 ;                                                        FIN REP_SOM2 ;                                                                  FINSI ;                                                                         TUYO2.'MAILLAGE' = TUYO2ENS ;                                                *                                                                               SINON;                                                                          *                                                                                  SI ('EXISTE' TUYO2 'MAILLAGE') ;                                                   TUYO2 = ENLEVER TUYO2 'MAILLAGE' ;                                           FINSI;                                                                       *                                                                               FINSI ;                                                                         *                                                                               *                                                                               FIN PROC ;                                                                      *                                                                               'SAUTER' 'PAGE' ;                                                               MESSAGE '=====  FIN DE LA PROCEDURE "BOA"  ===== ;' ;                           *                                                                               'FINPROC' TUYO2 ;

© Cast3M 2003 - Tous droits réservés.
Mentions légales