Salome HOME
Windows porting
[tools/medcoupling.git] / doc / user / images / partition_with_layer.py
1 # -*- coding: utf-8 -*-
2
3 ###
4 ### This script is intended to be launched in a new SALOME study
5 ###
6
7 import sys
8 import salome
9
10 salome.salome_init()
11 theStudy = salome.myStudy
12
13 import salome_notebook
14 notebook = salome_notebook.NoteBook(theStudy)
15 sys.path.insert( 0, r'/misc/dn27/users_Linux/eap/salome/tmp')
16
17 import iparameters
18 ipar = iparameters.IParameters(salome.myStudy.GetCommonParameters("Interface Applicative", 1), True)
19
20 #Set up visual properties:
21 ipar.setProperty("AP_ACTIVE_VIEW", "VTKViewer_0_0")
22 ipar.setProperty("AP_WORKSTACK_INFO", "0000000100000000000000020100000001000003a0000000040000000100000001000000080000001a00560054004b005600690065007700650072005f0030005f00300000000102")
23 ipar.setProperty("AP_ACTIVE_MODULE", "Mesh")
24 ipar.setProperty("AP_SAVEPOINT_NAME", "GUI state: 2")
25 #Set up lists:
26 # fill list AP_VIEWERS_LIST
27 ipar.append("AP_VIEWERS_LIST", "VTKViewer_1")
28 # fill list VTKViewer_1
29 ipar.append("VTKViewer_1", "VTK scene:1 - viewer:1")
30 ipar.append("VTKViewer_1", """<?xml version="1.0"?>
31 <ViewState>
32     <Position X="6.64164" Y="2.49199" Z="130.355"/>
33     <FocalPoint X="6.64164" Y="2.49199" Z="0"/>
34     <ViewUp X="0" Y="1" Z="0"/>
35     <ViewScale Parallel="28.0904" X="1" Y="1" Z="1"/>
36     <DisplayCubeAxis Show="0"/>
37     <GraduatedAxis Axis="X">
38         <Title isVisible="1" Text="X" Font="0" Bold="0" Italic="0" Shadow="0">
39             <Color R="1" G="0" B="0"/>
40         </Title>
41         <Labels isVisible="1" Number="3" Offset="2" Font="0" Bold="0" Italic="0" Shadow="0">
42             <Color R="1" G="0" B="0"/>
43         </Labels>
44         <TickMarks isVisible="1" Length="5"/>
45     </GraduatedAxis>
46     <GraduatedAxis Axis="Y">
47         <Title isVisible="1" Text="Y" Font="0" Bold="0" Italic="0" Shadow="0">
48             <Color R="0" G="1" B="0"/>
49         </Title>
50         <Labels isVisible="1" Number="3" Offset="2" Font="0" Bold="0" Italic="0" Shadow="0">
51             <Color R="0" G="1" B="0"/>
52         </Labels>
53         <TickMarks isVisible="1" Length="5"/>
54     </GraduatedAxis>
55     <GraduatedAxis Axis="Z">
56         <Title isVisible="1" Text="Z" Font="0" Bold="0" Italic="0" Shadow="0">
57             <Color R="0" G="0" B="1"/>
58         </Title>
59         <Labels isVisible="1" Number="3" Offset="2" Font="0" Bold="0" Italic="0" Shadow="0">
60             <Color R="0" G="0" B="1"/>
61         </Labels>
62         <TickMarks isVisible="1" Length="5"/>
63     </GraduatedAxis>
64     <Trihedron isShown="0" Size="100"/>
65     <Background Value="bt=1;fn=;tm=0;ts=false;c1=#ffffff;c2=#000000;gt=-1;gr="/>
66 </ViewState>
67 """)
68 # fill list AP_MODULES_LIST
69 ipar.append("AP_MODULES_LIST", "Mesh")
70
71 if sys.platform == "win32":
72     from MEDCouplingCompat import *
73 else:
74     from MEDCoupling import *
75
76 from MEDLoader import ReadMeshFromFile, WriteMesh
77
78 coordsArr=DataArrayDouble(range(8))
79 m=MEDCouplingCMesh("mesh")
80 m.setCoords(coordsArr,coordsArr)
81 m = m.buildUnstructured()
82 #m.rotate([3.5,3.5],math.pi/4.)
83
84 #WriteMesh("mesh1.med",m,True)
85
86 from MEDCoupling import MEDCouplingSkyLineArray
87 import MEDPartitioner
88 a,b=m.computeNeighborsOfCells()
89 sk=MEDCouplingSkyLineArray(b,a)
90 g=MEDPartitioner.MEDPartitioner.Graph(sk)
91 g.partGraph(4)
92 procIdOnCells=g.getPartition().getValuesArray()
93 p0=procIdOnCells.findIdsEqual(0)
94 part0=m[p0]
95
96 WriteMesh("part.med",part0,True)
97
98 boundary_nodes_part0=part0.findBoundaryNodes()
99 boundary_cells_part0=p0[part0.getCellIdsLyingOnNodes(boundary_nodes_part0,False)]
100 # starting from knowledge of neighborhood it s possible to know the neighbors of boundary_cells_part0
101 neighbors_boundary_cells_part0=MEDCouplingUMesh.ExtractFromIndexedArrays(boundary_cells_part0,a,b)[0]
102 neighbors_boundary_cells_part0.sort()
103 neighbors_boundary_cells_part0=neighbors_boundary_cells_part0.buildUnique()
104 #
105 layer_of_part0=neighbors_boundary_cells_part0.buildSubstraction(p0)
106 #
107 whole_part_with_layer=DataArrayInt.Aggregate([p0,layer_of_part0])
108 whole_part_with_layer.sort()
109 part0_with_layer=m[whole_part_with_layer]
110 part0_with_layer.setName("part0_with_layer")
111
112 WriteMesh("part.med",part0_with_layer,False)
113
114 import  SMESH, SALOMEDS
115 from salome.smesh import smeshBuilder
116
117 smesh = smeshBuilder.New(theStudy)
118 #([Mesh_1], status) = smesh.CreateMeshesFromMED(r'mesh1.med')
119 ([Mesh_2,Mesh_2_WL], status) = smesh.CreateMeshesFromMED(r'part.med')
120 #Mesh_2.TranslateObject( Mesh_2,       [ 9, 0, 0 ], 0 )
121 Mesh_2_WL.TranslateObject( Mesh_2_WL, [ 5, 0, 0 ], 0 )
122
123 ### Store presentation parameters of displayed objects
124 import iparameters
125 ipar = iparameters.IParameters(theStudy.GetModuleParameters("Interface Applicative", "SMESH", 1))
126
127 #Set up entries:
128 # set up entry SMESH_3 (mesh) parameters
129 ipar.setParameter("SMESH_3", "VTKViewer_0_Visibility", "On")
130 ipar.setParameter("SMESH_3", "VTKViewer_0_Representation", "2")
131 ipar.setParameter("SMESH_3", "VTKViewer_0_IsShrunk", "0")
132 ipar.setParameter("SMESH_3", "VTKViewer_0_Entities", "e:0:f:1:v:0:0d:0:b:0")
133 ipar.setParameter("SMESH_3", "VTKViewer_0_Colors", "surface:0:0.666667:1:backsurface:100:volume:1:0:0.666667:-100:edge:0:0.666667:1:node:1:0:0:outline:0:0.27451:0:elem0d:0:1:0:ball:0:0.333333:1:orientation:1:1:1")
134 ipar.setParameter("SMESH_3", "VTKViewer_0_Sizes", "line:1:outline:1:elem0d:5:ball:10:1:shrink:0.75:orientation:0.1:0")
135 ipar.setParameter("SMESH_3", "VTKViewer_0_PointMarker", "std:1:9")
136 ipar.setParameter("SMESH_3", "VTKViewer_0_Opacity", "1")
137 ipar.setParameter("SMESH_3", "VTKViewer_0_ClippingPlane", "Off")
138 # set up entry SMESH_4 (mesh) parameters
139 ipar.setParameter("SMESH_4", "VTKViewer_0_Visibility", "On")
140 ipar.setParameter("SMESH_4", "VTKViewer_0_Representation", "2")
141 ipar.setParameter("SMESH_4", "VTKViewer_0_IsShrunk", "0")
142 ipar.setParameter("SMESH_4", "VTKViewer_0_Entities", "e:0:f:1:v:0:0d:0:b:0")
143 ipar.setParameter("SMESH_4", "VTKViewer_0_Colors", "surface:0:0.666667:1:backsurface:100:volume:1:0:0.666667:-100:edge:0:0.666667:1:node:1:0:0:outline:0:0.27451:0:elem0d:0:1:0:ball:0:0.333333:1:orientation:1:1:1")
144 ipar.setParameter("SMESH_4", "VTKViewer_0_Sizes", "line:1:outline:1:elem0d:5:ball:10:1:shrink:0.75:orientation:0.1:0")
145 ipar.setParameter("SMESH_4", "VTKViewer_0_PointMarker", "std:1:9")
146 ipar.setParameter("SMESH_4", "VTKViewer_0_Opacity", "1")
147 ipar.setParameter("SMESH_4", "VTKViewer_0_ClippingPlane", "Off")
148
149
150 if salome.sg.hasDesktop():
151   salome.sg.updateObjBrowser(True)
152   iparameters.getSession().restoreVisualState(1)
153
154 import libSALOME_Swig
155 gui = libSALOME_Swig.SALOMEGUI_Swig()
156 gui.AddIObject( salome.ObjectToID( Mesh_2.GetMesh() ))
157 gui.AddIObject( salome.ObjectToID( Mesh_2_WL.GetMesh() ))