/* Rotation d'un composant en conservant un emplacement correct de sa référence et de sa valeur. Version 1.00: 11 août 1998 Version 1.01: 14 avril 2000 (Adaptation version 2.05) Version 1.02: 12 novembre 2000 (Localisation anglais/français) $VER: Tourner.AmiCAD 1.02, © R.Florac, 12 novembre 2000 */ options results signal on error signal on syntax 'LANGUAGE' if result="français.language" then fr=1 else fr=0 nr=0; objet=1 'SAVEALL:OBJECTS'; objets=result if objets=0 then do if fr=1 then 'MESSAGE("Il n''y a aucun objet"+CHR(10)+"sur ce schéma !")' else 'MESSAGE("There is no object"+CHR(10)+"on the document !")' exit end do while objet>0 'O=FINDOBJ('objet',1,-1,-1)'; objet=result if objet>0 then do 'TEST(O)' if result>0 then do nr=nr+1 call tourner(objet) end objet=objet+1 if objet>objets then objet=0 end end if nr=0 then do if fr=1 then 'PICKOBJ("Cliquez sur l''objet à faire tourner")' else 'PICKOBJ("Click on the objet to rotate")' objet=result call tourner(objet) end exit tourner: procedure parse arg o 'GETPOS(O='o')'; p=result 'ROTATE(O,1):V=GETVAL(O)' if result>0 then do if p=1 | p=3 then do 'MOVE(V,COL(O)-COL(V)+10,LINE(O)+HEIGHT(O)-LINE(V)+9)' end else do 'MOVE(V,COL(O)+WIDTH(O)-COL(V)+9,LINE(O)+HEIGHT(O)-(HEIGHT(O)-20)/2-1-LINE(V))' end end 'R=GETREF(O)' if result>0 then do if p=1 | p=3 then do 'MOVE(R,COL(O)-COL(R)+10,LINE(O)-LINE(R))' end else do 'MOVE(R,COL(O)+WIDTH(O)-COL(R)+9,LINE(O)+HEIGHT(O)-(HEIGHT(O)-20)/2-11-LINE(R))' end end return /* Traitement des erreurs, interruption du programme */ syntax: erreur=RC if fr=1 then 'MESSAGE("Script Tourner.AmiCAD"+CHR(10)+"Erreur de syntaxe"+CHR(10)+"en ligne 'SIGL'"+CHR(10)+"'errortext(erreur)'")' else 'MESSAGE("Tourner.AmiCAD script"+CHR(10)+"Syntax error"+CHR(10)+"in line 'SIGL'"+CHR(10)+"'errortext(erreur)'")' exit error: if fr=1 then 'MESSAGE("Script Tourner.AmiCAD"+CHR(10)+"Erreur en ligne 'SIGL'")' else 'MESSAGE("Tourner.AmiCAD script"+CHR(10)+"Error in line 'SIGL'")' exit