#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Test000 Checks the availability of the external plugins : 1 NETGENPLUGIN 2 GMSHPLUGIN 3 MG-CADSURF (BLSURFPLUGIN) 4 MG-TETRA (GHS3DPLUGIN) 5 MG-HEXA (HEXOTICPLUGIN) 6 MG-HYBRID (HYBRIDPLUGIN) Copyright EDF R&D 2017 """ __revision__ = "V1.0" # # Computation of the meshes: T/F ComputeMeshes = True import salome import platform salome.salome_init_without_session() theStudy = salome.myStudy # import iparameters IPAR = iparameters.IParameters(salome.myStudy.GetCommonParameters("Interface Applicative", 1)) # fill list AP_MODULES_LIST IPAR.append("AP_MODULES_LIST", "Geometry") IPAR.append("AP_MODULES_LIST", "Mesh") ERROR = 0 MESSAGE = "" # while not ERROR : ### ### A. GEOM component ### import GEOM from salome.geom import geomBuilder geompy = geomBuilder.New() O = geompy.MakeVertex(0, 0, 0, "0") OX = geompy.MakeVectorDXDYDZ(1, 0, 0, "OX") OY = geompy.MakeVectorDXDYDZ(0, 1, 0, "OY") OZ = geompy.MakeVectorDXDYDZ(0, 0, 1, "OZ") BOX = geompy.MakeBoxDXDYDZ(200, 200, 200, "BOX") ### ### B. SMESH component ### import SMESH from salome.smesh import smeshBuilder smesh = smeshBuilder.New() # B.1. NETGEN TEXTE = "NETGEN_1D2D3D" MESH_1 = smesh.Mesh(BOX) smesh.SetName(MESH_1.GetMesh(), "M_"+TEXTE) try : NETGEN_2D3D = MESH_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D) except : MESSAGE += "\nImpossible d'utiliser "+TEXTE ERROR += 1 else : if ComputeMeshes : smesh.SetName(NETGEN_2D3D.GetAlgorithm(), TEXTE) OK_COMPUTE = MESH_1.Compute() if not OK_COMPUTE : MESSAGE += "\nErreur avec "+TEXTE ERROR += 1 else : print(TEXTE+": OK") # B.2. Gmsh # GMSH for windows not yet implemented BOS #18709 if platform.system() != "Windows" : TEXTE = "Gmsh" MESH_2 = smesh.Mesh(BOX) smesh.SetName(MESH_2.GetMesh(), "M_"+TEXTE) try : GMSH = MESH_2.Tetrahedron(algo=smeshBuilder.GMSH) except : MESSAGE += "\nImpossible d'utiliser "+TEXTE ERROR += 1 else : if ComputeMeshes : smesh.SetName(GMSH.GetAlgorithm(), TEXTE) OK_COMPUTE = MESH_2.Compute() if not OK_COMPUTE : MESSAGE += "\nErreur avec "+TEXTE ERROR += 1 else : print(TEXTE+": OK") else : print("Skipping B.2 on windows") # B.3. MG_CADSurf TEXTE = "MG_CADSurf" MESH_3 = smesh.Mesh(BOX) smesh.SetName(MESH_3.GetMesh(), "M_"+TEXTE) try : MG_CADSurf = MESH_3.Triangle(algo=smeshBuilder.MG_CADSurf) except : MESSAGE += "\nImpossible d'utiliser "+TEXTE ERROR += 1 # On arrete tout en cas de problème car les suivants en dépendent break else : if ComputeMeshes : smesh.SetName(MG_CADSurf.GetAlgorithm(), TEXTE) OK_COMPUTE = MESH_3.Compute() if not OK_COMPUTE : MESSAGE += "\nErreur avec "+TEXTE ERROR += 1 else : print(TEXTE+": OK") # B.4. MG_Tetra TEXTE = "MG_Tetra" MESH_4 = smesh.Mesh(BOX) smesh.SetName(MESH_4.GetMesh(), "M_"+TEXTE) MG_CADSurf_Te = MESH_4.Triangle(algo=smeshBuilder.MG_CADSurf) try : MG_Tetra = MESH_4.Tetrahedron(algo=smeshBuilder.MG_Tetra) except : MESSAGE += "\nImpossible d'utiliser "+TEXTE ERROR += 1 else : if ComputeMeshes : smesh.SetName(MG_Tetra.GetAlgorithm(), TEXTE) OK_COMPUTE = MESH_4.Compute() if not OK_COMPUTE : MESSAGE += "\nErreur avec "+TEXTE ERROR += 1 else : print(TEXTE+": OK") # B.5. MG_Hexa TEXTE = "MG_Hexa" MESH_5 = smesh.Mesh(BOX) smesh.SetName(MESH_5.GetMesh(), "M_"+TEXTE) MG_CADSurf_He = MESH_5.Triangle(algo=smeshBuilder.MG_CADSurf) try : MG_Hexa = MESH_5.Hexahedron(algo=smeshBuilder.MG_Hexa) except : MESSAGE += "\nImpossible d'utiliser "+TEXTE ERROR += 1 else : if ComputeMeshes : smesh.SetName(MG_Hexa.GetAlgorithm(), TEXTE) OK_COMPUTE = MESH_5.Compute() if not OK_COMPUTE : MESSAGE += "\nErreur avec "+TEXTE ERROR += 1 else : print(TEXTE+": OK") # B.6. MG_Hybrid TEXTE = "MG_Hybrid" MESH_6 = smesh.Mesh(BOX) smesh.SetName(MESH_6.GetMesh(), "M_"+TEXTE) MG_CADSurf_Hy = MESH_6.Triangle(algo=smeshBuilder.MG_CADSurf) try : MG_Hybrid = MESH_6.Tetrahedron(algo=smeshBuilder.HYBRID) except : MESSAGE += "\nImpossible d'utiliser "+TEXTE ERROR += 1 else : if ComputeMeshes : smesh.SetName(MG_Hybrid.GetAlgorithm(), TEXTE) OK_COMPUTE = MESH_6.Compute() if not OK_COMPUTE : MESSAGE += "\nErreur avec "+TEXTE ERROR += 1 else : print(TEXTE+": OK") break ### ### C. End ### if ERROR : raise Exception("\n\nNombre d'erreurs : %d" % ERROR + MESSAGE + "\n") else : print("\nAucun problème\n")