* SOUDAGE PROCEDUR SP204843 24/11/05 21:15:10 12065 *-------------- Analyse donnees table de fabrication --------------* * fins ; fins ; * Diametre, vitesse et debit de fil : dfil1 = tab1.diametre_de_fil ; vfil1 = tab1.vitesse_de_fil ; debi1 = pi * dfil1 * dfil1 * 0.25 * vfil1 ; tab1.debit_de_fil = debi1 ; fins ; fins ; * Vitesse de deplacement : tab1.vitesse_de_deplacement = tab1.vitesse_de_soudage ; fins ; * Point de depart : P1 = 0 0 0 ; tab1.point_de_depart = P1 ; fins ; * Temps de coupure : tab1.temps_de_coupure = 0.1 ; fins ; * mettre a VRAI pou // PVEC sur liste de vecteurs. * FAUX car probleme // avec creation points (COMMON MCOORD). ipara1 = faux ; *-------------------------- Initialisations ---------------------------* * Test dimension 3 : fins ; * Indicateur 1er appel a soudage : idebut1 = faux ; sino ; idebut1 = vrai ; fins ; * Sous-indice WTABLE : sert a stocker les valeurs courantes des parametres de soudage wtab1 = tab1.wtable ; sino ; wtab1 = table ; wtab1 . vsou = tab1.vitesse_de_soudage ; wtab1 . puis = tab1.puissance_de_soudage ; wtab1 . vdep = tab1.vitesse_de_deplacement ; tab1.wtable = wtab1 ; fins ; * icas1 = 1 / 2 / 3 / 4 pour POINT / PASSE / DEPLA / MAIL * Si 0 in fine : erreur. icas1 = 0 ; * Vecteur nul pour dupliquer points lus : Pnul1 = 0 0 0 ; *------------------------- Lecture des options ------------------------* *----------------------------------------------------------------------* * Option POINT * *----------------------------------------------------------------------* si (ega mot1 'POINT') ; icas1 = 1 ; * Lecture des arguments de l'option : * Lecture Arguments PUIS, DEBI, EVEN et DIRE option POINT : imot2 = faux ; imot3 = faux ; imot4 = faux ; imot5 = faux ; ieve1 = faux ; repe b1 4 ; si (ega mot2 'PUIS') ; imot2 = vrai ; fins ; imot3 = vrai ; fins ; si (ega mot2 'DIRE') ; imot5 = vrai ; fins ; si (ega mot2 'EVEN') ; imot4 = vrai ; fins ; fin b1 ; si (non imot2) ; qtot1 = tab1.puissance_de_soudage ; fins ; wtab1 . puis = qtot1 ; si (non imot3) ; debi1 = tab1.debit_de_fil ; fins ; si (non imot5) ; pdir1 = tab1.orientation_soudure ; sino ; fins ; fins ; wtab1 . dire = pdir1 ; *list qtot1 ; *list debi1 ; *list idebut1 ; *list pdir1 ; * * idtcp1 : temps de coupure ou pas ? * iqtot1 : on chauffe ou pas ? idtcp1 = faux ; iqtot1 = faux ; si idebut1 ; iqtot1 = qtot1 > 0. ; sino ; evqtot0 = tab1.evolution_puissance ; idtcp1 = (abs(qtot0-qtot1)) > (abs(1.e-4*qtot1)) ; iqtot1 = qtot1 > (1.e-4 * qmax1) ; evdebi0 = tab1.evolution_debit ; idtcp1 = idtcp1 ou ((abs(debi0-debi1)) > (abs(1.e-4*debi1))) ; fins ; * idtcp1 = idtcp1 ou ieve1 ; si idtcp1 ; * si ieve1 ; * dtcp1 = teve1 ; * sino ; dtcp1 = tab1.temps_de_coupure ; * fins ; flot1 = flot1 + dtcp1 ; fins ; * Evolution puissance option POINT : si idebut1 ; lti1 = ltps1 ; sino ; evqtot0 = tab1.evolution_puissance ; * Si la puissance indiquee est differente de celle existante : si ((abs(qtot0-qtot1)) > (abs(1.e-4*qtot1))) ; * Ajout temps de coupure au temps de realisation du POINT : sino ; fins ; ltps1 = ltps0 et ltps1 ; lqtot1 = lqtot0 et lqtot1 ; fins ; * Evolution debit POINT : si idebut1 ; sino ; evdebi0 = tab1.evolution_debit ; * Si la puissance indiquee est differente de celle existante : si ((abs(debi0-debi1)) > (abs(1.e-4*debi1))) ; * Ajout temps de coupure au temps de realisation du POINT : sino ; fins ; ltps1 = ltps0 et ltps1 ; ldebi1 = ldebi0 et ldebi1 ; fins ; * Evolution deplacement POINT : si idebut1 ; tps0 = 0. ; sino ; evdep0 = tab1.evolution_deplacement ; ltps1 = ltps0 et ltps1 ; ldep1 = ldep0 et ldep1 ; fins ; * Evenement : si imot4 ; ttev1 = table ; ttev1 . nom = even1 ; si ieve1 ; sino ; fins ; *list ttev1.temps ; sino ; tab1.evenements = table ; nbev1 = 1 ; fins ; tab1.evenements.nbev1 = ttev1 ; fins ; * Evolution direction POINT (que si on soude) : si iqtot1 ; * Direction transverse (DIRL) : si ((abs ndir1) < zprec1) ; fins ; si ((abs xdir1) > (abs ydir1)) ; si ((abs zdir1) > (abs ydir1)) ; pdirl1 = zdir1 0. (-1. * xdir1) ; sino ; pdirl1 = (-1. * ydir1) xdir1 0. ; fins ; sino ; si ((abs xdir1) > (abs zdir1)) ; pdirl1 = (-1. * ydir1) xdir1 0. ; sino ; pdirl1 = 0. (-1. * zdir1) ydir1 ; fins ; fins ; si idebut1 ; ldir1 = enum pdir1 pdir1 ; ldirl1 = enum pdirl1 pdirl1 ; sino ; cgdir0 = tab1.evolution_orientation ; si (tps0dir ega tps0) ; si (xcolli1 neg 1.) ; fins ; ldir1 = enum pdir1 ; ldirl1 = enum pdirl1 ; sino ; ldir1 = enum pdir1 pdir1 ; ldirl1 = enum pdirl1 pdirl1 ; fins ; ltps1 = ltps0 et ltps1 ; ldir1 = ldir0 et ldir1 ; ldirl1 = ldirl0 et ldirl1 ; sino ; ldir1 = enum pdir1 pdir1 ; ldirl1 = enum pdirl1 pdir11 ; fins ; fins ; * Direction transverse (DIRL) : cgdir1 = cgdir1 et cgdir2 ; fins ; * Enregistrement donnees POINT sino ; npt1 = 0 ; tab1.points = table ; fins ; npt1 = npt1 + 1 ; tab1.points.npt1 = table ; tab1.points.npt1.point = P1 ; tab1.points.npt1.instants = lti1 ; tab1.points.npt1.puissance = qtot1 ; tab1.points.npt1.debit = debi1 ; * Enregistrements en fin de traitement option pour eviter * modifier table avant fin realisation option si idebut1 ; fins ; tab1.evolution_puissance = evqtot1 ; tab1.evolution_debit = evdebi1 ; tab1.evolution_deplacement = evdep1 ; si iqtot1 ; tab1.evolution_orientation = cgdir1 ; fins ; * Fin option POINT : fins ; *----------------------------------------------------------------------* * Option PASSE * *----------------------------------------------------------------------* si (ega mot1 'PASSE') ; icas1 = 2 ; * Lecture des arguments de l'option : * Triatement particulier option CERC ordre arguments : fins ; * Lecture arguments RELA/ABSO, VITE, PUIS, DEBI imot3 = faux ; imot4 = faux ; imot5 = faux ; imot6 = faux ; imot7 = faux ; imot8 = faux ; iradext1 = faux ; iradint1 = faux ; irela1 = vrai ; ieve1 = faux ; repe b1 8 ; si (ega mot3 'ABSO') ; imot3 = vrai ; irela1 = faux ; fins ; si (ega mot3 'VITE') ; imot4 = vrai ; fins ; si (ega mot3 'PUIS') ; imot5 = vrai ; fins ; imot6 = vrai ; fins ; si (ega mot3 'EVEN') ; imot7 = vrai ; fins ; si (ega mot3 'DIRE') ; imot8 = vrai ; fins ; si (ega mot3 'RADEXT') ; iradext1 = vrai ; fins ; si (ega mot3 'RADINT') ; iradint1 = vrai ; fins ; fin b1 ; * Vitesse & Increment de temps PASSE : si (non imot4) ; vdep1 = tab1.vitesse_de_soudage ; fins ; wtab1 . vsou = vdep1 ; * Puissance PASSE : si (non imot5) ; qtot1 = tab1.puissance_de_soudage ; fins ; wtab1 . puis = qtot1 ; * Debit PASSE : si (non imot6) ; debi1 = tab1.debit_de_fil ; fins ; *list vdep1 ; *list qtot1 ; *list debi1 ; * idtcp1 : temps de coupure ou pas ? * iqtot1 : on chauffe ou pas ? idtcp1 = faux ; iqtot1 = faux ; si idebut1 ; iqtot1 = qtot1 > 0. ; sino ; evqtot0 = tab1.evolution_puissance ; idtcp1 = (abs(qtot0-qtot1)) > (abs(1.e-4*qtot1)) ; iqtot1 = qtot1 > (1.e-4 * qmax1) ; evdebi0 = tab1.evolution_debit ; idtcp1 = idtcp1 ou ((abs(debi0-debi1)) > (abs(1.e-4*debi1))) ; fins ; * idtcp1 = idtcp1 ou ieve1 ; *list idtcp1 ; si idtcp1 ; * si ieve1 ; * dtcp1 = teve1 ; * sino ; dtcp1 = tab1.temps_de_coupure ; * fins ; fins ; * icas2 = indicateur sous-option realisee : icas2 = 0 ; *----------------------------- PASSE DROI -----------------------------* * Sous-option DROI : icas2 = 1 ; * Lecture du point : * Lecture orientation de soudure : ipdir1 = faux ; si imot8 ; si (non ipdir1) ; fins ; fins ; fins ; fins ; si (non imot8) ; pdir1 = tab1.orientation_soudure ; ipdir1 = vrai ; sino ; fins ; fins ; wtab1 . dire = pdir1 ; *list pdir1 ; * Trajectoire PASSE DROI : si idebut1 ; * Deplacements relatifs : si irela1 ; fins ; maili1 = mail1 ; sino ; mail0 = tab1.trajectoire ; * Deplacements relatifs : si irela1 ; fins ; maili1 = mail1 ; si (nbpts0 > 1) ; mail1 = mail0 et mail1 ; fins ; fins ; * Increment de temps : dt1 = ll1 / vdep1 ; si idtcp1 ; dt1 = dt1 + dtcp1 ; fins ; * Evolution puissance PASSE DROI : si idebut1 ; lti1 = ltps1 ; sino ; * Si la puissance indiquee est differente de celle existante : si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; lqtot1 = lqtot0 et lqtot1 ; fins ; * Evolution debit PASSE DROI : si idebut1 ; sino ; * Si la puissance indiquee est differente de celle existante : si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; ldebi1 = ldebi0 et ldebi1 ; fins ; * Evolution deplacement PASSE DROI : si idebut1 ; tps0 = 0. ; sino ; evdep0 = tab1.evolution_deplacement ; si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; ldep1 = ldep0 et ldep1 ; fins ; * Evenement : si imot7 ; ttev1 = table ; ttev1 . nom = even1 ; si ieve1 ; sino ; fins ; sino ; tab1.evenements = table ; nbev1 = 1 ; fins ; tab1.evenements.nbev1 = ttev1 ; fins ; * Evolution direction PASSE DROIT (si on soude) : si iqtot1 ; si idebut1 ; si ipdir1 ; ldir1 = enum pdir1 pdir1 ; * Direction transverse (DIRL) : ldirl1 = enum pdirl1 pdirl1 ; sino ; * Si ipdir1 FAUX, alors pdir1 LISTOBJE : si (nbdir1 ega 1) ; nbdir1 = 2 ; fins ; tpsi1 = 0. ; nbdir1 = nbdir1 - 1 ; dti1 = dt1 / (flot nbdir1) ; repe bdir1 nbdir1 ; tpsi1 = tpsi1 + dti1 ; si (&bdir1 ega nbdir1) ; tpsi1 = dt1 ; fins ; ltps1 = ltps1 et tpsi1 ; fin bdir1 ; ldir1 = pdir1 ; * Direction transverse (DIRL) : si ipara1 ; sino ; ldirl2 = enum ; ldirl2 = ldirl2 et plx ; fin bx ; fins ; ldirl1 = ldirl2 ; fins ; ltpsl1 = ltps1 ; sino ; cgdir0 = tab1.evolution_orientation ; si (tps0dir ega tps0) ; si ipdir1 ; si (xcolli1 neg 1.) ; fins ; ldir1 = enum pdir1 ; * Direction transverse (DIRL) : ldirl1 = enum pdirl1 ; *si ((norm pdirl10) < 1.e-10) ; mess '**** passe droi cas 1' ; list pdirl10 ; fins ; fins ; sino ; si (xcolli1 neg 1.) ; fins ; si (nbdir1 ega 1) ; nbdir1 = 2 ; fins ; tpsi1 = tps0 ; nbdir1 = nbdir1 - 1 ; dti1 = dt1 / (flot nbdir1) ; repe bdir1 nbdir1 ; tpsi1 = tpsi1 + dti1 ; si (&bdir1 ega nbdir1) ; tpsi1 = tps0 + dt1 ; fins ; ltps1 = ltps1 et tpsi1 ; fin bdir1 ; * Direction transverse (DIRL) : si ipara1 ; sino ; ldirl2 = enum ; ldirl2 = ldirl2 et plx ; fin bx ; fins ; ldirl1 = ldirl2 ; *si ((norm pdirl10) < 1.e-10) ; mess '**** passe droi cas 2' ; list pdirl10 ; fins ; fins ; fins ; sino ; si ipdir1 ; ldir1 = enum pdir1 pdir1 ; * Direction transverse (DIRL) : ldirl1 = enum pdirl1 pdirl1 ; sino ; si (nbdir1 ega 1) ; nbdir1 = 2 ; fins ; tpsi1 = tps0 ; nbdir1 = nbdir1 - 1 ; dti1 = dt1 / (flot nbdir1) ; repe bdir1 nbdir1 ; tpsi1 = tpsi1 + dti1 ; si (&bdir1 ega nbdir1) ; tpsi1 = tps0 + dt1 ; fins ; ltps1 = ltps1 et tpsi1 ; fin bdir1 ; ldir1 = pdir1 ; * Direction transverse (DIRL) : si ipara1 ; sino ; ldirl2 = enum ; ldirl2 = ldirl2 et plx ; fin bx ; fins ; ldirl1 = ldirl2 ; fins ; fins ; ltpsl1 = ltpsl0 et ltps1 ; ltps1 = ltps0 et ltps1 ; ldir1 = ldir0 et ldir1 ; ldirl1 = ldirl0 et ldirl1 ; sino ; si ipdir1 ; ldir1 = enum pdir1 pdir1 ; * Direction transverse (DIRL) : ldirl1 = enum pdirl1 pdirl1 ; sino ; * Si ipdir1 FAUX, alors pdir1 LISTOBJE : si (nbdir1 ega 1) ; nbdir1 = 2 ; fins ; tpsi1 = flot0 ; nbdir1 = nbdir1 - 1 ; dti1 = dt1 / (flot nbdir1) ; repe bdir1 nbdir1 ; tpsi1 = tpsi1 + dti1 ; si (&bdir1 ega nbdir1) ; tpsi1 = tps0 + dt1 ; fins ; ltps1 = ltps1 et tpsi1 ; fin bdir1 ; ldir1 = pdir1 ; * Direction transverse (DIRL) : si ipara1 ; sino ; ldirl2 = enum ; ldirl2 = ldirl2 et plx ; fin bx ; fins ; ldirl1 = ldirl2 ; fins ; ltpsl1 = ltps1 ; fins ; fins ; * Direction transverse (DIRL) : cgdir1 = cgdir1 et cgdir2 ; fins ; * Enregistrement donnees PASSE DROI sino ; nps1 = 0 ; tab1.passes = table ; fins ; nps1 = nps1 + 1 ; tab1.passes.nps1 = table ; tab1.passes.nps1.maillage = maili1 ; tab1.passes.nps1.instants = lti1 ; tab1.passes.nps1.vitesse = vdep1 ; tab1.passes.nps1.puissance = qtot1 ; tab1.passes.nps1.debit = debi1 ; tab1.passes.nps1.largeur = tab1.largeur_de_passe ; fins ; * Enregistrements en fin de traitement option pour eviter * modifier table avant fin realisation option tab1.trajectoire = mail1 ; tab1.evolution_puissance = evqtot1 ; tab1.evolution_debit = evdebi1 ; tab1.evolution_deplacement = evdep1 ; si iqtot1 ; tab1.evolution_orientation = cgdir1 ; fins ; * Fin option PASSE DROI : fins ; *----------------------------- PASSE CERC -----------------------------* * Sous-option CERC : icas2 = 2 ; * P1 est le centre du cercle, P2, l'extremite de la trajectoire * Lecture orientation de soudure : ipdir1 = faux ; iradx1 = iradext1 ou iradint1 ; si imot8 ; fins ; si ((non imot8) et (non iradx1)) ; pdir1 = tab1.orientation_soudure ; ipdir1 = vrai ; sino ; fins ; fins ; wtab1 . dire = pdir1 ; *list pdir1 ; *list iradext1 ; *list iradint1 ; * Trajectoire PASSE CERC : si idebut1 ; * Deplacements relatifs : si irela1 ; fins ; fins ; maili1 = mail1 ; sino ; mail0 = tab1.trajectoire ; * Deplacements relatifs : si irela1 ; fins ; fins ; maili1 = mail1 ; si (nbpts0 > 1) ; mail1 = mail0 et mail1 ; fins ; fins ; * Normale unitaire au plan du cercle pour DIRL : * Increment de temps : dt1 = ll1 / vdep1 ; si idtcp1 ; dt1 = dt1 + dtcp1 ; fins ; * Evolution puissance PASSE CERC : si idebut1 ; lti1 = ltps1 ; sino ; * Si la puissance indiquee est differente de celle existante : si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; lqtot1 = lqtot0 et lqtot1 ; fins ; * Evolution debit PASSE CERC : si idebut1 ; sino ; * Si la puissance indiquee est differente de celle existante : si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; ldebi1 = ldebi0 et ldebi1 ; fins ; * Evolution deplacement PASSE CERC : si idebut1 ; tps0 = 0. ; sino ; evdep0 = tab1.evolution_deplacement ; si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; ldep1 = ldep0 et ldep1 ; fins ; * Evenement : si imot7 ; ttev1 = table ; ttev1 . nom = even1 ; si ieve1 ; sino ; fins ; sino ; tab1.evenements = table ; nbev1 = 1 ; fins ; tab1.evenements.nbev1 = ttev1 ; fins ; * Evolution direction PASSE CERC (si on soude) : si iqtot1 ; * Traitement direction radiale ext./int. , combo Pdir1 : * & direction transverse (DIRL) : ldir1 = enum ; ldirn1 = enum ; dti1 = dt1 / (flot (nbnoc1 - 1)) ; repe bmail1 nbnoc1 ; si iradint1 ; vi1 = -1. * vi1 ; fins ; si ipdir1 ; fins ; *list vi1 ; ldir1 = ldir1 et vi1 ; ldirn1 = ldirn1 et vli1 ; fin bmail1 ; si iradx1 ; *list (ldir1 extr 1) ; *list (ldir1 extr 2) ; *list (ldir1 extr 4) ; pdir1 = ldir1 ; ipdir1 = faux ; fins ; * Construction liste directions : si idebut1 ; si ipdir1 ; ldir1 = enum pdir1 pdir1 ; * Direction transverse (DIRL) : si ipara1 ; sino ; ldirl2 = enum ; ldirl2 = ldirl2 et plx ; fin bx ; fins ; ldirl1 = ldirl2 ; sino ; * Si ipdir1 FAUX, alors pdir1 LISTOBJE : si (nbdir1 ega 1) ; nbdir1 = 2 ; fins ; tpsi1 = 0. ; nbdir1 = nbdir1 - 1 ; dti1 = dt1 / (flot nbdir1) ; repe bdir1 nbdir1 ; tpsi1 = tpsi1 + dti1 ; si (&bdir1 ega nbdir1) ; tpsi1 = dt1 ; fins ; ltps1 = ltps1 et tpsi1 ; fin bdir1 ; ldir1 = pdir1 ; * Direction transverse (DIRL) : ldirl1 = enum ; ldirl1 = ldirl1 et pdirli1 ; fin bxx1 ; fins ; sino ; cgdir0 = tab1.evolution_orientation ; si (tps0dir ega tps0) ; si ipdir1 ; si (xcolli1 neg 1.) ; fins ; ldir1 = enum pdir1 ; * Direction transverse (DIRL) : si ipara1 ; sino ; ldirl2 = enum ; ldirl2 = ldirl2 et plx ; fin bx ; fins ; ldirl1 = ldirl2 ; *si ((norm pdirl10) < 1.e-10) ; mess '**** passe cerc cas 7' ; list pdirl10 ; fins ; fins ; sino ; si (xcolli1 neg 1.) ; fins ; si (nbdir1 ega 1) ; nbdir1 = 2 ; fins ; tpsi1 = tps0 ; nbdir1 = nbdir1 - 1 ; dti1 = dt1 / (flot nbdir1) ; repe bdir1 nbdir1 ; tpsi1 = tpsi1 + dti1 ; si (&bdir1 ega nbdir1) ; tpsi1 = tps0 + dt1 ; fins ; ltps1 = ltps1 et tpsi1 ; fin bdir1 ; * Direction transverse (DIRL) : si (nbdir1 ega 1) ; ldirl1 = enum ; ldirl1 = ldirl1 et pdirli1 ; fin bxx1 ; sino ; ldirl1 = enum ; ldirl1 = ldirl1 et pdirli1 ; fin bxx1 ; fins ; *si ((norm pdirl10) < 1.e-10) ; mess '**** passe cerc cas 2' ; list pdirl10 ; fins ; fins ; fins ; sino ; si ipdir1 ; ldir1 = enum pdir1 pdir1 ; * Direction transverse (DIRL) : si ipara1 ; sino ; ldirl2 = enum ; ldirl2 = ldirl2 et plx ; fin bx ; fins ; ldirl1 = ldirl2 ; sino ; si (nbdir1 ega 1) ; nbdir1 = 2 ; fins ; tpsi1 = tps0 ; nbdir1 = nbdir1 - 1 ; dti1 = dt1 / (flot nbdir1) ; repe bdir1 nbdir1 ; tpsi1 = tpsi1 + dti1 ; si (&bdir1 ega nbdir1) ; tpsi1 = tps0 + dt1 ; fins ; ltps1 = ltps1 et tpsi1 ; fin bdir1 ; ldir1 = pdir1 ; * Direction transverse (DIRL) : ldirl1 = enum ; ldirl1 = ldirl1 et pdirli1 ; fin bxx1 ; fins ; fins ; ltps1 = ltps0 et ltps1 ; ldir1 = ldir0 et ldir1 ; ltpsl1 = ltpsl0 et ltpsl1 ; ldirl1 = ldirl0 et ldirl1 ; *list tps0 ; *list ltpsl1 ; sino ; si ipdir1 ; ldir1 = enum pdir1 pdir1 ; * Direction transverse (DIRL) : si ipara1 ; sino ; ldirl2 = enum ; ldirl2 = ldirl2 et plx ; fin bx ; fins ; ldirl1 = ldirl2 ; sino ; * Si ipdir1 FAUX, alors pdir1 LISTOBJE : si (nbdir1 ega 1) ; nbdir1 = 2 ; fins ; tpsi1 = flot0 ; nbdir1 = nbdir1 - 1 ; dti1 = dt1 / (flot nbdir1) ; repe bdir1 nbdir1 ; tpsi1 = tpsi1 + dti1 ; si (&bdir1 ega nbdir1) ; tpsi1 = tps0 + dt1 ; fins ; ltps1 = ltps1 et tpsi1 ; fin bdir1 ; ldir1 = pdir1 ; * Direction transverse (DIRL) : ldirl1 = enum ; ldirl1 = ldirl1 et pdirli1 ; fin bxx1 ; fins ; fins ; fins ; * Direction transverse (DIRL) : cgdir1 = cgdir1 et cgdir2 ; fins ; * Enregistrement donnees PASSE CERC sino ; nps1 = 0 ; tab1.passes = table ; fins ; nps1 = nps1 + 1 ; tab1.passes.nps1 = table ; tab1.passes.nps1.maillage = maili1 ; tab1.passes.nps1.centre = P1 ; tab1.passes.nps1.instants = lti1 ; tab1.passes.nps1.vitesse = vdep1 ; tab1.passes.nps1.puissance = qtot1 ; tab1.passes.nps1.debit = debi1 ; tab1.passes.nps1.largeur = tab1.largeur_de_passe ; fins ; * Enregistrements en fin de traitement option pour eviter * modifier table avant fin realisation option tab1.trajectoire = mail1 ; tab1.evolution_puissance = evqtot1 ; tab1.evolution_debit = evdebi1 ; tab1.evolution_deplacement = evdep1 ; si iqtot1 ; tab1.evolution_orientation = cgdir1 ; fins ; * Fin option PASSE CERC : fins ; *----------------------------- PASSE MAIL -----------------------------* * Sous-option MAIL : si (ega mot2 'MAIL') ; icas2 = 3 ; imax1 = 0 ; fins ; maili1 = mail1 ; * Lecture orientation de soudure : ipdir1 = faux ; si imot8 ; si (non ipdir1) ; fins ; fins ; fins ; fins ; si (non imot8) ; pdir1 = tab1.orientation_soudure ; ipdir1 = vrai ; sino ; fins ; fins ; wtab1 . dire = pdir1 ; *list pdir1 ; * Trajectoire PASSE MAIL : si idebut1 ; tab1.point_de_depart = P1 ; sino ; mail0 = tab1.trajectoire ; si (P1 neg P0) ; sino ; fins ; fins ; si (nbpts0 > 1) ; mail1 = mail0 et mail1 ; fins ; fins ; * Increment de temps : dt1 = ll1 / vdep1 ; si idtcp1 ; dt1 = dt1 + dtcp1 ; fins ; * Evolution puissance PASSE MAIL : si idebut1 ; lti1 = ltps1 ; sino ; * Si la puissance indiquee est differente de celle existante : si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; lqtot1 = lqtot0 et lqtot1 ; fins ; * Evolution debit PASSE MAIL : si idebut1 ; sino ; * Si la puissance indiquee est differente de celle existante : si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; ldebi1 = ldebi0 et ldebi1 ; fins ; * Evolution deplacement PASSE MAIL : si idebut1 ; tps0 = 0. ; sino ; evdep0 = tab1.evolution_deplacement ; si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; ldep1 = ldep0 et ldep1 ; fins ; * Evenement : si imot7 ; ttev1 = table ; ttev1 . nom = even1 ; si ieve1 ; sino ; fins ; sino ; tab1.evenements = table ; nbev1 = 1 ; fins ; tab1.evenements.nbev1 = ttev1 ; fins ; * Evolution direction PASSE MAIL (si on soude) : si iqtot1 ; * Traitement direction direction transverse (DIRL) : ldirn1 = enum ; si (nbelm1 ega 1) ; dti1 = dt1 ; sino ; dti1 = dt1 / (flot (nbelm1 - 1)) ; fins ; repe bmail1 nbelm1 ; *list vni1 ; ldirn1 = ldirn1 et vni1 ; fin bmail1 ; si (nbelm1 ega 1) ; ldirn1 = ldirn1 et vni1 ; fins ; si idebut1 ; si ipdir1 ; ldir1 = enum pdir1 pdir1 ; * Direction transverse (DIRL) : si ipara1 ; sino ; ldirl2 = enum ; ldirl2 = ldirl2 et plx ; fin bx ; fins ; ldirl1 = ldirl2 ; sino ; * Si ipdir1 FAUX, alors pdir1 LISTOBJE : si (nbdir1 ega 1) ; nbdir1 = 2 ; fins ; tpsi1 = 0. ; nbdir1 = nbdir1 - 1 ; dti1 = dt1 / (flot nbdir1) ; repe bdir1 nbdir1 ; tpsi1 = tpsi1 + dti1 ; si (&bdir1 ega nbdir1) ; tpsi1 = dt1 ; fins ; ltps1 = ltps1 et tpsi1 ; fin bdir1 ; ldir1 = pdir1 ; * Direction transverse (DIRL) : ldirl1 = enum ; ldirl1 = ldirl1 et pdirli1 ; fin bxx1 ; fins ; sino ; cgdir0 = tab1.evolution_orientation ; si (tps0dir ega tps0) ; si ipdir1 ; si (xcolli1 neg 1.) ; fins ; ldir1 = enum pdir1 ; * Direction transverse (DIRL) : si ipara1 ; sino ; ldirl2 = enum ; ldirl2 = ldirl2 et plx ; fin bx ; fins ; ldirl1 = ldirl2 ; *si ((norm pdirl10) < 1.e-10) ; mess '**** passe mail cas 1' ; list pdirl10 ; fins ; fins ; sino ; si (xcolli1 neg 1.) ; fins ; si (nbdir1 ega 1) ; nbdir1 = 2 ; fins ; tpsi1 = tps0 ; nbdir1 = nbdir1 - 1 ; dti1 = dt1 / (flot nbdir1) ; repe bdir1 nbdir1 ; tpsi1 = tpsi1 + dti1 ; si (&bdir1 ega nbdir1) ; tpsi1 = tps0 + dt1 ; fins ; ltps1 = ltps1 et tpsi1 ; fin bdir1 ; * Direction transverse (DIRL) : si (nbdir1 ega 1) ; ldirl1 = enum ; ldirl1 = ldirl1 et pdirli1 ; fin bxx1 ; sino ; ldirl1 = enum ; ldirl1 = ldirl1 et pdirli1 ; fin bxx1 ; fins ; *si ((norm pdirl10) < 1.e-10) ; mess '**** passe cerc cas 2' ; list pdirl10 ; fins ; fins ; fins ; sino ; si ipdir1 ; ldir1 = enum pdir1 pdir1 ; * Direction transverse (DIRL) : si ipara1 ; sino ; ldirl2 = enum ; ldirl2 = ldirl2 et plx ; fin bx ; fins ; ldirl1 = ldirl2 ; sino ; si (nbdir1 ega 1) ; nbdir1 = 2 ; fins ; tpsi1 = tps0 ; nbdir1 = nbdir1 - 1 ; dti1 = dt1 / (flot nbdir1) ; repe bdir1 nbdir1 ; tpsi1 = tpsi1 + dti1 ; si (&bdir1 ega nbdir1) ; tpsi1 = tps0 + dt1 ; fins ; ltps1 = ltps1 et tpsi1 ; fin bdir1 ; ldir1 = pdir1 ; * Direction transverse (DIRL) : ldirl1 = enum ; ldirl1 = ldirl1 et pdirli1 ; fin bxx1 ; fins ; fins ; ltps1 = ltps0 et ltps1 ; ldir1 = ldir0 et ldir1 ; ltpsl1 = ltpsl0 et ltpsl1 ; ldirl1 = ldirl0 et ldirl1 ; *list tps0 ; *list ltpsl1 ; sino ; si ipdir1 ; ldir1 = enum pdir1 pdir1 ; * Direction transverse (DIRL) : si ipara1 ; sino ; ldirl2 = enum ; ldirl2 = ldirl2 et plx ; fin bx ; fins ; ldirl1 = ldirl2 ; sino ; * Si ipdir1 FAUX, alors pdir1 LISTOBJE : si (nbdir1 ega 1) ; nbdir1 = 2 ; fins ; tpsi1 = flot0 ; nbdir1 = nbdir1 - 1 ; dti1 = dt1 / (flot nbdir1) ; repe bdir1 nbdir1 ; tpsi1 = tpsi1 + dti1 ; si (&bdir1 ega nbdir1) ; tpsi1 = tps0 + dt1 ; fins ; ltps1 = ltps1 et tpsi1 ; fin bdir1 ; ldir1 = pdir1 ; * Direction transverse (DIRL) : ldirl1 = enum ; ldirl1 = ldirl1 et pdirli1 ; fin bxx1 ; fins ; fins ; fins ; * Direction transverse (DIRL) : cgdir1 = cgdir1 et cgdir2 ; fins ; * Enregistrement donnees PASSE MAIL sino ; nps1 = 0 ; tab1.passes = table ; fins ; nps1 = nps1 + 1 ; tab1.passes.nps1 = table ; tab1.passes.nps1.maillage = maili1 ; tab1.passes.nps1.instants = lti1 ; tab1.passes.nps1.vitesse = vdep1 ; tab1.passes.nps1.puissance = qtot1 ; tab1.passes.nps1.debit = debi1 ; tab1.passes.nps1.largeur = tab1.largeur_de_passe ; fins ; * Enregistrements en fin de traitement option pour eviter * modifier table avant fin realisation option tab1.trajectoire = mail1 ; tab1.evolution_puissance = evqtot1 ; tab1.evolution_debit = evdebi1 ; tab1.evolution_deplacement = evdep1 ; si iqtot1 ; tab1.evolution_orientation = cgdir1 ; fins ; * Fin option PASSE MAIL : fins ; * Si mot2 ne correspond a aucune option connue, icas2 = 0 : erreur si (icas2 ega 0) ; fins ; * Fin option PASSE : fins ; *----------------------------------------------------------------------* * Option DEPLA * *----------------------------------------------------------------------* si (ega mot1 'DEPLA') ; icas1 = 3 ; * * Lecture des arguments de l'option : * Ajout ou pas du temps de coupure option PASSE : idtcp1 = faux ; qtot1 = 0. ; debi1 = 0. ; si ((non idebut1)) ; evqtot0 = tab1.evolution_puissance ; evdebi0 = tab1.evolution_debit ; idtcp1 = (abs(qtot0-qtot1)) > (abs(1.e-4*qtot1)) ; idtcp1 = idtcp1 ou ((abs(debi0-debi1)) > (abs(1.e-4*debi1))) ; fins ; *list idtcp1 ; si idtcp1 ; dtcp1 = tab1.temps_de_coupure ; fins ; * icas2 = indicateur sous-option realisee : icas2 = 0 ; *----------------------------- DEPLA DROI -----------------------------* icas2 = 1 ; * Deplacement relatif / absolu : imot3 = faux ; imot4 = faux ; imot5 = faux ; irela1 = vrai ; ieve1 = faux ; repe b1 3 ; si (ega mot3 'ABSO') ; imot3 = vrai ; irela1 = faux ; fins ; si (ega mot3 'VITE') ; imot4 = vrai ; fins ; si (ega mot3 'EVEN') ; imot5 = vrai ; fins ; fin b1 ; * Coupure et temps de coupure selon existence EVEN : * idtcp1 = idtcp1 ou ieve1 ; * si ieve1 ; * dtcp1 = teve1 ; * fins ; * Trajectoire DEPLA DROI : *list idebut1 ; si idebut1 ; * Deplacements relatifs : si irela1 ; fins ; sino ; mail0 = tab1.trajectoire ; *list P0 ; * Deplacements relatifs : si irela1 ; fins ; si (nbpts0 > 1) ; mail1 = mail0 et mail1 ; fins ; fins ; * Increment de temps DEPLA DROI : si (non imot4) ; vdep1 = tab1.vitesse_de_deplacement ; fins ; wtab1 . vdep = vdep1 ; dt1 = ll1 / vdep1 ; si idtcp1 ; dt1 = dt1 + dtcp1 ; fins ; * Evolution puissance DEPLA DROI : si idebut1 ; sino ; * Si la puissance indiquee est differente de celle existante : si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; lqtot1 = lqtot0 et lqtot1 ; fins ; * Evolution debit DEPLA DROI : si idebut1 ; sino ; * Si la puissance indiquee est differente de celle existante : si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; ldebi1 = ldebi0 et ldebi1 ; fins ; * Evolution deplacement DEPLA DROI : si idebut1 ; tps0 = 0. ; sino ; evdep0 = tab1.evolution_deplacement ; si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; ldep1 = ldep0 et ldep1 ; fins ; * Evenement : si imot5 ; ttev1 = table ; ttev1 . nom = even1 ; si ieve1 ; sino ; fins ; sino ; tab1.evenements = table ; nbev1 = 1 ; fins ; tab1.evenements.nbev1 = ttev1 ; fins ; * Enregistrements en fin de traitement option pour eviter * modifier table avant fin realisation option tab1.trajectoire = mail1 ; tab1.evolution_puissance = evqtot1 ; tab1.evolution_debit = evdebi1 ; tab1.evolution_deplacement = evdep1 ; * Fin option DEPLA DROI : fins ; *----------------------------- DEPLA CERC -----------------------------* icas2 = 2 ; * P1 est le centre du cercle, P2, l'extremite de la trajectoire * Deplacement relatif / absolu : imot3 = faux ; imot4 = faux ; imot5 = faux ; irela1 = vrai ; ieve1 = faux ; repe b1 3 ; si (ega mot3 'ABSO') ; imot3 = vrai ; irela1 = faux ; fins ; si (ega mot3 'VITE') ; imot4 = vrai ; fins ; si (ega mot3 'EVEN') ; imot5 = vrai ; fins ; fin b1 ; * Coupure et temps de coupure selon existence EVEN : * idtcp1 = idtcp1 ou ieve1 ; * si ieve1 ; * dtcp1 = teve1 ; * fins ; * Trajectoire DEPLA CERC : si idebut1 ; * Deplacements relatifs : si irela1 ; fins ; * Par defaut, N1 calcule pour avoir angle de 5 deg. fins ; sino ; mail0 = tab1.trajectoire ; * Deplacements relatifs : si irela1 ; fins ; fins ; si (nbpts0 > 1) ; mail1 = mail0 et mail1 ; fins ; fins ; * Increment de temps DEPLA CERC : si (non imot4) ; vdep1 = tab1.vitesse_de_deplacement ; fins ; wtab1 . vdep = vdep1 ; dt1 = ll1 / vdep1 ; si idtcp1 ; dt1 = dt1 + dtcp1 ; fins ; * Evolution puissance DEPLA CERC : icoup1 = faux ; si idebut1 ; sino ; * Si la puissance indiquee est differente de celle existante : si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; lqtot1 = lqtot0 et lqtot1 ; fins ; * Evolution debit DEPLA CERC : si idebut1 ; sino ; * Si la puissance indiquee est differente de celle existante : si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; ldebi1 = ldebi0 et ldebi1 ; fins ; * Evolution deplacement DEPLA CERC : si idebut1 ; tps0 = 0. ; sino ; evdep0 = tab1.evolution_deplacement ; si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; ldep1 = ldep0 et ldep1 ; fins ; * Evenement : si imot5 ; ttev1 = table ; ttev1 . nom = even1 ; si ieve1 ; sino ; fins ; sino ; tab1.evenements = table ; nbev1 = 1 ; fins ; tab1.evenements.nbev1 = ttev1 ; fins ; * Enregistrements en fin de traitement option pour eviter * modifier table avant fin realisation option tab1.trajectoire = mail1 ; tab1.evolution_puissance = evqtot1 ; tab1.evolution_debit = evdebi1 ; tab1.evolution_deplacement = evdep1 ; * Fin option DEPLA CERC : fins ; *----------------------------- DEPLA MAIL -----------------------------* * Sous-option MAIL : si (ega mot2 'MAIL') ; icas2 = 3 ; imax1 = 0 ; fins ; * Trajectoire DEPLA MAIL : si idebut1 ; tab1.point_de_depart = P1 ; sino ; mail0 = tab1.trajectoire ; si (P1 neg P0) ; sino ; fins ; fins ; si (nbpts0 > 1) ; mail1 = mail0 et mail1 ; fins ; fins ; * Increment de temps DEPLA MAIL : imot4 = faux ; imot5 = faux ; ieve1 = faux ; repe b1 2 ; si (ega mot4 'VITE') ; imot4 = vrai ; fins ; si (ega mot4 'EVEN') ; imot5 = vrai ; fins ; fin b1 ; * Coupure et temps de coupure selon existence EVEN : * idtcp1 = idtcp1 ou ieve1 ; * si ieve1 ; * dtcp1 = teve1 ; * fins ; * Vitesse de deplacement : si (non imot4) ; vdep1 = tab1.vitesse_de_deplacement ; fins ; wtab1 . vdep = vdep1 ; dt1 = ll1 / vdep1 ; si idtcp1 ; dt1 = dt1 + dtcp1 ; fins ; * Evolution puissance DEPLA MAIL : si idebut1 ; sino ; * Si la puissance indiquee est differente de celle existante : si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; lqtot1 = lqtot0 et lqtot1 ; fins ; * Evolution debit DEPLA MAIL : si idebut1 ; sino ; * Si la puissance indiquee est differente de celle existante : si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; ldebi1 = ldebi0 et ldebi1 ; fins ; * Evolution deplacement DEPLA MAIL : si idebut1 ; tps0 = 0. ; sino ; evdep0 = tab1.evolution_deplacement ; si idtcp1 ; sino ; fins ; ltps1 = ltps0 et ltps1 ; ldep1 = ldep0 et ldep1 ; fins ; * Evenement : si imot5 ; ttev1 = table ; ttev1 . nom = even1 ; si ieve1 ; sino ; fins ; sino ; tab1.evenements = table ; nbev1 = 1 ; fins ; tab1.evenements.nbev1 = ttev1 ; fins ; * Enregistrements en fin de traitement option pour eviter * modifier table avant fin realisation option tab1.trajectoire = mail1 ; tab1.evolution_puissance = evqtot1 ; tab1.evolution_debit = evdebi1 ; tab1.evolution_deplacement = evdep1 ; * Fin option DEPLA MAIL : fins ; *---------------------------- DEPLA COUCHE ----------------------------* * Sous-option COUCHE : si (ega mot2 'COUCHE') ; icas2 = 4 ; * Option PAUSE : imot3 = faux ; imot4 = faux ; imot5 = faux ; imot6 = faux ; ieve1 = faux ; repe b1 4 ; si (ega mot3 'VITE') ; imot3 = vrai ; fins ; imot4 = vrai ; fins ; si (ega mot3 'PAUSE') ; imot5 = vrai ; fins ; si (ega mot3 'EVEN') ; imot6 = vrai ; fins ; fin b1 ; * Epaisseur de la couche : si imot3 ; Vpf1 = flot2 ; sino ; Vpf1 = tab1.vitesse_de_soudage ; fins ; si imot4 ; Dpf1 = flot3 ; sino ; Dpf1 = tab1.debit_de_fil ; fins ; *List Dpf1 ; Lpf1 = tab1.largeur_de_passe ; sinon ; finsi ; epf1 = Dpf1 / Vpf1 / Lpf1 ; *List epf1 ; * Pause : si imot5 ; vdep2 = epf1 / flot4 ; sino ; vdep2 = tab1.vitesse_de_deplacement ; fins ; si imot6 ; si ieve1 ; sino ; fins ; sino ; fins ; * Fin option DEPLA COUCHE : fins ; si (icas2 ega 0) ; fins ; * Fin option DEPLA : fins ; *----------------------------------------------------------------------* * Option MAIL * *----------------------------------------------------------------------* si (ega mot1 'MAIL') ; icas1 = 4 ; *----------------------- Lecture des arguments ------------------------* * Lecture maillage cordons : * Lecture facultative liste ordonnancement couleurs ; si (non ilist1) ; fins ; * Lecture du mot 'PAS' ; si (neg mot1 'PAS') ; sino ; fins ; * Lecture options 'TEMP' et 'MESU' ; imot2 = faux ; imot3 = faux ; repe bmot2 2 ; imot2 = vrai ; flot2 = 3. * pi ; fins ; iter bmot2 ; fins ; imot3 = vrai ; iter bmot2 ; fins ; si ((non imot2) et (non imot3)) ; * quit soudage ; fins ; fins ; fin bmot2 ; *list imot2 ; list imot3 ; *----------------------- Indexation du maillage -----------------------* * Informations trajectoire : ltraj1 = tab1.trajectoire ; * Informations evolution deplacements : evxs1 = tab1.evolution_deplacement ; *list ltxs1 ; *list lxxs1 ; * Information apport de matiere : evdf1 = tab1.evolution_debit ; * tolerance dimensionnelle : * Table resultat : tab2 = table ; tab2 . maillage = mail1 ; tab2 . evolution_maillage = table ; tab2 . evolution_maillage . temps = table ; tab2 . evolution_maillage . maillage = table ; ttps1 = table ; tmai1 = table ; * Listreels de l'option MESU : si imot3 ; fins ; * Boucle sur les segents rouges de la trajectoire : indi1 = 0 ; ic1 = 1 ; inewcor1 = vrai ; isuidep1 = vrai ; ifermee1 = faux ; icourbe1 = faux ; ipredep1 = vrai ; repe b1 nb1 ; pasi1 = flot1 ; * Si pas trajectoire d'une passe, on saute en changeant de couleur : inewcor1 = vrai ; ifermee1 = faux ; icourbe1 = faux ; si (non ipredep1) ; ic1 = ic1 + 1 ; fins ; ipredep1 = vrai ; iter b1 ; sino ; ipredep1 = faux ; si (&b1 neg nb1) ; si ((non isuidep1) et (non (ifermee1 ou icourbe1))) ; ifin1 = &b1 + 1 ; elfin1 = eli2 ; repe bfermee1 (nb1 - &b1 - 1) ; ifin1 = &b1 + 1 + &bfermee1 ; elfin1 = eli2 ; fin bfermee1 ; ideb1 = &b1 ; icourbe1 = non ifermee1 ; fins ; fins ; fins ; *list isuidep1 ; * Maillage cordon passe ic1 : si inewcor1 ; inewcor1 = faux ; si ilist1 ; sino ; fins ; sino ; fins ; fins ; maili1 = tpi1.&bp1 ; fin bp1 ; fins ; * Vecteur(s) unitaire(s) de la trajectoire : si (icourbe1 ou ifermee1) ; si (&b1 ega ideb1) ; si ifermee1 ; ndeb1 = ni1 ; fins ; fins ; si (&b1 ega ifin1) ; nix = ni1 ; ni1 = ni2 ; ni2 = nix ; si ifermee1 ; fins ; fins ; si ((ideb1 < &b1) et (&b1 < ifin1)) ; nix = ni2 ; ni1 = nix ; fins ; sino ; fins ; *list ni1 ; list ni2 ; * Champ(s) de distance au(x) point(s) pi1 (Pi2) sur le maillage du cordon dans la direction ni1 (ni2) chpdi1 = ((x1 - xp1) * xni1) + ((y1 - yp1) * yni1) + ((z1 - zp1) * zni1) ; *list ni1 ; list pi1 ; *trac chedi1 modi1 ; * Option MESU : champs de distance dans les directions transverses (v et w) : si imot3 ; *list vi1 ; list wi1 ; chli1 = ((x1 - xp1) * xwi1) + ((y1 - yp1) * ywi1) + ((z1 - zp1) * zwi1) ; chhi1 = ((x1 - xp1) * xvi1) + ((y1 - yp1) * yvi1) + ((z1 - zp1) * zvi1) ; *trac chhi1 ; fins ; * Extraction evolution deplacement sur ce segment : repe bxs1 nbxs1 ; si (non (xxsi1 < (xspi2 - tol1))) ; xxxi2 = xxsi1 ; fins ; si (non (xxsi1 > (xspi1 + tol1))) ; xxxi1 = xxsi1 ; fins ; fin bxs1 ; *list lxxsi1 ; *list ltxsi1 ; * Sequencage maillage cordon selon pas fourni : si (leli1 >EG pasi1) ; nb2 = (leli1 / pasi1) enti ; sino ; nb2 = 1 ; pasi1 = leli1 ; fins ; *list nb2 ; xsi1 = 0. ; si ifermee1 ; si (&b1 ega ideb1) ; xdeb1 = 0. ; sino ; Sdeb1 = tconn1 . 1 ; sino ; Sdeb1 = tconn1 . 2 ; fins ; *trac cach Sdeb1 ; fins ; fins ; repe b2 nb2 ; xsi2 = xsi1 + pasi1 ; si (xsi2 > leli1) ; xsi2 = leli1 ; fins ; si ((&b2 ega nb2) et (isuidep1 ou (&b1 ega nb1))) ; *mess '*** Maxi !' ; fins ; geoix = tgeoi2.&bgeoi2 ; quit bgeoi2 ; fins ; fin bgeoi2 ; geoi2 = geoix ; tmai1 . indi1 = geoi1 et geoi2 ; ttps1 . indi1 = ti2 ; indi1 = indi1 + 1 ; xsi1 = xsi2 ; * Option MESU : si imot3 ; *list lai1 ; list lhi1 ; llarg1 = llarg1 et lai1 ; lhaut1 = lhaut1 et lhi1 ; fins ; * sino ; *mess ' ***** Geoi2 vide : indi1 = ' indi1 ; fins ; fin b2 ; geoi1 = geoi1 et geoi2 ; * Retrait du maillage deja indexe au maillage total -> reste a faire si (icourbe1 ou ifermee1) ; fins ; fin b1 ; tab2 . evolution_maillage . temps = ttps1 ; tab2 . evolution_maillage . maillage = tmai1 ; * Option MESU : si imot3 ; tab2 . largeur_cordons = evlarg1 ; tab2 . hauteur_cordons = evhaut1 ; fins ; *-------------------------- Sous-option TEMP --------------------------* si imot2 ; * Valeurs pas de temps de calcul : si (nbp1 > 1) ; repe bp1 nbp1 ; vpi1 = tab1.passes.&bp1.vitesse ; dtcai1 = flot1 / vpi1 / flot2 ; ldtca1 = ldtca1 et dtcai1 ; ltdpass1 = ltdpass1 et tdpassi1 ; fin bp1 ; passp1 = 2 ; sino ; dtca1 = flot1 / (tab1.vitesse_de_soudage) / flot2 ; fins ; *list ldtca1 ; *list ltdpass1 ; * Redecoupage de la liste des temps de l'evolution de la puissance thermique : evqt1 = tab1.evolution_puissance ; tol3 = 0.001 * tab1.temps_de_coupure ; * Gestion des evenements : Si ieve1 ; ie1 = &beve1 ; lteve1 = lteve1 et tab1.evenements.ie1.temps ; fin beve1 ; *list lteve1 ; *list lieve1 ; *list lpeve1 ; sino ; fins ; * Sous-decoupage de l'historique de puissance : * Gestion evenements : si (peve0 neg 0) ; sino ; neve1 = -1 ; fins ; idtev1 = neve0 ega neve1 ; si idtev1 ; dtev1 = tev1 - t0 ; *mess (chai 'Even. = ' neve0 ', dtev1 =' dtev1) ; fins ; sino ; idtev1 = faux ; fins ; * Boucle sur les piquets de temps : repe b1 (nb1 - 1) ; ip1 = &b1 + 1 ; dt1 = t1 - t0 ; si (&b1 ega 1) ; dt0 = dt1 ; fins ; * Gestion pas de temps (dtca1) en multipasses : si (nbdtca1 > 0) ; si ((t0 >EG tdpassp1) et (passp1 <EG nbdtca1)) ; passp1 = passp1 + 1 ; si (passp1 > nbdtca1) ; sino ; fins ; *mess '***** t0, dtca1 =' t0 ',' dtca1 ; fins ; fins ; * Avec evements : si idtev1 ; si (dt1 <EG dtca1) ; si (dtev1 <EG dtca1) ; si (dt1 ega dtev1 tol3) ; sino ; si (dt1 < dtev1) ; t1 = tev1 ; sino ; fins ; fins ; sino ; si ((q0 > tol2) ou (q1 > tol2)) ; sino ; fins ; t1 = tev1 ; fins ; sino ; si (dt1 ega dtev1 tol3) ; si ((q0 > tol2) ou (q1 > tol2)) ; sino ; fins ; sino ; si (dtev1 < dt1) ; si (dtev1 < dtca1) ; sino ; si ((q0 > tol2) ou (q1 > tol2)) ; *mess '############ Ici 1' ; sino ; fins ; fins ; sino ; si ((q0 > tol2) ou (q1 > tol2)) ; *mess '############ Ici 2' ; sino ; fins ; t1 = tev1 ; fins ; fins ; fins ; * Pas d'evenement : sino ; si (dt1 <EG dtca1) ; sino ; si ((q0 > tol2) ou (q1 > tol2)) ; sino ; fins ; fins ; fins ; t0 = t1 ; q0 = q1 ; * Gestion evenement suivant : peve0 = peve1 ; si (peve0 neg 0) ; sino ; neve1 = -1 ; fins ; idtev1 = neve0 ega neve1 ; si idtev1 ; dtev1 = tev1 - t0 ; *mess (chai 'Even. = ' neve0 ', dtev1 =' dtev1) ; fins ; sino ; idtev1 = faux ; fins ; fin b1 ; * Verification si liste temps calcules bien ordonnee : fins ; tab2.temps_calcules = ltca1 ; * Sorties si evenements : si ieve1 ; tab2.temps_evenements = lteve1 ; tab2.index_evenements = lieve1 ; fins ; * Fin sous-option TEMP : fins ; * Sortie de la table resultat : resp tab2 ; * Fin option MAIL : fins ; *----------------------------------------------------------------------* * FIN * *----------------------------------------------------------------------* * MOT1 n'est pas un des mots-cles des options de la procedure : si (icas1 ega 0) ; fins ; FINP ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales