[Gmsh] ordering of lines/surfaces after stl merge
Christophe Geuzaine
cgeuzaine at ulg.ac.be
Tue Sep 3 10:42:59 CEST 2013
On 02 Sep 2013, at 19:38, Martin Genet <martin.genet at ucsfmedicalcenter.org> wrote:
> On 08/31/2013 01:19 AM, Christophe Geuzaine wrote:
>> On 29 Aug 2013, at 20:44, Martin Genet <martin.genet at ucsfmedicalcenter.org> wrote:
>>> Sorry to insist, but I'm really stuck here. Hopefully someone can help me understand what's going on.
>>>
>>> I made a minimal example (minimal.geo), to illustrate my problem. I first merge the a couple STL files (STL.tar.gz), then create a couple Compound Lines, and then eventually a Line Loop. However, the order of Compound Lines seems to depend on whether or not I create the Line Loop (see lines-WithoutLineLoop & lines-WithLineLoop). Is that the expected behavior? Is there a logic behind this?
>> Hi Martin - It's a limitation of the current implementation of "CreateTopology". In this routine (which reconstructs all the connectivity data that is missing in the STL), some operations depend on sets of entities (vertices, elements), which are sorted by their memory address (pointer). The order in which features (curves) are created depends on this ordering, which itself changes from run to run.
>>
>> We should definitely change this, as it leads to numbering are change from run to run. It's in the TODO list...
>>
>> Christophe
> Thanks Christophe. Is it something a non-GMSH expert could work out?
> I'll give it a try. Do you have any instructions? That would help a lot…
The code is quite ugly, but might still be readable :-) It's in gmsh/Geo/GModel.cpp. The routine to look at is GModel::createTopologyFromMesh(), as well as all the subroutines called from there.
> Thanks!
>
> Martin
>
>>> One more thing I don't quite understand, is that even Points and Surfaces are names "ll" (see visibility.png). Is that related to the previous issue?
>>>
>>> Thanks in advance for your help!
>>>
>>> Martin
>>>
>>> On 08/22/2013 03:14 PM, Martin Genet wrote:
>>>> Dear GMSH people:
>>>>
>>>> I'm merging a bunch of stl files, and then work with lines & surfaces that I get using
>>>>
>>>>> ll[] = Line "*";
>>>>> ss[] = Surface "*";
>>>> However, I can't seem to figure out the ordering of the lines & surfaces, especially since it seems to change from one run to another, depending on what I do with them. Any help with that? Thanks!
>>>>
>>>> Martin
>>>>
>>>>
>>>> _______________________________________________
>>>> gmsh mailing list
>>>> gmsh at geuz.org
>>>> http://www.geuz.org/mailman/listinfo/gmsh
>>> <minimal.geo><STL.tar.gz><lines-WithLineLoop.pdf><lines-WithoutLineLoop.pdf><visibility.png>_______________________________________________
>>> gmsh mailing list
>>> gmsh at geuz.org
>>> http://www.geuz.org/mailman/listinfo/gmsh
>
>
--
Prof. Christophe Geuzaine
University of Liege, Electrical Engineering and Computer Science
http://www.montefiore.ulg.ac.be/~geuzaine