#1 Mon 12 March 2007 11:45
- Cartosig
- Participant assidu
- Date d'inscription: 16 Oct 2006
- Messages: 222
MapBasic : Création de polyligne
Bonjour,
J'ai crée un ToolButton pour saisir des polylignes.
La méthode d'implémentation dans le code MB consiste a créer un objet vide (puisqu'on ne connait pas le nombre de points de la polyligne à l'anvance) puis a le modifier en ajoutant successivement tous les noeuds.
Code:
Create PLine Into Variable MaPolyLigne 0 For i=1 to ObjectInfo(MaPolyLigne , OBJ_INFO_NPOLYGONS) ... Alter Object MaPolyLigne Node Add (x, y) ... Next
Le problème est que je n'arrive pas à rentrer dans la boucle qui ajoute chaque noeud apres l'autre puisque les fonctions qui permettent de connaître le nombre de segments de la polyligne (ObjectInfo) renvoient la valeur 0 tant que l'objet est vide. C'est un peu la poule et son oeuf...
La Documentation MB "résoud" ce problème en ajoutant des noeuds de manière aléatoire sur la polyligne.
->
Code:
Alter Object MaPolyLigne Node Add (Rnd(1) * 100, Rnd(1) * 100)
Dans mon cas je dois respecter les coordonnées des points cliqués.
Je n'ose croire que ce n'est pas possible...
Merci beaucoup si vous pouvez m'aider !
**************** EDIT *********************
J'ai trouvé la solution, à toutes fins utiles :
Il faut bien créer un objet polyligne vide, mais pour pouvoir initialisé la boucle et ajouter les noeuds il faut utiliser la fonction ObjectInfo(object , OBJ_INFO_NPNTS) non pas en passant l'objet vide en paramètre mais en utilisant la fonction CommandInfo(CMD_INFO_CUSTOM_OBJ) à la place de cet objet. Cette fonction permet de pointer sur l'objet crée par les clicks mais qui n'est assigné dans aucune variable ni dans aucune table ou couche.
Dans le code celà donne donc :
Code:
Create PLine Into Variable MaPolyLigne 0 For i=1 to ObjectInfo(CommandInfo(CMD_INFO_CUSTOM_OBJ), OBJ_INFO_NPNTS) x = ObjectNodeX(CommandInfo(CMD_INFO_CUSTOM_OBJ), 1, i) y = ObjectNodeY(CommandInfo(CMD_INFO_CUSTOM_OBJ), 1, i) Alter Object MaPolyLigne Node Add (x, y) Next
Cordialement
Dernière modification par Cartosig (Mon 12 March 2007 13:45)
Hors ligne
#2 Mon 12 March 2007 13:46
- Cartosig
- Participant assidu
- Date d'inscription: 16 Oct 2006
- Messages: 222
Re: MapBasic : Création de polyligne
Cf solution ci-dessus
Hors ligne