* SOUDAGE PROCEDUR SP204843 24/04/18 21:15:02 11904 *-------------- 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 ; *-------------------------- 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 ; * Initialisation enregistrement donnees POINT : sino ; npt1 = 0 ; tab1.points = table ; fins ; npt1 = npt1 + 1 ; tab1.points.npt1 = table ; * * Lecture des arguments de l'option : * Trajectoire POINT : si idebut1 ; fins ; * Lecture Arguments PUIS, DEBI option POINT : imot2 = faux ; imot3 = faux ; imot4 = faux ; ieve1 = faux ; repe b1 3 ; si (ega mot2 'PUIS') ; imot2 = vrai ; fins ; imot3 = 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 ; *list qtot1 ; *list debi1 ; *list idebut1 ; * * Ajout ou pas du temps de coupure option POINT : idtcp1 = faux ; si (non idebut1) ; evqtot0 = tab1.evolution_puissance ; idtcp1 = (abs(qtot0-qtot1)) > (abs(1.e-4*qtot1)) ; 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 ; tab1.evolution_puissance = evqtot1 ; * 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 ; tab1.evolution_debit = evdebi1 ; * Evolution deplacement POINT : si idebut1 ; tps0 = 0. ; sino ; evdep0 = tab1.evolution_deplacement ; ltps1 = ltps0 et ltps1 ; ldep1 = ldep0 et ldep1 ; fins ; tab1.evolution_deplacement = evdep1 ; * Evenement : si imot4 ; sino ; tab1.evenements = table ; nbev1 = 1 ; fins ; tab1.evenements.nbev1 = table ; ttev1 = tab1.evenements.nbev1 ; ttev1 . nom = even1 ; si ieve1 ; sino ; fins ; fins ; * Enregistrement donnees POINT tab1.points.npt1.point = P1 ; tab1.points.npt1.instants = lti1 ; tab1.points.npt1.puissance = qtot1 ; tab1.points.npt1.debit = debi1 ; * 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 ; irela1 = vrai ; ieve1 = faux ; repe b1 5 ; 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 ; 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 ; * Ajout ou pas du temps de coupure option PASSE : idtcp1 = faux ; si ((non idebut1)) ; evqtot0 = tab1.evolution_puissance ; idtcp1 = (abs(qtot0-qtot1)) > (abs(1.e-4*qtot1)) ; 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 ; * Initialisation enregistrement donnees PASSE : sino ; nps1 = 0 ; tab1.passes = table ; fins ; nps1 = nps1 + 1 ; tab1.passes.nps1 = table ; * icas2 = indicateur sous-option realisee : icas2 = 0 ; *----------------------------- PASSE DROI -----------------------------* * Sous-option DROI : icas2 = 1 ; * Lecture du point : * 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 ; tab1.trajectoire = mail1 ; * 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 ; tab1.evolution_puissance = evqtot1 ; * 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 ; tab1.evolution_debit = evdebi1 ; * 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 ; tab1.evolution_deplacement = evdep1 ; * Evenement : si imot7 ; sino ; tab1.evenements = table ; nbev1 = 1 ; fins ; tab1.evenements.nbev1 = table ; ttev1 = tab1.evenements.nbev1 ; ttev1 . nom = even1 ; si ieve1 ; sino ; fins ; fins ; * Enregistrement donnees PASSE DROI 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 ; * Fin option PASSE DROI : fins ; *----------------------------- PASSE CERC -----------------------------* * Sous-option CERC : icas2 = 2 ; * P1 est le centre du cercle, P2, l'extremite de la trajectoire * 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 ; tab1.trajectoire = mail1 ; * 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 ; tab1.evolution_puissance = evqtot1 ; * 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 ; tab1.evolution_debit = evdebi1 ; * 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 ; tab1.evolution_deplacement = evdep1 ; * Evenement : si imot7 ; sino ; tab1.evenements = table ; nbev1 = 1 ; fins ; tab1.evenements.nbev1 = table ; ttev1 = tab1.evenements.nbev1 ; ttev1 . nom = even1 ; si ieve1 ; sino ; fins ; fins ; * Enregistrement donnees PASSE CERC 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 ; * Fin option PASSE CERC : fins ; *----------------------------- PASSE MAIL -----------------------------* * Sous-option MAIL : si (ega mot2 'MAIL') ; icas2 = 3 ; imax1 = 0 ; fins ; maili1 = mail1 ; * 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 ; tab1.trajectoire = mail1 ; * 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 ; tab1.evolution_puissance = evqtot1 ; * 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 ; tab1.evolution_debit = evdebi1 ; * 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 ; tab1.evolution_deplacement = evdep1 ; * Evenement : si imot7 ; sino ; tab1.evenements = table ; nbev1 = 1 ; fins ; tab1.evenements.nbev1 = table ; ttev1 = tab1.evenements.nbev1 ; ttev1 . nom = even1 ; si ieve1 ; sino ; fins ; fins ; * Enregistrement donnees PASSE MAIL 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 ; * 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 ; tab1.trajectoire = mail1 ; * 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 ; tab1.evolution_puissance = evqtot1 ; * 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 ; tab1.evolution_debit = evdebi1 ; * 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 ; tab1.evolution_deplacement = evdep1 ; * Evenement : si imot5 ; sino ; tab1.evenements = table ; nbev1 = 1 ; fins ; tab1.evenements.nbev1 = table ; ttev1 = tab1.evenements.nbev1 ; ttev1 . nom = even1 ; si ieve1 ; sino ; fins ; fins ; * 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 ; tab1.trajectoire = mail1 ; * 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 ; tab1.evolution_puissance = evqtot1 ; * 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 ; tab1.evolution_debit = evdebi1 ; * 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 ; tab1.evolution_deplacement = evdep1 ; * Evenement : si imot5 ; sino ; tab1.evenements = table ; nbev1 = 1 ; fins ; tab1.evenements.nbev1 = table ; ttev1 = tab1.evenements.nbev1 ; ttev1 . nom = even1 ; si ieve1 ; sino ; fins ; fins ; * 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 ; tab1.trajectoire = mail1 ; * 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 ; tab1.evolution_puissance = evqtot1 ; * 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 ; tab1.evolution_debit = evdebi1 ; * 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 ; tab1.evolution_deplacement = evdep1 ; * Evenement : si imot5 ; sino ; tab1.evenements = table ; nbev1 = 1 ; fins ; tab1.evenements.nbev1 = table ; ttev1 = tab1.evenements.nbev1 ; ttev1 . nom = even1 ; si ieve1 ; sino ; fins ; fins ; * 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 option 'TEMP' ; imot2 = faux ; si (imot2) ; flot2 = -1. ; fins ; sino ; fins ; fins ; *----------------------- 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 ; * 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 ; * 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 ; * 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 ; *-------------------------- Sous-option TEMP --------------------------* si imot2 ; * Valeurs par defaut flot2 : si (flot2 < 0.) ; flot2 = flot1 / (tab1.vitesse_de_soudage) / pi / 3. ; *list flot2 ; fins ; dtca1 = flot2 ; * 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 ; * 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