Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

 

#3 Mon 12 March 2007 15:32

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: MapBasic : Création de polyligne

Merci pour le suivi smile

Robin.

Hors ligne

 

Pied de page des forums

Powered by FluxBB