From 4fecefcc2bdb9e536e33d9b9c2efce0bec7becb5 Mon Sep 17 00:00:00 2001 From: eap Date: Wed, 5 Jun 2013 15:13:53 +0000 Subject: [PATCH] 0021952: Add an option to write planar meshes as 3D meshes in MED files --- doc/salome/examples/creating_meshes_ex05.py | 42 +++++++++++---- .../gui/SMESH/images/meshexportmesh.png | Bin 25031 -> 45785 bytes .../input/importing_exporting_meshes.doc | 45 +++++++++++----- .../gui/SMESH/input/tui_creating_meshes.doc | 2 +- idl/SMESH_Mesh.idl | 24 ++++++--- src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx | 9 ++-- src/DriverMED/DriverMED_W_SMESHDS_Mesh.h | 2 + src/SMESH/SMESH_Mesh.cxx | 14 ++--- src/SMESH/SMESH_Mesh.hxx | 11 ++-- src/SMESHGUI/SMESHGUI.cxx | 43 ++++----------- src/SMESHGUI/SMESH_msg_en.ts | 4 ++ src/SMESH_I/SMESH_Mesh_i.cxx | 51 +++++++++++------- src/SMESH_I/SMESH_Mesh_i.hxx | 6 ++- src/SMESH_SWIG/smeshBuilder.py | 13 +++-- 14 files changed, 166 insertions(+), 100 deletions(-) diff --git a/doc/salome/examples/creating_meshes_ex05.py b/doc/salome/examples/creating_meshes_ex05.py index 98e921a06..ae1d073b4 100644 --- a/doc/salome/examples/creating_meshes_ex05.py +++ b/doc/salome/examples/creating_meshes_ex05.py @@ -16,23 +16,43 @@ idbox = geompy.addToStudy(box, "box") # create a mesh tetra = smesh.Mesh(box, "MeshBox") - -algo1D = tetra.Segment() -algo1D.NumberOfSegments(7) - -algo2D = tetra.Triangle() -algo2D.MaxElementArea(800.) - -algo3D = tetra.Tetrahedron() -algo3D.MaxElementVolume(900.) +tetra.Segment().NumberOfSegments(7) +tetra.Triangle() +tetra.Tetrahedron() # compute the mesh tetra.Compute() # export the mesh in a MED file -tetra.ExportMED("/tmp/meshMED.med", 0) +import tempfile +medFile = tempfile.NamedTemporaryFile(suffix=".med").name +tetra.ExportMED( medFile, 0 ) # export a group in a MED file face = geompy.SubShapeAll( box, geompy.ShapeType["FACE"])[0] # a box side group = tetra.GroupOnGeom( face, "face group" ) # group of 2D elements on the -tetra.ExportMED("/tmp/groupMED.med", meshPart=group) +tetra.ExportMED( medFile, meshPart=group ) + +# ======================== +# autoDimension parameter +# ======================== + +face = geompy.MakeFaceHW( 10, 10, 1, "rectangle" ) +mesh2D = smesh.Mesh( face, "mesh2D" ) +mesh2D.AutomaticHexahedralization(0) + +import MEDLoader, os + +# exported mesh is in 2D space because it is a planar mesh lying +# on XOY plane, and autoDimension=True by default +mesh2D.ExportMED( medFile ) +medMesh = MEDLoader.MEDLoader.ReadUMeshFromFile(medFile,mesh2D.GetName(),0) +print "autoDimension==True, exported mesh is in %sD"%medMesh.getSpaceDimension() + +# exported mesh is in 3D space, same as in Mesh module, +# thanks to autoDimension=False +mesh2D.ExportMED( medFile, autoDimension=False ) +medMesh = MEDLoader.MEDLoader.ReadUMeshFromFile(medFile,mesh2D.GetName(),0) +print "autoDimension==False, exported mesh is in %sD"%medMesh.getSpaceDimension() + +os.remove( medFile ) diff --git a/doc/salome/gui/SMESH/images/meshexportmesh.png b/doc/salome/gui/SMESH/images/meshexportmesh.png index 57d0a802125ac7ef8cdbcdf3b3d538fc0d635a4b..d2997a47d377640e5ce81f10400db3dfc845987c 100755 GIT binary patch literal 45785 zcmbTe1yGe+*gv{SQ9>G|ySo&mySr0Ly1PN7rMtVkB?Of225F=lNonrleD{BA?#!LJ zYdj-vcD(ytYdz1e)(KOTmq31l_XYxiAWKP#DnlU9x)2Cd3j#EFWQN#B2K@EfUQ){m z0zv6{`41|Q9t9sfNbfAB=`3pMWb9~R?`&ab3(>H!HL-Ie5wSLOa^fLTa%OaLF*3Bb zx3(}geEEHdx|kAp8QROsR4tsXO(A0L_I8fWBsQi_=3;Bfm=FjFL`qah)ji`V(@ht% zAE#^WqkBiU@%nQ)cJEu>X8%}tZ@0?u@!s~c*^VJ8DJf1hH57D!APMRkm*47g;1zMJ zW`U3(2w!K6&~9O(t)cfvWeyDAixLTZ zTiBiPo13SPkS~56L^hakL%rL>AyXyJcTX+MfSsfM?I!Qxu%w}p6MAlhePaGI+kP9_ z_^KBwGx-Bt#>Nl)kBKsGahonXTb|&$&0{}4nsaz>FRrv?zoAq}P2013t*fimd%tR2 zF57aR3*#?IQ_Nk9YXt320zp`>drd{?Rx>0$HhZU9q&0|v2n!p?)WCvT^KPSp%+~Oo zhzBcz=p!n2)3Nbq*32<@i1Boj2t2o~Ci}CG<6XO0`iLxYzV8wVHpa;X3>%vO-}eiA z$V1&>&sPT+xo=m-Pv7qMcWH>C-$HPMTjYtZJ6{Kaha)0}ZC7u-#_h}oRZOZf+Z3Yk zr#r#mTwxGidn__qLi*ChrI;Aaa zH;X2cN%Cy6FiyNCz3tRP2n9QDeT6A0aRF#6s{Wo6WK1+T%)BeNI zj3}d135EG~pRE@gbG{}eCSJ{7M87_b;IyE;rdoXcPQ9sU+waGuVxc-h&wO8hzl^B; zJ`y&>ddcBts8PVn)sD}yC+AO~PBamFR<9A0)`7#BwQ5^bx8&_0#;cW%NBiFsPu(FO ze)!#=M|U?nWN;ZT?wLjuV`3!}d~i4an**gnjch!1o8C;+>wuSPwR+?*sbMSNLFSI< z)t)|GuvuKCkjX&+i6Z>?M9X}7)=iEgA8%@d|FLXWfZ4$3{rBqZ@o()9dEa-LJMd@v z&2AeosH3dRQ{_@QM$B%%EibnRhD15l>0JdZb-aXYWHy^XWAjRS%B zr!dESq&hRrFsg=f!VKeY{dd3XxZTPz$u=Gn^C{X^Z|QjPEO70BP$B!r$)Df8G82wW z$&VB#vqPL{=%44;F>9Yha1t?1hqDepUxkfgrd#3gET}nKttrn}Ft3UUI1+hYUcqgBJ-%A*rw6yY#%kU! z3jgC+MbM8dAw=cX6`!%Nc(a{Rog0~+@zm7RD87)Cl*S*9hSjO5lkFaeQ3TwpZKpX) z@0n3y4d=&%M3%xw8XdRGY?j>24^z;;eh*T^DZ3=%%TN~Z&YMgr!ag>!NoO^li^Oks za-4$tv@^0WU$r(cItcNvT4}}LxY$GVVjPiUGKi9wd(6o#R+i8K^tyCpdU-9-Q|L z-3&{@!4kZ#C`+*d*i_7BQyjG>UcV*@Ws|5XGj zx1UQbH*RofAZMfvyX(W@StP} zK!^lmj2*_;2HM)n?0OAF?iqC0T`DyHh#DF0RVXti{}zk&oPwzJx6c#4lbQ+dC)*32F%8&WZ|dqQ)OXP|m2 zZ-KWHdj%m-`Mrw;^S*8QdRph_^xHx`hU$*doL!BSzdcQ`kth&vG=BsLt*(=x!FIZhIt+nH*6vwDd}HFC+-ApuBBB zOX_3>_XP?uzc7`ywzluh-`qsK?DF|j;t%$yfJ~N)&~M+hB`c-&H^c#7eGShHzOsqVp*nd`+x*0P* zkL<4TtAF^1%kpqjTE0re?soFc-ZhmD{g2I}rj}OPKYZTE!7cqCxVM*DM!vpE>2paC zMQ!c4#HSjn_V`3h!{&3qa zQ}euI#6`j`B*F1}OZPyu9B_(BpHRIO+0fuT6R&>jBhq-<>-SqNhTTim)(^u|d$J$`*#g*uV zMh*4cTv#(JP;R|)9vt*czda*nwAq|HzIz??Fwbm@5cI%x{OaN2=ndp@Z-KrOVR%?- zkpe1@9Y5*ehZ|vkPvJzU7SWBi3W+Sx=#&eae(sWR|RUi$q8hSF&dkkSh51R;H z54DS>ej5cX7*a*vg6D~Bg9trYVs7M>J*OqY$$_Ug8^(nodXaDD*Bs0R6=0shA*fJ` z;w^i#n4O*7U_o+LEI@pD z%sXNWCplUDO?Y_t(@HuO{l{`BWa0mKK<+2sRhD-@R7Cal<5fC~haz;lcJ_g-Z} z@@W6_2{Hdao)WBIj{r?_ZD=i$?k`Ak5Vq>$`M%+GC_D_em>Me^+b_(Ci6Tgh5LO3$hb!6uZP}Y(;}20d>VJmwY7>N^{UNB$Q~mixmUxyqV`R{i zp{Q?yt`wyyJ2&L+%HO9l+sGX)Ha5(gSj~#13(^dX508%z&ri>@b8wijrAGE}1qgP1 zVj0-n*w~P{e{^!Jdxe4tY6&7QaP>X1TbKi8`{7?hRF5#zEfTQ>_#IGdA9rYdj@Ad&d5%0 zc7}l4(IgV@OW>DRe($#q8V{XY*`moY-!xkuqiD)9JH`G*A@bK{bz7Lu*GT?5H&(5lqRV*(r=j7yg z{X4luyv%HEPqw!?O@}aPgQAJ}@IIL5SPKQi z2funtSW!|^Qc-ewem*oj9&a`Ny>>I9Q)OgC;rZ<7&Ed5yqYW47F9cG3U3G0OB`sA| zr39IK!{ul_8^T1B)(Nm<>#_iF4`q` zwTB_P0MDi{(LCzt>~^0Tg*CyoiHUV^Kh=}e$%9eq9PGoQ{hoHJF?h57?qA$A{+YK_ zH8r$V(&{y1*@NVmt42E83J1iDe*SDSWH+CyBQp3$rFq{ruoHjd^mJVDz!XmSPZFcf z$#RFw{q-^48Z8_5;*?OZS}u{UcK%fwZZH}wfxby)-a{-Lx9prByx_@l3%k)4La8Wv zOPDgjM^{-2Y%r6Ql%rXEUdOGCoyYf;6&2Rg(dnOC#^dOQmzLVV^s%}bJ3BjP@p_=w zk{ey7Ocso6b`r-6EN@_JcwO%04x}VMw_l!}y{rmSe(eQW%_w>&W5f{#A zg4AvP2=Vf#+#0Wcwo=I1=lp|}5pgoPJmCrRgq%!ibo03+ou78cGWA#WlbQ6$rcJB; zm!)ZIiB)S*`Lk%IY-@2bDK^&OpXz%0e6?BIxY2|;tKVw&23yCH|6pn9;Jx3{)rMM}o=m1K z;nK?EML>A)A7>sR4^gfDo0iUy>HVRPeiW>%tQyrrmmh2Wu3{$ko&Eftkq_rfjkY>1 zEoW6K+WIXU_!YQo-x@P&YhErQ<}aE1jqJ|StWEi2JysP^R0NuAtp5yzfrf@hAsE=b z(5TdQIhdh^5B&4zPp$1rYg`;UWMXb^waG?DQ}Z{N8XlJeOfOp^A&Auld#V=&|uh6fI# zHd`<3+~B9LG9knWUw&Wh4w()5sjL2_qbm=8Lw|gE2md{2M$rZWk@Qa0RMjo0tVD(w z)q?N+-D!8ssP^V(;H!P&X*gjaF|nYmtW_{CYLiqJ>4`;~m-0}uJjDqbn7%9bv;AMS z7n+tEb%y7n;;9slHfOL9l&}mGRb$+kuWti8^&4txoZnfScHMMM9oFWs4)=zgRpEHgjuVQ2 z1VfNhQ&Lm#T~k_FM?ykDBN~E=(UoHeD^#+oQgJvU#h=~j`*_Ec+2*{zZ2EY2<;`#4 z0k)Cw7m@cNYu8UyiMF<%Izx%2kqYF-*6!p@oQ5pT%oX zK|_*YDJdzXq@)60z5QIPxzuc@AT1pp5dn(BB$#blDagw`s?=#_V`rC$#M|E76fs?E zu$Znh9p-U8qA9%w#S{(>&ehd*Zf;H{iJ`QjB7t#ua?)YCNN#_Bzv3Ahg2SYn!fBP% z)^>k;u}f(a6X$(*Sz2Gues$&de7`nbtU&w6bU4WdOz)scon{52P7_$SbV`&~tG|K} z!M;dLPxk^P=KJ>#$|P)T=U}ql+b+95-Zg46thRfw7ykXz9rBilx1_8rZl+pNzsgZf zaWk*fkx*JjrrBm`4yT4>NY?x>dHM!mees+CrG{p_c z>7BYFY^l#oHLkRto}G5dfBwy1sh|IyI)85Wxi{#z4xHvRCtpA%8 zd5ePs%Aa1ZU%Pny7QZV`9rm57|EcP>+>nK2Ad zo@{G6vjtKmJx1Y$4AS#AUO`gOm%lq0?@i?5;o-?rUF=QfqoJXJ`R3x{>U=myq`%IfTVt~VPWxHKEj`r&KiI{i#N)c_d`yk1hukT7;#=i4`75@Z|5`HW@coBj*ablvdk@QC@T6jF)=ZrG<<8DP6O_LTA50*e6>L*z`y=^GL?Jbv~|T% z&wKE-T36+A7F_J?_nXlIfRq1BXu;oxhLGh-g0)g00lwYHGHevrx-+$_C$tO#LT4s)q z-0$UVqn7l{|8yI#cdsD6=F3%Mz?@w=*R+hI_>={ohyb<|5ZiLgf$nRKLK0 z9Wh!pMt_?~B3MwTLD2}+wcO%VJ;dU6vTVsZEB7F)m${M3ZpLM^2+B7YO|05l-#HWFnK5po8G5m1SL|Ng+so8fs#u9XxP zHdv+CHZ?uH*5PAiY02Yr=gh`OM;DGK@9gFl9UiW%YRb-Dzr3t_U}bAtmAc?pssuyA2%X?ouoFY>dc<=xq)gfuDl zipU$WbH~K;FP=D+eTOmG*?wmmVmdlHlw!j_jKYsf?*&?)Y?8#nD1=Z!qj4&RkhJ z_*kqia^LW7wRxokim=aK3(x4=^T}p9USvgC*)K@9#rM=yt%z|=AkQ#n4sWC2b0PKH zLk7mjtCjFA(qAvR%C_}>2o`v>Khzs@g1BeCbK`r04ea~-?q7UBQf+usSdY;c1J^U{ zqw;9caxT4xoy+}MHmqv*(H=UE@75?GBE{1I>Q==F5Ky4h)YN8X)&PtsE2DFyNra%5 zF4yK`67jlEXa$2lAk6rKK};{%#Kg=@M@uWVA8d0_*oLN|NE{Wm5@=OgU5~Z%9l-`Y z_wW9rs-_m(k9;pZrK*#ejRqaCK3A#J`E*Br`?6KJxl_FjQW6qWjjzEBUmq{27_cId z6Z2($bSugdnh8+V!UTIC3JR(~V0dt_#rM(E+4=I@yV-cmJ!emO`KYk4FzbE58@{`r zZNyQ^3{-<&5|dE@1p&yG^7$jE`_;8f$~)X2K4kEDC6R>g?d<_D6!$NzuyA{}T%)qG z(zJefML;sPU3a@NPaUUHeO`!<;`o;AdC#*+3t0-O+uFwFEiwPm))oiw5Qz9ZMI|JL zeWICObH2H|8$EQjS%R}eDY^^Y`U$u(9T@cVppM;uU*So}NjY;~e&uDLXTBJB!wGgv z0Wv5lb0-Hr&?@bDBIS!&#f;FHK5OqaS1949j{?=no4>QHOqu~Z-ip50sJ5wzYaeHG zbF=p=F2clAnMWe2#Zvm^*B^dWR=M*#NAWB4;zzJRo&A2iaWHdK(DQcuT-wQ=RRe3u z`~%av+UMP^>w^zd1ksy+=^Rj}-f_SO3gu7wwxxLTabcuX6I1>Tw3>l~KzPyY_i~oE z(O?nOt_`7CSzePsK96N^dp2AWFu}mUloTcxmRKoF&dhKyGDh;sOG)M0nv3m2?01e* zBXF39xOS)lYPqU5B-rMEc>P;!vXQyH*`F@<^71k>c^Lyw!pUL>W*@encScgdw~0@G z8Hd~3VzxGvYIDD9jZas9=%}eBCMV-yVs7p2AwWXj61zG%#jAd_nyVm}h#Fw@xjL8y zivTbPI$GKm&^7uZ@j>IKq>N8_86`teZpu4y>0FGgtV$%PUAxUqkQ%Te;1IFfJ+H#Y zcRStBzG$1}A-wEl8NAXx&EtroJC_nH$KzY&=e@fIEgLDoa{*u?1gv{Bjq`B6TEOqg z8!T#NWpqwys-P|Vz2RhLjcRSieKe_mlAb-u%m#CoHwhxsOpLSw&H}tUS8$M=KbJq= ze=)PcXSp&feui^%LODoKijl@~a%oW2Mw85+W@BR;%LZ?}e2citobl1^WP3Py>&G2v zmjFvcL7-qcf0u;YywzXhbri@eXh4632MO)n7#b=QVMRMDeG4Thwj^rAs?fzuTaJDv zBcv$V{neQ#a?oTd)%sguCw-%GgK>&^d0<|ubKPH25(OT#nR)f~7p*Rbb^ndIYMs-gqY7R^$jHdZ zSQfX}<-lYpA(~~v@0wFgWKMHBUkWEF6ep;zG)^l}$7f4bs9(JbX?+mR{^(W(cGiy{ zK5eeYxJcrfnkm*=V5#Ug+h$f(*@mDHu6Ft)_dj}784r;D?(IU+;xA-6m))kE^8JR7F=$} zt*!vaIr1+f6lphKZ-AmzN5slc+R=nzLs03p`?;jY+4+BE0l*?n3Ng^V+B=rRlfVDz zk)CL%Q>*z6Dj13i)xV{xk#5=+s%vDX0*tb<@c!Mi8(t9+5yw?)Z*TAA=?@UpFi}9U z7-p0Hsx&1gswX9?K?nTYrR8mGj11mXXguEP=Z|mIX%Z1 zo^K5b`lmpIjx&ualT9RjM@NRX&fEb*YIXlZ2Kk0B02rCe*0X{VPa_4uL~iE=gJaK5 zKpIP;`+^yx-JVPH!#C6icWJ85bewNvI^sxmgw0`G$EX^^!`jTu?cwGOynzoV%yS|C zuyUZdtv&{{o|ISyw^LtHVx)De$op4=O4HxX931PJ_3BgyG*|B4=bg>Xr(@ZS0`DoxTah0V=qxNj?4Fh$A*Vb^-Xl73d)QC2xT@=VC z+`i4TV5E0OCME@WTti&3nhl5dGOpN}S;ak`&s;4{O*XnbCXbfUft{zRd#zo#Sypwu zA7pS+JmY`JQ^Pm0;ApD-&IlwV%a$v|wHB6(8(3-WnwnVm8uI;4W_I>=lXprC(RZ)XiB z%VbhQzJeG^PTh6-dfpEOs{lK{yYG5-YFam63~Ox4X6Ks`0?efcI$Bgs@6kCGIo{yi z(=@qNuhvEzsby%9Cnt%k$I3**6KJKz-PaK?`zb#)EBc4sI1>hkbzY>&AM?*|!?jqN1uO3W>cYm197U5GCVEU#T__aB{lP?)?+naD2B}&OwC$_ce69q|%0i zpqN!t78}M4d|ed#N^}f^>{jO!7f0-qxa66-iR*bNNS8r;@oN${6+S5zq+uqsDF@F) z1PD3mdRe%o8T?UaZSNf=lYIUel{emnNMv$r~iRvHv7D26qii+>g>%J>6G7egJq)uev z!{J#!{O)+S!xHt&tD2&y;ET4@r5l5OenKMVY6n;hNRS^t0`R#sG9s&@5?`vG^Nraw z-G51_zW_#O{!YbLX&`BDd1e;_`|IOOa~_ateFbjbSsp?QLd~$)OHUO)=agjXWZ>Lb zIqk{fvDkC-%aVLy%la$3mBjz}YPJNmyJlILG(sFF{Q1xn3L+@$AL>s>iaFmmto&c_ zC=LG#gGX9I#Z7UZG_V!rmTd92HCJO+-O0>klc8<;7jcxrpAl`<<*X%Qr@nz)wwikRzrcqR{%$cn`1jPR%M*g) zj5op3ReSJgB?=q*dOa-XyRf@+vb4TB`it`+>I4J#u8Q2}?s9*6Hz}_kXv=YDYL-2# zt4}jwX=Wv5DEp=>ZN99`^sgPmL5Qj)Aj7EMw@(%-n_Y;ZQqF^mHW1DGYPUCq(k2oDr^%gij9CViWnx%6Q{|;?r*2E*u z4G4-A=)d&<%LF92P!=b5hS_bGzyD`0eF7@r-r?br=#p?eS5}_KOy0@X_U^1S5qB^1 z+eJ6D01}HSn_MY;g-KpZrR=V&#Me8Ez3nLLT&LxIe!v5B zF{5F-D7EH*WexdJO`xQ-SKPzqaFnKK+;k!ZtmOSY+uj6>j9D! z2lLeil9Hhv9sCeYP0bqs$X0)(kAAjWsM`kGUz^+Mj$;c@dVY9bK|^Xa3DD3SfGP;Y z-dJ)8U>`ZQEVnL&-MAtkB3_)Gp@oTpUbM5blbXs|9hPK`7)>m&+U8ar91IV+JX*Nu z3V_+tLPU)C_6-RU5pnPvFr<)u`-f}>0B;8ZW}DYPriGKQ!nuKg-2fH>U9%1tOnhF~ z2tmSTX1o6Wkh*QICT$?85%e=MG6Jd~jVfwxz6Zn|p`U?455*~IY0!e=;=u>A`?KZq zfT2*!XCOepq}DYy`rP~_wRoL9{`Soq9=|7Eh-?arA)o=ESVLf;e+DDt1K2+Pi3OWc zTU3k5!z(5!hNf9US;t%0yRs_f&MVvKgPe>`zoLS{adc7>O4P7lE)8}B;7&Hy)|XdT z04nI{>&q8)0=Z$TKnmO$9v&VhCZ-u&l;D>TDAj*v8!#z0FK#X8%TGcNkRU)oEpj_u zz5jPwtUM4Hgopze*#%Hod@uK6!@{KO?O7;eGBY3dCdmy9)(T~kKbx5ec;8G657U#7 z_+y5C`{w<3{U^}ePu4n_Q4xfNg%510H`0aASF6tWlWh<)d0ZCTJ)D%4<8&K|`7zMZ z**wlolmb_4!|~W4=9ZRG!~#!1TSma-=PFX52L%U%g_=y~37jk-p>+UV z4qP-k21Y3&77$Ci`T0*F z<+)+B_TfN;jt&cJ0k;!;0YMVYPG7!Mevk7l@Rmiz#eO$`fByPqG+U;onuPz}wx_q3 zl7a%b1)nc=Mqh64%$a)835=cHsn7j27B;r@>L}n8^78UX@PWhIRhqRM;7V1o?dS7WS^DFW_%_8pZH$d?&sRrT+ z(5F?&n3u49Z?|#yvju=b3AiwzDxhae$HjR7)I1nZ4HkzOvS&Y?<$%cs0L&_LVy)mM;_(NUcy zYmeLWZSac2g9B|H9Tm^9EWS1%mHelXZX)Azy=Wh@0!}+f9#DhMH`OYbv^R1^14L3b zjXwV60^Z?5#&7rw_PmY@fy^VH$&zMrdfLgwB{DQrv&E6J@VYkw2P|-)()9NB zLIm?COEwxB8bC;kJ4%7@;?{d|7tO;_ALd0m!|gv~Hlp5G61om9J;RQ}oS2?o0+I?K z`WF`$|Be>w0qX}^fModg&Q2Amn1B#$>8-50RV;6alEnrEiGiiYtk=rndi0_df~g7P ze|s7Gicz~E#v5a<#FF%ulb&8iLZZ0uRfGvPRyjF(7*IJ{Ooy?Ny1jjTXy3y_fJpDi ztO|r=lU9=!M@A)I56Z?_?5j*NOx|@M; z38J>#SI&9i@eCT*zeh%nnteK@I$CbYT**4%uEkIEYU~4MkS}(Q)0t8}bBnNLWbXtwmmhB@twy+(P%#mRm=)rgoWM2(@M ztOC}M91+k-IL5RkeSsz(m!F@1{t7YJFiuOgB1)0M`CuEYK1hznseS>{?fmcGDXofw zw1YE2Y^WP)1_Z|K@mWLQ&m!mO-}xI zSlt=N{+gB&EPP^iS6NW;X>Q@$jj=dQ=s@9%;=p5M;IIb1#7yb>`Z|y>zyLq68u!QS zgT1t+!JnO-me%Sue*)?NhxBBin1aITN}F2(yjq#a_7D5BUqKN#Jw~-A8$hE8 zgbrk52QC*I%zL;fBED80pAqu|Xm~idLH-5HE6w;B^`%$e@A$+BU{GK-*=F6!34-$` zRW#dy_5_CrmZhPU)jfzVfCvS+Iw(O84?tF%f`i4iwbQb*vrS$qjw4=Tb8|D0#}?IR z31hW=T*aitqX<0yt_#tbZbsw#q1-O?FZF}A?$dN12|z}8KQ=|Qo}M1mr2T;oZ5c9eJx3I84>sK?9`QGiWVIRaeUNfVsR!7D400YSmafu7G z7zi$_QBV8rERN;V!!4HSNvefs@D-i=Dr#j z8e?PUjK??mz`=0|*hQtaj!$78TIk*G#7`0S&trh}ukfI8!0$=i_}D1ydk-1A3|XL3x2cSP-gfwYh?PETZ*)_G0rv!Bb<(-wL*y zvJnb9Gc`2@DVOCRUd?%bQu{iZ{kO9gc4W?Boet5jG zYpj32-;^`pUYsTWA*%YXp5doY{uxFW`6%*eEO_$WELUFP92vo!64jw6!mwWoq?+Nx z`UJlD(9r*7xi;LauzvZ3{0b0H24a+>6q>%ruTocAsqQ^Zaw*YL7j|LofZ?)J>rS<8iMY(tiahkDAQAQL! z%SB{-Vh_u2uGt}{(9$DXz!e+1SY%J$u!`-6_KCA+>`qDk<|iO75zdW6HRo>vDkq#_>(qFP#R zA8tVxy%==1hqysaN->N>--r?enCo5ADq29m|^ zBVCk`lmuMJB=m`?sWc9YDFEAMnewDWQ0?7g8^eD|U~dh`MMp;6SLgT&c)RPu!$uO4mS1P0Yvh!Ob%;7lSdbAWR4#94YyQ;xBLhwWXzdV2L2X8~27| zfgFuVt0n_rt*gy;1`ZCOtT_Q+8Zf3*R)+ruIk^afy5D0nS&>3Ec+MK07i|PKV_j`6 zDFPWIqs_mQ6%#V7U`ZNGd0>t(Fnk*{DYJF5uqXvqqL$V>2q-z8Rm+yzj9Tx8O zlPd)-EdPz(P@la{(_YllYD~YK&KRJ_aL~NO6Ywy7gM-fJ``|v3!m1nw5+K~5#yL2! z-Zqw$?18ol9)W^LNc00c4ov6Mq1u}OL5QHD;sh{UvUvfjAB_L{^((OaX#+s}2H%m2 zg5u@jp+tJsJD{N&8yVSxXh=c=1uDW^wShurE0Dbm{2s43dC4Hl9X=nasrx~4v8$_V zW#vaniKKdP|7Iq?k7wVvckE_kydX6d{qNN7?*GXY8tZPsn}d2x5^d1oEky{H-6ODT z403GW;PQDoN3!ahly+0uK>Moe>sv3^iwut7_uer}H#)lL_^?@CgcU_BHQg3VvRBvC zwAbZ{^C_Q>%rq6Fux_M97$!P~38|u{mz^garo&L+m$t zUIz%Wm`{*^-v0jmd(J$0a#RE@lQmi*es5rdw~K*E)@}gnq#s0E3hM}XoN0J@mw)~G zf|)Y~<{T*H^7#1pe0)DZLCNBOJf&;>`}c44`>Lem5@cbCpYgWm4GG1G%H7<~O)+@2+*l(!s{wIX(u*bBNBZw6uVbf#Ok7Uaq69eFt|? zpovjuW5Re;Og&kS`vwP1wLy5Ei>mtC|q|1bbwH^L(>tj98 zO@P<~M4J_W@@%~DNL}2*L5v`q-zQG)-`Uwhi&L>84JHCCFvmdZkaSv3Ru&{660@?N zu8+a?nFhSwudi%?L1Q;JH>qgh+1|N1^}4zt8{jNE zxVrMY9^rC2NvNo(I3~!*$dseFlm!5=QhtV1p|VcR6=9lFDm1@!zAu|GY-sL~qK${= zx!4-a15f42K$YL8839x;fv1~%kVPpfDypnJ1_WNd=)#?snVA{9Cm7&|GMs2b%}<|l zKr|*bbpgx)m))xMr%#_OEIdwE`J_oGD0;x?>iV=$XX?$LEuGBJ>{}F*YPm`0i)jJ& zkA$;xgS98nHwg&{0B!euxN(q>kQk(rFtWBLKt=rv_7AfzB`h=)1OmjD!NI|;GoUJf zVo(4JN(fCrK>-Eb%GA_3h%Wp`)zM%{TacGDe3)ELmQ&C79M{ITx3+XUeSN@&F$r-8 zChmNd-tb^)7L4R9B{#QLU7fTw2nv5sPhSE&)${sDigIyj30y}CukZO*7;phs$_l@M zq-BM6V_8$nj9d7JD2Lw+dUD7xB8=oBjK<&(3?n&=4fq*D#6|^!4?9B5SV8IJBfBDx zel`fDED(X=x@?Psb<68Z97c}cXkKSD!0ujpq>?=?SxOD*7 zdk^p}2gl6(e6lnM!yW-xUtU%QWX3OFz7P-+cG@DNh1w+onZ?7?6Q~AYczJq)GASqh z2}sMUtE)hO0z+S4U-b^8S8y0K1)~f*+|Pc^&NliYWwDz@MMoQg`swE()C7`J#z*R;>k1HZ*ehYKEgB_-D z^9mSxQ*(1!tj6LV9=Cun4{rKB-G-nma=hFj%L&y7nyCpOjerTZ`(5)BtfZ}hSeRER z1@c$>(;=guojzm$vq>@R|LM@K)yzteq_Kia1<^a7m$Kq^YHMfL`FRwNHh|M=uEBD) z3?!mJcLLwMcnY9c(B4lsHuAti-`Sx$lu}70nBSIhhx!${KQ0ukJo`71NXi2WS&?79iSJ6-N8VCiB2e9 zotLispqjuGMwVJqLc=LOJYx_yIbAv*o>*>=yrQG4gT#Ud4k7%(UB?YJOktvOW$?P{ zUzL0&_EnrR05$jaVq8F{!JIU4?2r8$M8pMaE(nOIfGDDxy816a>XjkBK9-8QI%N;> zh3ZD(E6R7pIHj!+*Nv=Z$7B-#14RR;3z|2TE_;%`XvgI~ZTJxMb6aD}#9I~qEHuQ8 zGIWMaF|(CRbGR4E!oyTsgl2e~HQE0WE_HTn?*OTkoKNlguT{kdYwftw^^}x;ZaYGe z0A%1|V;N}Jl?N4~c5)ul8?mgW%xK z#!%h6xG>y?O;n|1|9%ytXXMdSK4I7tv&o!mYMQIG{w60Y5k;h;t`wVb$xq{6uUjnH!L9>@ zVGsvmU}OX(L#C)&uWb&*l|XxjumDwT;mngV24)UAplfzE5$_)4ME?Pz{8Iglj6edO zx#ekx{ttH#=J8piAW0gOoZFEqGN>LLcv%Lj6xd-z0#7nB5@s3oP9Z4Q+KY=wJcJNB z;E>VLO)IOg)v+O-Uxy*aX-o+Ry9T3Grm|q09RlrzXPQK7aw27 zN3Y$z_TbIS$(pmsoDLNNK1Y**BI4ttBM=k4`i2xCEe$Jd$mWem_rJ0L033PV^=D*c zoQI!p1>MOzYy+GEkd=S7@7=!gW#L16`>VGn7dO26 zrdZWw(qKIWJ(Pt5oxcqnaZF21_2EuWhnJ(zGK$aA3l`)cQsnI|8pA3i0~EzEGcQk&E_`5Y>>89F z5R^7FGz7`C$A^c32_?(-k~48=2&JEYJL`ygd$(t2uYq6}I0*ofeH8DVF(ENJby9s$ zs(~P1`Sfrx4wT)Q>1lj`hrp2pBqSt=KS?O~Vj%2ogxh33nFsKhWf*Cy(!n{Mw1yZJ zAl%c_?2dLOl?>0&@@Np<|3*h>+2?MYuwsNp>i|#y;_ww}_qmK=^H?X4v{A#0OUMpR z%>zqfSxKvT?ggsP*r~SEY&eZ^n}G0aWo3mDGTr88XDN~m;z97RuwZr9XjTAHq2J-1 z8b|%sop%+KX=EfMSvffoVPOh8a;+dvTMBTls-9*sJN3)>E|3QktgQr|AJ`L_{$J#I z@Il~~g0DCC9WBKZ78dsA{vH%`P#LtewUzIirG!piGqofm)2ygy$BqJLgqYJZ0rYj? z@{bEV6JTJ7>{FN985?8Z;@+r{llS)b-{0TQbKy9K8^pHutEm10_1(zG2y`IvNIWqy z(kj+0BhcrywHHC<1*{ZgDGGH-Z|`N;*dWjWBtmDHYRxScy(+4H>CJZ7v&|m(3v-HM znHp3C*ae!^@X!!w*B7AF#pjNdXaoYK z2_%+mK^2BjP*H*YOs^5T3jPlgj%&0akD}l19=ptY2(*5Hd8qupDa#cBUIe0aIk4bV zfoKr`-A^C}3hoY^e?|rYHFYsasIwVcT9zfw&M)={$`>mDdcnbg3E}1A0|gZ;F%%$K zjLygFCBV&~K7j-;A`VjquLqmO593W?7xb___XF8=-<)355!LHV-D2dsi!z70T9zz`Xa(?%|<$rCz*Z zjY^mblgrDzl$1fdMbHJbP(S2ENw&Uh(9W4(yvI>MQzCbXF4oks{8s$IW|4!KIQvC< z9FZL)NeE}*;PAdGo4fEw4gLHUtoV!~um`GS*haM9p*S6u_7?rg_G3y=4X+~h%}9JG zjY><0l7^-%ldqhUj6K7Ae!91_u{j1Bz(AjhZkuamaj{u{6yZChKHxn75>(lK3HIbQ zz{n*f2tTwy1gzA-ZwIt$z(c{|k+7eiZtm`Yb{8-E@9*C(hh^Z5P*V1ejoE@M{+01x zFvWwhI&<74DE*9q#sKzD}Z0KHUI8j#4MqMbak2%sDQ zfo(j@vH#lb z3P&L}zq|IxR?eU1QAMgX;nmiJ9M4=$H9kBne8aB{bYHRBMJ|rdc)()@;LFd?k0^Q< zqz;dcbp7A}i4x71@F|vr{MNB>ZrqZ5_Kk5*l?hjSzI|V*O+}jdPxp8OpDz*^?2U~s zpl{rGKYe|T0rZT+N?mZ&()?lOCvCWx!s>P}tuB>5W8qeYCeqh0l-Wf^X{4l}^;#7c z_ut;1ev65DmCW?mhPJlUOa%F4hI3}e+7ldv$b7PLf9krFFWwjx^aflgO!Lic{DHp5O21^B%`>ypNBk zPzq*&j)kew5P%N)2WzF|>^7Rr^IqQ{mijAxVxrqnmwSq1%a;6-5>MJ4%O>k(NZuOGs-j2%IwbuFA&0e*bK|{GM}0_a5G#BOCns=~baiN2=b}uji7IhWF9* zeJa$Dt;Uz0Y0WrIo**aO-PSR_FjI8+R{GP<@v)N>RO^o)=PTJpTT=%9@vPC>4AAf1 z&~C}-27>{iK!@AM=cYP<$a5dOwz9D1dBZ|BNHtnITe&-$?SH_2J@3P0!ebVUbs?!1GWpN&2cgQg#n|K5ox1j6YfU{sr$g?XZ>6hZRXB z<2mt{?(z56c8m%i-u{k@ehclQ348C3g@BL{&V6RSNDsGfSA&CQ2>>{*Q<(F-31u$I z-ijf6PT{$6Kz=!0)uY-Q9rq{{MKS)0K}wRU>>`P@;2O*chF z&84s71XHu5eI9vV5|u?Q-hLY_Uk_$GZ*7)zn0lb-apT1fnH@C?GwOjS-*Y0`3FhnF z>LUaO4#%kPgK7;uLs%^&7raOA?iCk**O2yA6C=*%<|7w>TxGkFN_FCp>X@W=&>ZtV znnzA|RcpJ}_D%&F3spQl)y3vzqo@g2uEf%Ddfhm`{dvoc4RakS zF5!(I5-Xc&Ij+4}PP=#JMdE0ls7H@$pyLL?o5RwU;Q))4mzPn-C7zfZ8To-hGl2Z4 zQ^GC54|L>OYG1Cb9Ps-6CGCouzv6)ncq?7DSI*2accC$zV&0b5%gKK(OxyQd;ZD2W z`ExpL@2aYvzC1hA663a&fJF~@&-=k|PHFmYU;9sf5%#d1e=Q^IrQi0(x?2=Q3J6*g z6BEbT8+?BNnFCaE_EMSBeyJJ|x` ziU^!&wq}g30~6;u=RXg_o_+14?BzeMlK z=bruFFDZNN5fSNVYvT@qUKn^ssp2Q*EU@hLYZ-y5>wtKC4p&+Q_HTMYxOGQ_{aK;M z&rf3w-;x;%ox;3y2a2PQG^^bI{Vr5Pe_lyP{9K#Exn-U?W+CS4gZj)9nt|#O{4W6k z6cxqnIBE-a9<``;tnAqIwEILehocLLqC=NTszs{JJP$W8_&=i!Oj-U?rI#L|SLIM7 zS~-xX6#qeUnf(Ui1@+^{`FYKbRm((}eSBjpFE5XgWDw1xRr_)ELDz!_!)3WDy#vvI zdYYYqAyI`IH5K=WP`H-1`XN z4-ZkJJg#kWfk@?-I|Wl8x&~r|Sx7`I?PNxQ=BsimwtHPe%9YctO*Wf4wGXMD9FD;t zB-A@CfI=`H?cm@5r4E6B7Hs1!Y`|%JnY?Ui!28?y_2eCfn z$64nzu%7GEe_n^fgfo6m)`6*5qM)QofZ68M!{(opic$kM-88ET)K$@sOk#d|YYU}$ z0J{XkU3Q@(D*CNe#$}s$xK2L3)lgC5eK)_fN%AfE=7|w``Ky*Ka!Y-MpJQTyzZagb z1j{O*`N)S})^W5BEzS8wAp)@i;((^6rlW8XavW6y#*yJ3h~j`l)+zP={VsHV{_d!t zP~ZV##Pl6hFOC=WgodW4F9Wzce|{eTPH^t{AseAUXWAEBUuZ;tyMP0bkdhLJiUiK> z+lq=K3$n*FXeM%}g@!Nsy<8nS*|JG28XDPtytSajoa;=dwRL`oyxi7cuVTaNGW z$vvy>iPoGN{Xw4-^(J-Q1Iz^Z_<;=NQ}c&Ro^1RM-|W#;jt}U-0_r>-=Xr zqn`?;V^dS=tWOdpw~Iff>9~yNo?=jzeeu|MG4;gFM5q0-N3_Fc9^K*Ez>#y1jhvuJ z)$t^1b7DkNvcdJRb0yM}TksQgf@YIKZ4$q#`ONYmnPPY1 z^%z(6n z1^(8$d|_$;-i%5-WOO2;qGZi$Xxi39d-w{78A-!3CF6cd1 z^3$iPDk`I+qgGZ{fa}fCw!=7QSrG`6tm`aSfXbO{GgT`q!MOw6-D(tfLra5SzO;p4 zLOMQdQa!um>1u!Uv)`&sP4m}wX>D2|LUB({>Rech9FDfj=D-M=94Vd?oP!G zJPdNGzO5M51j3zNu}w+Mmy&&LJ4-|hKY?I0wQ+#?urIah6A?85Gf?gCO!rnD;%JL7 zbF-akvmVpZ+M~%R6t65LFA(xkes}02&0V`Fm4Ektk`UtYy?AGWwbat^^homCt)-mw zXnaV+M#jOjq#o^n6@8-S`~Lo&0BSL<*xP&N`t{$ywXnc=ePJ`(f8 zk6SF>FvDnWZmzzir5kdT0%wsmSo!R1z_c|aBM4r%>Ca@DmSY(0!-KYo1&PrG7Tz#5 zgc3YJf9vXoFz$Hs;D$GyI4|!8R`h8+JUr-~XHjXw;sU@KHFenKLJVIY#c=rDyLS)Y z+88i$bUs+S3}=kg$%;$jy6Dk= z4vjPbL=FxPbv|9NCg22!=LD1A9~tMaPt|(5J%E@8uW@_);133r} zj%yw}RvFD96zhr_ca<8+Gm+qoXo;AN$bQ4|GO=iHMsvVfONFP*CMNF+!{I>% zz}51&kTQRS(C3ITGqs~(LdE)BuOtqrdM)UlRX=Hj@I8vK1>18UX zYBc^N#lOMEJMmxPP*+3U9Ra3+;W>d(QIlf3F0e4ZP4@SWJbzd$DF=ftKw+h&UD5tQk|nZxHw}?E z`~5o)jVNd{e1#-xfTR+ib@WF#7h|VhBiv9L8q9wu|GmOY6vpzT0q}B=^2ln zW+xO-iKnCpGNXEgkP!tDcnYIzGfMA~46fKZ;SB+&+!uK)j_z|0f^DvA=<8hsd^ zbVz-0+!@u;ix)2dg9HZ$gM7(b8Lelk;1U&W#zL#B6O@!(gv6GCbZuWPF#q!gY9}DT z+p%LuXD7*K>>Bu!Hu8-=S8g><33=%}%F50TV;e#vs-~sY1(aRdVHn!XeHoR~E8Izr55iI*7?PPmR$T_H!NL&n=`#;2;16e`3QJ}IZV z>2bUBPJ{c>=ZcEA2@7Lcj#b`ghXgvLil0qUovrgHgWIu#FxRUnACOO6ZE zCpX^Ocd0!YSnlvi7a3MLSLnE*m>I4SF|cA<@HEcM)z#I}QQXoK z2_GC}Y%GToiJro&C5Y+eJ|IgV!LftS7#gCrFaVWs0Q3bs_w+aAwJ$OMhBMu zbwPpq#f$v?z_$ZY?^&q8$3jVa4ia4aRx`bh@qDPByv_=~QYb0n_{cFFw zg12aDZbmjcpfm~B0!YLwrn}N8frS&^?2}z#*}s23Ix2EwRrK8g7@}LQ6`A9}1s{N` z1@$fH{D<8!lLSia{GL9jR*?4~O5XTwdAw;m6Vp`2NV#Q63u-PD(-qG3%#@V3QJy4; ztW0$X;B6E|UR+;W)zj6*>>JOZ4iUO;1zZ;}GP@;I6XDr+22~rq62>m^(li@Kf@mpa zLbDo*oG0#`NqO@8h2UV&Ln;UYKmtCDjD#i;7JlA{*?DWY)DX)cu~kXcG`w5(?7w&K z9`vmcasrA4^ykY&AW-;f`H}^^Oi_EPE5sa#aey_MpeYr(YQVrqe#Sxm+t}Fj4Gb8g zk*2G%EY;Piqpi}oEG}HYJUxtQ0<}CC9zNYuQpc%=HU#B3k^9`aPf%ol82_1zmZTk_Qq8O`h?$d+ZX^FaW6< z$Mp?JY$o-4{R2bZJh7tx{2~vzYUrk*ta^!Jte`-akIy$$#2WoIKA3@lsIV}sF?c__ zJx|ClD1cB8rZ_j`_Y%~6zb2n($r)c8;p2q@)BmJwodt zOrd9;ube%Lo)=^HC~wh9Rn4NyjI#F5)~jN@P0rs--10ZZZbBj<&QksDDrnUL%^ZeS zD1Ade*&J+stB6QTP#pJ379`7CY&!g}|Jr&j_Y2MZ7TJR&2W~}iMP262@|7vXzpt@H zEs)V?X7;)M0`uYMErbI8gcQMMe6{Nfy$(RG*fPMjz!xR>vvsI9YmnI`^b91p>1d%{uqzEsX? zvcEDv)6bXwU41<@4Gn0kCv8@^Q0X_jsi~=v+^|F7O`;ulsQf;z+aoEvI7IEJsHj`F zl%1U=G6cfZ;IRZhGHfaUSx-Br@=A(}IjkRDx_lXeR9yApU!e5hpNWitAH%u{@D3m( zL<7$hprfPn{PTd|A9h*y^`@MDVGaTr29i5o9v**pV-s1%0A?m85}74_TDZv(aW^wF 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 Cm}6T2 literal 25031 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 Y>hWGjrkN7_2MrWblJZyHU)Fu_Uke(F3IG5A diff --git a/doc/salome/gui/SMESH/input/importing_exporting_meshes.doc b/doc/salome/gui/SMESH/input/importing_exporting_meshes.doc index 9b0d032fa..6519aa16d 100644 --- a/doc/salome/gui/SMESH/input/importing_exporting_meshes.doc +++ b/doc/salome/gui/SMESH/input/importing_exporting_meshes.doc @@ -2,19 +2,22 @@ \page importing_exporting_meshes_page Importing and exporting meshes -\n In MESH there is a functionality allowing importation/exportation +\n In MESH there is a functionality allowing import/export of meshes from/to \b MED, \b UNV (I-DEAS 10), \b DAT (simple ascii format), \b STL, -\b GMF (internal format of DISTENE products, namely BLSurf, GHS3D and Hexotic algorithms) and \b CGNS format files. You can also export a group as a whole mesh. +\b GMF (internal format of DISTENE products, namely BLSurf, GHS3D and +Hexotic algorithms) and \b CGNS format files. You can also export a +group as a whole mesh. To import a mesh:

  1. From the \b File menu choose the \b Import item, from its sub-menu -select the corresponding format (MED, UNV, STL, GMF and CGNS) of the file containing -your mesh.
  2. + select the corresponding format (MED, UNV, STL, GMF and CGNS) of the + file containing your mesh.
  3. In the standard Search File dialog box find the file for -importation. It is possible to select multiple files to be imported all at once.
  4. + import. It is possible to select multiple files to be imported all at + once.
  5. Click the \b OK button.
