#1 Tue 03 August 2010 10:48
- V. Girault
- Participant actif
- Lieu: Clermont-Ferrand
- Date d'inscription: 22 Sep 2005
- Messages: 106
[MB 8.5] problème de coordonnées
Bonjour @ tous....
Je suis actuellement en train de créer un outil pour automatiser des cartes bien spécifiques. Il est mené presque au terme de son code. Néanmoins, pour finaliser la mise en page, je me suis inspirée de l'exemple de notre ami Cyril Chat que j'ai trouvé ici J'ai exactement le même type de code, sauf au niveau de mes coordonnées et j'ai un message d'erreur suivant "...impossible de convertir les données..." sur une de ces lignes. Voici mon code au cas où :
Code:
SUB logos DIM dir_logo, layoutID, i as INTEGER DIM bool1 as LOGICAL 'recupère l'ID de la fenetre layout layoutID = WindowInfo(frontwindow(), WIN_INFO_WINDOWID) 'parametre le layout avec des unité en cm set coordsys Layout units "cm" 'ouvre les tables des logos open table "C:\Documents and Settings\GiraultV\Mes documents\Mes images\Logos\Bloc_marque_DIR_AOUT2009.TAB" 'test si le logos est déja ouvert et mappé bool1 = FALSE FOR i = 1 to numWindows() IF windowinfo(i , WIN_INFO_NAME) = "Bloc_marque_DIR_AOUT2009 Carte" THEN bool1 = TRUE END IF NEXT 'si pas ouvert alors on le map en configurant sa fenetre IF bool1 = FALSE THEN map from Bloc_marque_DIR_AOUT2009 width 2 units "cm" height 6 units "cm" min END IF 'on récupère l'ID de la fenetre logo FOR i = 1 to numWindows() IF (windowinfo(i, WIN_INFO_TYPE) = WIN_MAPPER) THEN IF windowinfo(i , WIN_INFO_NAME) = "Bloc_marque_DIR_AOUT2009 Carte" THEN dir_logo = windowinfo(i , WIN_INFO_WINDOWID) END IF END IF NEXT 'crée le cadre logo dans la mise en page en les placant suivant l'orientation de la MEP IF orientation(frontwindow()) = 1 THEN 'suivant l'orientation choisit par l'utilisateur create Frame into window layoutID (38.612, 24.234) (41.180, 27.645) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009 'create Frame into window layoutID (38.731, 24.275) (41.180, 27.564) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009 ELSE 'create Frame into window layoutID (0.7, 0.7) (4.30, 4.35) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009 'create Frame into window layoutID (38.612, 24.234) (41.180, 27.645) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009 create Frame into window layoutID (38.532, 24.315) (41.060, 27.686) Pen(1,2,0) brush(2, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009 END IF END SUB
L'erreur se manifeste à la dernière ligne non commentée create frame du ELSE IF. Je ne comprends pas du tout pourquoi il me fait une telle erreur vu que j'ai même vérifié mes coordonnées en dessinant mon frame sur la MEP et en récupérant les coordonnées indiquées pour les inscrire dans le code. Le logo est quant à lui chargé en coordonnées non terrestres et l'unité de mesure est correcte également.
Auriez-vous quelques suggestions SVP ?
Merci beaucoup d'avance....
Hors ligne
#2 Tue 03 August 2010 20:28
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MB 8.5] problème de coordonnées
Salut,
Peut être en utilsant un "Set coordsys table Bloc_marque_DIR_AOUT2009.TAB" celà forcera Mapbasic à prendre la projection de ta table comme référence.
A+
Joël
Hors ligne
#3 Wed 04 August 2010 09:47
- V. Girault
- Participant actif
- Lieu: Clermont-Ferrand
- Date d'inscription: 22 Sep 2005
- Messages: 106
Re: [MB 8.5] problème de coordonnées
Bonjour à tous !
Merci beaucoup Joël de voler à mon secours...
La table du logo est en coordonnées non terrestre en pieds. J'ai rajouté la ligne que tu indiques dans le code ci-dessous, en rajoutant même un note en-dessous pour bien contrôler qu'elle passe, mais j'ai toujours le même message d'erreur :
Code:
'--- mise en place des logos ATTENTION : mettre le chemin propre à chaque CRPF '--------------------------------------------------------------------------- SUB logos DIM dir_logo, layoutID, i as INTEGER DIM bool1 as LOGICAL 'recupère l'ID de la fenetre layout layoutID = WindowInfo(frontwindow(), WIN_INFO_WINDOWID) 'parametre le layout avec des unité en cm set coordsys Layout units "cm" 'ouvre les tables des logos open table "C:\Documents and Settings\GiraultV\Mes documents\Mes images\Logos\Bloc_marque_DIR_AOUT2009.TAB" set coordsys table Bloc_marque_DIR_AOUT2009 'Note "Coordsys de la table forcé." 'test si le logos est déja ouvert et mappé bool1 = FALSE FOR i = 1 to numWindows() IF windowinfo(i , WIN_INFO_NAME) = "Bloc_marque_DIR_AOUT2009 Carte" THEN bool1 = TRUE END IF NEXT 'si pas ouvert alors on le map en configurant sa fenetre IF bool1 = FALSE THEN map from Bloc_marque_DIR_AOUT2009 width 2 units "cm" height 6 units "cm" min END IF 'on récupère l'ID de la fenetre logo FOR i = 1 to numWindows() IF (windowinfo(i, WIN_INFO_TYPE) = WIN_MAPPER) THEN IF windowinfo(i , WIN_INFO_NAME) = "Bloc_marque_DIR_AOUT2009 Carte" THEN dir_logo = windowinfo(i , WIN_INFO_WINDOWID) END IF END IF NEXT 'crée le cadre logo dans la mise en page en les placant suivant l'orientation de la MEP IF orientation(frontwindow()) = 1 THEN 'suivant l'orientation choisit par l'utilisateur 'create Frame into window layoutID (38.612, 24.234) (41.180, 27.645) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009 ELSE 'create Frame into window layoutID (0.7, 0.7) (4.30, 4.35) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009 'create Frame into window layoutID (38.612, 24.234) (41.180, 27.645) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009 'create Frame into window layoutID (38.532, 24.315) (41.060, 27.686) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009 create Frame into window layoutID (15.1701,9.541) (16.2285,10.9313) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009 END IF END SUB
Il n'y a aucune ligne de création du frame avec le logo dedans qui fonctionne, j'ai toujours ce message d'erreur... Je ne sais pas trop quoi faire pour contrer celle-ci, je ne comprends franchement pas pourquoi MB réagit comme çà.... C'est ballot, je suis juste à la fin de l'écriture de mon outil et çà coïnce méchamment....
Personne n'aurait un rapide exemple de code avec une img ou logo associé que je contrôle ce qui ne va pas dans le mien en levant les différence entre les deux codes ou dans la composition ou la projection de la table servant de logo ?
Merci beaucoup d'avance....
Hors ligne
#4 Wed 04 August 2010 11:56
- Patrick PALMIER
- Participant actif
- Lieu: Lille
- Date d'inscription: 18 Jan 2007
- Messages: 97
Re: [MB 8.5] problème de coordonnées
Bonjour
Ne faudrait-il pas remplacer
create Frame into window layoutID (15.1701,9.541) (16.2285,10.9313) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009
par
create Frame into window layoutID (15.1701,9.541) (16.2285,10.9313) Pen(1,1,0) brush(1, 16777215, 16777215) from window dir_logo
car Bloc_marque_DIR_AOUT2009 est un nom de table et pas un windows ID
Hors ligne
#5 Wed 04 August 2010 14:29
- V. Girault
- Participant actif
- Lieu: Clermont-Ferrand
- Date d'inscription: 22 Sep 2005
- Messages: 106
Re: [MB 8.5] problème de coordonnées
Bonjour !
Si, c'est bien çà, je me suis encore plongé dans des recherches de solutions hyper compliquées.... Merci beaucoup à Patrick PALMIER
Hors ligne