1 : * @DEFA2DL PROCEDUR AM 95/05/02 21:15:22 1649 2 : DEBPROC @DEFA2DL LIG0*'MAILLAGE' PIN1*'POINT' TAI1*'FLOTTANT' 3 : TYP1*'MOT' DES1/'MOT' LOG1/'LOGIQUE' ; 4 : * [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] 5 : * J.Y. COGNARD & D. DUREISSEIX L.M.T. STRUCTURES & CMAO le 03-03-93 6 : * 7 : * Procedure pour construire une ligne d'appuis en 2D (utilise @DEFA2DP) 8 : * DEFinition d'APpuis en 2D pour une Ligne 9 : * 10 : * on envoie 11 : * LIG0 MAILLAGE ligne support des appuis 12 : * PIN1 POINT pour definir l'interieur du domaine 13 : * TAI1 FLOTTANT pour definir la taille 14 : * TYP1 MOT pour definir le type d'appui sur la ligne 15 : * 'roul' : ligne d'appuis simples 16 : * 'enca' : ligne d'encastrements 17 : * 'mixt' : encastement du premier point plus 18 : * ligne d'appuis simples 19 : * DES1 /MOT pour une verification 20 : * 'trac' : pour le trace des appuis un par un 21 : * LOG1 /LOGIQUE pour l'espacement des appuis 22 : * VRAI l'espacement mini est 2.*TAI1 23 : * FAUX un appui tous les points de LIG0 24 : * on recupere 25 : * MAI1 MAILLAGE definissant la ligne d'appui 26 : * ====================================================================== 27 : * 28 : * verification du type d'element 29 : * """""""""""""""""""""""""""""" 30 : LMO1 = LIG0 'ELEM' 'TYPE' ; NBT1 = 'DIME' LMO1 ; 31 : 'SI' ( 'NEG' ( 'DIME' LMO1 ) 1 ) ; 32 : 'ERREUR' 'un seul type d element' ; 33 : 'FINSI' ; 34 : 'SI' ( 'EGA' 'SEG3' ( 'EXTR' LMO1 1 ) ) ; 35 : LIG1 = 'CHAN' 'SEG2' LIG0 ; 36 : 'SINON' ; 37 : LIG1 = LIG0 ; 38 : 'FINSI' ; 39 : ** 'SI' ( 'NEG' 'POI1' ( 'EXTR' LMO1 1 ) ) ; 40 : ** 'ERREUR' 'mauvais type d elements, il faut des POI1' ; 41 : ** 'FINSI' ; 42 : * 43 : * verification des options 44 : * """""""""""""""""""""""" 45 : LOK1 = FAUX ; 46 : 'SI' ( 'OU' ( 'EGA' TYP1 'enca' ) ( 'EGA' TYP1 'roul' ) ) ; 47 : LOK1 = VRAI ; MOT0 = TYP1 ; MOT2 = TYP1 ; 48 : 'FINSI' ; 49 : 'SI' ( 'EGA' TYP1 'mixt' ) ; 50 : LOK1 = VRAI ; MOT0 = 'enca' ; MOT2 = 'roul' ; 51 : 'FINSI' ; 52 : 'SI' ( 'NON' LOK1 ) ; 'ERREUR' 'mauvaise option' ; 'FINSI' ; 53 : * 54 : 'SI' ( 'EXIS' LOG1 ) ; LOG0 = LOG1 ; 55 : 'SINON' ; LOG0 = FAUX ; 'FINSI' ; 56 : * 57 : * pour les dessins intermediaires 58 : LDS1 = FAUX ; 59 : 'SI' ( 'EXIS' DES1 ) ; 60 : 'SI' ( 'EGA' DES1 'trac' ) ; LDS1 = VRAI ; 'FINSI' ; 61 : 'FINSI' ; 62 : * 63 : * initialisations (pour le trace a pas minimal) 64 : * """"""""""""""" 65 : LTR1 = 'NON' LOG0 ; DEB1 = VRAI ; 66 : DPA1 = 2. * TAI1 ; DIS1 = 2. * DPA1 ; BAR1 = 'pour le point : ' ; 67 : * 68 : * boucle sur les points 69 : * """"""""""""""""""""" 70 : NPO1 = 'NBNO' LIG1 ; 71 : * 72 : 'SI' ( NPO1 'EGA' 1 ) ; 73 : * un seul point 74 : POI1 = LIG1 'POIN' 1 ; VEC1 = PIN1 'MOINS' POI1 ; 75 : MAI1 = '@DEFA2DP' TAI1 POI1 VEC1 MOT1 ; 76 : * 77 : 'SINON' ; 78 : * pour une ligne de points 79 : * """""""""""""""""""""""" 80 : * premier segment 81 : IPO1 = 1 ; POI1 = LIG1 'POIN' 1 ; POI2 = POI1 ; 82 : 'REPE' BLO1 NPO1 ; 83 : * les trois points 84 : POI0 = POI1 ; POI1 = POI2 ; 85 : 'SI' ( IPO1 'NEG' NPO1 ) ; 86 : IPO1 = IPO1 + 1 ; POI2 = LIG1 'POIN' IPO1 ; 87 : 'FINSI' ; 88 : * 89 : 'SI' LOG0 ; 90 : * calcul de la distance pour le trace eventuel 91 : DIS1 = DIS1 + ( 'NORM' ( POI1 'MOINS' POI0 ) ) ; 92 : 'SI' ( DIS1 > DPA1 ) ; LTR1 = VRAI ; DIS1 = 0. ; 93 : 'SINON' ; LTR1 = FAUX ; 'FINSI' ; 94 : 'FINSI' ; 95 : * 96 : * calcul de la normale si le trace est necessaire 97 : * """"""""""""""""""""""""""""""""""""""""""""""" 98 : 'SI' ( 'OU' LTR1 ( IPO1 'EGA' NPO1 ) ) ; 99 : * calcul de la normale 100 : TGT1 = POI2 'MOINS' POI0 ; VEC0 = PIN1 'MOINS' POI1 ; 101 : 'SI' ( TGT1 'EGA' (0. 0.) ) ; 102 : 'ERREUR' ' point double' ; 103 : 'FINSI' ; 104 : VEC1 = ( -1 * ( 'COOR' 2 TGT1 ) ) ( 'COOR' 1 TGT1 ) ; 105 : COE1 = ( ( 'COOR' 2 TGT1 ) * ( 'COOR' 1 VEC0 ) ) 106 : - ( ( 'COOR' 1 TGT1 ) * ( 'COOR' 2 VEC0 ) ) ; 107 : 'SI' ( COE1 'EGA' 0.); 108 : 'ERRE' 'interieur de la matiere mal defini'; 109 : 'FINSI' ; 110 : 'SI' ( COE1 > 0. ) ; VEC1 = -1. * VEC1 ; 'FINSI' ; 111 : 'FINSI' ; 112 : * 113 : 'SI' LTR1 ; 114 : 'SI' ( 'NON' DEB1 ) ; 115 : * definition de l'appui precedent 116 : 'SI' ( IPS1 'EGA' 1 ) ; 117 : MAI0 = @DEFA2DP TAI1 POS1 VES1 MOT0 ; MAT1 = MAI0 ; 118 : 'SINON' ; 119 : MAI0 = @DEFA2DP TAI1 POS1 VES1 MOT2 ; 120 : MAT1 = MAT1 'ET' MAI0 ; 121 : 'FINSI' ; 122 : 'SI' LDS1 ; 'MESS' BAR1 IPS1 ; 'TRAC' ( MAI0 'ET' LIG1 ) ; 123 : 'FINSI' ; 124 : 'FINSI' ; 125 : * sauvegarde pour le suivant 126 : IPS1 = IPO1 - 1 ; POS1 = POI1 ; VES1 = VEC1 ; DEB1 = FAUX ; 127 : * 128 : 'FINSI' ; 129 : 'FIN' BLO1 ; 130 : * verification pour le dernier point (avant dernier, premier) 131 : * """""""""""""""""""""""""""""""""" 132 : 'SI' ( IPS1 'EGA' 1 ) ; 133 : MAI0 = @DEFA2DP TAI1 POS1 VES1 MOT0 ; MAT1 = MAI0 ; 134 : 'SI' LDS1 ; 'MESS' BAR1 IPS1 ; 'TRAC' ( MAI0 'ET' LIG1 ) ; 'FINSI' ; 135 : 'SINON' ; 136 : 'SI' LOG0 ; 137 : 'SI' ( DIS1 > ( 1.7 * TAI1 ) ) ; 138 : MAI0 = @DEFA2DP TAI1 POS1 VES1 MOT2 ; MAT1 = MAT1 'ET' MAI0 ; 139 : 'SI' LDS1 ; 'MESS' BAR1 IPS1 ; 'TRAC' ( MAI0 'ET' LIG1 ) ; 140 : 'FINSI' ; 141 : 'FINSI' ; 142 : 'FINSI' ; 143 : 'FINSI' ; 144 : * trace du dernier point 145 : MAI0 = @DEFA2DP TAI1 POI1 VEC1 MOT2 ; MAT1 = MAT1 'ET' MAI0 ; 146 : 'SI' LDS1 ; 'MESS' BAR1 IPO1 ; 'TRAC' ( MAI0 'ET' LIG1 ) ; 'FINSI' ; 147 : * 148 : 'FINSI' ; 149 : * 150 : 'FINPROC' MAT1 ;
© Cast3M 2003 - All rights reserved.
Disclaimer