Download boa.procedur

Back to the list

   1 : * BOA       PROCEDUR  CHAT      93/08/24    21:15:07     918            
   2 : 'DEBPROC' BOA TUYO1/'TABLE' ;                                                   
   3 : *                                                                               
   4 : ************************************************************************        
   5 : *                                                                               
   6 : *                           B O A                                               
   7 : *                           -----                                               
   8 : *                                                                               
   9 : * FONCTION:                                                                     
  10 : * ---------                                                                     
  11 : *                                                                               
  12 : *     MAILLER DES LIGNES DE TUYAUTERIE.                                         
  13 : *                                                                               
  14 : * PHRASE D'APPEL (EN GIBIANE):                                                  
  15 : * ----------------------------                                                  
  16 : *                                                                               
  17 : *     TUYO2 = BOA ( TUYO1 ) ;                                                   
  18 : *                                                                               
  19 : * OPERANDES:                                                                    
  20 : * ----------                                                                    
  21 : *                                                                               
  22 : *     TUYO1 = 'TABLE' CONTENANT LES LIGNES DE TUYAUTERIE A COMPLETER            
  23 : *             OU RECTIFIER (PRODUITES PAR "BOA").                               
  24 : *                                                                               
  25 : * RESULTATS:                                                                    
  26 : * ----------                                                                    
  27 : *                                                                               
  28 : *     TUYO2 = 'TABLE' CONTENANT LES LIGNES DE TUYAUTERIE CREEES OU              
  29 : *             COMPLETEES.                                                       
  30 : *                                                                               
  31 : *   AVEC:                                                                       
  32 : *                                                                               
  33 : *     TUYO2 'MAILLAGE' = 'MAILLAGE' TOTAL.                                      
  34 : *                                                                               
  35 : *     TUYO2 "XYZ"      = 'TABLE' DECRIVANT LA LIGNE DE TUYAUTERIE DE            
  36 : *                          NOM "XYZ".                                           
  37 : *                                                                               
  38 : * DETAILS DES RESULTATS:                                                        
  39 : * ----------------------                                                        
  40 : *                                                                               
  41 : *     TUYO2 "XYZ" 'MAILLAGE' = MAILLAGE DE LA LIGNE "XYZ".                      
  42 : *     TUYO2 "XYZ" 'TRONCON'  = TABLE DES MAILLAGES DES TRONCONS D'UNE           
  43 : *                              LIGNE (INDICES PAR LEUR NOM).                    
  44 : *     TUYO2 "XYZ" 'ELEMENT'  = TYPE D'ELEMENT GEOMETRIQUE POUR LA LIGNE         
  45 : *                              "XYZ".                                           
  46 : *     TUYO2 "XYZ" 'DENSITE'  = LARGEUR DE MAILLE PAR DEFAUT POUR LA             
  47 : *                              LIGNE "XYZ".                                     
  48 : *     TUYO2 "XYZ" 'PENTE'    = PENTE PAR DEFAUT POUR LA LIGNE "XYZ".            
  49 : *     TUYO2 "XYZ" 'ENTREE'   = UNITE DE LONGUEUR EN ENTREE.                     
  50 : *     TUYO2 "XYZ" 'SORTIE'   = UNITE DE LONGUEUR EN SORTIE.                     
  51 : *     TUYO2 "XYZ" 'COULEUR'  = COULEUR POUR LA LIGNE "XYZ".                     
  52 : *                                                                               
  53 : * VARIABLES:                                                                    
  54 : * ----------                                                                    
  55 : *                                                                               
  56 : *     COEF_SOR = RAPPORT ENTRE UNITES D'ENTREE ET UNITES DE SORTIE.             
  57 : *     DECOUP   = "VRAI" SI POSSIBILITE D'INTRODUIRE EXPLICITEMENT LE            
  58 : *                DECOUPAGE DE CHAQUE TRONCON.                                   
  59 : *     DH       = DISTANCE HORIZONTALE.                                          
  60 : *     LIG_TUYO = LIGNE CONTINUE DE TUYAUTERIE.                                  
  61 : *              = (TUYO2 NOM_TUYO)                                               
  62 : *     PENTE    = "VRAI" SI POSSIBILITE D'INTRODUIRE EXPLICITEMENT LA            
  63 : *                PENTE DE CHAQUE TRONCON.                                       
  64 : *     P0       = POINT DE DEPART D'UNE LIGNE.                                   
  65 : *     P1       = POINT DE DEPART D'UN TRONCON DE LIGNE.                         
  66 : *     P8       = POINT D'ARRIVEE D'UN TRONCON DE LIGNE.                         
  67 : *     TAB_TRON = TABLE DE TRONCONS D'UNE MEME LIGNE DE TUYAUTERIE.              
  68 : *              = (LIG_TUYO 'TRONCON')                                           
  69 : *                                                                               
  70 : *     ...._DEF = ... PAR DEFAUT.                                                
  71 : *     ...._LOC = ... LOCAL AU TRONCON.                                          
  72 : *     NB_..... = NOMBRE DE .....                                                
  73 : *                                                                               
  74 : * PARTICULARITES DU LANGAGE UTILISEES:                                          
  75 : * ------------------------------------                                          
  76 : *                                                                               
  77 : *     DIRECTIVE "OBTENIR": LA DIRECTIVE RENVOIE LA VALEUR 'NON' SI              
  78 : *     L'UTILISATEUR APPUIE SUR "ENTREE" AU LIEU DE DONNER LA VALEUR             
  79 : *     DEMANDEE.                                                                 
  80 : *                                                                               
  81 : *     OPERATEUR "EGA": RETOUR DE LA VALEUR "FAUX" SI LES 2 OBJETS NE            
  82 : *     SONT PAS DE MEME TYPE.                                                    
  83 : *     OPERATEUR "NEG": RETOUR DE LA VALEUR "VRAI" SI LES 2 OBJETS NE            
  84 : *     SONT PAS DE MEME TYPE.                                                    
  85 : *                                                                               
  86 : *     DIRECTIVE "MESSAGE": L'INSTRUCTION  (MESSAGE '   ' '......' ;)            
  87 : *     PRODUIT LA CHAINE '    ......' A L'IMPRESSION                             
  88 : *     (3 BLANCS + 1 BLANC AVANT LES '...', SANS COMPRESSION DES BLANCS)         
  89 : *                                                                               
  90 : * AUTEUR, DATE DE CREATION:                                                     
  91 : * -------------------------                                                     
  92 : *                                                                               
  93 : *     P. M.              JUIN 1988                                              
  94 : *                                                                               
  95 : ************************************************************************        
  96 : *                                                                               
  97 : * ______________________                                                        
  98 : *                                                                               
  99 : * DECLARATIONS GENERALES                                                        
 100 : * ______________________                                                        
 101 : *                                                                               
 102 : SI = 'MOT' 'SI' ; SINON = 'MOT' 'SINON' ; FINSI = 'MOT' 'FINSI' ;               
 103 : REPETER = 'MOT' 'REPETER'; QUITTER = 'MOT' 'QUITTER'; FIN = 'MOT' 'FIN';        
 104 : EXISTE = 'MOT' 'EXISTE' ; EGA = 'MOT' 'EGA' ;                                   
 105 : ERREUR = 'MOT' 'ERREUR' ;                                                       
 106 : OBTENIR = 'MOT' 'OBTENIR' ;                                                     
 107 : *                                                                               
 108 : ENTIER   = 'MOT' 'ENTIER  ' ;                                                   
 109 : FLOTTANT = 'MOT' 'FLOTTANT' ;                                                   
 110 : MOT      = 'MOT' 'MOT     ' ;                                                   
 111 : *                                                                               
 112 : 'OPTION' 'DIMENSION' 3 ;                                                        
 113 : *                                                                               
 114 : REPRISE = EXISTE TUYO1 ;                                                        
 115 :   LIST REPRISE;                                                                 
 116 : PREMIERE = 'NON' REPRISE ;                                                      
 117 : SI REPRISE ;                                                                    
 118 :    TUYO2 = TUYO1 ;                                                              
 119 : SINON;                                                                          
 120 :    TUYO2 = 'TABLE' ;                                                            
 121 : FINSI ;                                                                         
 122 : *                                                                               
 123 : DEB_ERR = '*****  ERREUR  *****' ;                                              
 124 : *                                                                               
 125 : * OBJET "BOUCLE" CREE POUR PERMETTRE UNE SORTIE PREMATUREE DE LA                
 126 : * PROCEDURE EN CAS D'ERREUR OU DE DEMANDE EXPLICITE DE L'UTILISATEUR.           
 127 : REPETER PROC 1 ;                                                                
 128 : *                                                                               
 129 : * ________________________________                                              
 130 : *                                                                               
 131 : * DEMANDE D'INFORMATIONS GENERALES                                              
 132 : * ________________________________                                              
 133 : *                                                                               
 134 : *LETYPE = 'TYPE' POINTSPH ;                                                     
 135 : *SI ('NEG' LETYPE 'PROCEDUR') ;                                                 
 136 : *   MESSAGE DEB_ERR ;                                                           
 137 : *   MESSAGE 'LE NOM "POINTSPH" SE TROUVE DANS VOTRE FICHIER DE DONNEES.';       
 138 : *   MESSAGE 'POUR DES RAISONS INDEPENDANTES DE NOTRE VOLONTE, LA ';             
 139 : *   MESSAGE                                                                     
 140 : *   'PROCEDURE "BOA" NE PEUT PAS FONCTIONNER DANS CES CONDITIONS.' ;            
 141 : *   MESSAGE 'VEUILLEZ NOUS EN EXCUSER.' ;                                       
 142 : *   MESSAGE ' ' ;                                                               
 143 : *   MESSAGE 'APPUYEZ SUR LA TOUCHE "ENTREE" POUR CONTINUER' ;                   
 144 : *   OBTENIR VAS_Y ;                                                             
 145 : *   QUITTER PROC ;                                                              
 146 : *FINSI ;                                                                        
 147 : *                                                                               
 148 : 'SAUTER' 'PAGE' ;                                                               
 149 : MESSAGE                                                                         
 150 : 'CETTE PROCEDURE VOUS PERMET DE MAILLER SIMPLEMENT DES LIGNES';                 
 151 : MESSAGE                                                                         
 152 : 'DE TUYAUTERIE DANS UN ESPACE DE DIMENSION 3, L"AXE "Z" ETANT';                 
 153 : MESSAGE                                                                         
 154 : 'SUPPOSE VERTICAL ASCENDANT.                                 ';                 
 155 : MESSAGE ' ' ;                                                                   
 156 : *                                                                               
 157 : MESSAGE                                                                         
 158 : 'VOUS AVEZ TOUJOURS LA POSSIBILITE D"APPUYER SUR LA TOUCHE "ENTREE"' ;          
 159 : MESSAGE                                                                         
 160 : 'POUR REPONDRE PAR LA NEGATIVE OU SIGNIFIER QU"UNE QUESTION NE VOUS' ;          
 161 : MESSAGE                                                                         
 162 : 'INTERESSE PAS' ;                                                               
 163 : SI REPRISE ;                                                                    
 164 :    MESSAGE                                                                      
 165 :    'OU ENCORE SIGNIFIER QUE VOUS AVEZ DEJA REPONDU LORS D"UN' ;                 
 166 :    MESSAGE 'PRECEDENT APPEL A "BOA".' ;                                         
 167 : FINSI ;                                                                         
 168 : MESSAGE ' ' ;                                                                   
 169 : MESSAGE 'APPUYEZ SUR LA TOUCHE "ENTREE" POUR CONTINUER' ;                       
 170 : OBTENIR VAS_Y ;                                                                 
 171 : *                                                                               
 172 : *                                                                               
 173 : REPETER REP_LIGN ;                                                              
 174 : *                                                                               
 175 : *                                                                               
 176 : *  _______________________________                                              
 177 : *                                                                               
 178 : *  DEBUT DE TRAITEMENT D'UNE LIGNE                                              
 179 : *  _______________________________                                              
 180 : *                                                                               
 181 :    'SAUTER' 'PAGE' ;                                                            
 182 : *                                                                               
 183 :    MESSAGE 'NOM DE LA LIGNE A DECRIRE ?' ;                                      
 184 :    MESSAGE '(APPUYEZ SUR "ENTREE" POUR ARRETER LA PROCEDURE)' ;                 
 185 :    OBTENIR NOM_TUYO*MOT ;                                                       
 186 :    SI ('EGA' NOM_TUYO 'NON') ;                                                  
 187 :       QUITTER REP_LIGN ;                                                        
 188 :    FINSI;                                                                       
 189 : *                                                                               
 190 :    NEW_TUYO = 'NON' ('EXISTE' TUYO2 NOM_TUYO) ;                                 
 191 :    SI ('NON' NEW_TUYO) ;                                                        
 192 :       MESSAGE ' ';                                                              
 193 :       MESSAGE                                                                   
 194 :       'S"AGIT-IL DE REFAIRE (=R) OU DE COMPLETER (=C) LA LIGNE'                 
 195 :       NOM_TUYO '?' ;                                                            
 196 :       MESSAGE '(PAR DEFAUT: COMPLETER)' ;                                       
 197 :       OBTENIR REPONSE*MOT ;                                                     
 198 :       NEW_TUYO = 'EGA' REPONSE 'R' ;                                            
 199 :    FINSI ;                                                                      
 200 : *                                                                               
 201 :    SI (NEW_TUYO) ;                                                              
 202 :       LIG_TUYO = 'TABLE' ;                                                      
 203 :       TUYO2.NOM_TUYO = LIG_TUYO ;                                               
 204 :       TAB_TRON = 'TABLE' ;                                                      
 205 :       LIG_TUYO.'TRONCON' = TAB_TRON ;                                           
 206 :    SINON;                                                                       
 207 :       LIG_TUYO = TUYO2.NOM_TUYO ;                                               
 208 :       TAB_TRON = LIG_TUYO.'TRONCON' ;                                           
 209 :    FINSI ;                                                                      
 210 : *                                                                               
 211 :    MESSAGE ' ';                                                                 
 212 :    MESSAGE 'COULEUR DE LA LIGNE ?';                                             
 213 :    OBTENIR COUL_DEF*MOT ;                                                       
 214 :    SI ( 'NEG' COUL_DEF 'NON') ;                                                 
 215 :       'OPTION' 'COULEUR' COUL_DEF ;                                             
 216 :       LIG_TUYO . 'COULEUR' = COUL_DEF ;                                         
 217 :    SINON; SI (EXISTE LIG_TUYO 'COULEUR') ;                                      
 218 :       COUL_DEF =  LIG_TUYO . 'COULEUR' ;                                        
 219 :       'OPTION' 'COULEUR' COUL_DEF ;                                             
 220 :    FINSI ; FINSI ;                                                              
 221 : *                                                                               
 222 :    MESSAGE ' ';                                                                 
 223 :    MESSAGE 'TYPE D"ELEMENT GEOMETRIQUE (SEG2 OU SEG3) ?';                       
 224 :    OBTENIR ELEM_DEF*MOT ;                                                       
 225 :    SI ( 'OU' ('EGA' ELEM_DEF 'SEG2') ('EGA' ELEM_DEF 'SEG3') );                 
 226 :       'OPTION' 'ELEMENTS' ELEM_DEF ;                                            
 227 :       LIG_TUYO . 'ELEMENT' =  ELEM_DEF ;                                        
 228 :    SINON; SI (EXISTE LIG_TUYO 'ELEMENT') ;                                      
 229 :       ELEM_DEF =  LIG_TUYO . 'ELEMENT' ;                                        
 230 :       'OPTION' 'ELEMENTS' ELEM_DEF ;                                            
 231 :    FINSI ; FINSI ;                                                              
 232 : *                                                                               
 233 : *  UNITES DE LONGUEUR: ELLES SONT CHOISIES UNE FOIS POUR TOUTES POUR UNE        
 234 : *                      LIGNE DONNEE.                                            
 235 : *                                                                               
 236 :    SI ( 'EXISTE' LIG_TUYO 'ENTREE' ) ;                                          
 237 :       UNIT_ENT =  LIG_TUYO . 'ENTREE' ;                                         
 238 :       MESSAGE ' ' ;                                                             
 239 :       MESSAGE 'UNITE DE LONGUEUR EN ENTREE:' UNIT_ENT ;                         
 240 :    SINON;                                                                       
 241 :       MESSAGE ' ';                                                              
 242 :       MESSAGE 'UNITE DE LONGUEUR EN ENTREE ?';                                  
 243 :       MESSAGE                                                                   
 244 : 'MM = MILLIMETRE, CM = CENTIMETRE, M = METRE, IN = POUCE, FT = PIED';           
 245 :       OBTENIR UNIT_ENT*MOT ;                                                    
 246 :       SI ( 'NEG' UNIT_ENT 'NON' ) ;                                             
 247 :          LIG_TUYO . 'ENTREE' =  UNIT_ENT ;                                      
 248 :       FINSI ;                                                                   
 249 :    FINSI;                                                                       
 250 : *                                                                               
 251 :    SI ( 'EXISTE' LIG_TUYO 'SORTIE' ) ;                                          
 252 :       UNIT_SOR =  LIG_TUYO . 'SORTIE' ;                                         
 253 :       MESSAGE ' ' ;                                                             
 254 :       MESSAGE 'UNITE DE LONGUEUR EN SORTIE:' UNIT_SOR ;                         
 255 :    SINON;                                                                       
 256 :       MESSAGE ' ';                                                              
 257 :       MESSAGE 'UNITE DE LONGUEUR EN SORTIE ?';                                  
 258 :       MESSAGE                                                                   
 259 :       'MM = MILLIMETRE, CM = CENTIMETRE, M = METRE, ID = IDEM' ;                
 260 :       OBTENIR UNIT_SOR*MOT ;                                                    
 261 :       SI ( 'NEG' UNIT_SOR 'NON' ) ;                                             
 262 :          LIG_TUYO . 'SORTIE' =  UNIT_SOR ;                                      
 263 :       FINSI ;                                                                   
 264 :    FINSI;                                                                       
 265 : *                                                                               
 266 :    UNITES = 'ET' ('EXISTE' LIG_TUYO 'ENTREE')                                   
 267 :                  ('EXISTE' LIG_TUYO 'SORTIE') ;                                 
 268 :    SI UNITES ;                                                                  
 269 :       UNITES = 'ET' ('NEG' UNIT_ENT UNIT_SORT)                                  
 270 :                     ('NEG' UNIT_SOR 'ID') ;                                     
 271 :    FINSI;                                                                       
 272 : *                                                                               
 273 :    SI UNITES ;                                                                  
 274 : *     PRECAUTION EN CAS DE MAUVAISE LECTURE: ON NE CHANGE PAS D'UNITES.         
 275 :       COEF_SOR = 1.D0 ;                                                         
 276 :       SI ('EGA' UNIT_ENT 'MM') ;                                                
 277 :          SI ('EGA' UNIT_SOR 'CM') ;                                             
 278 :             COEF_SOR = 1.D-1 ;                                                  
 279 :          SINON; SI ('EGA' UNIT_SOR 'M') ;                                       
 280 :             COEF_SOR = 1.D-3 ;                                                  
 281 :          FINSI; FINSI;                                                          
 282 :       SINON; SI ('EGA' UNIT_ENT 'CM') ;                                         
 283 :          SI ('EGA' UNIT_SOR 'MM') ;                                             
 284 :             COEF_SOR = 10.D0 ;                                                  
 285 :          SINON; SI ('EGA' UNIT_SOR 'M') ;                                       
 286 :             COEF_SOR = 1.D-2 ;                                                  
 287 :          FINSI; FINSI;                                                          
 288 :       SINON; SI ('EGA' UNIT_ENT 'M') ;                                          
 289 :          SI ('EGA' UNIT_SOR 'MM') ;                                             
 290 :             COEF_SOR = 1.D3 ;                                                   
 291 :          SINON; SI ('EGA' UNIT_SOR 'CM') ;                                      
 292 :             COEF_SOR = 1.D2 ;                                                   
 293 :          FINSI; FINSI;                                                          
 294 :       SINON; SI ('EGA' UNIT_ENT 'IN') ;                                         
 295 :          SI ('EGA' UNIT_SOR 'MM') ;                                             
 296 :             COEF_SOR = 25.4D0 ;                                                 
 297 :          SINON; SI ('EGA' UNIT_SOR 'CM') ;                                      
 298 :             COEF_SOR = 2.54D0 ;                                                 
 299 :          SINON; SI ('EGA' UNIT_SOR 'M') ;                                       
 300 :             COEF_SOR = 2.54D-2 ;                                                
 301 :          FINSI; FINSI; FINSI;                                                   
 302 :       SINON; SI ('EGA' UNIT_ENT 'FT') ;                                         
 303 :          SI ('EGA' UNIT_SOR 'MM') ;                                             
 304 :             COEF_SOR = 304.8D0 ;                                                
 305 :          SINON; SI ('EGA' UNIT_SOR 'CM') ;                                      
 306 :             COEF_SOR = 30.48D0 ;                                                
 307 :          SINON; SI ('EGA' UNIT_SOR 'M') ;                                       
 308 :             COEF_SOR = 0.3048D0 ;                                               
 309 :          FINSI; FINSI; FINSI;                                                   
 310 :       FINSI; FINSI; FINSI; FINSI; FINSI;                                        
 311 : *     OUF |                                                                     
 312 :    SINON;                                                                       
 313 :       COEF_SOR = 1.D0 ;                                                         
 314 :    FINSI ;                                                                      
 315 : *                                                                               
 316 :    MESSAGE ' ';                                                                 
 317 :    MESSAGE                                                                      
 318 :    'LARGEUR DE MAILLE PAR DEFAUT ?';                                            
 319 :    OBTENIR DENS_DEF*FLOTTANT ;                                                  
 320 :    SI ( 'EGA' ('TYPE' DENS_DEF) 'FLOTTANT' ) ;                                  
 321 :       'DENSITE' (DENS_DEF * COEF_SOR) ;                                         
 322 :       LIG_TUYO.'DENSITE' = DENS_DEF ;                                           
 323 :    SINON; SI ( 'EXISTE' LIG_TUYO 'DENSITE' ) ;                                  
 324 :       DENS_DEF = LIG_TUYO.'DENSITE' ;                                           
 325 :       'DENSITE' (DENS_DEF * COEF_SOR) ;                                         
 326 :    FINSI ; FINSI;                                                               
 327 : *                                                                               
 328 :    MESSAGE ' ';                                                                 
 329 :    MESSAGE                                                                      
 330 :    'SOUHAITEZ-VOUS POUVOIR DONNER EXPLICITEMENT LE NOMBRE D"ELEMENTS' ;         
 331 :    MESSAGE                                                                      
 332 :    'DANS LES DIFFERENTS TRONCONS DE LA LIGNE ?' ;                               
 333 :    OBTENIR REPONSE*MOT ;                                                        
 334 :    DECOUP = 'EGA' REPONSE 'OUI' ;                                               
 335 : *                                                                               
 336 :    MESSAGE ' ';                                                                 
 337 :    MESSAGE                                                                      
 338 :    'PENTE PAR DEFAUT POUR L"ENSEMBLE DES TRONCONS ?' ;                          
 339 :    MESSAGE '(VALEUR INFERIEURE A 1. , POSITIVE SI DESCENTE)' ;                  
 340 :    OBTENIR PENT_DEF*FLOTTANT ;                                                  
 341 :    SI ( 'EGA' ('TYPE' PENT_DEF) 'FLOTTANT' ) ;                                  
 342 :       LIG_TUYO.'PENTE' = PENT_DEF ;                                             
 343 :    SINON; SI ( 'EXISTE' LIG_TUYO  'PENTE' ) ;                                   
 344 :       PENT_DEF = LIG_TUYO.'PENTE' ;                                             
 345 :    FINSI ; FINSI;                                                               
 346 : *                                                                               
 347 :    MESSAGE ' ';                                                                 
 348 :    MESSAGE                                                                      
 349 :    'SOUHAITEZ-VOUS POUVOIR DONNER EXPLICITEMENT LA PENTE' ;                     
 350 :    MESSAGE                                                                      
 351 :    'DANS LES DIFFERENTS TRONCONS DE LA LIGNE ?' ;                               
 352 :    OBTENIR REPONSE*MOT ;                                                        
 353 :    PENTE = 'EGA' REPONSE 'OUI' ;                                                
 354 : *                                                                               
 355 : *  POINT DE DEPART DE LA LIGNE                                                  
 356 : *                                                                               
 357 :    MESSAGE ' ';                                                                 
 358 : *+*SI (NEW_TUYO) ;                                                              
 359 :       MESSAGE 'COORDONNEES DU POINT INITIAL ?' ;                                
 360 :       OBTENIR X0*FLOTTANT Y0*FLOTTANT Z0*FLOTTANT ;                             
 361 :       SI UNITES;                                                                
 362 :          X0 = X0 * COEF_SOR ;                                                   
 363 :          Y0 = Y0 * COEF_SOR ;                                                   
 364 :          Z0 = Z0 * COEF_SOR ;                                                   
 365 :       FINSI;                                                                    
 366 :       P0 = X0 Y0 Z0 ;                                                           
 367 : *+*SINON;                                                                       
 368 : *+*   CA NE VA PAS: ON N'A PAS SU ORDONNER LES TRONCONS.                        
 369 : *     P0 = 'POINT' (LIG_TUYO 'MAILLAGE') 'FINAL' ;                              
 370 : *     X0 Y0 Z0 = 'COORDONNEES' P0 ;                                             
 371 : *     SI UNITES;                                                                
 372 : *        X00 = X0 / COEF_SOR ;                                                  
 373 : *        Y00 = Y0 / COEF_SOR ;                                                  
 374 : *        Z00 = Z0 / COEF_SOR ;                                                  
 375 : *     SINON;                                                                    
 376 : *        X00 = X0 ;                                                             
 377 : *        Y00 = Y0 ;                                                             
 378 : *        Z00 = Z0 ;                                                             
 379 : *     FINSI;                                                                    
 380 : *     MESSAGE                                                                   
 381 : *     'LA LIGNE VA ETRE PROLONGEE DEPUIS LE POINT DE COORDONNEES:' ;            
 382 : *     MESSAGE X00 Y00 Z00 ;                                                     
 383 : *     MESSAGE '(UNITES D"ENTREE)' ;                                             
 384 : *     MESSAGE ' ' ;                                                             
 385 : *     MESSAGE 'APPUYEZ SUR LA TOUCHE "ENTREE" POUR CONTINUER' ;                 
 386 : *     OBTENIR VAS_Y ;                                                           
 387 : *+*FINSI ;                                                                      
 388 : *                                                                               
 389 :    P8 = P0 ;                                                                    
 390 :    X8 = X0 ;                                                                    
 391 :    Y8 = Y0 ;                                                                    
 392 :    Z8 = Z0 ;                                                                    
 393 : *                                                                               
 394 :    REPETER REP_TRON ;                                                           
 395 : *                                                                               
 396 : *                                                                               
 397 : *     _______________________                                                   
 398 : *                                                                               
 399 : *     TRAITEMENT D'UN TRONCON                                                   
 400 : *     _______________________                                                   
 401 : *                                                                               
 402 :       'SAUTER' 'PAGE' ;                                                         
 403 :       REPETER LECTUR01 10 ;                                                     
 404 :          MESSAGE 'NOM DU TRONCON A DECRIRE ?' ;                                 
 405 :          MESSAGE                                                                
 406 :          '(APPUYEZ SUR "ENTREE" POUR CHANGER DE LIGNE DE TUYAUTERIE)' ;         
 407 :          OBTENIR NOM_TRON*MOT ;                                                 
 408 :          SI ('EGA' NOM_TRON 'NON') ;                                            
 409 :             QUITTER REP_TRON ;                                                  
 410 :          FINSI;                                                                 
 411 :          SI ('EXISTE' TAB_TRON NOM_TRON) ;                                      
 412 :             MESSAGE ' ';                                                        
 413 :             MESSAGE                                                             
 414 :             'LE TRONCON' NOM_TRON 'EXISTE DEJA POUR LA LIGNE' NOM_TUYO ;        
 415 :             MESSAGE 'SOUHAITEZ-VOUS VRAIMENT REFAIRE CE TRONCON ' ;             
 416 :             MESSAGE '(OU, A LA LIMITE, LE SUPPRIMER) ?' ;                       
 417 :             OBTENIR REFAIRE*MOT ;                                               
 418 :             SI ('EGA' REFAIRE 'OUI') ;                                          
 419 :                QUITTER LECTUR01 ;                                               
 420 :             FINSI ;                                                             
 421 :          SINON;                                                                 
 422 :             QUITTER LECTUR01 ;                                                  
 423 :          FINSI ;                                                                
 424 :       FIN LECTUR01 ;                                                            
 425 : *                                                                               
 426 :       OLD_TRON = 'EXISTE' TAB_TRON NOM_TRON ;                                   
 427 : *                                                                               
 428 : *     DEBUT DU TRONCON = FIN DU TRONCON PRECEDENT, SAUF SI ON REFAIT            
 429 : *     UN TRONCON EXISTANT, EVIDEMMENT.                                          
 430 : *                                                                               
 431 :       SI OLD_TRON ;                                                             
 432 :          P1 = 'POINT' (TAB_TRON.NOM_TRON) 'INITIAL' ;                           
 433 :          X1 Y1 Z1 = 'COORDONNEES' P1 ;                                          
 434 :       SINON;                                                                    
 435 :          P1 = P8 ;                                                              
 436 :          X1 = X8 ;                                                              
 437 :          Y1 = Y8 ;                                                              
 438 :          Z1 = Z8 ;                                                              
 439 :       FINSI ;                                                                   
 440 : *                                                                               
 441 :       MESS1A = 'MOT'                                                            
 442 :       'SEGMENT DE DROITE DEFINI PAR LES COORDONNEES CARTESIENNES';              
 443 :       MESS1B = 'MOT' 'DU POINT EXTREMITE.' ;                                    
 444 : *                                                                               
 445 :       MESS2A = 'MOT'                                                            
 446 :       'SEGMENT DE DROITE DEFINI PAR:' ;                                         
 447 :       MESS2B = 'MOT' '- UN VECTEUR DIRECTEUR COLINEAIRE AU TRONCON,' ;          
 448 :       MESS2C = 'MOT' '- LA LONGUEUR DU TRONCON.' ;                              
 449 : *                                                                               
 450 :       MESS3A = 'MOT'                                                            
 451 :       'SEGMENT DE DROITE DONT LES EXTREMITES SONT COTEES PAR';                  
 452 :       MESS3B = 'MOT' '- 2 VECTEURS DIRECTEURS ORTHOGONAUX,' ;                   
 453 :       MESS3C = 'MOT' '- LEURS LONGUEURS.' ;                                     
 454 : *                                                                               
 455 :       MESS4A = 'MOT'                                                            
 456 :       'SEGMENT DE DROITE DEFINI PAR UN VECTEUR EN COORDONNEES' ;                
 457 :       MESS4B = 'MOT' 'CARTESIENNES.' ;                                          
 458 : *                                                                               
 459 :       MESS5A = 'MOT'                                                            
 460 :       'SEGMENT DE DROITE DEFINI PAR UN VECTEUR EN COORDONNEES' ;                
 461 :       MESS5B = 'MOT' 'SPHERIQUES, C-A-D:';                                      
 462 :       MESS5C = 'MOT' '- LA LONGUEUR DU TRONCON,' ;                              
 463 :       MESS5D = 'MOT' '- UN ANGLE COMPRIS ENTRE 0 ET 360 DEGRES,' ;              
 464 :       MESS5E = 'MOT' '- UN ANGLE COMPRIS ENTRE -90 ET +90 DEGRES.' ;            
 465 : *                                                                               
 466 :       MESS6A = 'MOT' 'GRAND ARC, DEFINI PAR:' ;                                 
 467 :       MESS6B = 'MOT'                                                            
 468 :       '- UN VECTEUR PARALLELE A LA CORDE SOUS-TENDANT LE TRONCON,';             
 469 :       MESS6C = 'MOT' '- LA LONGUEUR DE LA CORDE,' ;                             
 470 :       MESS6D = 'MOT'                                                            
 471 :       '- UN VECTEUR DIRIGE DU CENTRE VERS LA 2IEME EXTREMITE DE L"ARC,';        
 472 :       MESS6E = 'MOT' '- LE RAYON DE L"ARC.';                                    
 473 : *                                                                               
 474 :       MESS7A = 'MOT' 'COUDE, DEFINI PAR:' ;                                     
 475 :       MESS7B = 'MOT' '- LES 2 TRONCONS A RACCORDER,';                           
 476 :       MESS7C = 'MOT' '- LE RAYON DU COUDE.' ;                                   
 477 : *                                                                               
 478 :       MESS8A = 'MOT' 'DOUBLE COUDE, DEFINI PAR:' ;                              
 479 :       MESS8B = 'MOT' '- LES 2 TRONCONS (PARALLELES) A RACCORDER,';              
 480 :       MESS8C = 'MOT' '- LE RAYON (COMMUN) DES 2 COUDES.' ;                      
 481 : *                                                                               
 482 : *                                                                               
 483 :       'SAUTER' 'PAGE' ;                                                         
 484 :       MESSAGE '=====  CREATION D"UN TRONCON  =====';                            
 485 :       'SAUTER' 'LIGNE' ;                                                        
 486 :       MESSAGE                                                                   
 487 :       'DONNEZ LE NUMERO DU TYPE DE TRONCON QUE VOUS VOULEZ INTRODUIRE';         
 488 :       MESSAGE ' ' ;                                                             
 489 :       MESSAGE ' 1 =' MESS1A ;                                                   
 490 :       MESSAGE '    ' MESS1B ;                                                   
 491 :       MESSAGE ' ' ;                                                             
 492 :       MESSAGE ' 2 =' MESS2A ;                                                   
 493 :       MESSAGE '    ' MESS2B ;                                                   
 494 :       MESSAGE '    ' MESS2C ;                                                   
 495 :       MESSAGE ' ' ;                                                             
 496 :       MESSAGE ' 3 =' MESS3A ;                                                   
 497 :       MESSAGE '    ' MESS3B ;                                                   
 498 :       MESSAGE '    ' MESS3C ;                                                   
 499 :       MESSAGE ' ' ;                                                             
 500 :       MESSAGE ' 4 =' MESS4A ;                                                   
 501 :       MESSAGE '    ' MESS4B ;                                                   
 502 :       MESSAGE ' ' ;                                                             
 503 :       MESSAGE ' 5 =' MESS5A ;                                                   
 504 :       MESSAGE '    ' MESS5B ;                                                   
 505 :       MESSAGE '    ' MESS5C ;                                                   
 506 :       MESSAGE '    ' MESS5D ;                                                   
 507 :       MESSAGE '    ' MESS5E ;                                                   
 508 :       MESSAGE ' ' ;                                                             
 509 :       MESSAGE ' 6 =' MESS6A ;                                                   
 510 :       MESSAGE '    ' MESS6B ;                                                   
 511 :       MESSAGE '    ' MESS6C ;                                                   
 512 :       MESSAGE '    ' MESS6D ;                                                   
 513 :       MESSAGE '    ' MESS6E ;                                                   
 514 :       MESSAGE ' ' ;                                                             
 515 :       MESSAGE ' 7 =' MESS7A ;                                                   
 516 :       MESSAGE '    ' MESS7B ;                                                   
 517 :       MESSAGE '    ' MESS7C ;                                                   
 518 :       MESSAGE ' ' ;                                                             
 519 :       MESSAGE ' 8 =' MESS8A ;                                                   
 520 :       MESSAGE '    ' MESS8B ;                                                   
 521 :       MESSAGE '    ' MESS8C ;                                                   
 522 :       SI OLD_TRON ;                                                             
 523 :          MESSAGE ' ' ;                                                          
 524 :          MESSAGE ' 0 = SUPPRESSION DU TRONCON.' ;                               
 525 :       FINSI;                                                                    
 526 : *                                                                               
 527 :       OBTENIR TYP_TRON*ENTIER ;                                                 
 528 : *                                                                               
 529 :       SI (OLD_TRON 'ET' ('EGA' TYP_TRON 0) ) ;                                  
 530 : *                        ----------------                                       
 531 : *        SUPPRESSION DE TRONCON:                                                
 532 :          TAB_TRON = 'ENLEVER' TAB_TRON NOM_TRON ;                               
 533 :          LIG_TUYO.'TRONCON' = TAB_TRON ;                                        
 534 :          'ITERER' REP_TRON ;                                                    
 535 :       FINSI;                                                                    
 536 : *                                                                               
 537 :       SI ('OU' ('EGA' TYP_TRON 'NON') ('<EG' TYP_TRON 0) ) ;                    
 538 :          QUITTER REP_TRON ;                                                     
 539 :       FINSI ;                                                                   
 540 : *                                                                               
 541 :       'SAUTER' 'PAGE' ;                                                         
 542 : *                                                                               
 543 :       NBEL_LOC = 'TEXTE' ' ' ;                                                  
 544 :       SI DECOUP ;                                                               
 545 :          MESSAGE ' ';                                                           
 546 :          MESSAGE 'NOMBRE D"ELEMENTS POUR REPRESENTER LE TRONCON ?' ;            
 547 :          OBTENIR _NBEL_*ENTIER ;                                                
 548 :          SI ('EGA' ('TYPE' _NBEL_) 'ENTIER  ') ;                                
 549 :             NBEL_LOC = 'TEXTE' '_NBEL_' ;                                       
 550 :          FINSI ;                                                                
 551 :       FINSI;                                                                    
 552 : *                                                                               
 553 :       PENT_LOC = 'MOT' 'NON' ;                                                  
 554 :       SI (PENTE 'ET' (TYP_TRON <EG 6) ) ;                                       
 555 :          MESSAGE ' ';                                                           
 556 :          MESSAGE 'PENTE DU TRONCON ?' ;                                         
 557 :          MESSAGE '(VALEUR INFERIEURE A 1. , POSITIVE SI DESCENTE)';             
 558 :          OBTENIR PENT_LOC*FLOTTANT ;                                            
 559 :       FINSI;                                                                    
 560 : *                                                                               
 561 : *                                                                               
 562 :          'SAUTER' 'PAGE';                                                       
 563 : *                                                                               
 564 :       SI ('EGA' TYP_TRON 1) ;                                                   
 565 : *         ----------------                                                      
 566 : *                                                                               
 567 :          MESSAGE MESS1A ;                                                       
 568 :          MESSAGE MESS1B ;                                                       
 569 :          MESSAGE ' ';                                                           
 570 :          MESSAGE 'DONNEZ LES 3 COORDONNEES DU POINT:' ;                         
 571 :          OBTENIR X8*FLOTTANT Y8*FLOTTANT Z8*FLOTTANT ;                          
 572 :          SI UNITES;                                                             
 573 :             X8 = X8 * COEF_SOR ;                                                
 574 :             Y8 = Y8 * COEF_SOR ;                                                
 575 :             Z8 = Z8 * COEF_SOR ;                                                
 576 :          FINSI ;                                                                
 577 :          SI ( ('ABS' (Z8 - Z1) ) < 1.D-5) ;                                     
 578 :             SI ('EGA' ('TYPE' PENT_LOC) 'FLOTTANT') ;                           
 579 :                DH = ( ((X8 - X1) ** 2) + ((Y8 - Y1) ** 2) ) ** 0.5 ;            
 580 :                Z8 = Z8 - (DH * PENT_LOC) ;                                      
 581 :             SINON; SI ('EGA' ('TYPE' PENT_DEF) 'FLOTTANT') ;                    
 582 :                DH = ( ((X8 - X1) ** 2) + ((Y8 - Y1) ** 2) ) ** 0.5 ;            
 583 :                Z8 = Z8 - (DH * PENT_DEF) ;                                      
 584 :             FINSI; FINSI;                                                       
 585 :          FINSI;                                                                 
 586 :          P8 = X8 Y8 Z8 ;                                                        
 587 :          TAB_TRON.NOM_TRON = 'DROITE' NBEL_LOC P1 P8 ;                          
 588 : *                                                                               
 589 :       SINON; SI ((TYP_TRON >EG 2) 'ET' (TYP_TRON <EG 5 )) ;                     
 590 : *                 -------------------------------------                         
 591 : *                                                                               
 592 :          SI ('EGA' TYP_TRON 2) ;                                                
 593 : *            ----------------                                                   
 594 :             MESSAGE MESS2A ;                                                    
 595 :             MESSAGE MESS2B ;                                                    
 596 :             MESSAGE MESS2C ;                                                    
 597 :             MESSAGE ' ';                                                        
 598 :             MESSAGE 'DONNEZ LES 3 COORDONNEES DU VECTEUR DIRECTEUR ';           
 599 :             MESSAGE 'ET LA LONGUEUR DU TRONCON ENTRE POINTS D"EPURE:';          
 600 :             OBTENIR X8*FLOTTANT Y8*FLOTTANT Z8*FLOTTANT LONG*FLOTTANT ;         
 601 :             SI UNITES;                                                          
 602 :                LONG = LONG * COEF_SOR ;                                         
 603 :             FINSI ;                                                             
 604 :             LVECT = ( (X8 ** 2) + (Y8 ** 2) + (Z8 ** 2) ) ** 0.5 ;              
 605 :             RAP = LONG / LVECT ;                                                
 606 :             X8 = X8 * RAP ;                                                     
 607 :             Y8 = Y8 * RAP ;                                                     
 608 :             Z8 = Z8 * RAP ;                                                     
 609 : *                                                                               
 610 :          SINON ; SI ('EGA' TYP_TRON 3) ;                                        
 611 : *                    ----------------                                           
 612 :             MESSAGE MESS3A ;                                                    
 613 :             MESSAGE MESS3B ;                                                    
 614 :             MESSAGE MESS3C ;                                                    
 615 :             MESSAGE ' ';                                                        
 616 :             MESSAGE                                                             
 617 :             'DONNEZ LES 3 COORDONNEES DU 1ER VECTEUR ET SA LONGUEUR:' ;         
 618 :             OBTENIR X8*FLOTTANT Y8*FLOTTANT Z8*FLOTTANT LONG*FLOTTANT ;         
 619 :             SI UNITES;                                                          
 620 :                LONG = LONG * COEF_SOR ;                                         
 621 :             FINSI ;                                                             
 622 :             LVECT = ( (X8 ** 2) + (Y8 ** 2) + (Z8 ** 2) ) ** 0.5 ;              
 623 :             RAP = LONG / LVECT ;                                                
 624 :             XX8 = X8 * RAP ;                                                    
 625 :             YY8 = Y8 * RAP ;                                                    
 626 :             ZZ8 = Z8 * RAP ;                                                    
 627 :             MESSAGE ' ';                                                        
 628 :             MESSAGE                                                             
 629 :             'DONNEZ LES 3 COORDONNEES DU 2EME VECTEUR ET SA LONGUEUR:';         
 630 :             OBTENIR X8*FLOTTANT Y8*FLOTTANT Z8*FLOTTANT LONG*FLOTTANT ;         
 631 :             SI UNITES;                                                          
 632 :                LONG = LONG * COEF_SOR ;                                         
 633 :             FINSI ;                                                             
 634 :             LVECT = ( (X8 ** 2) + (Y8 ** 2) + (Z8 ** 2) ) ** 0.5 ;              
 635 :             RAP = LONG / LVECT ;                                                
 636 :             X8 = (X8 * RAP) + XX8 ;                                             
 637 :             Y8 = (Y8 * RAP) + YY8 ;                                             
 638 :             Z8 = (Z8 * RAP) + ZZ8 ;                                             
 639 : *                                                                               
 640 :          SINON ; SI ('EGA' TYP_TRON 4) ;                                        
 641 : *                    ----------------                                           
 642 :             MESSAGE MESS4A ;                                                    
 643 :             MESSAGE MESS4B ;                                                    
 644 :             MESSAGE ' ';                                                        
 645 :             MESSAGE 'DONNEZ LES 3 COORDONNEES DU VECTEUR: ';                    
 646 :             OBTENIR X8*FLOTTANT Y8*FLOTTANT Z8*FLOTTANT ;                       
 647 :             SI UNITES;                                                          
 648 :                X8 = X8 * COEF_SOR ;                                             
 649 :                Y8 = Y8 * COEF_SOR ;                                             
 650 :                Z8 = Z8 * COEF_SOR ;                                             
 651 :             FINSI ;                                                             
 652 : *                                                                               
 653 :          SINON;                                                                 
 654 : *           TYP_TRON  VAUT  5 :                                                 
 655 : *           -----------------                                                   
 656 :             MESSAGE MESS5A ;                                                    
 657 :             MESSAGE MESS5B ;                                                    
 658 :             MESSAGE MESS5C ;                                                    
 659 :             MESSAGE MESS5D ;                                                    
 660 :             MESSAGE MESS5E ;                                                    
 661 :             MESSAGE ' ';                                                        
 662 :             MESSAGE                                                             
 663 :             'DONNEZ LA LONGUEUR DU TRONCON ENTRE POINTS D"EPURE' ;              
 664 :             MESSAGE 'ET LES 2 ANGLES EN DEGRES DECIMAUX:';                      
 665 :             OBTENIR LONG*FLOTTANT TETA*FLOTTANT PHI*FLOTTANT ;                  
 666 :             SI UNITES;                                                          
 667 :                LONG = LONG * COEF_SOR ;                                         
 668 :             FINSI ;                                                             
 669 :             P8 = POINTSPH LONG TETA PHI ;                                       
 670 :             X8 Y8 Z8 = 'COORDONNEES' P8 ;                                       
 671 : *                                                                               
 672 :          FINSI; FINSI; FINSI;                                                   
 673 : *                                                                               
 674 :          SI ( ('ABS' Z8) < 1.D-5) ;                                             
 675 :             SI ('EGA' ('TYPE' PENT_LOC) 'FLOTTANT') ;                           
 676 :                DH = ( (X8 ** 2) + (Y8 ** 2) ) ** 0.5 ;                          
 677 :                Z8 = Z8 - (DH * PENT_LOC) ;                                      
 678 :             SINON; SI ('EGA' ('TYPE' PENT_DEF) 'FLOTTANT') ;                    
 679 :                DH = ( (X8 ** 2) + (Y8 ** 2) ) ** 0.5 ;                          
 680 :                Z8 = Z8 - (DH * PENT_DEF) ;                                      
 681 :             FINSI; FINSI;                                                       
 682 :          FINSI;                                                                 
 683 :          X8 = X1 + X8 ;                                                         
 684 :          Y8 = Y1 + Y8 ;                                                         
 685 :          Z8 = Z1 + Z8 ;                                                         
 686 :          P8 = X8 Y8 Z8 ;                                                        
 687 :          TAB_TRON.NOM_TRON = 'DROITE' NBEL_LOC P1 P8 ;                          
 688 : *                                                                               
 689 :       SINON; SI ('EGA' TYP_TRON 6) ;                                            
 690 : *                ----------------                                               
 691 : *                                                                               
 692 :          MESSAGE MESS6A ;                                                       
 693 :          MESSAGE MESS6B ;                                                       
 694 :          MESSAGE MESS6C ;                                                       
 695 :          MESSAGE MESS6D ;                                                       
 696 :          MESSAGE MESS6E ;                                                       
 697 :          MESSAGE ' ';                                                           
 698 :          MESSAGE                                                                
 699 :          'DONNEZ LES 3 COORDONNEES DU VECTEUR PARALLELE A LA CORDE' ;           
 700 :          MESSAGE 'ET LA LONGUEUR DE LA CORDE:' ;                                
 701 :          OBTENIR X8*FLOTTANT Y8*FLOTTANT Z8*FLOTTANT LONG*FLOTTANT ;            
 702 :          SI UNITES;                                                             
 703 :             LONG = LONG * COEF_SOR ;                                            
 704 :          FINSI ;                                                                
 705 :          LVECT = ( (X8 ** 2) + (Y8 ** 2) + (Z8 ** 2) ) ** 0.5 ;                 
 706 :          RAP = LONG / LVECT ;                                                   
 707 :          X8 = X1 + (X8 * RAP) ;                                                 
 708 :          Y8 = Y1 + (Y8 * RAP) ;                                                 
 709 :          Z8 = Z1 + (Z8 * RAP) ;                                                 
 710 :          MESSAGE ' ';                                                           
 711 :          MESSAGE                                                                
 712 :          'DONNEZ LES 3 COORDONNEES DU VECTEUR PARALLELE AU RAYON' ;             
 713 :          MESSAGE 'ET LA VALEUR DU RAYON:' ;                                     
 714 :          OBTENIR X4*FLOTTANT Y4*FLOTTANT Z4*FLOTTANT LONG*FLOTTANT ;            
 715 :          SI UNITES;                                                             
 716 :             LONG = LONG * COEF_SOR ;                                            
 717 :          FINSI ;                                                                
 718 :          LVECT = ( (X4 ** 2) + (Y4 ** 2) + (Z4 ** 2) ) ** 0.5 ;                 
 719 :          RAP = LONG / LVECT ;                                                   
 720 :          X4 = X8 - (X4 * RAP) ;                                                 
 721 :          Y4 = Y8 - (Y4 * RAP) ;                                                 
 722 :          Z4 = Z8 - (Z4 * RAP) ;                                                 
 723 : *                                                                               
 724 :          SI ( ('ABS' (Z8 - Z1) ) < 1.D-5) ;                                     
 725 :             SI ('EGA' ('TYPE' PENT_LOC) 'FLOTTANT') ;                           
 726 :                DH = ( ((X8 - X1) ** 2) + ((Y8 - Y1) ** 2) ) ** 0.5 ;            
 727 :                DH = DH * PENT_LOC ;                                             
 728 :                Z8 = Z8 - DH ;                                                   
 729 :                Z4 = Z4 - (DH / 2.D0) ;                                          
 730 :             SINON; SI ('EGA' ('TYPE' PENT_DEF) 'FLOTTANT') ;                    
 731 :                DH = ( ((X8 - X1) ** 2) + ((Y8 - Y1) ** 2) ) ** 0.5 ;            
 732 :                DH = DH * PENT_DEF ;                                             
 733 :                Z8 = Z8 - DH ;                                                   
 734 :                Z4 = Z4 - (DH / 2.D0) ;                                          
 735 :             FINSI; FINSI;                                                       
 736 :          FINSI;                                                                 
 737 :          C4 = X4 Y4 Z4 ;                                                        
 738 :          P8 = X8 Y8 Z8 ;                                                        
 739 :          TAB_TRON.NOM_TRON = 'CERCLE' NBEL_LOC P1 C4 P8 ;                       
 740 : *                                                                               
 741 :       SINON; SI ('EGA' TYP_TRON 7) ;                                            
 742 : *                ----------------                                               
 743 : *                                                                               
 744 :          MESSAGE MESS7A ;                                                       
 745 :          MESSAGE MESS7B ;                                                       
 746 :          MESSAGE MESS7C ;                                                       
 747 :          MESSAGE ' ';                                                           
 748 :          MESSAGE                                                                
 749 :          'DONNEZ LES NOMS DES 2 TRONCONS ET LE RAYON DE RACCORDEMENT:' ;        
 750 :          OBTENIR NOM1TRON*MOT NOM2TRON*MOT RAYON*FLOTTANT ;                     
 751 :          SI UNITES;                                                             
 752 :             RAYON = RAYON * COEF_SOR ;                                          
 753 :          FINSI ;                                                                
 754 :          L1 RAC L2 = 'CONGE' NBEL_LOC RAYON                                     
 755 :                      (TAB_TRON.NOM1TRON) (TAB_TRON.NOM2TRON) ;                  
 756 :          TAB_TRON.NOM1TRON = L1  ;                                              
 757 :          TAB_TRON.NOM_TRON = RAC ;                                              
 758 :          TAB_TRON.NOM2TRON = L2  ;                                              
 759 : *        ON GARDE LES VALEURS PRECEDENTES DE P8, X8, Y8 ET Z8.                  
 760 : *        ON N'EN A PAS BESOIN ICI.                                              
 761 : *                                                                               
 762 :       SINON; SI ('EGA' TYP_TRON 8) ;                                            
 763 : *                ----------------                                               
 764 : *                                                                               
 765 :          MESSAGE MESS8A ;                                                       
 766 :          MESSAGE MESS8B ;                                                       
 767 :          MESSAGE MESS8C ;                                                       
 768 :          MESSAGE 'LES 2 TRONCONS A RACCORDER DOIVENT ETRE PARALLELES.';         
 769 :          MESSAGE                                                                
 770 :          'LE DOUBLE COUDE EST CENTRE SUR L"EXTREMITE DU 1ER TRONCON.';          
 771 :          MESSAGE ' ';                                                           
 772 :          MESSAGE                                                                
 773 :          'DONNEZ LES NOMS DES 2 TRONCONS ET LE RAYON DE RACCORDEMENT:';         
 774 :          OBTENIR NOM1TRON*MOT NOM2TRON*MOT RAYON*FLOTTANT ;                     
 775 :          SI UNITES;                                                             
 776 :             RAYON = RAYON * COEF_SOR ;                                          
 777 :          FINSI ;                                                                
 778 :          L1 RAC L2 = 'CONGE' NBEL_LOC RAYON 'DOUBLE'                            
 779 :                      (TAB_TRON.NOM1TRON) (TAB_TRON.NOM2TRON) ;                  
 780 :          TAB_TRON.NOM1TRON = L1  ;                                              
 781 :          TAB_TRON.NOM_TRON = RAC ;                                              
 782 :          TAB_TRON.NOM2TRON = L2  ;                                              
 783 : *        ON GARDE LES VALEURS PRECEDENTES DE P8, X8, Y8 ET Z8.                  
 784 : *        ON N'EN A PAS BESOIN ICI.                                              
 785 : *                                                                               
 786 : *                                                                               
 787 :       FINSI; FINSI; FINSI; FINSI; FINSI;                                        
 788 : *                                                                               
 789 :    FIN REP_TRON ;                                                               
 790 : *                                                                               
 791 : *                                                                               
 792 : *  ________________________________                                             
 793 : *                                                                               
 794 : *  REUNION DES TRONCONS D'UNE LIGNE                                             
 795 : *  ________________________________                                             
 796 : *                                                                               
 797 :    NB_TRON = 'DIMENSION' TAB_TRON ;                                             
 798 : *                                                                               
 799 :    SI (NB_TRON > 0) ;                                                           
 800 : *                                                                               
 801 :       LIS_TRON = 'INDEX' TAB_TRON ;                                             
 802 :       I_TRON = 1 ;                                                              
 803 :       NB_TRON = NB_TRON - 1 ;                                                   
 804 :       MAIL_LIG = TAB_TRON . ( LIS_TRON . 1 ) ;                                  
 805 :       SI (NB_TRON > 0) ;                                                        
 806 :          NB_ET = 0 ;                                                            
 807 :          REPETER REP_SOM4 NB_TRON ;                                             
 808 :             I_TRON = I_TRON + 1 ;                                               
 809 :             INDICE =  LIS_TRON . I_TRON ;                                       
 810 :             MAIL_LI1 = MAIL_LIG 'ET' (TAB_TRON.INDICE) ;                        
 811 :             NB_ET = NB_ET + 1 ;                                                 
 812 :             SI (NB_ET > 1) ;                                                    
 813 :                'DETRUIRE' MAIL_LIG ;                                            
 814 :             FINSI;                                                              
 815 :             MAIL_LIG = MAIL_LI1 ;                                               
 816 :          FIN REP_SOM4 ;                                                         
 817 :       FINSI ;                                                                   
 818 : *                                                                               
 819 :       LIG_TUYO.'MAILLAGE' = MAIL_LIG ;                                          
 820 : *                                                                               
 821 :    SINON;                                                                       
 822 : *                                                                               
 823 : *     CETTE LIGNE DE TUYAUTERIE EST DESESPEREMENT VIDE.                         
 824 :       SI ('EXISTE' TUYO2 NOM_TUYO) ;                                            
 825 :          TUYO2 = 'ENLEVER' TUYO2 NOM_TUYO ;                                     
 826 :       FINSI;                                                                    
 827 : *                                                                               
 828 :    FINSI ;                                                                      
 829 : *                                                                               
 830 : FIN REP_LIGN ;                                                                  
 831 : *                                                                               
 832 : *                                                                               
 833 : * ________________________________                                              
 834 : *                                                                               
 835 : * REUNION DES LIGNES DE TUYAUTERIE                                              
 836 : * ________________________________                                              
 837 : *                                                                               
 838 : NB_LIG = 'DIMENSION' TUYO2 ;                                                    
 839 : *                                                                               
 840 : SI (NB_LIG > 0) ;                                                               
 841 :    LIST_LIG = 'INDEX' TUYO2 ;                                                   
 842 :    SI ('EXISTE' TUYO2 'MAILLAGE') ;                                             
 843 :       TUYO2 = 'ENLEVER' TUYO2 'MAILLAGE' ;                                      
 844 :       LIST_LIG = 'INDEX' TUYO2 ;                                                
 845 :       NB_LIG = NB_LIG - 1 ;                                                     
 846 :    FINSI;                                                                       
 847 : FINSI;                                                                          
 848 : *                                                                               
 849 : SI (NB_LIG > 0) ;                                                               
 850 : *  TUYO2ENS = TUYO2.('MOT' LIST_LIG.1).'MAILLAGE' ;                             
 851 :    TUYO2ENS = TUYO2 . ( LIST_LIG . 1 ) . 'MAILLAGE' ;                           
 852 :    I_LIG = 1 ;                                                                  
 853 :    NB_LIG = NB_LIG - 1 ;                                                        
 854 :    SI (NB_LIG > 0) ;                                                            
 855 :    REPETER REP_SOM2 NB_LIG ;                                                    
 856 :       I_LIG = I_LIG + 1 ;                                                       
 857 :       INDICE =  LIST_LIG . I_LIG ;                                              
 858 :       TUYO2EN1 = TUYO2ENS 'ET' (TUYO2.INDICE.'MAILLAGE') ;                      
 859 :       SI (I_LIG > 2) ;                                                          
 860 :          'DETRUIRE' TUYO2ENS ;                                                  
 861 :       FINSI;                                                                    
 862 :       TUYO2ENS = TUYO2EN1 ;                                                     
 863 :    FIN REP_SOM2 ;                                                               
 864 :    FINSI ;                                                                      
 865 :    TUYO2.'MAILLAGE' = TUYO2ENS ;                                                
 866 : *                                                                               
 867 : SINON;                                                                          
 868 : *                                                                               
 869 :    SI ('EXISTE' TUYO2 'MAILLAGE') ;                                             
 870 :       TUYO2 = ENLEVER TUYO2 'MAILLAGE' ;                                        
 871 :    FINSI;                                                                       
 872 : *                                                                               
 873 : FINSI ;                                                                         
 874 : *                                                                               
 875 : *                                                                               
 876 : FIN PROC ;                                                                      
 877 : *                                                                               
 878 : 'SAUTER' 'PAGE' ;                                                               
 879 : MESSAGE '=====  FIN DE LA PROCEDURE "BOA"  ===== ;' ;                           
 880 : *                                                                               
 881 : 'FINPROC' TUYO2 ;                                                               

© Cast3M 2003 - All rights reserved.
Disclaimer