$$$$ BOA * 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') ('EG 2) 'ET' (TYP_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 ;