@@ -24,17 +27,35 @@ importation. It is possible to select multiple files to be imported all at once. To export a mesh or a group:
    -
  1. Select the object you wish to export.
  2. -
  3. From the \b File menu choose the \b Export item, from its sub-menu -select the format (MED, UNV, DAT, STL, GMF and CGNS) of the file which will -contain your exported mesh.
  4. -
  5. In the standard Search File select a location for the -exported file and enter its name.
  6. -
  7. Click the \b OK button.
  8. +
  9. Select the object you wish to export.
  10. +
  11. From the \b File menu choose the \b Export item, from its sub-menu + select the format (MED, UNV, DAT, STL, GMF and CGNS) of the file which will + contain your exported mesh.
  12. +
  13. In the standard Search File select a location for the + exported file and enter its name.
  14. +
  15. Click the \b OK button.
\image html meshexportmesh.png +At export to MED and SAUV format files additional parameters are available. +
    +
  • Automatically create groups check-box specifies whether to + create groups of all mesh entities of available dimensions or + not. If checked, the created groups have names like "Group_On_All_Nodes", + "Group_On_All_Faces" etc.
  • +
  • Automatically define space dimension check-box specifies + whether to define space dimension for export by mesh configuration + or not. Usually the mesh is exported as a mesh in 3D space, just as + it is in Mesh module. The mesh can be exported as a mesh in lower + dimension in following cases, provided that this check-box is + checked. +
      +
    • 1D: if all mesh nodes lie on OX coordinate axis.
    • +
    • 2D: if all mesh nodes lie on XOY coordinate plane.
    • +
    +
  • +

