# -*- coding: utf-8 -*- # Copyright (C) 2014-2021 EDF R&D # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # import logging from .geomsmesh import geompy # ----------------------------------------------------------------------------- # --- teste si l'opération de partition a produit une modification def checkDecoupePartition(shapes, part): """ Teste si l'opération de partition a produit une découpe (plus de shapes dans la partition). Résultat non garanti si recouvrement des shapes d'origine. @param shapes : liste des shapes d'origine @param part : résultat de la partition @return True si la partition a découpé les shapes d'origine """ logging.info('start') # TODO: ShapeInfo donne des résultats faux (deux faces au lieu de une) isPart = False orig = {} for shape in shapes: info = geompy.ShapeInfo(shape) logging.debug("shape info %s", info) for k in ['VERTEX', 'EDGE', 'FACE', 'SOLID']: if k in list(orig.keys()): orig[k] += info[k] else: orig[k] = info[k] logging.debug("original shapes info %s", orig) info = geompy.ShapeInfo(part) logging.debug("partition info %s", info) for k in ['VERTEX', 'EDGE', 'FACE', 'SOLID']: if orig[k] < info[k]: isPart = True break logging.debug("partition modifie l'original %s", isPart) return isPart