Salome HOME
bos #20649 [CEA 19946] SMESH tests regression
[modules/smesh.git] / src / SMESH_SWIG / smeshBuilder.py
index fcb05ab6326e43a98a3027de6303fb2beaaa292f..2c7211828d54774216d8c8a6fbdb613a0d35b386 100644 (file)
@@ -1653,17 +1653,17 @@ class Mesh(metaclass = MeshMeta):
             if self.geom:
                 self.geompyD = None
                 try:
-                    so = salome.ObjectToSObject( self.geom )
-                    comp = so.GetFatherComponent()
-                    if comp.ComponentDataType() == "SHAPERSTUDY":
-                        import shaperBuilder
-                        self.geompyD = shaperBuilder.New()
+                    if salome.sg.hasDesktop():
+                        so = salome.ObjectToSObject( self.geom )
+                        comp = so.GetFatherComponent()
+                        if comp.ComponentDataType() == "SHAPERSTUDY":
+                            import shaperBuilder
+                            self.geompyD = shaperBuilder.New()
                 except:
                     pass
                 if not self.geompyD:
                     self.geompyD = self.geom.GetGen()
                 pass
-        pass
 
     def GetMesh(self):
         """
@@ -2653,7 +2653,15 @@ class Mesh(metaclass = MeshMeta):
         elif tgeo == "SOLID" or tgeo == "COMPSOLID":
             typ = VOLUME
         elif tgeo == "COMPOUND":
-            sub = self.geompyD.SubShapeAll( shape, self.geompyD.ShapeType["SHAPE"])
+            try:
+              sub = self.geompyD.SubShapeAll( shape, self.geompyD.ShapeType["SHAPE"])
+            except:
+              # try to get the SHAPERSTUDY engine directly, because GetGen does not work because of
+              # simplification of access in geomBuilder: omniORB.registerObjref
+              from SHAPERSTUDY_utils import getEngine
+              gen = getEngine()
+              if gen:
+                sub = gen.GetIShapesOperations().ExtractSubShapes(shape, self.geompyD.ShapeType["SHAPE"], False)
             if not sub:
                 raise ValueError("_groupTypeFromShape(): empty geometric group or compound '%s'" % GetName(shape))
             return self._groupTypeFromShape( sub[0] )