See Also a sample TUI Script of an \ref tui_export_mesh "Export Mesh" operation. */ diff --git a/doc/salome/gui/SMESH/input/tui_creating_meshes.doc b/doc/salome/gui/SMESH/input/tui_creating_meshes.doc index d7edad332..f1b12e4c4 100644 --- a/doc/salome/gui/SMESH/input/tui_creating_meshes.doc +++ b/doc/salome/gui/SMESH/input/tui_creating_meshes.doc @@ -20,7 +20,7 @@
\anchor tui_editing_mesh -

Editing of a mesh

+

Editing a mesh

\tui_script{creating_meshes_ex04.py}
diff --git a/idl/SMESH_Mesh.idl b/idl/SMESH_Mesh.idl index 96e926990..e7fad8716 100644 --- a/idl/SMESH_Mesh.idl +++ b/idl/SMESH_Mesh.idl @@ -596,19 +596,26 @@ module SMESH boolean HasDuplicatedGroupNamesMED(); /*! - * Export Mesh to different MED Formats + * Export Mesh to a MED Format file * @params * - file : name of the MED file * - auto_groups : boolean parameter for creating/not creating - * the groups Group_On_All_Nodes, Group_On_All_Faces, ... ; - * the typical use is auto_groups=false. + * the groups Group_On_All_Nodes, Group_On_All_Faces, ... ; + * the typical use is auto_groups=false. * - version : define the version of format of MED file, that will be created * - overwrite : boolean parameter for overwriting/not overwriting the file, if it exists + * - autoDimension: if @c True (default), a space dimension of a MED mesh can be either + * - 1D if all mesh nodes lie on OX coordinate axis, or + * - 2D if all mesh nodes lie on XOY coordinate plane, or + * - 3D in the rest cases. + * + * If @a autoDimension is @c False, the space dimension is always 3. */ void ExportToMEDX( in string file, in boolean auto_groups, in MED_VERSION version, - in boolean overwrite ) raises (SALOME::SALOME_Exception); + in boolean overwrite, + in boolean autoDimension ) raises (SALOME::SALOME_Exception); /*! * Export a part of Mesh into a MED file @@ -617,15 +624,20 @@ module SMESH * - file : name of the MED file * - version : define the version of format of MED file, that will be created * - overwrite : boolean parameter for overwriting/not overwriting the file, if it exists + * - autoDimension: if @c True, a space dimension for export is defined by mesh + * configuration; for example a planar mesh lying on XOY plane + * will be exported as a mesh in 2D space. + * If @a autoDimension == @c False, the space dimension is 3. */ void ExportPartToMED( in SMESH_IDSource meshPart, in string file, in boolean auto_groups, in MED_VERSION version, - in boolean overwrite ) raises (SALOME::SALOME_Exception); + in boolean overwrite, + in boolean autoDimension ) raises (SALOME::SALOME_Exception); /*! - * Export Mesh to different MED Formats + * Export Mesh to a MED Format file * Works, just the same as ExportToMEDX, with overwrite parameter equal to true. * The method is kept in order to support old functionality */ diff --git a/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx b/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx index a3d934c84..9289fb236 100644 --- a/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx +++ b/src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx @@ -52,7 +52,8 @@ DriverMED_W_SMESHDS_Mesh::DriverMED_W_SMESHDS_Mesh(): myDoGroupOfFaces (false), myDoGroupOfVolumes (false), myDoGroupOf0DElems(false), - myDoGroupOfBalls(false) + myDoGroupOfBalls(false), + myAutoDimension(true) {} void DriverMED_W_SMESHDS_Mesh::SetFile(const std::string& theFileName, @@ -120,7 +121,8 @@ void DriverMED_W_SMESHDS_Mesh::AddGroupOfVolumes() myDoGroupOfVolumes = true; } -namespace{ +namespace +{ typedef double (SMDS_MeshNode::* TGetCoord)() const; typedef const char* TName; typedef const char* TUnit; @@ -311,12 +313,13 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform() } // Mesh dimension definition - TInt aSpaceDimension; + TInt aSpaceDimension = 3; TCoordHelperPtr aCoordHelperPtr; { bool anIsXDimension = false; bool anIsYDimension = false; bool anIsZDimension = false; + if ( myAutoDimension ) { SMDS_NodeIteratorPtr aNodesIter = myMesh->nodesIterator(); double aBounds[6]; diff --git a/src/DriverMED/DriverMED_W_SMESHDS_Mesh.h b/src/DriverMED/DriverMED_W_SMESHDS_Mesh.h index 7c02b40f0..95daf9fa6 100644 --- a/src/DriverMED/DriverMED_W_SMESHDS_Mesh.h +++ b/src/DriverMED/DriverMED_W_SMESHDS_Mesh.h @@ -48,6 +48,7 @@ class MESHDRIVERMED_EXPORT DriverMED_W_SMESHDS_Mesh: public Driver_SMESHDS_Mesh virtual void SetFile(const std::string& theFileName); void SetFile(const std::string& theFileName, MED::EVersion theId); + void SetAutoDimension(bool toFindOutDimension) { myAutoDimension = toFindOutDimension; } static std::string GetVersionString(const MED::EVersion theVersion, int theNbDigits=2); /*! sets file name; only for usage with Add(), not Write() @@ -81,6 +82,7 @@ class MESHDRIVERMED_EXPORT DriverMED_W_SMESHDS_Mesh: public Driver_SMESHDS_Mesh bool myDoGroupOfVolumes; bool myDoGroupOf0DElems; bool myDoGroupOfBalls; + bool myAutoDimension; }; diff --git a/src/SMESH/SMESH_Mesh.cxx b/src/SMESH/SMESH_Mesh.cxx index c83737cf7..8ca54a409 100644 --- a/src/SMESH/SMESH_Mesh.cxx +++ b/src/SMESH/SMESH_Mesh.cxx @@ -1248,19 +1248,21 @@ void SMESH_Mesh::ExportMED(const char * file, const char* theMeshName, bool theAutoGroups, int theVersion, - const SMESHDS_Mesh* meshPart) + const SMESHDS_Mesh* meshPart, + bool theAutoDimension) throw(SALOME_Exception) { Unexpect aCatch(SalomeException); DriverMED_W_SMESHDS_Mesh myWriter; - myWriter.SetFile ( file, MED::EVersion(theVersion) ); - myWriter.SetMesh ( meshPart ? (SMESHDS_Mesh*) meshPart : _myMeshDS ); + myWriter.SetFile ( file, MED::EVersion(theVersion) ); + myWriter.SetMesh ( meshPart ? (SMESHDS_Mesh*) meshPart : _myMeshDS ); + myWriter.SetAutoDimension( theAutoDimension ); if ( !theMeshName ) - myWriter.SetMeshId ( _id ); + myWriter.SetMeshId ( _id ); else { - myWriter.SetMeshId ( -1 ); - myWriter.SetMeshName( theMeshName ); + myWriter.SetMeshId ( -1 ); + myWriter.SetMeshName ( theMeshName ); } if ( theAutoGroups ) { diff --git a/src/SMESH/SMESH_Mesh.hxx b/src/SMESH/SMESH_Mesh.hxx index e329e0313..5dc907eae 100644 --- a/src/SMESH/SMESH_Mesh.hxx +++ b/src/SMESH/SMESH_Mesh.hxx @@ -229,11 +229,12 @@ public: */ bool HasDuplicatedGroupNamesMED(); - void ExportMED(const char *file, - const char* theMeshName = NULL, - bool theAutoGroups = true, - int theVersion = 0, - const SMESHDS_Mesh* meshPart = 0) + void ExportMED(const char * theFile, + const char* theMeshName = NULL, + bool theAutoGroups = true, + int theVersion = 0, + const SMESHDS_Mesh* theMeshPart = 0, + bool theAutoDimension = false) throw(SALOME_Exception); void ExportDAT(const char * file, diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 0bbbf9bda..414094665 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -591,6 +591,7 @@ if ( resMgr ) toCreateGroups = resMgr->booleanValue( "SMESH", "auto_groups", false ); bool toOverwrite = true; + bool toFindOutDim = true; QString aFilter, aTitle = QObject::tr("SMESH_EXPORT_MESH"); QString anInitialPath = ""; @@ -612,32 +613,6 @@ anInitialPath + QString("/") + aMeshName, aFilter, aTitle, false); } - // else if ( isGMF )// Export to GMF - // { - // SalomeApp_CheckFileDlg* fd = new SalomeApp_CheckFileDlg - // ( SMESHGUI::desktop(), false, QObject::tr("SMESH_REQUIRED_GROUPS"), true, true ); - // QStringList filters; - // filters << QObject::tr( "GMF_ASCII_FILES_FILTER" ) + " (*.mesh)" - // << QObject::tr( "GMF_BINARY_FILES_FILTER" ) + " (*.meshb)"; - // fd->setWindowTitle( aTitle ); - // fd->setNameFilters( filters ); - - // if ( !aMeshOrGroup->_is_equivalent( aMesh )) - // toCreateGroups = false; - // else - // toCreateGroups = ( aMesh->NbGroups() > 0 ); - - // fd->SetChecked( true ); - // if ( !anInitialPath.isEmpty() ) - // fd->setDirectory( anInitialPath ); - // fd->selectFile(aMeshName); - - // if ( fd->exec() ) - // aFilename = fd->selectedFile(); - // toCreateGroups = fd->IsChecked(); - - // delete fd; - // } else if ( isCGNS )// Export to CGNS { SUIT_FileDlg* fd = new SUIT_FileDlg( SMESHGUI::desktop(), false, true, true ); @@ -705,13 +680,16 @@ if (it.value() == SMESH::MED_V2_2) aDefaultFilter = it.key(); } + QStringList checkBoxes; + checkBoxes << QObject::tr("SMESH_AUTO_GROUPS") << QObject::tr("SMESH_AUTO_DIM"); - SalomeApp_CheckFileDlg* fd = new SalomeApp_CheckFileDlg - ( SMESHGUI::desktop(), false, QObject::tr("SMESH_AUTO_GROUPS"), true, true ); + SalomeApp_CheckFileDlg* fd = + new SalomeApp_CheckFileDlg ( SMESHGUI::desktop(), false, checkBoxes, true, true ); fd->setWindowTitle( aTitle ); fd->setNameFilters( filters ); fd->selectNameFilter(aDefaultFilter); - fd->SetChecked(toCreateGroups); + fd->SetChecked(0,toCreateGroups); + fd->SetChecked(1,toFindOutDim); if ( !anInitialPath.isEmpty() ) fd->setDirectory( anInitialPath ); fd->selectFile(aMeshName); @@ -794,7 +772,8 @@ } } } - toCreateGroups = fd->IsChecked(); + toCreateGroups = fd->IsChecked(0); + toFindOutDim = fd->IsChecked(1); delete fd; } else @@ -833,10 +812,10 @@ SMESH::SMESH_Mesh_var aMeshItem = aMeshOrGroup->GetMesh(); if ( aMeshOrGroup->_is_equivalent( aMeshItem )) aMeshItem->ExportToMEDX( aFilename.toLatin1().data(), toCreateGroups, - aFormat, toOverwrite && aMeshIndex == 0 ); + aFormat, toOverwrite && aMeshIndex == 0, toFindOutDim ); else aMeshItem->ExportPartToMED( aMeshOrGroup, aFilename.toLatin1().data(), toCreateGroups, - aFormat, toOverwrite && aMeshIndex == 0 ); + aFormat, toOverwrite && aMeshIndex == 0, toFindOutDim ); } } else if ( isSAUV ) diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index 0700b59a9..b2709a1ba 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -1269,6 +1269,10 @@ Please enter correct values and try again SMESH_AUTO_GROUPS Automatically create groups + + SMESH_AUTO_DIM + Automatically define space dimension + SMESH_REQUIRED_GROUPS Create groups of required entities diff --git a/src/SMESH_I/SMESH_Mesh_i.cxx b/src/SMESH_I/SMESH_Mesh_i.cxx index 32f1a980d..cb9f47f3f 100644 --- a/src/SMESH_I/SMESH_Mesh_i.cxx +++ b/src/SMESH_I/SMESH_Mesh_i.cxx @@ -2708,7 +2708,8 @@ string SMESH_Mesh_i::prepareMeshNameAndGroups(const char* file, void SMESH_Mesh_i::ExportToMEDX (const char* file, CORBA::Boolean auto_groups, SMESH::MED_VERSION theVersion, - CORBA::Boolean overwrite) + CORBA::Boolean overwrite, + CORBA::Boolean autoDimension) throw(SALOME::SALOME_Exception) { Unexpect aCatch(SALOME_SalomeException); @@ -2717,9 +2718,11 @@ void SMESH_Mesh_i::ExportToMEDX (const char* file, string aMeshName = prepareMeshNameAndGroups(file, overwrite); TPythonDump() << _this() << ".ExportToMEDX( r'" - << file << "', " << auto_groups << ", " << theVersion << ", " << overwrite << " )"; + << file << "', " << auto_groups << ", " + << theVersion << ", " << overwrite << ", " + << autoDimension << " )"; - _impl->ExportMED( file, aMeshName.c_str(), auto_groups, theVersion ); + _impl->ExportMED( file, aMeshName.c_str(), auto_groups, theVersion, 0, autoDimension ); } //================================================================================ @@ -2848,29 +2851,39 @@ void SMESH_Mesh_i::ExportPartToMED(::SMESH::SMESH_IDSource_ptr meshPart, const char* file, CORBA::Boolean auto_groups, ::SMESH::MED_VERSION version, - ::CORBA::Boolean overwrite) + ::CORBA::Boolean overwrite, + ::CORBA::Boolean autoDimension) throw (SALOME::SALOME_Exception) { Unexpect aCatch(SALOME_SalomeException); - if ( _preMeshInfo ) - _preMeshInfo->FullLoadFromFile(); + TPythonDump pyDump; - PrepareForWriting(file, overwrite); + if ( SMESH_Mesh_i * mesh = SMESH::DownCast< SMESH_Mesh_i* >( meshPart )) + { + mesh->ExportToMEDX( file, auto_groups, version, autoDimension ); + } + else + { + if ( _preMeshInfo ) + _preMeshInfo->FullLoadFromFile(); - string aMeshName = "Mesh"; - SALOMEDS::Study_var aStudy = _gen_i->GetCurrentStudy(); - if ( !aStudy->_is_nil() ) { - SALOMEDS::SObject_wrap SO = _gen_i->ObjectToSObject( aStudy, meshPart ); - if ( !SO->_is_nil() ) { - CORBA::String_var name = SO->GetName(); - aMeshName = name; + PrepareForWriting(file, overwrite); + + string aMeshName = "Mesh"; + SALOMEDS::Study_var aStudy = _gen_i->GetCurrentStudy(); + if ( !aStudy->_is_nil() ) { + SALOMEDS::SObject_wrap SO = _gen_i->ObjectToSObject( aStudy, meshPart ); + if ( !SO->_is_nil() ) { + CORBA::String_var name = SO->GetName(); + aMeshName = name; + } } + SMESH_MeshPartDS partDS( meshPart ); + _impl->ExportMED( file, aMeshName.c_str(), auto_groups, version, &partDS, autoDimension ); } - SMESH_MeshPartDS partDS( meshPart ); - _impl->ExportMED( file, aMeshName.c_str(), auto_groups, version, &partDS ); - - TPythonDump() << _this() << ".ExportPartToMED( " << meshPart << ", r'" << file << "', " - << auto_groups << ", " << version << ", " << overwrite << " )"; + pyDump << _this() << ".ExportPartToMED( " << meshPart << ", r'" << file << "', " + << auto_groups << ", " << version << ", " << overwrite << ", " + << autoDimension << " )"; } //================================================================================ diff --git a/src/SMESH_I/SMESH_Mesh_i.hxx b/src/SMESH_I/SMESH_Mesh_i.hxx index f9df1792b..68d60d0e1 100644 --- a/src/SMESH_I/SMESH_Mesh_i.hxx +++ b/src/SMESH_I/SMESH_Mesh_i.hxx @@ -231,7 +231,8 @@ public: void ExportToMEDX( const char* file, CORBA::Boolean auto_groups, SMESH::MED_VERSION version, - CORBA::Boolean overwrite ) throw (SALOME::SALOME_Exception); + CORBA::Boolean overwrite, + CORBA::Boolean autoDimension=true) throw (SALOME::SALOME_Exception); void ExportToMED ( const char* file, CORBA::Boolean auto_groups, SMESH::MED_VERSION version ) throw (SALOME::SALOME_Exception); @@ -254,7 +255,8 @@ public: const char* file, CORBA::Boolean auto_groups, SMESH::MED_VERSION version, - CORBA::Boolean overwrite) throw (SALOME::SALOME_Exception); + CORBA::Boolean overwrite, + CORBA::Boolean autoDim=true) throw (SALOME::SALOME_Exception); void ExportPartToDAT(SMESH::SMESH_IDSource_ptr meshPart, const char* file) throw (SALOME::SALOME_Exception); void ExportPartToUNV(SMESH::SMESH_IDSource_ptr meshPart, diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index 5a753f1bf..e819c6630 100644 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -1567,14 +1567,21 @@ class Mesh: # @param version MED format version(MED_V2_1 or MED_V2_2) # @param overwrite boolean parameter for overwriting/not overwriting the file # @param meshPart a part of mesh (group, sub-mesh) to export instead of the mesh + # @param autoDimension: if @c True (default), a space dimension of a MED mesh can be either + # - 1D if all mesh nodes lie on OX coordinate axis, or + # - 2D if all mesh nodes lie on XOY coordinate plane, or + # - 3D in the rest cases. + # + # If @a autoDimension is @c False, the space dimension is always 3. # @ingroup l2_impexp - def ExportMED(self, f, auto_groups=0, version=MED_V2_2, overwrite=1, meshPart=None): + def ExportMED(self, f, auto_groups=0, version=MED_V2_2, + overwrite=1, meshPart=None, autoDimension=True): if meshPart: if isinstance( meshPart, list ): meshPart = self.GetIDSource( meshPart, SMESH.ALL ) - self.mesh.ExportPartToMED( meshPart, f, auto_groups, version, overwrite ) + self.mesh.ExportPartToMED( meshPart, f, auto_groups, version, overwrite, autoDimension) else: - self.mesh.ExportToMEDX(f, auto_groups, version, overwrite) + self.mesh.ExportToMEDX(f, auto_groups, version, overwrite, autoDimension) ## Exports the mesh in a file in SAUV format # @param f is the file name -- 2.39.2