All right.

Then use these functions to get non-const iterators pointing to vertices:

// from GModel class
typedef std::set<GVertex*, GEntityLessThan>::iterator viter;
viter firstVertex() { return vertices.begin(); }
viter lastVertex() { return vertices.end(); }

or, I guess you can redefine getVertexByTag function in such a way that it wouldn't be const and give you a non-const vertex iterator (in this case you'll clearly need to recompile the Gmsh library).

Best regards,
Mikhail


On 05/27/2014 10:14 AM, Agnese, Marco wrote:
Hi Mikhail,
the problem of adding and deleting a vertex is that I have to redefine also the 
topology (I think, am I right ?).
For example let's say that my GModel defining a rectangle: 4 vertices (from 1 
to 4), 4 edges (from 1 to 4), 1 lines loops, 1 plane surface.
Let's say that I want now move thew first vertex and keep everything the same 
(and obtain a quadrilateral). If I delete the first vertex, the two edges which 
contain the vertex number 1 need to be deleted and recreated with the new 
vertex which I want to add.
In case the geometry is more complicated, maybe I have also to create again the 
lines loops.
This procedure is quite inefficient and could become complicated (especially in 
3D).
If I can delete a vertex and add with the new coordinates without recreating my 
edges this could be a good solution to my problem. For know I recreate from 
scratch the GModel with the right coordinates, but of course this requires a 
certain amount of code and more operations to be performed by the code.
Chhers, Marco.
________________________________________
From: Mikhail Artemyev [[email protected]]
Sent: Tuesday, May 27, 2014 3:51 PM
To: [email protected]; Agnese, Marco
Subject: Re: Change coordinate of a vertex in a GModel using API

Hi Marco,

I would suggest to remove a wrong vertex from a model using:

void remove(GVertex *v); // from GModel class

and then to add a new (corrected) one:

void add(GVertex *v) { vertices.insert(v); } // from GModel class

However I didn't try that for myself.

Best regards,
Mikhail

Hello GMSH users,
I have a GModel and I want to change the coordinates of a point inside it: just 
the coordinates of a point , everything in the GModel need to remains exactly 
the same.
Is there a way without creating from scratch a new GModel?
Because if I extract the pointer to a GVertex with the method getVertexByTag I 
have a const pointer therefore I cannot modify the value but only read it.
Is there a method to have a non const pointer? Or is there  a method to simply 
change the coordinates?

Thank you,
cheers,
Marco Agnese.





_______________________________________________
gmsh mailing list
[email protected]
http://www.geuz.org/mailman/listinfo/gmsh

Reply via email to