From: eap Date: Wed, 27 Jan 2021 10:10:14 +0000 (+0300) Subject: bos #20543 EDF 22638 - hyperpatch with CADSurf X-Git-Tag: V9_7_0a1~32 X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=commitdiff_plain;h=86007b0b5d945f2aeaadd555b9913df0b57790f9 bos #20543 EDF 22638 - hyperpatch with CADSurf A nice solution for pb of dealing with SHAPERSTUDY objects has been found --- diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index c99e95821..7bdc59eb4 100644 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -1651,7 +1651,17 @@ class Mesh(metaclass = MeshMeta): #self.mesh.Register() self.geom = self.mesh.GetShapeToMesh() if self.geom: - self.geompyD = self.geom.GetGen() + self.geompyD = None + try: + 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 @@ -2642,15 +2652,7 @@ class Mesh(metaclass = MeshMeta): elif tgeo == "SOLID" or tgeo == "COMPSOLID": typ = VOLUME elif tgeo == "COMPOUND": - 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) + sub = self.geompyD.SubShapeAll( shape, self.geompyD.ShapeType["SHAPE"]) if not sub: raise ValueError("_groupTypeFromShape(): empty geometric group or compound '%s'" % GetName(shape)) return self._groupTypeFromShape( sub[0] ) diff --git a/src/SMESH_SWIG/smesh_algorithm.py b/src/SMESH_SWIG/smesh_algorithm.py index e9867dc4e..62495cc49 100644 --- a/src/SMESH_SWIG/smesh_algorithm.py +++ b/src/SMESH_SWIG/smesh_algorithm.py @@ -340,20 +340,9 @@ class Mesh_Algorithm: if faces and isinstance( faces[0], geomBuilder.GEOM._objref_GEOM_Object ): faceIDs = [] for shape in faces: - try: - ff = self.mesh.geompyD.SubShapeAll( shape, self.mesh.geompyD.ShapeType["FACE"] ) - for f in ff: + ff = self.mesh.geompyD.SubShapeAll( shape, self.mesh.geompyD.ShapeType["FACE"] ) + for f in ff: faceIDs.append( self.mesh.geompyD.GetSubShapeID(self.mesh.geom, f)) - 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: - aShapeOp = gen.GetIShapesOperations() - ff = aShapeOp.ExtractSubShapes( shape, self.mesh.geompyD.ShapeType["FACE"], False) - for f in ff: - faceIDs.append( aShapeOp.GetSubShapeIndex( self.mesh.geom, f )) faces = faceIDs hyp = self.Hypothesis("ViscousLayers", [thickness, numberOfLayers, stretchFactor, faces, isFacesToIgnore], @@ -403,20 +392,9 @@ class Mesh_Algorithm: if edges and isinstance( edges[0], geomBuilder.GEOM._objref_GEOM_Object ): edgeIDs = [] for shape in edges: - try: ee = self.mesh.geompyD.SubShapeAll( shape, self.mesh.geompyD.ShapeType["EDGE"]) for e in ee: edgeIDs.append( self.mesh.geompyD.GetSubShapeID( self.mesh.geom, e )) - 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: - aShapeOp = gen.GetIShapesOperations() - ee = aShapeOp.ExtractSubShapes( shape, self.mesh.geompyD.ShapeType["EDGE"], False) - for e in ee: - edgeIDs.append( aShapeOp.GetSubShapeIndex( self.mesh.geom, e )) edges = edgeIDs hyp = self.Hypothesis("ViscousLayers2D", [thickness, numberOfLayers, stretchFactor, edges, isEdgesToIgnore], @@ -440,18 +418,6 @@ class Mesh_Algorithm: for i in reverseList: if isinstance( i, int ): s = geompy.GetSubShape(self.mesh.geom, [i]) - - #bos #20082 begin: - if s is None and type(self.geom) != geomBuilder.GEOM._objref_GEOM_Object: - # try to get the SHAPERSTUDY engine directly, as GetGen does not work because of - # simplification of access in geomBuilder: omniORB.registerObjref - from SHAPERSTUDY_utils import getEngine - gen = getEngine() - if gen: - aShapeOp = gen.GetIShapesOperations() - s = aShapeOp.GetSubShape(self.mesh.geom, i) - #bos #20082 end - if s.GetShapeType() != geomBuilder.GEOM.EDGE: raise TypeError("Not EDGE index given") resList.append( i )