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é ?

#1 Fri 26 August 2005 12:03

R Prest
Invité

mettre a jour un texte

Hello,

Petite question du jour :

Je sais comment récupérer le contenu d'un objet texte dans la table de
données associée, là pas de problème.
Update matable Set Nom = objectinfo(obj,3)

Maintenant que j'ai mis à jour les données, je voudrais faire la demarche
inverse, un truc du genre :
Update matable Set objectinfo(obj,3) = Nom

...mais bien sur ca ne marche pas ! Des idées ? J'ai la vague impression que
c'est facile mais la solution m'échappe.

Merci,
Robin.

 

#2 Fri 26 August 2005 12:31

Autran
Invité

Re: mettre a jour un texte

Bonjour,

essayer quelque chose comme ce qui suit ...avec la carte comme fenetre
active

Update MesTextes Set Object = CreateText (FrontWindow(), CentroidX(obj)
, CentroidY(obj) , Nom , 0 , 0 , 0)

Bonne journée

Jacques Autran
Chercheur UMR MAP - Equipe Gamsau
CNRS - Ministere de la Culture

 

#3 Fri 26 August 2005 14:25

R Prest
Invité

Re: mettre a jour un texte

Re,

Ca marche bien effectivement et je garde ca en boutique (merci en tout cas)
mais... il reste un chti souci :
je sais je suis difficile mais je ne veux changer que la valeur du texte. La
il y a creation d'un nouveau texte, donc perte de la mise en forme, perte de
l'inclinaison, etc, bref des paramètres de position et de style. Et ca
m'arrange pas trop. Dans le même style on m'a suggéré d'étiqueter + transfo
en texte ce qui est une bonne idée en soi mais qui revient a la meme chose
au final...je perds la mise en forme.

Pas si simple finalement. On doit pouvoir faire quelque chose avec ceci :
OBJ_INFO_TEXTSTRING mais il faut que je potasse un peu pour voir si c'est
faisable sans mbx...

A suivre...
Robin.

 

#4 Fri 26 August 2005 14:40

R Prest
Invité

Re: mettre a jour un texte

Hello,

Pour info : "By issuing an Alter Object statement with an Info clause, you
can reset an object’s style (e.g.,
the Pen or Brush). The Info clause lets you modify the same style attributes
that you can query
through the ObjectInfo( ) function. For example, you can determine an object
’s current Brush
style by calling the ObjectInfo( ) function."

Bref, pour les non anglophones, ca dit qu'on peut modifier et remettre a
zero les attributs d'un objet de la meme facon qu'on peut recuperer l'info
via objectinfo(). Du coup je sens que ca doit ressemble a un truc comme
suit, mais ca ne me semble pas possible via la fenetre mapbasic vu que ca
requiert de boucler dans la table sur tous les objets. Je vais finir par
investir dans le logiciel Mapbasic...

Alter Object matable.obj Info OBJ_INFO_TEXTSTRING , Matable.Nom

A moins que vous n'ayez d'autres idées - sans développement MB bien sur ?
Sinon, c'est pas grave, je vais me debrouiller avec la soluce de jacques.
Robin.

 

#5 Fri 26 August 2005 15:02

R Prest
Invité

Re: mettre a jour un texte

Hello,

J'ai trouvé la requete ideale en farfouillant un peu :

Update Nom_Occupationsol Set Object = CreateText (FrontWindow(),
CentroidX(obj) , CentroidY(obj) , Nom , ObjectGeography(obj,7) , 0 , 0)

Il me manquait ca : ObjectGeography(obj,7)

De cette facon, on garde (au moins) l'angle de rotation des textes. J'ai ce
qu'il me faut c'est parfait !

Bonne journée,
Robin.

Ps : Pour info...

OBJ_GEO_MINX          minimum x coordinate of an object's minimum
                      bounding bounding rectangle (MBR), unless object
                      is a line; if object is a line, returns same
                      value as OBJ_GEO_LINEBEGX.
OBJ_GEO_MINY          minimum y coordinate of object's MBR. For lines,
                      returns OBJ_GEO_LINEBEGY value.
OBJ_GEO_MAXX          maximum x coordinate of object's MBR. Does not
                      apply to Point objects. For lines, returns
                      OBJ_GEO_LINEENDX value.
OBJ_GEO_MAXY          maximum y coordinate of the object's MBR. Does not
                      apply to Point objects. For lines, returns
                      OBJ_GEO_LINEENDY value.
OBJ_GEO_ARCBEGANGLE   beginning angle of an Arc object.
OBJ_GEO_ARCENDANGLE   ending angle of an Arc object.
OBJ_GEO_LINEBEGX      x coordinate of the starting node of a Line object.
OBJ_GEO_LINEBEGY      y coordinate of the starting node of a Line object.
OBJ_GEO_LINEENDX      x coordinate of the ending node of a Line object.
OBJ_GEO_LINEENDY      y coordinate of the ending node of a Line object.
OBJ_GEO_POINTX        x coordinate of a Point object.
OBJ_GEO_POINTY        y coordinate of a Point object.
OBJ_GEO_ROUNDRADIUS   diameter of the circle that defines the rounded
                      corner of a Rounded Rectangle object, expressed in
                      terms of coordinate units (e.g. degrees).
OBJ_GEO_TEXTLINEX     x coordinate of end of a Text object's label line.
OBJ_GEO_TEXTLINEY     y coordinate of end of a Text object's label line.
OBJ_GEO_TEXTANGLE     rotation angle of a Text object.

Where

OBJ_GEO_MINX        = 1
OBJ_GEO_LINEBEGX    = 1
OBJ_GEO_POINTX      = 1
OBJ_GEO_MINY        = 2
OBJ_GEO_LINEBEGY    = 2
OBJ_GEO_POINTY      = 2
OBJ_GEO_MAXX        = 3
OBJ_GEO_LINEENDX    = 3
OBJ_GEO_MAXY        = 4
OBJ_GEO_LINEENDY    = 4
OBJ_GEO_ARCBEGANGLE = 5
OBJ_GEO_TEXTLINEX   = 5
OBJ_GEO_ROUNDRADIUS = 5
OBJ_GEO_ARCENDANGLE = 6
OBJ_GEO_TEXTLINEY   = 6
OBJ_GEO_TEXTANGLE   = 7

 

Pied de page des forums

Powered by FluxBB