From: GERALD NICOLAS Date: Mon, 18 Jan 2021 08:12:03 +0000 (+0100) Subject: Update of the documentation of the plugin "blocfissure" X-Git-Tag: V9_7_0a1~33 X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=commitdiff_plain;h=0f2942f29e0310774863a23499f56618e7c9b46f;hp=9e3db5ed1d2fc44ca6560ae3fd5570b7bca6323f Update of the documentation of the plugin "blocfissure" Merge branch 'gni/documentation' --- diff --git a/src/Tools/blocFissure/CasTests/cubeAngle.py b/src/Tools/blocFissure/CasTests/cubeAngle.py index fc49764aa..dd2559d16 100644 --- a/src/Tools/blocFissure/CasTests/cubeAngle.py +++ b/src/Tools/blocFissure/CasTests/cubeAngle.py @@ -73,7 +73,7 @@ class cubeAngle(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportFile(os.path.join(gmu.pathBloc, "materielCasTests/CubeAngleFiss.brep"), "BREP") + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/CubeAngleFiss.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [3]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/cylindre.py b/src/Tools/blocFissure/CasTests/cylindre.py index 6e87f7324..90b45fdda 100644 --- a/src/Tools/blocFissure/CasTests/cylindre.py +++ b/src/Tools/blocFissure/CasTests/cylindre.py @@ -77,7 +77,7 @@ class cylindre(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportFile(os.path.join(gmu.pathBloc, "materielCasTests/FissInCylindre2.brep"), "BREP") + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/FissInCylindre2.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [6]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/cylindre_2.py b/src/Tools/blocFissure/CasTests/cylindre_2.py index 07350a9cb..858f80d44 100644 --- a/src/Tools/blocFissure/CasTests/cylindre_2.py +++ b/src/Tools/blocFissure/CasTests/cylindre_2.py @@ -49,7 +49,7 @@ class cylindre_2(cylindre): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportFile(os.path.join(gmu.pathBloc, "materielCasTests/FissInCylindre.brep"), "BREP") + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/FissInCylindre.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [3]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/ellipse_1.py b/src/Tools/blocFissure/CasTests/ellipse_1.py index 3a0e38127..94e8f0bd3 100644 --- a/src/Tools/blocFissure/CasTests/ellipse_1.py +++ b/src/Tools/blocFissure/CasTests/ellipse_1.py @@ -81,7 +81,7 @@ class ellipse_1(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportFile(os.path.join(gmu.pathBloc, "materielCasTests/ellipse1.brep"), "BREP") + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/ellipse1.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [3]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/ellipse_2.py b/src/Tools/blocFissure/CasTests/ellipse_2.py index d4a1a2281..4947fbbd2 100644 --- a/src/Tools/blocFissure/CasTests/ellipse_2.py +++ b/src/Tools/blocFissure/CasTests/ellipse_2.py @@ -53,7 +53,7 @@ class ellipse_2(ellipse_1): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportFile(os.path.join(gmu.pathBloc, "materielCasTests/ellipse1_pb.brep"), "BREP") + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/ellipse1_pb.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [3]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py b/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py index cbde24243..5ed364725 100644 --- a/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py +++ b/src/Tools/blocFissure/CasTests/eprouvetteCourbe.py @@ -75,7 +75,7 @@ class eprouvetteCourbe(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportFile(os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteCourbeFiss.brep"), "BREP") + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteCourbeFiss.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [8]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/eprouvetteDroite.py b/src/Tools/blocFissure/CasTests/eprouvetteDroite.py index fb702c9b3..b33da9ee8 100644 --- a/src/Tools/blocFissure/CasTests/eprouvetteDroite.py +++ b/src/Tools/blocFissure/CasTests/eprouvetteDroite.py @@ -77,7 +77,7 @@ class eprouvetteDroite(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportFile(os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteDroiteFiss_1.brep"), "BREP") + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteDroiteFiss_1.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [8]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py b/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py index 5ad1370dd..3ab9196f5 100644 --- a/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py +++ b/src/Tools/blocFissure/CasTests/eprouvetteDroite_2.py @@ -53,7 +53,7 @@ class eprouvetteDroite_2(eprouvetteDroite): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportFile(os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteDroiteFiss_2.brep"), "BREP") + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/EprouvetteDroiteFiss_2.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [10]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/execution_Cas.py b/src/Tools/blocFissure/CasTests/execution_Cas.py index 594429469..79b1f5add 100644 --- a/src/Tools/blocFissure/CasTests/execution_Cas.py +++ b/src/Tools/blocFissure/CasTests/execution_Cas.py @@ -32,134 +32,137 @@ initLog.setVerbose() # ---tous les cas en sequence, ou les cas selectionnés ... runall = True if runall: - torun = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,] -else: #prob 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27 - torun = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,] + torun = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] +else: #prob 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29 + torun = [ 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # ----------------------------------------------------------------------------------------------- from blocFissure.gmu import geomsmesh from blocFissure.gmu.casStandard import casStandard -problemes = [] +problemes = list() cas=0 -from blocFissure.CasTests.fissure_Coude import fissure_Coude -problemes.append(fissure_Coude(cas)) +from blocFissure.CasTests.cubeAngle import cubeAngle +problemes.append(cubeAngle(cas)) -cas=1 -from blocFissure.CasTests.faceGauche import faceGauche -problemes.append(faceGauche(cas)) +cas+=1 +from blocFissure.CasTests.cubeAngle2 import cubeAngle2 +problemes.append(cubeAngle2(cas)) -cas=2 -from blocFissure.CasTests.faceGauche_2 import faceGauche_2 -problemes.append(faceGauche_2(cas)) +cas+=1 +from blocFissure.CasTests import cubeCoin +problemes.append(casStandard(cubeCoin.dicoParams, cubeCoin.referencesMaillageFissure, cas)) -cas=3 -from blocFissure.CasTests.ellipse_1 import ellipse_1 -problemes.append(ellipse_1(cas)) +cas+=1 +from blocFissure.CasTests import cubeMilieu +problemes.append(casStandard(cubeMilieu.dicoParams, cubeMilieu.referencesMaillageFissure, cas)) -cas=4 -from blocFissure.CasTests.fissure_Coude_4 import fissure_Coude_4 -problemes.append(fissure_Coude_4(cas)) +cas+=1 +from blocFissure.CasTests import cubeTransverse +problemes.append(casStandard(cubeTransverse.dicoParams, cubeTransverse.referencesMaillageFissure, cas)) -cas=5 +cas+=1 from blocFissure.CasTests.cylindre import cylindre problemes.append(cylindre(cas)) -cas=6 +cas+=1 from blocFissure.CasTests.cylindre_2 import cylindre_2 problemes.append(cylindre_2(cas)) -cas=7 +cas+=1 +from blocFissure.CasTests import disquePerce +problemes.append(casStandard(disquePerce.dicoParams, disquePerce.referencesMaillageFissure, cas)) + +cas+=1 +from blocFissure.CasTests.ellipse_1 import ellipse_1 +problemes.append(ellipse_1(cas)) + +cas+=1 +from blocFissure.CasTests.ellipse_2 import ellipse_2 +problemes.append(ellipse_2(cas)) + +cas+=1 from blocFissure.CasTests.eprouvetteCourbe import eprouvetteCourbe problemes.append(eprouvetteCourbe(cas)) -cas=8 +cas+=1 from blocFissure.CasTests.eprouvetteDroite import eprouvetteDroite problemes.append(eprouvetteDroite(cas)) -cas=9 +cas+=1 from blocFissure.CasTests.eprouvetteDroite_2 import eprouvetteDroite_2 problemes.append(eprouvetteDroite_2(cas)) -cas=10 -from blocFissure.CasTests.cubeAngle import cubeAngle -problemes.append(cubeAngle(cas)) +cas+=1 +from blocFissure.CasTests.faceGauche import faceGauche +problemes.append(faceGauche(cas)) + +cas+=1 +from blocFissure.CasTests.faceGauche_2 import faceGauche_2 +problemes.append(faceGauche_2(cas)) + +cas+=1 +from blocFissure.CasTests.fissure_Coude import fissure_Coude +problemes.append(fissure_Coude(cas)) + +cas+=1 +from blocFissure.CasTests.fissure_Coude_4 import fissure_Coude_4 +problemes.append(fissure_Coude_4(cas)) -cas=11 +cas+=1 from blocFissure.CasTests.fissureCoude_1 import fissureCoude_1 problemes.append(fissureCoude_1(cas)) -cas=12 +cas+=1 from blocFissure.CasTests.fissureCoude_2 import fissureCoude_2 problemes.append(fissureCoude_2(cas)) -cas=13 +cas+=1 from blocFissure.CasTests.fissureCoude_3 import fissureCoude_3 problemes.append(fissureCoude_3(cas)) -cas=14 +cas+=1 +from blocFissure.CasTests.fissure_Coude_4 import fissure_Coude_4 +problemes.append(fissure_Coude_4(cas)) + +cas+=1 from blocFissure.CasTests.fissureCoude_4 import fissureCoude_4 problemes.append(fissureCoude_4(cas)) -cas=15 +cas+=1 from blocFissure.CasTests.fissureCoude_5 import fissureCoude_5 problemes.append(fissureCoude_5(cas)) -cas=16 -from blocFissure.CasTests.ellipse_2 import ellipse_2 -problemes.append(ellipse_2(cas)) - -cas=17 -from blocFissure.CasTests.cubeAngle2 import cubeAngle2 -problemes.append(cubeAngle2(cas)) - -cas=18 -from blocFissure.CasTests import disquePerce -problemes.append(casStandard(disquePerce.dicoParams, disquePerce.referencesMaillageFissure, cas)) - -cas=19 +cas+=1 from blocFissure.CasTests.fissureCoude_6 import fissureCoude_6 problemes.append(fissureCoude_6(cas)) -cas=20 +cas+=1 from blocFissure.CasTests.fissureCoude_7 import fissureCoude_7 problemes.append(fissureCoude_7(cas)) -cas=21 +cas+=1 from blocFissure.CasTests.fissureCoude_8 import fissureCoude_8 problemes.append(fissureCoude_8(cas)) -cas=22 +cas+=1 from blocFissure.CasTests.fissureCoude_9 import fissureCoude_9 problemes.append(fissureCoude_9(cas)) -cas=23 +cas+=1 from blocFissure.CasTests.fissureCoude_10 import fissureCoude_10 problemes.append(fissureCoude_10(cas)) -cas=24 +cas+=1 from blocFissure.CasTests.vis_1 import vis_1 problemes.append(vis_1(cas)) -cas=25 -from blocFissure.CasTests import cubeCoin -problemes.append(casStandard(cubeCoin.dicoParams, cubeCoin.referencesMaillageFissure, cas)) - -cas=26 -from blocFissure.CasTests import cubeMilieu -problemes.append(casStandard(cubeMilieu.dicoParams, cubeMilieu.referencesMaillageFissure, cas)) - -cas=27 -from blocFissure.CasTests import cubeTransverse -problemes.append(casStandard(cubeTransverse.dicoParams, cubeTransverse.referencesMaillageFissure, cas)) - - -for i in range(len(problemes)): - if torun[i]: - logging.critical("=== Execution cas %s", i) +for iaux, cas in enumerate(problemes): + if torun[iaux]: + logging.critical("=== Execution cas {}".format(iaux)) try: - problemes[i].executeProbleme() + cas.executeProbleme() except: traceback.print_exc() print("---------------------------------------------------------------------") diff --git a/src/Tools/blocFissure/CasTests/faceGauche.py b/src/Tools/blocFissure/CasTests/faceGauche.py index 44e5d62e9..c3fecb94b 100644 --- a/src/Tools/blocFissure/CasTests/faceGauche.py +++ b/src/Tools/blocFissure/CasTests/faceGauche.py @@ -75,7 +75,7 @@ class faceGauche(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportFile(os.path.join(gmu.pathBloc, "materielCasTests/faceGaucheFiss.brep"), "BREP") + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/faceGaucheFiss.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [6]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/faceGauche_2.py b/src/Tools/blocFissure/CasTests/faceGauche_2.py index a1f4e0d3f..f12066e9d 100644 --- a/src/Tools/blocFissure/CasTests/faceGauche_2.py +++ b/src/Tools/blocFissure/CasTests/faceGauche_2.py @@ -76,7 +76,7 @@ class faceGauche_2(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportFile(os.path.join(gmu.pathBloc, "materielCasTests/faceGauche2FissCoupe.brep"), "BREP") + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/faceGauche2FissCoupe.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [14, 9]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/CasTests/vis_1.py b/src/Tools/blocFissure/CasTests/vis_1.py index ad6d90b3c..65dcedebf 100644 --- a/src/Tools/blocFissure/CasTests/vis_1.py +++ b/src/Tools/blocFissure/CasTests/vis_1.py @@ -75,7 +75,7 @@ class vis_1(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportFile(os.path.join(gmu.pathBloc, "materielCasTests/visFiss.brep"), "BREP") + shellFiss = geompy.ImportBREP(os.path.join(gmu.pathBloc, "materielCasTests/visFiss.brep")) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, [6, 8]) geompy.addToStudy( shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/README b/src/Tools/blocFissure/README index 97e3d10ac..ef79e0dfd 100644 --- a/src/Tools/blocFissure/README +++ b/src/Tools/blocFissure/README @@ -1,4 +1,3 @@ - Exécution des exemples et cas tests : ===================================== @@ -7,7 +6,7 @@ Exécution des exemples et cas tests : ou dans une console Python avec l'environnement SALOME (salome shell) # les shapes et fichiers med nécessaires aux tests sont créés dans - ${SMESH_ROOT_DIR}/lib/python2.7/site-packages/salome/blocFissure/CasTests + ${SMESH_ROOT_DIR}/lib/python3.6/site-packages/salome/blocFissure/CasTests # les maillages fissurés sont écrits dans le répertoire d'exécution. @@ -21,9 +20,10 @@ from blocFissure.materielCasTests import genereMateriel ------------------- from blocFissure import exemple +exemple(0).executeProbleme() -# exécution des cas tests (long: 1/2 heure) -------------------------------------------- +# exécution de tous les cas tests (long : 1/2 heure) +---------------------------------------------------- from blocFissure.CasTests import execution_Cas @@ -32,7 +32,7 @@ from blocFissure.CasTests import execution_Cas Mauvaise détection d'arête vive avec GetInPlace : cas 7, 24 -Le maillage longitudinal du pipe peut creer des mailles de faible épaisseur +Le maillage longitudinal du pipe peut créer des mailles de faible épaisseur à une des extrémités : le maillage en triangles des faces de fissure et de peau peut être moche au voisinage, de même que les tétraèdres qui s'appuient dessus. (2,3,16,26 ?) diff --git a/src/Tools/blocFissure/doc/faq.rst b/src/Tools/blocFissure/doc/faq.rst index 03e5ff06c..96a8694f3 100644 --- a/src/Tools/blocFissure/doc/faq.rst +++ b/src/Tools/blocFissure/doc/faq.rst @@ -4,16 +4,16 @@ FAQ ####################### - - Does Bloc Fissure works on a 2D mesh ? + - Does Bloc Fissure works on a 2D mesh? No, Bloc Fissure works only for 3D meshes. However, the user can extrude the 2D mesh to a 3D mesh, insert a crack and then extract a surface containing the crack. - - Can I insert a crack in a symmetry plan ? + - Can I insert a crack in a symmetry plan? No, the user must insert the crack without using the symmetry plan passing through the crack lips. - - I can't have Bloc Fissure working, it raises a pure python error, what can I do ? + - I can't have Bloc Fissure working, it raises a pure python error, what can I do? -Bloc Fissure has some error messages for the most commonly encountered misuses. If the program raises a pure python error, it means that this error is rare or has not been encountered by the programmers yet. +Bloc Fissure has some error messages for the most commonly encountered misuses. If the program raises a pure python error, it means that this error is rare or has not been encountered by the programmers yet. Contact the bugtracker. -Still, either the case can't be treated using Bloc Fissure or the insertion procedure was not fully respected. In the first case, use Zcracks (soon available). In the second case, see the :ref:`tutorial `. \ No newline at end of file +Still, either the case can't be treated using Bloc Fissure or the insertion procedure was not fully respected. In the first case, use Zcracks. In the second case, see the :ref:`tutorial `. diff --git a/src/Tools/blocFissure/doc/introduction.rst b/src/Tools/blocFissure/doc/introduction.rst index 6b9111be5..b1d5ddf0f 100644 --- a/src/Tools/blocFissure/doc/introduction.rst +++ b/src/Tools/blocFissure/doc/introduction.rst @@ -9,14 +9,14 @@ Introduction :scale: 50 :align: center -« Bloc Fissure » is a SMESH extension used to insert cracks in existing meshes. It has the advantage of meshing the crack front and the surrounding elements with a tore containing ruled elements. The rest of the crack contains a free mesh. The tore is made of prism elements (extruded triangles connected to the crack front) and hexahedrons elsewhere. The main interests of such type of mesh are: +« Bloc Fissure » is an extension of SMESH used to insert cracks in an existing mesh. It has the advantage of meshing the front of the crack and the surrounding elements with a torus containing ruled elements. The rest of the crack contains a free mesh. The torus consists of prismatic elements (extruded triangles connected to the crack front) and hexahedrons elsewhere. The main interests of this type of mesh are as follows : - Having sets of Gauss points in plans perpendicular to the crack front in order to calculate stress field without any interpolation, which would be the case on free mesh. It avoids strong oscillations along the crack front on the energy release rate and stress intensity factors calculated by `extrapolation `_ or `G-theta method `_. -- Decrease the element number. In fracture mechanics, a fine mesh is necessary radially to the crack front and more rarely along the front axis. Yet hexahedrons and prisms elements can have geometrical aspect ratios up to 20 without major matrix conditioning problems. On the contrary, tetrahedrons of free meshes are generally limited to aspect ratios around 3. The use of very elongated elements is then no longer a limitation and number of elements can be significantly decreased. +- Decrease in the number of elements. In fracture mechanics, a fine mesh is required radially at the fissure front and more rarely in the axis of the front. Hexhedral and prismatic elements can have geometric aspect ratios of up to 20 without major matrix conditioning problems. On the other hand, the tetrahedrons of free meshes are generally limited to aspect ratios of about 3. The use of very elongated elements is then no longer a limitation and the number of elements can be considerably reduced. -« Bloc Fissure » is not applicable every time. It is highly recommended to read the section on :ref:`general principles ` to see how « Bloc Fissure » works. This section also gives the functional scope and the :ref:`limitations ` of the tool. Finally, this part deals with cautions that the user must take using « Bloc Fissure ». The user can also refers himself to the :ref:`tutorial ` to get some advice on how to make « Bloc Fissure » works. +« Bloc Fissure » is not always usable. It is highly recommended to read the section on :ref:`general principles ` to see how « Bloc Fissure » works. This section also gives the functional scope and the :ref:`limitations ` of the tool. Finally, this part deals with cautions that the user must take using « Bloc Fissure ». The user can also refers himself to the :ref:`tutorial ` to get some advice on how to make « Bloc Fissure » works. -If « Bloc Fissure » can’t be used on a case, the user may switch to the other FEM insertion tool Zcracks in SALOME (soon available). It’s more robust and has less limitations but the result is a cracked free mesh with tetrahedral elements. Another possibility is the `X-FEM method `_ method in SALOME_MECA. +If « Bloc Fissure » cannot be used on a case, the user can switch to the other Zcracks insertion tool in SALOME. It is more robust and has fewer limitations, but the result is a free mesh of the crack with tetrahedral elements. Another possibility is the `X-FEM method `_ method in SALOME_MECA. diff --git a/src/Tools/blocFissure/doc/pipes.rst b/src/Tools/blocFissure/doc/pipes.rst index 15d369bc4..adac58384 100644 --- a/src/Tools/blocFissure/doc/pipes.rst +++ b/src/Tools/blocFissure/doc/pipes.rst @@ -100,5 +100,16 @@ The GUI is a window with mandatory and optional parameters. Optional parameters - **Sauver**: save a .dic file with the active parameters +Example +-------------------- + +.. image:: images/coude_0.png + :align: center + :alt: Crak in a bended pipe + :scale: 100 + +This example can be computed using this file for the data: + + * :download:`data for a bended puipe <../ihm/dialogFissureCoude.dic>` diff --git a/src/Tools/blocFissure/doc/principles.rst b/src/Tools/blocFissure/doc/principles.rst index 9ccce30f4..ae223297a 100644 --- a/src/Tools/blocFissure/doc/principles.rst +++ b/src/Tools/blocFissure/doc/principles.rst @@ -4,19 +4,19 @@ General principles ################### -« Bloc Fissure » is based on GEOM module geometrical Boolean operations. The initial structure being a mesh, a conversion from mesh to geometry becomes necessary. This operation is called extraction and reconstruction because it is only applied to a small part of the mesh, which is around the crack. The extracted mesh is called the « Box » and only external faces of this mesh are kept and converted into several geometrical surfaces. This operation implies some limitations on the input mesh. When all the Booleans operations are done, the geometry that contains the crack is meshed again with a ruled mesh in the tore and a free mesh elsewhere. +« Bloc Fissure » is based on GEOM module geometrical Boolean operations. The initial structure being a mesh, a conversion from mesh to geometry becomes necessary. This operation is called extraction and reconstruction because it is only applied to a small part of the mesh, which is around the crack. The extracted mesh is called the « Box » and only external faces of this mesh are kept and converted into several geometrical surfaces. This operation implies some limitations on the input mesh. When all the Boolean operations are done, the geometry that contains the crack is meshed again with a ruled mesh in the torus and a free mesh elsewhere. In order to illustrate « Bloc Fissure » principle, the simple case of a crack insertion in a parallelepipedic specimen is detailed step by step: 1. The first step consists in loading the structure mesh (a) as well as the crack surface geometry (b). -2. The crack is then meshed (c). A length criterion defines the size of the extracted « Box ». This length is called the length of influence. All elements having a node within this zone is included in the « Box ». A second operation adds elements in the Box in order to have continuous faces (d). +2. The crack is then meshed (c). A length criterion defines the size of the extracted « Box ». This length is called the length of influence. Every element having a node within this zone is included in the « Box ». A second operation adds elements in the Box in order to have continuous faces (d). -3. A geometrical Box is reconstructed from the extracted Box mesh. The reconstruction is limited to faces which intersect the crack (e). A tore is created following the crack front (f). +3. A geometrical Box is reconstructed from the extracted Box mesh. The reconstruction is limited to faces which intersect the crack (e). A torus is created following the crack front (f). -4. The geometrical Box is then cut by the tore and the crack (g). Several plans are created in order to partition the box and the tore into radiuses for the future mesh (h). +4. The geometrical Box is then cut by the torus and the crack (g). Several plans are created in order to partition the box and the torus into radiuses for the future mesh (h). -5. The Box, the crack and the tore are meshed on their external surface (i) and then filled with volumetric elements (j). Crack nodes are doubled to « open » crack lips. +5. The Box, the crack and the torus are meshed on their external surface (i) and then filled with volumetric elements (j). Crack nodes are doubled to « open » crack lips. 6. Finally the cracked box mesh is reinserted in the initial mesh ensuring the connectivity (k). @@ -64,7 +64,7 @@ The length of influence is important. It defines the size of the extracted Box. :width: 600 :align: center -All elements having a node at a smaller distance to the crack than the length of influence is selected. Then a filling algorithm fulfill the Box with elements to get a Box. The Box is not limited to rectangular shapes. See the section on :ref:`test cases ` to see examples. +Every element having a node at a smaller distance to the crack than the length of influence is selected. Then a filling algorithm fulfill the Box with elements to get a Box. The Box is not limited to rectangular shapes. See the section on :ref:`test cases ` to see examples. .. _recommendations: @@ -86,7 +86,7 @@ Surface crack geometry shall exceed from the structure mesh. Boolean operation c 4) **Crack front edges must exceed from the structure:** -For similar reasons, crack front edges must exceed from the structure mesh. The user shall be really careful when fusing crack front edges within the structure with edges outside of the structure because junction mustn’t be on the box external face. For example the following figure shows the bad and the good practice. In grew a 2D view of a structure to cut and in red the crack surface. Line 1 is the edge declared as the crack front. On the left case, Line 1 stops on the box boundary. Even if Line 1 is extended with Line 2 and 5, « Bloc Fissure» will fail. The good practice is to extend the Line 1 with the same shape. See how to extend the front edges in the :ref:`tutorials section ` +For similar reasons, crack front edges must exceed from the structure mesh. The user shall be really careful when fusing crack front edges within the structure with edges outside of the structure because junction mustn’t be on the box external face. For example the following figure shows the bad and the good practice. In grey a 2D view of a structure to cut and in red the crack surface. Line 1 is the edge declared as the crack front. On the left case, Line 1 stops on the box boundary. Even if Line 1 is extended with Line 2 and 5, « Bloc Fissure» will fail. The good practice is to extend the Line 1 with the same shape. See how to extend the front edges in the :ref:`tutorials section ` .. image:: images/schema_lignes1.png :scale: 80 diff --git a/src/Tools/blocFissure/doc/testcases.rst b/src/Tools/blocFissure/doc/testcases.rst index 47be3dc5e..f468d6696 100644 --- a/src/Tools/blocFissure/doc/testcases.rst +++ b/src/Tools/blocFissure/doc/testcases.rst @@ -4,7 +4,7 @@ Test cases ####################### -A base of 25 test cases ensures the proper functioning of « Bloc Fissure ». 12 cases are dedicated to :ref:`cracked bended pipes ` and the others 13 are for other :ref:`generic geometries `. They are shown here in order to illustrate cases on which « Bloc Fissure » works. +A base of 30 test cases guarantees the correct functioning of « Bloc Fissure ». 12 cases are dedicated to :ref:`cracked bended pipes ` and the others 13 are for other :ref:`generic geometries `. They are shown here in order to illustrate cases on which « Bloc Fissure » works. .. _genericTC: @@ -115,18 +115,30 @@ All 12 bended pipe test cases are not shown here because they are relatively sim | with an external crack | | +--------------------------------+----------------------------------------------+ +coude_0 can be computed using this file for the data: + + * :download:`data for a bended puipe <../ihm/dialogFissureCoude.dic>` + « Bloc Fissure » is very efficient for the case of bended pipes. The generation of the geometry and the crack insertion takes only around 15s. Running test cases ===================================== -In SALOME interface: +All the files for these test cases are stored in the directory of the installation of SALOME: + +``Salome-VXXXX_package-YY/modules/SMESH_VXXXX/lib/python3.6/site-packages/salome/blocFissure`` -0) **Generate med and breps files.** Once the files are generated, they are saved in SALOME source files. There is no need to generate them again:: +The test cases can be runned either through the python window of the SALOME GUI or with a python script. + +0) **Generate med and breps files.**:: from blocFissure.materielCasTests import genereMateriel -Then the user can either launch all test cases, several at once or just one : +Once the files are generated, they are saved into the directory of the installation of SALOME: + +``Salome-VXXXX_package-YY/modules/SMESH_VXXXX/lib/python3.6/site-packages/salome/blocFissure/materielCasTests`` + +There is no need to generate them again. 1) **To execute all test cases**:: @@ -134,37 +146,42 @@ Then the user can either launch all test cases, several at once or just one : 2) **To execute only selected test cases**: -modify execution_Cas.py file and change:: +modify the file ``execution_Cas.py`` and change:: runall = False. #old : True -And change from 0 to 1 of the number of the test you want to launch:: +And change from 0 to 1 of the index of the test you want to launch:: - torun = [ 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,] + torun = [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] then launch the test cases:: from blocFissure.CasTests import execution_Cas -3) **To execute only one test case**:: - - from blocFissure.CasTests.[TEST_CASE_NAME] import [TEST_CASE_NAME] - - [TEST_CASE_NAME](0).executeProbleme() - -[TEST_CASE_NAME] is the name of the test case in the following list. Note that the test cases fissureCoude_4 and fissure_Coude_4 are very similar. +The index of each test is the position of the test in the following table, from 0 for cubeAngle, 1 for cubeAngle2, +2 for cubeCoin... from top to bottom, then from left to right. +--------------------+--------------------+--------------------+-----------------+-----------------+ -| faceGauche | cylindre_2 | disquePerce | fissureCoude_3 | fissureCoude_6 | +| cubeAngle | cylindre_2 | eprouvetteDroite_2 | fissureCoude_3 | fissureCoude_8 | ++--------------------+--------------------+--------------------+-----------------+-----------------+ +| cubeAngle2 | disquePerce | faceGauche | fissureCoude_4 | fissureCoude_10 | +--------------------+--------------------+--------------------+-----------------+-----------------+ -| faceGauche_2 | eprouvetteCourbe | vis_1 | fissureCoude_4 | fissureCoude_7 | +| cubeCoin | ellipse_1 | faceGauche_2 | fissure_Coude_4 | fissureCoude_10 | +--------------------+--------------------+--------------------+-----------------+-----------------+ -| ellipse_1 | eprouvetteDroite | fissureCoude | fissure_Coude_4 | fissureCoude_8 | +| cubeMilieu | ellipse_2 | fissure_Coude | fissureCoude_5 | vis_1 | +--------------------+--------------------+--------------------+-----------------+-----------------+ -| ellipse_2 | cubeAngle | fissureCoude_1 | fissureCoude_5 | fissureCoude_9 | +| cubeTransverse | eprouvetteCourbe | fissureCoude_1 | fissureCoude_6 | | +--------------------+--------------------+--------------------+-----------------+-----------------+ -| cylindre | cubeAngle2 | fissureCoude_2 | fissureCoude_5 | fissureCoude_10 | +| cylindre | eprouvetteDroite | fissureCoude_2 | fissureCoude_7 | | +--------------------+--------------------+--------------------+-----------------+-----------------+ +3) **To execute only one test case**:: + + from blocFissure.CasTests.[TEST_CASE_NAME] import [TEST_CASE_NAME] + + [TEST_CASE_NAME](0).executeProbleme() + +[TEST_CASE_NAME] is the name of the test case in the previous list. Note that the test cases fissureCoude_4 and fissure_Coude_4 are very similar. + diff --git a/src/Tools/blocFissure/gmu/casStandard.py b/src/Tools/blocFissure/gmu/casStandard.py index 356d7c8bd..7f2994490 100644 --- a/src/Tools/blocFissure/gmu/casStandard.py +++ b/src/Tools/blocFissure/gmu/casStandard.py @@ -122,7 +122,7 @@ class casStandard(fissureGenerique): lgInfluence = shapeFissureParams['lgInfluence'] - shellFiss = geompy.ImportFile( self.dicoParams['brepFaceFissure'], "BREP") + shellFiss = geompy.ImportBREP( self.dicoParams['brepFaceFissure']) fondFiss = geompy.CreateGroup(shellFiss, geompy.ShapeType["EDGE"]) geompy.UnionIDs(fondFiss, self.dicoParams['edgeFissIds'] ) geomPublish(initLog.debug, shellFiss, 'shellFiss' ) diff --git a/src/Tools/blocFissure/ihm/fissureCoude.ui b/src/Tools/blocFissure/ihm/fissureCoude.ui index 577556942..f7dc76c23 100644 --- a/src/Tools/blocFissure/ihm/fissureCoude.ui +++ b/src/Tools/blocFissure/ihm/fissureCoude.ui @@ -169,10 +169,10 @@ - Paramètres optionnels de discretisation + Paramètres optionnels de discrétisation - Options de discretisation + Options de discrétisation @@ -347,7 +347,7 @@ - position + Position @@ -356,7 +356,7 @@ <html><head/><body><p>Fissure positionnée sur la face interne</p></body></html> - fissure interne + Fissure interne @@ -366,7 +366,7 @@ <html><head/><body><p>Fissure positionnée sur la face externe</p></body></html> - fissure externe + Fissure externe @@ -395,7 +395,7 @@ - forcer elliptique + Forcer elliptique @@ -513,7 +513,7 @@ - position longitudinale + Position longitudinale @@ -600,13 +600,13 @@ - maillage zone de fissure + Maillage zone de fissure - pipe rayonnant + Pipe rayonnant @@ -667,7 +667,7 @@ - <html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>Nombre de mailles (approximatif) le long de la ligne de fond de fissure.</p></body></html> + <html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>nombre de mailles (approximatif) le long de la ligne de fond de fissure.</p></body></html> 7 @@ -730,7 +730,7 @@ Paramètres optionnels de discrétisation - Options de discretisation + Options de discrétisation @@ -740,15 +740,15 @@ true - faces externes + Faces externes - aretes face fissure + Arêtes face fissure - + arete @@ -788,7 +788,7 @@ true - identification zone à remailler + Identification zone à remailler @@ -809,7 +809,7 @@ - distance influence + Distance influence @@ -914,7 +914,7 @@ - réinitialisation de tous les paramètres à leur valeur par défaut + Réinitialisation de tous les paramètres à leur valeur par défaut Reset @@ -924,7 +924,7 @@ - réinitialisation de tous les paramètres à leur valeur de la précédente éxécution + Réinitialisation de tous les paramètres à leur valeur de la précédente éxécution Précédent @@ -934,7 +934,7 @@ - réinitialisation des paramètres à partir d'un fichier préalablement sauvegardé + Réinitialisation des paramètres à partir d'un fichier préalablement sauvegardé Recharger @@ -944,7 +944,7 @@ - sauvegarde des paramètres dans un fichier à choisir + Sauvegarde des paramètres dans un fichier à choisir Sauver diff --git a/src/Tools/blocFissure/ihm/fissureGenerale.ui b/src/Tools/blocFissure/ihm/fissureGenerale.ui index 62fad0bbc..a924053af 100644 --- a/src/Tools/blocFissure/ihm/fissureGenerale.ui +++ b/src/Tools/blocFissure/ihm/fissureGenerale.ui @@ -14,13 +14,13 @@ Insertion de fissure dans un maillage sain - <html><head/><body><p>Insertion d'un maillage de fissure dans un maillage hexaédrique sain.</p><p>Le maillage sain est fourni sous forme de fichier Med.</p><p>La face de fissure est décrite par une géométrie dans un fichier brep.</p><p>La ou les arêtes de fond de fissure sont données par leurs index dans la face de fissure.</p><p>La procédure identfie des mailles saines à enlever et remailler, construit un maillage régulier rayonnant autour de la ligne de fond de fissure, reconstitue les faces externes en triangles, complète la zone à remailler en tétraèdres.</p></body></html> + <html><head/><body><p>Insertion d'un maillage de fissure dans un maillage hexaédrique sain.</p><p>Le maillage sain est fourni sous forme de fichier med.</p><p>La face de fissure est décrite par une géométrie dans un fichier brep.</p><p>La ou les arêtes de fond de fissure sont données par leurs index dans la face de fissure du point de vue de GEOM.</p><p>La procédure identifie des mailles saines à enlever et à remailler, construit un maillage régulier rayonnant autour de la ligne de fond de fissure, reconstitue les faces externes en triangles, complète la zone à remailler en tétraèdres.</p></body></html> - maillage sain et géometries de fissure + Maillage sain et géometries de fissure @@ -28,14 +28,14 @@ - index edges fond fissure + Index arêtes fond de fissure - <html><head/><body><p>Index des edges décrivant le fond de fissure, dans la face de fissure.</p><p>Sous forme d'une liste Python.</p><p>Exemples : <span style=" font-weight:600; font-style:italic; color:#000080;">[5,9]</span> ou<span style=" font-weight:600;"/><span style=" font-weight:600; font-style:italic; color:#000080;">[3]</span></p><p>(on peut récupérer ces valeurs à l'aide du dialogue de création de groupes d'edges, dans GEOM)</p></body></html> + <html><head/><body><p>Index des arêtes décrivant le fond de fissure, dans la face de fissure.</p><p>Sous forme d'une liste Python.</p><p>Exemples : <span style=" font-weight:600; font-style:italic; color:#000080;">[5,9]</span> ou<span style=" font-weight:600;"/><span style=" font-weight:600; font-style:italic; color:#000080;">[3]</span></p><p>(On peut récupérer ces valeurs à l'aide du dialogue de création de groupes d'edges, dans GEOM)</p></body></html> @@ -59,7 +59,7 @@ - <html><head/><body><p>fichier med du maillage sain (hexaèdres)</p></body></html> + <html><head/><body><p>Fichier med du maillage sain (hexaèdres)</p></body></html> @@ -69,14 +69,14 @@ <html><head/><body><p>sélection du fichier brep (géométrie) décrivant la face de fissure.</p><p>Un champ rouge correspond à un fichier inexistant.</p></body></html> - face fissure + Face fissure - <html><head/><body><p>fichier brep (géométrie) décrivant la face de fissure.</p></body></html> + <html><head/><body><p>Fichier brep de la géométrie décrivant la face de fissure.</p></body></html> @@ -86,7 +86,7 @@ <html><head/><body><p>sélection du fichier med du maillage sain (hexaèdres)</p><p>Un champ rouge correspond à un fichier inexistant.</p></body></html> - maillage sain + Maillage sain @@ -102,7 +102,7 @@ - identification zone à remailler + Identification zone à remailler @@ -110,7 +110,7 @@ - distance influence + Distance influence @@ -131,7 +131,7 @@ - prémaillage face fissure + Prémaillage face fissure @@ -201,7 +201,7 @@ - messages + Messages @@ -294,13 +294,13 @@ - maillage zone de fissure + Maillage zone de fissure - pipe rayonnant + Pipe rayonnant @@ -308,7 +308,7 @@ - rayon pipe + Rayon pipe @@ -328,7 +328,7 @@ - longueur mailles + Longueur mailles @@ -348,14 +348,14 @@ - couronnes + Couronnes - <html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>nombre de couronnes de mailles autour de la ligne de fond de fissure.</p></body></html> + <html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>Nombre de couronnes de mailles autour de la ligne de fond de fissure.</p></body></html> 2 @@ -371,14 +371,14 @@ - secteurs + Secteurs - <html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>nombre de secteurs selon un cercle normal au fond de fissure.</p></body></html> + <html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>Nombre de secteurs selon un cercle normal au fond de fissure.</p></body></html> 4 @@ -412,7 +412,7 @@ - faces externes + Faces externes @@ -420,7 +420,7 @@ - triangles face fissure + Triangles face fissure @@ -440,14 +440,14 @@ - aretes vives + Arêtes vives - <html><head/><body><p>Arêtes vives de la zone à remailler.</p><p>Longueur des segments sur ces arêtes.</p><p>Ce paramètre est <span style=" font-weight:600; font-style:italic; color:#2631c1;">optionnel</span> : laissé à 0,</p><p>il est est ajusté automatiquement.</p></body></html> + <html><head/><body><p>Longueur des segments sur les arêtes vives de la zone à remailler.</p>Ce paramètre est <span style=" font-weight:600; font-style:italic; color:#2631c1;">optionnel</span> : laissé à 0, il est ajusté automatiquement.</p></body></html> 5 @@ -485,21 +485,21 @@ - répertoire de travail + Répertoire de travail - <html><head/><body><p>Répertoire dans lequel seront rangés le maillage final, les objets intermédiaires, la log d'exécution.</p></body></html> + <html><head/><body><p>Répertoire dans lequel seront rangés le maillage final, les objets intermédiaires, la log d'exécution.</p><p>Ce répertoire doit exister avant l'exécution.</p></body></html> - nom résultat + Nom résultat @@ -572,7 +572,7 @@ - <html><head/><body><p>génération de jeux de données exemple :</p><p>maillages sain et face de fissure.</p><p>(from blocFissure.materielCasTests import genereMateriel)</p></body></html> + <html><head/><body><p>Génération de jeux de données exemple :</p><p>maillages sain et face de fissure.</p><p>(from blocFissure.materielCasTests import genereMateriel)</p></body></html> Exemple @@ -582,7 +582,7 @@ - réinitialisation de tous les paramètres à leur valeur par défaut + Réinitialisation de tous les paramètres à leur valeur par défaut Reset @@ -592,7 +592,7 @@ - réinitialisation de tous les paramètres à leur valeur de la précédente éxécution + Réinitialisation de tous les paramètres à leur valeur de la précédente éxécution Précédent @@ -602,7 +602,7 @@ - réinitialisation des paramètres à partir d'un fichier préalablement sauvegardé + Réinitialisation des paramètres à partir d'un fichier préalablement sauvegardé Recharger @@ -612,7 +612,7 @@ - sauvegarde des paramètres dans un fichier à choisir + Sauvegarde des paramètres dans un fichier à choisir Sauver diff --git a/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py b/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py index 15ff7bc0c..973efdf1e 100644 --- a/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py +++ b/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py @@ -89,7 +89,7 @@ def fissureGeneraleDlg(context): areteFaceFissure = 10, areteVives = 0, reptrav = '.', - nomres = 'casStandard_fissure.med', + nomres = 'maillage_avec_fissure', verbosite = 0) diff --git a/src/Tools/blocFissure/materielCasTests/fissureGauche.py b/src/Tools/blocFissure/materielCasTests/fissureGauche.py index 2c27fd16a..c612d2a9a 100644 --- a/src/Tools/blocFissure/materielCasTests/fissureGauche.py +++ b/src/Tools/blocFissure/materielCasTests/fissureGauche.py @@ -51,7 +51,7 @@ geomObj_2 = geompy.MakeCylinder(O, OX, 2000, 5000) Cylinder_2 = geompy.MakeRotation(geomObj_2, OX, 180*math.pi/180.0) Translation_1 = geompy.MakeTranslation(Cylinder_2, -2000, 0, 0) Fuse_1 = geompy.MakeFuse(Cylinder_1, Translation_1) -Fillet_1 = geompy.MakeFillet(Fuse_1, 800, geompy.ShapeType["EDGE"], [11]) +Fillet_1 = geompy.MakeFillet(Fuse_1, 800, geompy.ShapeType["EDGE"], [8]) Vertex_1 = geompy.MakeVertex(0, -3000, -3000) Vertex_2 = geompy.MakeVertex(2500, 3000, 3000) Box_1 = geompy.MakeBoxTwoPnt(Vertex_2, Vertex_1)