Incorrect surface color value fetched from *.stp files since gmsh 4.8
Hi all. I have a toolkit that relies on color information to recognize physical group information. The toolkit fails to function normally after upgrading the SDK to gmsh SDK 4.8 or 4.9.
Debugging information show that the RGB color value, which is like 1.E0,4.7059E-2,1.09804E-1
(generated by Creo
), is correctly translated to [255,12,28]
in gmsh 4.7 or lower. However, in gmsh 4,8 or higher, the fetched value from python API is [255, 0, 2]
.
Below is the test code and run log:
ens = gmsh.model.getEntities()
for crtEntity in ens:
crtDim = crtEntity[0]
crtTag = crtEntity[1]
crtColor = gmsh.model.getColor(crtDim, crtTag)
if crtDim == 2:
logging.debug("Entity D-%d T-%d Corlor: [%f, %f, %f]",
crtDim, crtTag, crtColor[0], crtColor[1], crtColor[2])
n2DEnts += 1
# print("%d-th 2D, current color: %d, %d, %d" % (n2DEnts, crtColor[0], crtColor[1], crtColor[2]))
The input step file is attached here: ASM0001.stp
For the above file & code, output from gmsh 4.7 is:
// gmsh 4.7 or lower
18:15:20 DEBUG: Entity D-2 T-1 Corlor: [12.000000, 255.000000, 28.000000]
18:15:20 DEBUG: Entity D-2 T-2 Corlor: [12.000000, 255.000000, 28.000000]
18:15:20 DEBUG: Entity D-2 T-3 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-4 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-5 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-6 Corlor: [255.000000, 128.000000, 0.000000]
18:15:20 DEBUG: Entity D-2 T-7 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-8 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-9 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-10 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-11 Corlor: [255.000000, 12.000000, 28.000000]
18:15:20 DEBUG: Entity D-2 T-12 Corlor: [12.000000, 255.000000, 28.000000]
18:15:20 DEBUG: Entity D-2 T-13 Corlor: [12.000000, 255.000000, 28.000000]
18:15:20 DEBUG: Entity D-2 T-14 Corlor: [12.000000, 255.000000, 28.000000]
18:15:20 DEBUG: Entity D-2 T-15 Corlor: [12.000000, 255.000000, 28.000000]
18:15:20 DEBUG: Entity D-2 T-16 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-17 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-18 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-19 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-20 Corlor: [255.000000, 128.000000, 0.000000]
18:15:20 DEBUG: Entity D-2 T-21 Corlor: [255.000000, 12.000000, 28.000000]
18:15:20 DEBUG: Entity D-2 T-22 Corlor: [255.000000, 12.000000, 28.000000]
18:15:20 DEBUG: Entity D-2 T-23 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-24 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-25 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-26 Corlor: [12.000000, 255.000000, 28.000000]
18:15:20 DEBUG: Entity D-2 T-27 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-28 Corlor: [255.000000, 128.000000, 0.000000]
18:15:20 DEBUG: Entity D-2 T-29 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-30 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-31 Corlor: [0.000000, 0.000000, 255.000000]
18:15:20 DEBUG: Entity D-2 T-32 Corlor: [0.000000, 0.000000, 255.000000]
In gmsh 4.8 or higher, the log is:
// gmsh 4.8 or higher
18:28:49 DEBUG: Entity D-2 T-1 Corlor: [0.000000, 255.000000, 2.000000]
18:28:49 DEBUG: Entity D-2 T-2 Corlor: [0.000000, 255.000000, 2.000000]
18:28:49 DEBUG: Entity D-2 T-3 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-4 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-5 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-6 Corlor: [255.000000, 55.000000, 0.000000]
18:28:49 DEBUG: Entity D-2 T-7 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-8 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-9 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-10 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-11 Corlor: [255.000000, 0.000000, 2.000000]
18:28:49 DEBUG: Entity D-2 T-12 Corlor: [0.000000, 255.000000, 2.000000]
18:28:49 DEBUG: Entity D-2 T-13 Corlor: [0.000000, 255.000000, 2.000000]
18:28:49 DEBUG: Entity D-2 T-14 Corlor: [0.000000, 255.000000, 2.000000]
18:28:49 DEBUG: Entity D-2 T-15 Corlor: [0.000000, 255.000000, 2.000000]
18:28:49 DEBUG: Entity D-2 T-16 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-17 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-18 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-19 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-20 Corlor: [255.000000, 55.000000, 0.000000]
18:28:49 DEBUG: Entity D-2 T-21 Corlor: [255.000000, 0.000000, 2.000000]
18:28:49 DEBUG: Entity D-2 T-22 Corlor: [255.000000, 0.000000, 2.000000]
18:28:49 DEBUG: Entity D-2 T-23 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-24 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-25 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-26 Corlor: [0.000000, 255.000000, 2.000000]
18:28:49 DEBUG: Entity D-2 T-27 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-28 Corlor: [255.000000, 55.000000, 0.000000]
18:28:49 DEBUG: Entity D-2 T-29 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-30 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-31 Corlor: [0.000000, 0.000000, 255.000000]
18:28:49 DEBUG: Entity D-2 T-32 Corlor: [0.000000, 0.000000, 255.000000]
I looked up a few relevant source codes including src\common\Context.cpp
, src\geo\GEntity.cpp
, src\geo\OCCAttributes.h
, but the code seems unchanged. Deeper study is beyond my knowledge. Someone please find the reason and fix it.