From 50d4798371085d17938a7820cd90a2417d568ef1 Mon Sep 17 00:00:00 2001 From: eap Date: Tue, 14 Nov 2017 21:15:33 +0300 Subject: [PATCH 1/6] 23491: EDF 15591 - Duplicate Elements / Nodes Make AffectedElemGroupsInRegion() universal, make it available in Duplicate dialog --- doc/salome/gui/SMESH/images/duplicate01.png | Bin 23304 -> 22372 bytes doc/salome/gui/SMESH/images/duplicate02.png | Bin 28256 -> 27495 bytes doc/salome/gui/SMESH/images/duplicate03.png | Bin 20681 -> 18420 bytes doc/salome/gui/SMESH/images/duplicate04.png | Bin 22084 -> 19200 bytes .../gui/SMESH/input/double_nodes_page.doc | 8 +- src/SMESH/SMESH_MeshEditor.cxx | 731 ++++++++++++++---- src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx | 153 ++-- src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.h | 3 +- src/SMESHGUI/SMESH_msg_en.ts | 4 + src/SMESHUtils/SMESH_MeshAlgos.hxx | 48 ++ src/SMESH_I/SMESH_2smeshpy.cxx | 21 +- src/SMESH_I/SMESH_MeshEditor_i.cxx | 96 ++- src/SMESH_SWIG/smeshBuilder.py | 4 +- 13 files changed, 807 insertions(+), 261 deletions(-) diff --git a/doc/salome/gui/SMESH/images/duplicate01.png b/doc/salome/gui/SMESH/images/duplicate01.png index f7acf902545a20eed3ce03fd5f5d6e7a04206dff..af668e1952de18b1299a0bada2ffc2c51359d248 100644 GIT binary patch literal 22372 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 E06kmCkN^Mx literal 23304 zcmce;1y~&2wysNz;1*niTX6S;;O-8MOJl(uLg?TUAke|x-5r9vySuwPoXY>NwV!>~ z+V|XZ_dWOa(=^pZb#={IbB^(jZ;VNhf}A)q0zLu^3=FcQgoqLh%u6&Fm=|VnFM&O- zMccf?)(Uc}I&5CA*r9Yr-9MNAxw>@B`HTG-mas9V?=+q%5}Y-Ql! z!24d&k-@>q(BR7#D+?ooKYtHU6IBF0M)~JsDi)4bCNLsSfB(_sy_~JFiNkvX8)GJ0 z`}d+&Ce|i4jt=yGiFGhA?_nfGKB>4S9xS@(D68MYoH($-2O^L=jOvq@&dTT_{BQ!*XK|A&59-7Nks54FkcxDRYe7n zNhc;Kb`Ks2a##3%VC`t26odhqeM znP!mwa|m6*kMk=^xF0ZX~gOxO7}R@ zSdJ#a?_n)Yp1-brB#z_`zW->X=ND03KmAfsP*f!3%-l9)@w53;im7($Xs(h)^jw4Y z!)eah8LQ|0as>snmm-PpK}`r|N!K>H!{cgVzLql+Y9|lt=e)BMGjG>R7c>9fVBu;1 z>(v~&xX>*Ep{M2{%0J~{EGr&;AT>&o_{eO zGqHzk08a^Z@u5^je~pt0>C1kwM{gusEDn6GZI-26_ z(JK*akdVVxr6}S{p=ZO8;$+2z!DBRGhi&V=o)4vEoI-9^uY`O0kJ%t--qTN?g=CX= z#=9qOrjo?9T@t}om@O76;qjSc^FBmmTINwwRH5g|ER)OWBn^^O{XHMxbZg&`Zmb^F zerc6qY~YHPEGf=wNV)MmZatrztP){@OY69Y7nz1j`z_hbmL0y=&rwwH?$K*|)VCc6 zye|R{pn~?RmuT_YNts7uX_GR;`x}r9;tH6QgGiLu_x9%Yx!y&1y1a=<={5GOJ5vT7 zlYWZ|?iX5CS&){VZd_$V6ik^KUXYoaP|;9vUz@P4v7x4YGkzf9a(r)~^A#F{Ma={{ zSsq+AF~Q*^7(Pjpt2w436B(UkOXiuBKMXwSLM3cwwrg}*ZuSzp`L6#fo;uuz7?u}~ zRGF=T%O}cyf+B`fk}|$4yvAo|C(FXuTZYOAXd4o&mv;{)Qu`G#KZygwr+dY5R_7{I z7*^#+Vg>GR<=N!jj4d*QyZs!CH4e9fEhPCWM}cgiKE%x6cm7DEbxzOC0ayM3B})M$ zI*=ciFy~40*w=d|C#)Req;JfnaaHhT*YW(Jp9RB$9pfZYL=Vln*qKce;*s+U)6Q-m z?&T4ZP1UYbr?@Y7Z!3EYziKW%vJ0?gyv*N_umPL4k8$w(P#SCvSP&B*RZVKj5UD>b z;q>|hn|K+QPs`V$t_>sOalTqkW*Ow-nh6l5u z&=blOc8*@}=f{ZPU{)WW=bt(1)=3W@c)QTppG!}C)p?R@0)`^LapmJGIoA@_+40XG zIxQ=*BR;`B-mKr2pV>F=$Bm0KfgU6+EN-vOhIn}AWaF93a|E3><6o)d$Eza=Jvtgp z6~<*e>h>2u(^rl zqkDh8uK5o0dTi`+Zt~OJUA>TQtqusZ&-x{mv7$QtL-$B+i6OI=Sg`sHzwz1gQ(z}^ zP}t>HrY-p!{sV&8V&7QTT$Mcq)SO9>*bc$3p=2Jd@xT*Z;Vrp`_2HQSR7y$s?YF22 z#k}hMP$uiB{jnVx$VhRMS&)$AgMwVbT7lObwI}z*Z3w21P>E{45N%1W`^83F3zO~b z+APp2J^7Ty14U)Ne~t>*a|%5@MNK`$AT(hKs@Pls9IFHfi>L9A?EGt+l$#t-mHf3V zBGhX6=`g+3?*R2sw+=kGl-Zp}Y=bh-$uu=N>2^c2*!*+vz~j4v{oe~lFz?1alI zH>_Tqc-Q(kh&(G-DJYok&zr|Au9w1CQc&26t0|hB_DSPOO57UpD`s6|SsHeGY2$)c z>{x_sPCVp#KOl&TgN)_+C=K^=xtzC#gL4c)UFg` zd9v_*f=fHuT-_c@y1qCIYkIO=*{~~6D;eLnU~!*NfGD`$1g9|Sct31x0+$=uROu+2 zp=fDo>GO0e<^4%h&ZfCGEjG)nuzgG&NvvPu6anN_b#)SHwBG$zui4S`mLOgiJ5N>Y+Ey7$5Ua<5?eiH?DGY&4?UFcjRZ56`p4>DVzfmdw?=GYpp@T<3$@&Cyhc zpAFmVInth*+nZ-AS8A4xsAUN$qx*{=?APb5#VIg4xdbevagnG({L$K;+=w!FBz^IO z?eR@Lnf!#9>pV-xjn1FWqR#eeAvsLtStXg(O2Lv?DN5zD0G&u0gQ*P_k6U-tz2CcWZ{$P8_-?4v60guTU{3|48mkE>aJm9W4lDs^8tMp z6LUxPn+^(=%a{rxNLbW8oWY`h_YZR}hfA;inuz~yJ%id}FIgHSKeU7Dir8*yX{-Lh z=5Al?+nSy$sBKQGYIuzMyT>Fk9D=X}S&a4FmV$v|@6X<+4DoXj>3MLZj3S93w7grmEOrSm?Ja(s_gvC-=cbVaxz7n#bab24KV2+Q^ zjo1E45+-CD{z5EGG0z~y2ZAOgV^nz>d9t0>pCsQ12X?Pt?u>?fQ`}+ajSS0`HP(vt%S)k zY7KquIO#WYXkcAtB?c)bCT5#{=?RIYWdpzxYfS|xhi5SbZ{BpWWy>ogWmgtrkQ$qr zaTYY3XZLPbLXQN!F@n7BM|R3G;Q{N;vg84sc$5iRn<$tUti ziHRd^U~8=W$^*+Az_oXy>d}>XS?wY>={2znmv_eqik4Y2Z0!#>?8+=zIO*(Ae;A9^ z)qV@4SEw#HA>M>(rOvDAo%I5tyGUwat?-KI%c&ymsN_r^_Vvq22Z%vO>s+i^aDgvs6}^|Fnp9NO5-wO5$}i^)y$6$D36VjDK%tt|=0m=(?qB8%fx+oBGa4Ef z>!BwJgZeZndMk$#3C7DwwdJ&Hh@G)adQX;$Gu?bHV!939W{_!S$cVgMpdunpny@hG)K*%IPm49((GiPh9U?-DRbz36lR4}zXpXb9v!P7m zW1tS++R&wo!89ysA!jEi1Lj}LHeqvkw_$5X0TEA?E9Vv&50B`=An&T=dD|7#?dQS| zOvwV4W3@0Xz!?e)7yRBv7&kt6to%3yi;Jfz6zfGiZ>-yKPN|9X#*sX!Qy1QtPj%$^ zzKDrY4L~KiKPxB+4ZR=R9U$*!x*Ev{CtBZM-D-UP9U16E9|V}i#|?}8rlPvIxCRk2 zubY$6KGgym_V}?3t$T?e>)^IdRfO;9w7`7g`XqVVo_X&)^fV`aaool6ltx=@P^eKB zJa3!27H*ua+doQO*Dy8{S^xJ0qKR-B*jbg28c&!6S}qN`ZltAWP<`LaEU@xrvh3Y(b0eI*nVt%;6lvYQ=ql? za6ZgTGih?PBpaSq;f$B0-C_+DEq|5Tx!%!#1N&V#ZCq2p{pzT_+GwxQTazxoq_1BN zj0W$dao5!}5Q30Q4uM5Ya(^DegZ$_oS;bP-aFdMH(6QC;*_~cS_K`u=o(im~cCCo*(c z^w_abQz+D!i+#cnw`*e8z`TQHoi~?gPDr<3Ib{(o2#iTUyO{%pZUuH;vg41B{OV_M z=~{>O#-CM0=NAO;BI!misfoTB?r}_twkv5qiV+$6YJeGA{9@WOHM#k0FFiJrPK-Xk zM9$0GuU6Wczs9C>duz+{>DElnPmp46nw=~wBX!f@qe7Te{|pDwsoFs?`#*rOcz*}= zh={k;y%lGkT~)PK{c)Rl%9E$Y7BsG20=_zI`Hj=~WX>Eg?lFqPhK%g7v5i=5MJ@-f zVsK}3a@SuX8NdmdY>6Otl)Ziu{El{p%d7L@7zhjw4!$gjJD5haoQ&^=4)8k^kR}l! z?zj>qF{2!5qhD=RIQ3y3sirWieMpf_QwS$~tjoUxZNrL*-60C1T4743J3r=*mEa@6 zhWI}-3jbRlrmCaVmPx(0*F__0lJo0mA#=AGbKpr; zC+(UPYnyAInoVGYWK-Rowc2bMETF=Xc7J+N?=A*h3CwYV&6Tc_?P8my3SHPiI@gYp zzxy-DECA-WN5Q)x<|Scm!KQIEVQ|X=EDX$VZI7IC#LPc}P^Nx_vOO;!uoGqx2AR~@ z+&p(U{hIZwZQ>gknAF1bdO4aX6;;)y+W}6{@8gcIz;TYUNK^Z^?7kdGz?;mEZNTeC z1d9L0o1$B~Oi@v>Dg(>ox)ZF`BqBhMdXP?_49)GyrB%+URJ9~;6k7;um{%)uqNNDH z#=?8U^9p7pt5UWtFgP^+@zlzN%LRfKBgMhVNz87pprG)hD9O5Deqwa=6I@+Gosf+C z%$Qfq6CaV zK4@OvhHTqb@S&^j<6BT0W55d2&~U@q!@{KQnth${IB@2Y$ zAiVyDwMsAM8ip%qb#u1aPk@hqqKhUxBsUb?v_hal$HB@vHr+iv-Oa_y8YPv5fmN*2 z%<4R#QA29uAQ-2tpzvF1^oZxH zp)a-aQ(Q7)VkxUu+SBu)s-<`_uqiSj!Q)_uWfI}0>-0FBnvznt(e-rc(PPtO({(ld zdx)^Ga1=46falGR{?(({y**(kJW=f90=b$t6f`lVL6huu#*ZevrLB)F2j+&xwolW=GZR!x)Tj!9gt_Wg* zcqr6`{7P(K^4GkJ&AZmb+b0=A!?o`rI2cEiJ)37<_g8t&`574%{GL1;NH8DOzY56p zwmz>XYp9IZQw8=@5pw4I0?GX3VrQS3o7uwIC|D9**eKvuvs!9s?u?rXW@KeSJ~AiFE6k4Q>%!Jd{oM>_;@mi z2w7xwhO)C6pxO#Bi^!&d29ql zQ^O+Renq3Brza4y@dR3KN{t5t!;9-TseCJR#1UfMWur*)()ai8->I`;Y;5cs|Ew&^ zl#d*DCw!kUvJosXWLzVqnB$`{SBOamDi8SDbI zSOks*7pc>_Orx;LPB5iJL#|RyLt|$jKruj@WQ_|I9(At9X(r>RW2IwdRl0|H0h5~5 z^V~2Q%iwMaR%e9LTfc{RKVD9!eGXWol%c9$+kEVN z8%yv)=wmiNHFZGl@TUE6GM}Z5O>vX*!ccC~Dt+7P^3F?`x!9&8FR&I}Z=ZFA|LDlb z*A_Zkz;qQ9NXyGFS6NQ4ehz4FYddL3OiH>wo(E}a#zjV!*>_5H>XJ=~Z)|RDZf=Pd zM*L#8h%!_TCQ#0i)vYj<6>}Gplx1T zP4{er!0%5L_YeMg=+-zdLg3&1q|0r})5>+$R$hNcEl1H+>%Hin{?tw4L)gs!aC^Qj zoW{(3s314!^AVC!=pq(}*fEz*wASK+J+)+3G%Yl({>^MWU}8{Pe> zlKEPLb)bXYFZZx8Fzg@ioD6YLQ6u2rQAuQtp>})WVq%K?q_-Z3W6R0THk~TeB#WeR z{6wQyyW5gbZ8Km0WwmXo$zvEfp5Wa(KWKm_Hmld1W150QV;VLSDhm7(UX{aGha_Cu z*RNk!R`e&2CYDqfR2HWuT)%ud0bu>r%a`WtT7XT}(IM0mG}=P4h-P>6Hdj=P{GQdB zE*di7>`r#~+87a-StH*>ZL9IL4=K?fls$^}n+v=$iwka77f^pNz`z^^3{d7xeQ>w@ zR?=O4=kbZXh}n-GTJo_Pa3n<54w4ANcqHNXrC9gEZ3_FtLQfE@7ce_Yb1PApF9bnT z{_nMcIq*>&6h-#ife;3!v3-Sv1`zPyzrpz9vXtH%0I&bY-prlt4=#5l@ww1oA_(W^ zt5LA_F_uy1Ke(m9=hBpOze$hgWp%uMRY` zFkHBdEw4$1X#@_310-$xb{%=c#1eR&z~cVbM;6PFNVJrXRvu^kRTH5;nu-iPYcnVw z?)T-lsi(5?#PVQFRJ#f>xUB4Kofasg8H$(pwtY+Mddk9WiXI7{E3xv#o||(cR9~Gu z^P~`6xcvUw;V3I7&Ku^u5dPMUN|F(3gnM;$*l5%O3NiC zcvNSp5G~_;d*jZhTlr|;9#6aDjh!^4?>gIu_6>5XHb-x;65x5V(yBriBbK3hAfs<%u zRL;PK&z5Hxb~?Ds3gQY!3Mr2?XyPE)(oBjSsz~o4ip2Hr-2`$EfafJ3AP^;sRG^s{ zA4deC+ZY;>LHl3XxWJd9iAz9}7|T-t!w;KFu@f-NbDUZEPnGtweWjC38q|#`Vrq5q897()ran z|6JBdKUT<&Y07&@CZ$Fe#V^TEq5T8Au# zE70UJtek%Nwbe{*D`1*`|AxVU1yAzJ>wCnIlM45|-pxrTGt2M183~SnCV$4ocCa(; z^IO8P!9*&X9A?Uc_8K?2r-qcx5((rpmWV#5R}tYfsYdX|NKLBDnhbbmco&lkEs~ny zzJ?Gn#yoC|9qjknow{e8J%>K9N9CJgoOH4{Y)5{kX0mK4ZAhw#+xCrmZZCdzSavd2 z=R@AojK&^hJ33wO26^48F0@0D@*g&vmi3z4zvl$Im&r_wya%Jj#KZuOq6a%zi+xzq zd|r#)2{}FrQaww4^q4)EB_3e1tv@@v(+jHdFx$FdvkBEyBo-{T+k7p#knJB%*u$51 z$RxSS^e&Lx+SJq^Egx``sL#OkYHVs!1%04cen@NNZb-M67L|NTI!`E?(fkbS16khO zppo*t+de#}HRNx3h1zh71w6*02G8PVvW7;o0u!gzK*z})|%VbI$vg`lse*7@F( zbf6-AYLIQHzn@-6s6{65jm#rEIpuBFv3P)t))GxDM=$|_NE?-fvX@tr4AuS$x|3{C z!uDXI5XnSN5ak+@R9&iKt%7&kmo{lm?Qqi2!-1Q5=Mn$Q!FpwmR~TO}q{=+mLz)oXE<8Exu1D7(S+&YA+0K!7vAsQm;v6v3iLFr9Hh}yvUgt{N>bespf#vr=eWg0%Lw3j7`J*cUT4wR<; zrhK+tv`fIawONU2o{EW2v$UkrPyFJ@0t)#=XfY{#$oF*ajm{%%-)WEFZ-DE+@<{PK zRd2>}QR4Q5^UJJCOJG=rYJ7Cm4zOcYS#i)|!jZ{C7Kg6Tj*tY)K7}aTq5E=>jK>+N>Reg`1p9BKgb}NN_kf;#ovD3s8jOL!V7UtH1~O)1Yl7& zq!*Tzv%-+7kOfYQs^SGzA-Abpz^mu?pJhgMUBNZXTXa_Z8sq1(E6>A2}(E7=k^*V>70QuJ%PzbTo& zm>x~K!wJ*ky9%ysgUO1Tu`xwATK4kric0z?QC-~&1}QK))n^S!WQH{%BF=ah<@po? z*E9b0wY5OM#gUQJUktAN$#aO!oXO+JGgrjE^p42)wGpTVKW>trRLf1epBVVAo=>Rr z+XNjGDidcjpxqsvO@l<%0dnT&r42+`ZfbY?-`s5IixSL4>+9=_i;Ernwxqs46ts9Q z2UwC8;P5wJ>E3rQB~{uaPh)#=7x%f@FRn;BR zV7$3*Ey8sy!d3SETL%$ewu^#?7fMD}NoTQGiI=Kk)a}C({U_&v$WG*{Nk`cAhzWei zkK$%KyRD3SmK;#b#)IAa$}82N_tbb^kCJ?%OHIG|T|(6owb5uWgTuqav$C>UTAr&c zeHQP|(+l&0Xp4SUDi7`_`~3ljtd20LHb}RA_JyA-v`V_|WWz0-h!308aeIiUa~ckgRFEg-UYiV5ju8A9^F%K?n0zz*eSJ*O7NMJhq&su;Pknc z&D*Uyqe{bMEJ+Fs$PZuN*3#8>0F0c@CVDTnQIirAfxG67>UERJm4#OI-F=6lv$=oVO3br>uoQqq1Z9( zIq}EgF%J`EWStiVie-=j>1LjULDMpgcU|&7dX4@4{q@Kj3kwTzk;FV+FUVFoCUad& z_xvs&1n--NP1sZL=Q>31DSpgAKt^^ix4w*6E-Wtm+-;lQkf%|nk+PiH@I|Eob#-y7 zd6`o5DFTcpKGl))Q{cJ1L!pNE+!n!~#k`6NgNPAoIUOAx85eoK=F=2*kza9ik=mcN zNqdOzT=VLDfdya!vNexS%t-sQ7298iR~=y=Ckxb3u22@5b#5k->CVmzZ8g`kd%bj)#xq13ts#kmA;d!>Nhq=#aHC(#Ets7x@2<>hOR08L9r}rG=%T=A<=%DMvc1-W!~}c`$8xg98XA4G4^q|7+~bGO;a~ zWTa!wN7jC2OY14>3TQ7dt~r&Oe`yu0PEy)coNbmJi?t2blUi?gZoVcQve2<2{LvGT ztNtGe8rn6}+HJ3ncm;-@Tsi-Qwgg~52s#!X7A7IYR>x!L0ATIoX-JDiZVrynr<9fO_@+M6@ zf~fP@-r3%i_Pq@+ACHgEokvQfAfU!r&DV#CWzceFX+*c`6AF5|4(zb-%P-AVn4Jpy zek>*P>;#mD_5fs1v!~nV&##&hg?nau<7NPs5hIB}!6jJfJfEvI$k1Ul%lqPN-)w)| zH^XAI=wCZ{Yb^Ka(+fShEG2SsaxX7W;0bKxsnF@kWsFwa%<{HbLP{czS-3wri!esK{y1e7LPI!0kQEG!)0xjH%I=|jcBa@y93 z2!D;SVSn4~b?>P19~wloxl4d2zjDn;;mlUQ9{}zsH@-KN~ucBcB3j0f;z^E0mIw zl70b5TlRHQ3{0pX6hPxTxhn0ZBc|Q5y;=_h${pb zC%wwlLH0gEK8@nCUVuOs@csK6Pu$CQK2tMLu#L{wwO4?F>q6>e(E=WuB z#eIXG788SoPMR{T{=v4o1Ze2NTpc|fUEfI0$$m-8)%CUdp02WZ{L6OW`;dtFZ+u#w zZS7Y!YHMr55;*gT@P%oBX|H0eVr-n5jR5oY`W-0sG)P^tAG?X8iXPe@!-*!`@^rU9 zlJ@x&gDN@*q%95?6B|o6H842X2~q~{sGZSE}2&9*k zFkvDj5hk7V;ri2xwf%=Gf?qnPNVCMw#zsyyFf>F(#%|O?JKWn#x@Wo9KRbKtdSO?m zL+nBBd|SR5k;1R`_w|!=3V;4QEnc{NwOL=+z!E1@_4za0VdxxQGg;yTIWTwxOKU2q zpE)-EsjZw@|No(_L_`QZaeKPmoNo_*7dEiBKif|6SxWsjqrSTZXe?7jy3m9_j|Q8= zdO!qO+5985kbzok1QbEaAmBqjPX}(+)ksZ)Qn-hCzrK>#vgQ``Ko$-g>|7JE8}W zs^c=Zk&!{tBRAVynx4MCXtYtcK$geIQYW{25bf`5%ywd%wR6R&))!h zlE`j{Ax!iB{d;ci8z;Aa*I|nDm;gI`{(1X6!@=!H9>)WLNb583lYevacp7nM+ zl4?Vc1g`D6pCXAqZngO+86bvd#XX!y2$2G3oKqms0aTlu_Ik`7Y?!a6P8XE4FZn;e zfcedb^yG{2e?+~RJ8Q^yfaCwj7H=#I3$q?S=m&Ty&HUm<`m6jN3XNH(av&hNd?7@Q9H`+#Vt z3p{^G+jmIqfFzWi?nl1c9Q#3UY-|7XpX$)T_dfoL>gwWYjcyf!{s!#$VPcl2=SYzZ z09=p3ZiLGHbtyN1%in+Kz5tGm3y1AJ^pUZ2%R&&J&5&u*L8WlQKyH^-u z)b0@&VlpxVa~zhpp581iwa5vZr99U2`r=(9Sl{02lJtrmciaatA?{o2G>KrSXa?MH zNW7fi<(8LTCZlzH{P{pDMm7CCmUk7fpc8!&+j0|Q-=g_MpK#B&K zU|G&9veIHb8|a@}k6ITS-2D2s3g>;p9fU|fl#gdoKQF(&;5vHX=CKl&WKdHNrg`(G zJl#`KR8Lh^)yqpDq?2r!+}q#R4DKNvyX*yg#ybG~C8VVj9!C#0SNj3ajU0xQBH-n` zGm<7JkNf7$8=E7WB!bV-H^cWI5f7o6nMxL>YE!l?AX(bnv%8j(6zu*A1p45Ll<5uX zNy?N<{9P(c1cJ^mBvZsjsM(gG_8#0{_7qG5GXBO%l z?tfhxu*Mw`A9ZI$th?CFBm&N~9@%c)z7~$OOoI>|eRXebZ*L7B9i0?ABnTXgjKRfY zHPrg*tuAamH!pXwZiO0IWbRdQwJb^kd30|rVX;#GjV|D0iT7A0`o_R(kRZU1Y0Z6t zlcb2^02SFeesOfN6L39wKN>DWHQ(fMU7FTTct8}(psfZ1ML?IE9Dt-Si(0JOX953Y zJ`cGnmj^ENU)kPR7Qtzg=VB8-rLy>{k59f_1GZMk^M+aPS5lI|afMqrO1N{iGifU+ zpuK>}r`cbnHbisuvOlV*sU!oDZxG4z2eTRE{n-+qS3@)MewrEb2xVN{$bAN<)iRU&s3 zt6E#O3Bee0@QB2tdkAlliH%K7O~>XT!dbbCy2=q!(99i2UcXj-W?Y$%S|0ou{~4Gv zn&{?32XRh%*}+TG{A~2^B7V8v1_>2?nMnkI2S_b-A_@d}B=dUpO-*5w{saoL2r&s$ z&>~bA!{7ZGS4AzhtC!DPID8PFuWpqF%Wn0B~K|tO0x;6&BN%6x_ z?{-7ojC?Y?!AR;SAf*()M9E<`L^wH&K+!?{DXtE}!F~Af;lvt9JqfnlLPREN zDl1jATd=IxW?zza7?$DV<5$+SZ=YlJ2ZOrV{tShrY|-O^0U7iR`3#$ugY@{HzXX0JF2CeI1cGlMo8jbC zm7J^xlq>_*Fjocq)<=!7GTQkz8sK?X8JW;*53K3Jfq{Xuv$K=K#6&{QgfLsSIGH~= z8YsYNM{*Ox{r%*7^kWmI(iY%=LDP4eb#-+jUW`zJ6f}^6hJuEQ#sCxJ2fB{_wWRNAGAm|eW@hiklzv)LFfeJYaw)ATE5lpkgmka-aPxk-w|COu)haf3 zy6XAZUn$+DQEfHb+;k6Qm9^E>fDrs>p*bVZR9}DP?sEUuQ!r&XLW2Yy7dH?JAOaz; zV{UV^ppcNyWWH)}gH_1Mm;W@-tnVkS2ogFvy2ztEP?_5qjD?4X zhY>_UNlD4hj>!Zn)&Jz~UavwY3TJ@HVSB>N$vM>1W3KoRZ|Iuf);<`|W4Sozb_7JR@87@Es~1jS{xy4(vax{V5kUb1#?M%Cx@Z%@MwLJrj|5(B z?u(i|TO*@&{bPM&a|o$Sf4rMn1X86;0|k;eb$4`*+|$`PQ*ygNQc|MJ@zUe?_mqh# zoqDUhurS%*Ghcz^cC~Z0bSz_Qe~tCBGuu^mbjCP>EdLrc^7Ql!ylW+GHR=vUhDRwYtJb{fY@_v6J~;!<3|QxC z&gyyK#4SE8U~xnohD2@yGP}uenSV5%0Zx16XjRauZ(_CG-{HQw*%h~n4Ge@M)`iyD z@(D+~w_E!IKgs^G?&FT$`o>lpBg3U@vrK`)9OYNVQ)O;v7vE8&1H^K6OC23A9XX1e z+VRA=CK*GP4&MsWPVq9^rcPq4y(_#c08vNxZvvOS&-tKkHZgQpJ`fBs`hdMYa>YSK zMMa@r+6;I961!<$vPSa)7N$|UQiqRq*M!xmZ^N<|+6O_(d0|!K%W0Bjawl*xziXY8 z>hKAu=wSccUqy}(!|FJr5PG$7O@NB~!QYO_sEOE}wGN4qt0}r(v+e6XUD2y^*d_m~ zNecnpCg1QYB>bxK@~HN$Uss%2N_nNJk8*pae_-siGKEneb0D)O2tcW*%TL#D{zA0y z=b6PQ$|6q(a&z^+aB648XLPUk-0J+90b%a-U%a*wA^?K|bIxOO<8kz#f7^k@X zDBr2~T7R26fjU#S{Iqb93xBe^oFGtG@X|ZR%}+;L|z9 zp#ARMJD{HB{Npx|rw7E98f6fL^<3>PP^-Nn1Rw- zQy+E@x0|z`9*NK7?Pl^RM1Un4e<$|olW#(U_I4Lcea1DLB+Zz&q!e9@sj121)&1np zZ*(Qk_jeX$`~{`y-1ly>-b%V>nkA7o!fB<73qAVPEBTmWt;`RYeqvc;x$Ho~HDh$w z5$Li4-DYX<^pLIr2r`(&R}-O0LKVGxwCc@&$L)<1Fv#P6kvosZ#TXERh7r;U7`kG{ zV&DmE7?%CY&7OI07u~)^$p2-;BsC<%Zylg=N{k@zF?b#*69I}O`d8_yLeZjnjT>B! zi8&pA`8BndoAmGP?@Ow!l=1*Ot7|GqHh6dDCN1x;jvN4Bba7~LIo7M-OBVEU&+S&A zmo5l;M+M{#F^qsSia=bB7l;6}6q7Zn5RtY$l&l;qRn?r`t1>5T_f#d4>y=zlQL*jC zIXv1rIyA*d!JS!Nj===|7mn=3n_{Qdf~Aa6`1CZ{Rux)MRo6*H#AZ9D0*ZpHYSsak?@yf+;^ z-SD&PQ%8hPEZYI>@I!T!1@y-a&Eb{ir?Ky28=$+(sjBK~PFB|R@g1jFfa02>EIL2xy11P1Fnw41gF0 z)bsp=(gF}^U47bO`|NdCVp+yz#8$z2eWa=kvQD@O=`i#z+bih&FQ{^Z{%7n@LDw7o z%e_eh1A}iEt&bh|tE;OW&lMBp>qQAQe^j`&O++D|mdOIOg0L^6>7sy(kd&5hI6IHY z6ql4z%$uU-i3>h2p%gwm=eJ#Ito!6ZBH(?ovigdxdbVcSI|NF?{bl9p@g9d!uQtUs z1vEg-(;mMi(w};DG@B5Ugyq4;xdk2=oJshr$9Ip9Nk~W{(CXbU>HJ!6_U}M&X@Fh? z$bc4cUu0RL@t||uy^u67Ev*TlyM@i8I4th!TzAJV-_E}B6k0#q%8r#tq0s4nuvS)V zqcvzH*V0{0ZS?~nMaDfrAs4f%!E#S=HwrUJ&Wsrs3Dyr@Vw}Ck_LWCsl+j<6d?BJ7 za|PvtGoCL}WHPqA27!J&4Ge-Bb*QfV-+(MOy`D((m^`dk1-YJYQy}iA) z&}tvSWQ()Q3sd&M4ITu${fIs;p0#NG|Bj7i2YbuN{#$UIWeos0AhePJ$)h?MDrGNj zaGt)oc_3QbGj5>u+TGV!qEjIY2wF%d*xX!!U4#ck;i`rm0R0S5gM>V;3hV3fNky`hPVN7pjM`VQg(~w=$HR91A@GDl>3icd*G4DH zX#ms!wj<(q{Bl#e3am2#{D8;Rks?9<)vw+OMFQ$u=1M}#vqcU*hS#zoOMvMh6H5_W z^qv*vpk?u(;c0o}I;W|rIci=Bl%EL*Gy&pw{I6dMc@rp4h1}-Ufcf`FB_V$Ij?H$7 zzv`N(Q8M(W>R=$8=v)lC1K3f-OEi9N0@A;ke7{PV zyriX`R^+UrHAukyMIWe?s?+ga?+OFT%7i4n)0+f=#vf({-b;F6Rb3x39>%{#g%g&desZ4_+{ngyl!h7sh|AZuMT$C_AtEo z=eoMYb{m_Kq1uyOlB`G*&ZuXmBu3n_)8WhrRN$XKC)k_vV|oba3P03dpTz9J>aXfxKM-Hk->kc9|HKm!SLMK-izz&?Rh!Rv`U}b?B z5IW^E)x=OeSepk&%i!i75^oI3A78#VwZfWt6l?@w~Ac6cC zmPi5AfJrlO7Q7EZ{2IkOSa8Ezw~Fy^WNS(urJHYlH z2*x!o)%Boly_;ukZEa2jPX%mXGcQe3(KZ(B5IggGe1P7fq{l%JuNOdokU9Us{T0j- zrB-v%R7Zz#*F^7hvJTxl*2KbDn;}lXY6DT&;YGFFNZnr=XWFKK943MZpw!`B_8xN) zGixBN>vg%iyR*h2En#2&h497Ej!3`EQYG&9DwB(sK8kz5hG}VP_8K?G`Y_-HgNws=`bd~H~yfJx0gd?zOC*#@j_ z(W*HPBj5sp>Zr)%)=hip2VGXnslw{ueB@_^hQ(!m^e;6bjYW+$uimCwS52$?@w-0+ z3a9BK1SVWLU%3)xwX8y!^cZ!^9mO|LY;BJL@)Bsct~6+KO=)$Ygh`dHoW>WEu6QGC zKAbE-uU>=%2RAZ4UQt=OQ00N6$A}$5PDZAqtD~!{18j5{vgi#NILM_43QQQ~0)*HB z|4vz1`Sh&8`I z9tG6})r0T8Jpi@9S}IcG!xNBX10+WPd*7lGPD~`lqURy|{X6w4weS-&(bFT6QlP=r z650f%z9#({7YFbprjc5h&f#mi&eZDvLI+*8!i7r%ynz|@HjtBh$QB{P+u<*5Y}6?e zpX5*KCW?}1Opk|f8o8Ilns>uCba=2 zczAf9hf{GyyU5rdD1_W!o}V5OahMk58;6;;EWyF09@9s_%uC?1)oXA*97^H~cA<67 zF%gM>@VY;?^wAAz!b^yYsdFi@_X3uC-`u!DMu6NA9#R)*`dJvRv$Hb{pCdRogVVn1 zU9O0A(tm-j#%;{Z%)bb^ZwIc;P7(mi0#FSn3yb1`oYRmhwSx6AT$h&;$F$zt#|r<`i&DTG)!I7H!sM98ScfvPtv$d85u z4-E~C-vKWOhZ3M;QtD+qR&qcoJAeYc5o}7uv_O5dG6#mqa_pyHx1XwsZl*GcB zjBFnDL|`P+i!x#&08-@XwoaC>;89;u6;om?5HRa{t>UhK4$Ggk+nxJ2*4dbk2 zvVnI%hCBb#jejY+TORP(QBhIYOnMK%a^6UZiQHv%d5@{ zupYpQ5J`U^8e(xhS$TeZ5&{y!I5=FK`h`j^@mo4}FDI|U(WK<$l6j1>{hD3{43=eM4n>tpGXa6A?sRUd$xv>dfL>*NZNasL>0Hi%yP?Keg2OwxwDN4v9!B0U`{IV*{3k zU}9o7%D72Bq;UUrmjMy?JTW0*KK*~Xzx9Dvx)*Bv+8EeT>{{nr=XCbmx#W8>Qyn$2aO-e$v{;zx-jmh69}je2NctIXFEGP z9>*O8AUo>q{gkg-5O}7^W>%!#z{tc@QeW@>xx?Qy0RahVq1M1CC^b_=A$>FDrv-jw zHZYz5;S`W%fyx?E!}f_hW!3qA2ePN9Cn={&dEpSxyWJdmwZfjBo*xnvw6wHoX=xkn zxU9x-VPf-uFj2V+Uh*z-9+JG$1A$6_M?rzMhDI&0C?dUi>^H}uph+L5VKU%rwAlZ{ zcwCJl0td5T_08s>3)clzDUw|tDhf$~U3y?~S7i6flzOPOw;{s|L{s^Mm+u}c&{%6tDKEWEi zTb@OT0xW)Vx!4&c{w%QLSU-2f9wwoT3r7lgRF;hHo7+20EiFd9a*Zlk!14m<1?0!! zNP!o?Qsoa%%u%O_e*65bI~?zSv~#8LP`2&+7Gp`_QATCWl9H{6kdZ=3_9bK;vSb%y zjglI>DD~KrJxRsbmt<=pWM^#Im$Agym-qC%&;R#(|6kq@@5lG|ej4{}=AQey=DN@8 zJdX1?PBvzCtfgbYV%TGy16fZQDNhzcrc5Ln6K*wi{E+@Sn1)k!+_f%N|PXnS(&XZb70y7zrX z^z>2=L?$Mt*4`0!CAjfxQS3W&1uZhNOb9UhI|7w*-pRBlZ?pAFI+xxSlaksK8@?K% zcpf*`(`oi*&#HC{Hhay}&z&U$EUm4(dOtwJqD)X;gJ5k+q^yqr45Ug6$AH{Kkn0a2 zA447-{olcV#T*!g-RYrOClJM{(*)`5lwD|K`LfW zkJGg7wP|<1U#0lKa&~T}OwX08N4_wl{Cl`|#_e8;JbAOxjyMw+lDpx~Jw*%3%zxOdk4|_kln&jxsNz(@W5p^2 zk9*KuAd2#2&{LE5=G;L{AL-GDf|#!0Y62fJUHKwn0Fjcm7e!Bfh4y5*dCg_olmGXj zUp?4iP_RCC#%j zW06~evFE>v%@(YX$%Mkf@W@DN6bh<~=@}WN1u8hVu6A=yH8eJGBd`=l>I0dfua6Jb z(h@4O#ZCh=Z<|EM-%c!T_=PB9Wq*|wl*eryY*<_r3#1AT~0B?B@uJ9BFy&%xPQDyCuV z`55E{U=?I@MZi-2Z?ZGft-r6paB~AcV^!4zIXIXW;ii3^QJRsJ)d)mJ@5ei6-?pwU=y>unDJk!m zo-LtI?{O}~X^GJjJ~n~eM)}37D=WxlpwYfn#Ofx{(9q-;8*_1RjJsR}k}FVx0y!4Z z0O$*c!_Byt)z#I($I&9jQ)M-t&t(PZn}wgyXTE#qw3a-eWFLlbi(ux{M!DMPat>FT z2CRH(3u6^M@af56wl{kQq{&Gd1hQZ}BgZ_61WrScvrLKxkX84GI%Wo$**z#|R4g^H z(d;fD_*#n|1^Yy=HeYK&L2R0A2Sb>d0iZ-MFI;A-dy?YZ1AI+^KVwO->O8+v)2r@T zUteEPS0^VX65HBF78W$>DK1O$_->Jkp=>I5K^m$9lremcjlB-5F=PB1iW=ER>SfhG61 zinMdK2NnX>27MRW7WkXXxH+OTv$CQDufe2eWo3EDB;6EAGdsmZ1#_RNdHNgJb zaH4sQV@Sub%5D6HlhZtq>z?yOX-Ub35f|D(TW4o3c6Q=wR}pAzsHv#7C(HLVWfR=G zhGoAsKO4{P%~!RetL=0H#0H6PSi7QQM|UUv#bTfJC(3^rrgFCwRO@ zxW=FL(@DNTa=_mLb$24-l&tJl%_ACM!}t_7-}@n#h0teXzk#Nq`msNs0uD1Jbmq*6 z((>~gcdV@^fDFh%|7dFRTjbbrUAB_m6fcJWDP}BuK2AtTqUo1}78~>kArJ^!#O%{f zx}Y+$wB%)3Ba>rqWVpp8vNp@Qt<$nx0-+#&OFldz*NfByyA2J^5q9cc?<^+`fRS`L|jCusG+rja;V~Ku&#bEsPNzMAs9LOXqOrfc66j` zo_3evK;9b&&3MQmkc$EHsivVp`DtZEg8bVXEQTT?PN0*@@7Cc;Zkj{kYuoM;d@2V) zATsySkeOgq2~x&V<0>4#-WGR8S-<#d1;yG9NitPxkw)^RjipAe?(S}UP!I%9Xb^-v zFc1M@2==z6d=cPXG8yJ03E3T{pIYRH><&kcfy3nnuggG;`2aLv=+C zoc%vDRCVE2@by@&@-s&d=IPr@oX`{01DQu4ir%3yXZygzSEZ%WqM}jX$Ej&(;8%*< z<*bIWz*;<;U%|}Gj1@b!O6s@qxu~afT2~yX=gzwqJY+Jo?LM$ZM@K_k*3!~K+dSu{ zWx!j;2RYpXKo2=^rdk4At|djj8stw9YC(Gr57gqK3)`rq?4f5R0sAvhVh$DFD$qCs zgKr;~_WHFVj~2`~0{cjN%PSZzD5CVz5gLUw>a8bmS5^C6F0n*Del?H#noD&Plg*4|$f8iVSm`;;%hb z{2WFH*XWh*g=>K28SSasa((ajchT;*h6Sf>qxEx1B|{(1J7*Zi0F+B4vL~r~E>A=` z?ye>{i<|xE2)BPyU(2TgjRl=7Ja63n1{6O8TFy@lnz@}EYqI(*@30b6r-UusO1A#F zAxtFw_8b%rkODEWtibJ5O$iAJ_Df!^68E4z*a$Dge;F#|S|s~EcKa3Jwa2)yyE?#X z>h(|}27|%qzIV5`BUSYQ^oLal@bgKvq@VjXZ>C(~=fkX(j_!EO*i;*ELmcUn{+k6U zKI=m%<)a+R3u%KFluWv(O!;ceJ;Mm`nKpP_6O$+-E2jz%&3wbt5B2hG>-d zBPAyOr+@y=c!ubAtMdio6YsuMx{Zedv02ayXqJ+a(mbcAoe_1QruGMZvL%TI4NV*v z85vuM!hC#u^74DIwxBqE@T(w%v8~di9!>>)tfVCGqjJhvv1Gj<~P(ggd_(iV%8(w_N-D% z>s@4k`2dbiGvKv9FsGL=`P)fu1vx`YtC8}1(=E4Eiw}J2BiI)&^r+Y0VtMz5sCOp% zIxKqzF6o=7oa&KmIDv-k*VI@`>s29^97LBWHE=}}0mHk9-108?6>6XcSsB!yVHvY!-`%82PTF5|??5_t~xwY(3 zs2sAeG&?BU+2u^r7$=*FO(h$J8_Y#cGxQJk6_N5B)tzI*N~TSspCcP&ZQ@^9 z8Sor0TEs`AM`0u_d zU=wCQfL3ezb-T#nL((K9MM7wM$lG9gO-xKUO`i>fkJxHHJKruYfD*7z#$MzF?g>4* zLbx0?{x-wbk?K>G!k=a>!KD?I8wm-6#?j@Um8tE$rzp2Jw=xTL3LGbvLq?Pe3~zpe z{}#HMCJHe&y3`a7+IlD%NxA6L=S4h_%d)L(o7teeb2oB9zu&F$4tj5;DS&LAW_VuQlhT%#9mtF)B_ln%&1Ecix|G94SzSabz(I-Ic0+PzrS@)EDxR8E%p~a z+l)3Oi0$Ye+(%@oTs_(72m5bfs>c#O+3$n7T|D9L!|r|5w(~{#?{ogWwug z8wxL;_zTRvc|3jLP?x944v<+2bC2(JVgdGXs*B$NRTTXc&At8;`^S+eWXOZu;vo(f f^e)U0<=Wc5Km;3h5Ef%}CR9Drm`sycN1u4jhV?HN(j)H=MDJdbMgo5%=90lcp z=~Fb|Owkj#4)E`h!)HmAr@+VasZk*C{h6(VrUP*QH1HSnz~sel77EH+6iE>w71xx# z1s5IV^Sg^9^_R{MX=t%*Evsk)zXg9&du$ru4tCbvweo2220^Cmc&*@7%R3hci~Qb?};;HD!D75vDvFRXK?be@F_wnZM< zM?#4xfajjBSX+SJe!(ZfZzwt}ztIVnBNJgJO0oGBK<%9gI(lAkQ0|O;GRxxXMu#C) z!2jz6Z>o6i(I;Z}Cwkw{Y_4wB`RLHZCqI6o5~)1FPn z(smieO5{GQ>i3V|W+4)l|J_f3`i3U>IUcTFAH&prD^o;@W4B^{a}9DswYITg-XUt*oW-*_jgOuv=H^*{MNmLqgOpV zxc5iaCoP=lE;Z+369@YO&&fOCy;FA3;{?p`2q+@_dU(Q;&Zny$UX@*V6K4*huOM*I zN#!o5sjM?#d=s;p9rGfmKl4ZNFO#!}zqM;9X-C|RQhD3SOtB7o?sTMrpBF%@$+^SO zaC7=sDtF}mm>m{;CGLXj_QuJ{YcWok70oGHFZkP{oQnM@YG?5lOzDYlaA5i{eRm@j zE7f&#d7}9Ey&Bz8{j-(RoA;18Hxmedm(7zC3l*#{4%hP%w6Vb^-xmjoC!%ol;VpSA z{XOGR>(#d6WF<~~{x4SJ6jo|)oqY7)Xy|=D=SP2#z-5;OgH_}9czK+uaki-P7WUrX zextj+sBbBO-QXh|mY~Lyx&2LydD;Bq+m=$irFO#!PW+e4<4^Iao)4$4&j$(X(0==> zOBW8-HelPSUBi94bNqDQg7SXfC07xLR#vWw|`cla{URHxVZ{cJo8-i+cqKv4@ z`0nO%3jJeGyRMhxc{Tp$r<}iC=e=FKVq49$6P%cG6jg^!cWd=i-Qnvcjw#C)dkSe& zdUpZpF$sp)1FZ#(gTa?{e;^;i3uues-RPK=cJ1%jCOZ)a3 z#vdynMPIE**m_8R2d?P)52;)+V`|?JIsM+^LuxpKvN@X?y!2Fg;k)aXcNwMM%JJ!5 zbJPmz=jo$-fzM!_YNZ&+Y2SGRhn|UP1Gg?{c6kaTf>Xx!hd0I!J_F-bMY}`NcCxkE zY1nBNv2{gNhP)Xlrs!vb3yweCZj&FBTI*1wxYG~6Wor%TvkR-MXlB&>;U2|lRK}Qp zJOMkPn`X*&(WlBy>CVxxIpGizXvCXNc;(c{9j7ie_VZ)-daS)TKiS9W{?O~EPdm0f+*+J*kDaPw%4;#+JIZvrz zDp<6!Q`XSwaCqzaH3L(QuI`n0^T>v)R{6Xx$(bFpapf=)Z0Ev&#hkn35kFfc1r=_$E2eswssp*_75RU>L^Ao~NQ$fsPk^&XH% zkC*9=Q%uX(L4{&INcK%cUQFrxGW#zoi;M#|vHdM`pNWNnq{2o^$lV0aK72&aKW(?? zW7u0aTX=*K)~?7`m7%0~v=%qlCRSe6=$WXMUFI_sDHZmBoq*3*WAH&sjKlw*^rlYKVEriTh&4@+_E#%%lzZg*^^))Y$3nzf}A;0qJAcj#DrhH zz?4hmvRj=r<1k|yhY{I*8DUT}-pesK;gAVA=*t#NFPyl+&&{mlcK#KanshXohOP!m zctt$e*3@u84|?L_FMf1h%S3hK9{jruvu~yVedUAN{~eMJs3&kOoY+2muL`@14O?>_5W(xi!%0Jyl&x=jrnrAt%X z&1KfT;KkFn*tbJUB_ki@M!B~rzEyJtU<+P^|H;d2WLeW|UZ{(9(Pzz}()8r-K;#}gg624EIzs_c@WWbt)u!-cb$n^A z{uY|HtNPp^Txu4Es?I`e#41*@3s^Nr34C;Rn)myOPP2-yB>aJ%mWoAK>gm+Db_C?( z%CIi_(6~X|K&!j^fFAG1_-V}NS*4|auCN*e?@QD)TlC#%;wc_@&A4zypTj%{2k7rX ziqipZ0nfP<^2w+s3ciuUcMcVLOrK5Z)%6Y-v6NNb@yk4ln`+sV(#z2G(&wS<7Wztp z5}Y-&*Fiag;@!*D-`PfgK{3!%h)KV5#j>g5WRFEeGN0}_5iG%50xfFJhw=!u41(YNR`w9KsIMP0jkm9tF_`Xz?&>fK;3O%m*z3Wx>%z`1cE z^e$rx8gw(|RmEPc3X&%GuZ^AIrAN&4zvO}I^)?4mmpOGZ3R9pEk>H+MDM(Z7pM(l5fO1dyw%dWdS8^ zSeW*vm56OXy@q_)LY-x%TVjByfCpURx5|ZUfthMga?rv~nV}62t?CPucm~}pkHENv zS<3kZjz5Khq&&`Rospk;sQ9F9z@PWF3({gsJOK_Sz^790P!3T^mh)y8z} zZUSFvx+?K-x}bc3oIwhomc&e|I@Im%#tn>!-z-z#R8L&20ZN}UBp+rGp_IcQH3+8^+q5yt%Y&P7& z8tihIexR+<x>2b* zp?@cO)2B-LaSvwMau>Xwe80K;>Wama`>UCBIBkM7xiR66hoAhP*w$V#0gswf{)#IW zi1SCLmXd_-QOFHgyh_wYiA!Chzq!fd!emMGu<5w>AjT;F0LxoP6~ z{(Mt1V}Ns8kFe|kWBB1@aM=6PZP}6L+duBQL13S|Rf%=1f(e>di@86}@-AT~H zj{YzVczkR0Xq%BP%~}sWoe+L^1ek-_^V370kmn}G-I5O6h@G3SpKUTYAID=_EjGSZ z2`ftaQX-EMT-fgNFm}%5cC<}zPcRy_kOvEjl`)g3`H@Usx{1Cf(NAE`0t~5Er*47R zK`gWZSOn=DwQGP6{~!tT?6(%st{GG3TU1v`Lx`;j5?$gYJs+UmD48gE)uFHOQ;;_V zls`NJ5^=&eCe5=n!sg@O>rRT@I&-hypAW5;OqSZ+AG*Uq5zWn$$X<_;R}MEj_;l&e zoY}WN?no;m?ibnN4Knxn;FnH}WjIMe@3zySZ>H(!{}r2_7d5;0yr83LR`A%N!(hV) z72~lZ!;DbI$~#)omCc_Wwb^EZkPvLcPaV%%;wl>|BY+~Zg$;Oyq{CM-2`}qbm~KKv z{qgsy3ikNk^v7xj0N242-UG(6(sC~pOFJ4rD)>Ym`lenGqkovVsNiLadKmHPAtu3g zR12w~FiuY;#9Z0&k3s4>^tTMW3#WyHWU9KtBA`h?)k^=;L;EbkYtLrzmOnKtw+#!b zS0IiuFX0)QrRhq$6gwNdh10u*MOWu;Diw)^cg{xw-=a2Zv)fVwR2-@^E zlvW`5@#ew4buhpk2UYrNH&3il{)hQ(8L=&GdwrPNPU`i5r!u@QmfA5CT+H6i}C z?j2bBQhLPH;A7KXdHW9}9kSpJtHEA8OG;SM9wK=y%~(-T(!x7O`Ir8@f~mdIN)=+g zA6XDIqy2k|APZKs%D@YfQm_5<#*Go0k&+IjItDB$pEy(4_M zbcNz_1A3q{S}f&M%hK|QB@$rN?VVIa2gMRnv zZ^lSAk78w~=2*7miy4inoV*M*ZR`$!r_?T#30>9EZnKps~(2iIAM#4QzvkkE z5)U8$XnS=eFg&=hJZ*oW{`e?Ag!ZvkZf^Xjxf6gr7d?EwPx7S7S)RM+ZS_hx5Wn(5 zaO-A+t%YT|3t4$+`z?|+c3zY9%wO6#kTXV9n2xZx^;hmLsv$>&Gc0PkK-l$BS(AG- zpXnP|PiS?$GN^w|^8HYn@PWU#tE);{0Sh6<=}vNQ_fT>ohp~OE)2-JI9%64ny5^0Y z8i861oB7KTdC$nUb4+q3rdHaKEye7Mfxt)(o0a?P%HLK?Wqx{IxU*Froa6a2zvZS& zg0gw?WxayVh&ji=HeYiS3tQw<9|pHCdjuSA%^ba_I&Inq0R)lUnzQiV7NJz`OT1Kp z&aCD;&Z1*rO4w^RAt(R5#eDzg%1qD$u4C2mYsTJJe@Bn(JP}D>(ckD`L7d3_UxbT^ z3-Vu-l$1JyjGwYcGe#wf{sydbCL-Ac8L@|`4-e1Inl|h$NJ!Ro2gP?c18QmrXk(wp zN~w;&`y2HNMHTVzL^F$IM!G^S_c6oy`1lSHN8RJ&6?vk6L)S#8lqxKp4t(Us6ebon zh>tv(#i1Y+#&}}aC;Hi*Ru(xYtG?5HeOc$Lg*^Tr1iAkQaT42w6Xh-MHOc01DutjR z*|*l#PedFTR9sv$2F(+(Ul%*f=IG z4mmCsE=J}OuYKSkSZuE zajj8(bD%ueE!ch?Vsg|UqCS3Ox-IF;i(#zZzgZdP5tz#B)7c<*vb#X9h+4czE#pAl zCRmInKBzBx*L2V?V2As=Pe4&OIIDI|y{YR=Ir`S1^GVo6=%mP>hu?HbOfi}+do59M zyBDODjz{=rHn^6G`YE#>ySloU-p62fc*Hz-NwUBIj3ZJ3&xGZlVL@RLHCl`1s&rb_ z7F}0WmfZFiG!W>_;^>(>DrG#QvWjOSx*I{AhHcR5>Ps*iTGRKafm}R1yeNH*!LE?U zTYTsx+UX)gIuTy&U)Z#AnG^A5sjc6!FHnC><@SiPX}*0EoiAu1PbMRVn`>;0haaz? zU>hXt!ErLYr|JLm=km(R_xSkfvz@qFvEq5M{@;@p{Zi6H2g0b*hi6BfJW@0-U=~35JdBjunWwXA?=}wBKAkI{&S3T0@|<5?so(onDuD#^15a7uKsyklj*c4ffp8s#ZUI$ zNf#H)X35E!586YeN#ogXw8X>I@*gcyW{f`-s*PL!+aR$}LLo6RwAZg+&->iplJGb_ zEw~fN)He3Q^mR5a-NWU4rhb!3LolE5z>*V`ZP||M7!hRH#d)BhWRg`oA)=TV88r~k zOca*F?eVHg>xUNoIe3BtXp;$(@1mm-M$>Cy8~5?Zc+3ust0lU&kqE&yRNa$p60Od_ z;x0ZCaK0%og%4Swi@ClCe51NV?DFz*!=Wpj&1xd>CghT1`u1q|3EqbOmxJobwUot? za_oCD7}=a@tjSuF&*5adDVK*QqhJf?ci(v#wzS1VM_=hHa-AOg^aOqn4lPKW``OL| z^@x8li$2P_?+O z+j4o)-kha>HzN75Aa2)!t@7>eU9_Hl*MHT69dd?dAj z>B5eM2(oW(ZWi$m$R5>SyQVzAov(czY2Xr-Rv$Rfbs6)D;7io5lr<(6A^+4iN`FP$w<>nk|8PIk@SxSA~j#5$Y>1_9qwXX#Ft)LvtfJRZCPuE zNFJl1*)#Aa$3aN++2T`EWxss-Hsr(`=Otor_ZVwmPkb?vB8R~{sOR4O5ABe!aPU$r#on-qN=FR2@cR&>FVgq#sk?dWU=6Cn?n!*}tmzm&;OfYl?sZ?Ehw4h@Jn zta`5xTI6@9Am4WmaM1;q465Xd1SVtiFZ~|k5hZwb;F&7Jc9L?=Z+UyASm}V4)O^v92LIoaCc6WWL9hi&K!OsMzV)QY?KFsI5&PoO9c$U z7ExZGRaC~k+M}{)0Ia6mn$^s2_@8OGBLgN~oB{S{#rRZ08UE>|vJ zOjpd?gM~*k(C|Bx=PK6z*r8#a0_zBSL=CGwmo#}}qOTSvm8h^z1M!UHinF!PFY#Rt z2v>Y+N8Au`$-Hic5)R>uPq3eu&z_mDGTCTu8)IB4oyLbK%20)(@#8bLvAzzAiNiBs zA!6QQG-P?LfLB+X!4ZwDXEabxsazJpmIArdPg&X7hev0bl|?ZrDLU>;lOenZRuMH3 zBWF9ow%?QXus<}RawqKzpIEVn9k=?oC)Pg~i^lO=l*s;xdEYp7)US^v`h9-vErMXG ztbSK@es2B^$pZkje6sD>IdFauKi1pNE7Kj!<~d<&bh~*`FqxurA~2N1(FN^E#)9~A z*RJyO$>x%1);#()k1qb5fRun?Uh1Eq2`RM6_~^MpM$KxoLE31TB)vzlp1N#!>~7c^ zpfxX5?PK=@dv8qqfH$hAU@xj$UtH`Qi&1gfbR_PvzCQ&GQutWPczZusx-qz6Rp>X} zHNbC)u(zWYfvD2?W?MSl>;EisAJSsbYc#9k>Uj9K&MQ~?SIU!yuJRGdz>c%yZ!IH|l14X?9aMFKA(J|Y5JKtNz4MwbP4wV17HlFTl6wwoLvFvBh!hr8j z6^Utdf@Ce)v-853h%kUj@jWX;={K-ovC{(v2LR2r@I-|a@uZ{&ms0*2DB_ur_`RJ!R18-vJF?#Cp{0skm>-3{zP_iIm!(!Hl8%T#-YWmY3I5-! z6#vqyf~qz}K%j8pY|FK9@FA&!yH{U}fuiRc;Q-y35Maj&=kXW+1LzD4x(%#W7ZS~v z2wwF{uoCJ1AfrFHx0wdu68d53zc7CR%sngX-PqVUli@~kh7z;=#ceUooK7>cik)H0 z<>M9rN_fM(;AVWKa(8kzy|Iqp@)ft#oKtgN6oP$D%iZ}L%u zppb|oXR@)&-u#a{zkQRAZdoMy+(yeuv1(%Yj(%iR zzgNdT^}BlFAk-&E3)q4)pyVb2^+{`SP({}wA@`0C&_e?E(*)bQzDxg>3vjy4`7J!P zVZtnVh8FzJw5PJrUEpHNu)gOk$29$sT24;+vLAL((19pGXN$C37PsxKKpxuHU!8ii zf&Mt#Jhlwy2?%hwxpkn^WkoWZ>BBeaW zk5>!~2BqXUN<8SyIgZN80QE%(QoT4BzT!_8HPfVri&M=S3r7Gmw!8g}OlWw0xA)O`V@=ud>P5)a6@U={I;|!oWne(w zbVXI}u=^@`mww6RX~dU-pH3Io*UB0i605CkR}XdL+s*l&iT2cS)vXn9#vXlqeh>z)g0<7CnhHoZ*M23 zk*}h&yYmYZ;np0*u(g)x_sQRMPp$v7{w{B7YI^XeU@}1_kEmu+@itmNrFVN!Mh&7j zbdCP%5H^-O=xrG{WM8;b0fy@8hWjQ47ZODm_S-wlfTc|9hG?5PwX8aJVqj)ab<;** zX3rBc@IusdbOtx*wG+7Mf&$*Swl?wsu{b71MM_HQ!f|v}>hhIOvp+DU1$1v-k18sv zPK`Hds|(yYD&~FySDv!)K(PGUT0IUJOSSUH%^}6H+yA2W>^KvALuy0U1b?-ml4?Of z7b>)gBbgM0g(U(y-5dAi2UM~ty;qpTds7DmBUn&)#y#G56aP>s~G4%m7|SQpLCwbct6_Cu~tUQV3IOh9Pii&|z2&ml!wmBzcji_@wY*mXz|;`O;288ZEOYuUM?H2><- z6C5lK|AkOpa3uUzT1u)mLI0arworDYhBR_j**9QIVoD5sg!X88ch_TReS(Xtzab%F zY6RQHh7mC2Xk!cWM4uxUER~Qf8k*qGnu%#41Sbo`ByO&*%Wzm&e!i(}$X^Mo;B{nmJ$iS{ewV!PB>8>+$#pKERlatY$;E|rQcSucs#%|}- z{HF5ml$dF&KBmPRuEkPO{?vS|bK`0}G4aCucKa2shwctR7KgOFw8O<^ZQ5T+pEp=q zN@7p&MRcE|Zhu5r#Ab`MPo=((9W&~aB?sM|S6S5!U>6(ji+$pn3HoWIJ3zYWV6P~X zw|iypST84+8w5>l5J3I=ez0hOu3S~oYSNRpvy;r#e{_C&+6jd=D7jybT9aE)BVC8~ z2hn|NDz-)}iLMT6EbiIQtDeg|C&Xt;$`GyS4s|nn@9pia<_1(P%Qw)`@u4Es;Mz32=+z1I$76^$tre04J5Fz&gMLP7`aI?3e{y_Q4%%Bx z{V8NqkRtz7aTgdybM+u%+&4bH`(;NWE)gpw5#a`+QiZ(9D!JSz8>}wQFSi?CVd&aryF!lByQ0soLMq zBfNQN3m~%@yNV}}EX0Qv+qtyCK^gC>OLdlT{ZAg7FDfDXs}Z-{Bug!RH!$rFy%#?^ zzb`Ot4ba9?W=6iKiiVnmzxt@t8`BqE=W+ODXA+DQN&zT%GJNBk24#2J#nLLg7vlM(p&uM1aaYEa6L@5XNKV3iG6&-hRdY}i*rWID&2dSij1AMcyvwVooXc4E7GEHZoLTHO#jKJbo z4&^lMQJ$}tp^9Em2LvVgmcy6SQp7LarNwrb;XPRPnl&o@*|-EFvLcUp0@{{gh_O`^;v{+4{*cB**C8JD%wJRhRa5p2!%! zo^2j}em;%F@)Y3S_aljxoT*Jb{ic*-F7Q%bVZd9#3JQ8wq#N7cxtV6zP0U*IAr;VQ zoGw}NiEDKyDU3Z|-U1i(lGq~GW*y)Nw-ut;w6_z$1^a)V-rtF_yfci#OyLM7_@z~J6Cc`qFT1Sjw5Wy6_iCh ztvI!+EJP(Fo~EUx#rER>DA&44d+1mIbHD}>_oSRa-}Q};kI%_9oY$FUcPMeI@~<0| z;j!;f-#i)-{yBe=#d^>Tjmx!EOLk|b)(-dn8uXg6<(TN(0!l_9Fv`dxfWa8_%*)Nr zK5_E8PdQIdnERPb8q1J%LjYD?#9EyLfG#MQGZ{--5QXDj#lwiXYOerpcrA1G<=VKY z+%ybmF%+1ytolBfWMpLE^<)kkli|ioz(9N0q<6q1;ec%Mz#_&-I4N(zcoyBGs?9GZ z53ZG78E{>ok`iByv6#H|KhP@ z!3?BLyDP;AEzD8_GbhRvOj<}uOY2V0SSWm(z;D5w&kzb5bMx?cppM-gcOZ*jtZ7?K zBJPtwE$jImn6Ur==@2CFY?YVxp)#LJ#=2g%;Iz2WbAvnSr3r++VP+=8aR0jMJ}0}o z=NhaXFR5td?Ti$O55~U@dUCn3p~6P>B}2DGvb)2~CJJyyM@R7p2*$HS(RUs{p1s59 zhunOgkg~oey6J>P03$MaDZb?G!K!F~e?OPwmTl~1*1Lwo%P1d36_w7_k@y#+_{Mq! zL@z%}SXYh# zLQ_?5y?K^s^OcFn?eKeKBiE4|htr}arwv5f&$LOSpAywFW>#xDjy1MCdBykx`NZ&TJ26hYjKlD93KF$%3Aaw8U8O@is zxk79U=ZBLX9UWC`q6H7Wf2K%WN6!@;5wafky5y)U{yuN%n^5Q3&QMW~k-+7aaKL4r zY-&4#ly^INCVin{Jb}l!+-+e^k}(SK&AhHLKfx5;lw@p}{!o_*CUe>t03O;j(9As9 z#Lz67c~&Dr!*2PvnKtP}xelsc`20LOB^YFv8E$#ShCNt(m#3_qon0qa#5TuQ7}xoe zv>T9NMAFrm5r@^hNP6d8Y_n*C#Z5nuQufjVVe$fZdfY&#L*hX#z4teWR4&7~yRL3Wn}oPshoglK6Y6_$w_`0%CLUzw-!0mlP_w?{-PrNphZsR*Mcip#GKY& zw@M8N!@8w*G0;$VIjxp|TuPgBetna;E4co(yW|Ewy26LpdJ6bHg&*~^M-Rs%1YZ(E zJFIUb1TR&>uE{%xcCvqD7xgWxUNl`FH3%j@k%-WE50g2;sMrMC^)+ zk@KXlWfbSs@l5hgE_xqnvHh0bznrHfBXL`&WEKBBAyy-6`@RB;lM|>Q169|ZLpbo` z7rTDKl2*DuBUbo$Qp4+=cC$uZxjY4;E&(U^nIhffzJmcWI~&UzRTiQ&UZ7}rb-wen zBtLk0`Kr=lHmda-%BDA`Y%%xCEVU?P3c_B2at#(*_5(n-$?KmceE|5#e+r%Gw5qI) zs~QV6$*Z*d+RQTK7I>V;Cu|g2uEJiezFI9FX$3iG0X|=$bp9E&mkUpDU!WMod0U$K zwInq4XUp)NEEA6)sik^JvmNQHtXG;97Wh1nVS1;5K_rkGEz+c+mQOVrh@;mTY}gtr z-<^Q?wG5}{$qK{s%wLWr3>JMv0wQ|{dtI%T7gd_KXlH;Y%w|3|Lw_cX%&5R(vz!}* zoCUC%KWrrhLF=nXKhMjpRsKba|DEKEhDiV@eFtD09zKD?Vpq-Bw50-BYI^vu7dBECLwY3`7>jX8iS3ceXNh(K|wR-;mb8@KyVd+!p-l%B0@yF98y3!_UahJ}w!9Zrj zYW`Wiw#=T>Z~efzkNosQE1Lix{M*Ge3?InL?mq#L?gX{0?C9vmWjg`^08NwSWshR% zh0hbtE@%5g*h^lpxcc=Z0Fal$JmnaI0l=sqE;rrxo6WAlVcPVQ$zOE$__3&BiWGQy z_X7iiPuynW_X7Fu-{_(7;>IInQrba(3(*QeErx6a}9@XoW$ z1iXAbnqSrDC~30w3MD5BW~?!TSHd&f+`mfVL5Ao1Y#8ps>z=GN(-|&v_pxU>2(#+5=&Jb3$k?vh0i%G9GH~Gt0y;_gNTKN+Hw*| zngKk{<+}CO$#2IlvlP!MTf*Lx=a+6Fti23GQ|IyF!-vd6rA$=;B>FE1n|Ia%0W><1 z$BQSLs`=BgcEz9Vo7oy4vUIOzfA64Y`xa`kfIRbun{R$$=!IN;s;`EfSByRvNZ!PR zO7QlE?sX4iMw7$SIW?D~o;#B8gC(K6BM6?+&F9rtYr<3G*#4+L5`lAlAXahoR}4n| zYkl+lu1tUy-T{S%1P-UVncnd^B$WnAAQf(8*DX>$|5n6mO2~W1T;J2pYTXV4e6%Ur zCdz?x04_G(?t38dmvBVrJ66_lYv|r2(AhzKMgV|}S$O>eC`jOD%h0{^{GDCv+bM{? zzHy!HI`$rLf0lLx*P{11KbYm@_}CRuw;2?)+ovxU`rd2g%}M>gpuRg$+w@rVvG-3= zk-5DJ$XWQ6W@NT^!&g4~6C+d8lNnt3my`6}CbKKLS%j|VO;+=jeb!4PVLxiw6J@9x zN`uQCl9~Y|pe36B) z)3&YTG$dnYUI5FuoNg&L-|j5sz~`}AwI%yRL>#G{x(@t*IKBJe7C!Fe?(SO3V$2QP zE1AYRZO!B16f^QU=U{HdR_wD4)318Z*Nn1B632VsGcF5{u|4k2F2on(e)|cFT?5G^ z{(#QTM^nX8#;Xn^%mBaNaAI9d=o=W%FEfU@3uxbbFyG$Bsu6O6s;Q=fASJ_qu;!wg zLONn!5oI!7yg+KD(NM3X51`90(+Ei8Wj98Y3G|>LyX-{`m8hasGlOn@XQjHyn8PUv zkrQ#(ci(!eTM$k_e6!SD-g%#3^N&xmI7ej*W|M{Zu*U_ zzY)6!GJce6tabkZ?f?|$s6`L!2{(Wu;BwQPSEGtZuow1vs2Yy&OHP`2a5!`Ek5ryt z$W)$GS{EpSR1IEHX$Pay^Im7qs_!~nV;!--IK(-r&lKLLaNE}b1hAFPAl$~gIWU8b zwv%f9NAcU@;0ltYPr!f=Kw@eGoS?-)ZHb|rlL7z<>$WuobOA_ zR#0g@)=AJiIA}Dv!+zt?_T;AW)HKSZ$*p6~nSY_+$aB4F8i~@~I{{s43mDqwoRGh- zBsy#6rpPFrH()XULE@$Du^C!-c1slDc#v2a@o0e}1z>{!Auvxga9qEA)!{7f{Dp;^DQCOc*Nm#`DX2Mmf(kOk$4OMi38V zYK2`3e_Gx2ntP`P++CqlQ#|TfZ)OK5TBpaxjy&{eere|fA01~n#SO`=75|5DP6~eK z`>qq-4{B5N)cI&L=o-e@e8YK*hViag-NuBH@}y6kjAxJ&w1ZcDFe3@zD}bhVPke|T z+NF|rk6hzE*@D`j5JmJye|7i!E)aA(+vtX_OeJ5R$79j1Sf{L?GzetzZAH(tjMWU7 zD^q3DJU_>H-JNiRE3pObY5Z42*ONb4oC}HwzoP397ce`2cN)A4uDB&RgQ~*J_hB*d zGZmbE3AJfzUWshx?{M`~2AhO`0v_0MtqoT9=lLWVs;&*NY;rZ*aWBQ@j2zn{PZHva zxB)>boPG3`sTAwM-2*nWKPahk0a-JQ$f@>s=h}Y|dUQWozh%bg80Ujd|kp3osWkjR|G%LLq^6D z+JR{^wwqH}L}xdmRQnz#FQ5wZeri{7Ww!FLAsyQz6b3ByRHwuzY_dyA$OhP}BcJT+gi!z&=%@ zAY78Zj~x)vZsmEJ{~y!+e~;-(a(C{z!(|Hz#qAs-|DrQ4rz&PKieiEdc$MH74?R9)MinvPu;+mfVKtR=eoO$Z=UYP<(kYdDC7P-q25 zbsb0bZw^J7U}Z);38)9k2$gQZv>Q$3Ybldk^1V}%-syqrG7lFbw5CjZ0XuD`M499I zpYaW~P8(*xD&~1H+LLoI8!~E^;njc$^>)O&eTh3i`!Qf+FnMHtR#L=qe{Vl;LPA62 zJs>R3A2zo0f9#RzE^)_;p_LDciHWhjIyK)xn}mHf_#m_rxt7u_ePExYjl#lZ#YIFge2UqWe~a=vi5#)4lIvLtzAe z7P%jRzzr9MK3F~H2XF5$)Sk0=liPja#JDP#GVW^}g$vjHO#G#sFLwkjH$L5&jTS?Q%Jv442fv&)FbsPH#Q+DhTh=v&)pSHFx5nsF;N!cfnkBCYYyMSN zKqWLXF_{DGNuKt1?*P5V-zBKrgZ3RGV}xnCM;Z{!Z;U%7#?JSCJJ1XKJpJ5^j`BOeM<)1;P5VXA3aZHa@n>n#;lknWxJ z%yOuyOqw>;!wZI;tJci=1t}=}^7UPVaC0%AHSK-vEgLXa>9UAQQCZec;58olkmF_ZhJy&4wiuxXC3acSfzD`;5|6r z&gw$uvNvKdm4FNPcADqA099=<)T^`8v4mw|G+X=<0rrWmcHl*^p`^sc8BIh=X|JY& za@M%zrnk3O+WKSGfqSXlhIJaY_a+tZ;JkpO*|5|ZZ8Ad6%>2Cytdw{$?=a|UxWS$~ zzI&GQH=SKMfd#~amK}*daMu$PPZiDQl6JCAh=IH)9ZeO*=TW@i4Lm}{D4*UP7q)w8 zb(Eizn-8_BfizB%Mh6>esgk9T)|~3{&Qy8P*)%iz<;nE+21KDW^JvkDC99-1wq zHMP`Mo4n7NbqEZBBkNf}CxgR_e05tBzj2>nk#rid9G#ThXBQQP>ffCccXf5GZElVi zX;w%<3vToWKn5i?le1WeE9C_ao(kQPT++$e;<$ds9LPnz!B7nesbghHdFM# z;Be8epY`=pbWF~?k7IsME66>J&X=ix?*Ef2w0E>i$ZQSlmNe}+rh^-rXaQs0%hqI` z10V+}ZYSK{H;>$#77Ifm&}wENVdC)UsH`8hrx9CGLr;3<15l9-Cs=prMzlNuw`xlT zEOXq#e4>=RM?PgaKUdmqf7bNEd|L@fGC-0mxh43@p7$yZr0Gt_k{CQ!QV7MWt-hWA zA8W{t#NeINqFYb(5>@y6bo9Z2bhoPyC~|3heQkbEBqb#u6wj|1Ysx#Syay5t)#$a$ zt!584oK)9C;G?KEHZ~{aKpDQtwvOI&*!*+N_Lh}Q?#)oE>#6!nL!QwBI|?Fp3lT?0HeiBOnvMFp3kg-% zK<4{>prtir+)6FpUUI2CqCnmvitA2a%Y)J{D^E7c@k9+yv$OwLRH^Tl7l`L7Y34d{ zr03`7PhL;N(rr&x5XdI~{K}GeaS<&KnbP(`1JgjwYhaKYdA>VB$-at9ugmAh40<`h z)D#ZDQcq;0Ek{phyd)4675#YU`3&&zH=Hubft?gSFwpo97&XkQinXWB1avEFm0I@-nQbTTkqSD3SKG&_n}Y9S=)LC| z`}xv60m^>MJ)`IK?YZOD7v94HF7M*i0>McTh0eA2dLi5*FG0bo@pBT}%Gap}<>;Yi zH^MY;pE5GayPpPTntGCWU7hCHqzgFi%;1ob*(4jk#YSrc#pwUiO;uMhA^?C+LMrlDoX%gFe)PN!64!b_*OYMAs)WHq^8xjtqOghW_l`kZ;lPd>1GQ5Oui4P;@lvDN=Z^3x zRN8=5g0AP4TFC3T)Gu-P4c&w0N{yUPF#@v!7rm|xG}a{iUEoTE>wA-Wio$3uLEjl$ z3R{$>%Z<@PNd+IY8IZoHux0-GDxrBn!Es^CiqZ1w%TTRsx&Xd%{?MoN=G)~Biwl0f zifq%>n;-f(BvYfy{W%NWtuptfLn+@4pY@DVW_gs|b0=CZ#T}WA&mlLjFe3IJqijL* zIf2B3q~uy!WyhPnE*&4MFdUjoZ{rfUR_}z!Xm?n;C@A3L{Ehxgm2e_g7a~7ag8L`2 z{SU0I_idf*M2C{tGe^zd2IuW&_GiBD6I!Tu8m&_nPmz}Eo*Jn!7~i1hvOgtsKX(^u zkuj5aDx%nlfa`yqu4x#}@b&^nQD{%$K6=mwhZ-(5ryq797*{kVN58z*Us9VnnpD>~ zAMJUyTYVS1oMw^Ga?6-<$Gbe?ry!Wgghz^2@*-J@q zg~wl=`N`$espU;t*qzQW%eeUvBw=ZNAIv8Hb-U|A$ZGUf4D+>rp(|&69dkHrAI~MU5VSeME+|%Or0!EhJ-UJ`E62jqkffzYUAaObb%Wa zj{f_lpJL;$fc<$2ze$SRDO6}KO*AzFS$x=TC4rbiwod)7@Nm%cNs>~g2z*X&Yw^QV zIaNGhaV0XlDDi0~g~5{#6+XRiwHzXn%6+Z{d1Vnccie9Ltq%t$ z^4b2I{XaXE-`Y=;lcJT`fei>RFz@eboyeutpT$VwSMt!$^UupNC}*2sLj9;T6Nte; z7m}a3KldcM_(TbVWKjpb-TD<5^;}$BTyxIUUPQ#mR}AjER?%m+4jtRKvGC0hwm){O zHIwmqDh4ZRTk(4`x?Q)qH^(tMor(G+L(x(u&cnT)Vt1HSr_S+pU0vNe;cT=tM6IJN zi2~S9Wn`ZIx0(V1XTRdoes*?>7?~PFtE^qHU24sAmf^Z1Yb;JX?&K%uOGjtw_t-Vo zi{+NrMr7<3Q^4Lkp;R6{llYU;m1yPnf>h!nA|@BE#P|C($4WJFq$r=FP19r9v9kL8 zIR%3P0|VbDkl+9xNha=hz$fYp&=?Vs_ibyyr9cT^pc+7bJ&LA4UVMfuOhn{mIo~4| zcFM=+AXoo-F^JeL8fHJkTi|+DOJ5Yp!pKk;y4ThJYVA9tqUx4y8zieFl_Y{9A0Qw} zaujSpQOP+gpprvN4owt9f`~{40m(E`a*j<#a?Vkj&>#&>zN^3c#u?+>ciwnsocH*} zkG=O;yY^aDvu4ezPT=O{;P4FyxN?(>5MsK!W3+mUA?Ch`44gGp?4c{&EjDsbPRrDk z4qI8MIoG6Jesxt<+?igr(_byEtx+*CgrEp((oF*KY`kOw^p!un_RuYD;L`+VyV8Q8 zvMBZPhE~zck8=uB;H)?|SIgIruf49m!lYp*z*yF;C&$SBU6f7O~st@j5@-8$_b0hSF}ZcpS7v zWhi1SPM4Pk?VIir5D;c44j4}yW8fIn%?qyc^I=5l{d7f@pLVxRi<5pLB0i+FwDcE`=uJI6J&5nRCq~xF%BrM+9+i>H&(S^O20Ga8Sq+&J1Uo}7 zWqI!(pSdT#Ch#>;PJyPzo;;x>IJX9UI3XK@Hvl=_zQiva5#&g7=c>luvvJE=VaUMI zW&kkZOFLc|1|)t<7gg)Whw{OE3#fFw@bc&3h_`(gM zS9jZa{8CMBx1Ar{_wqKl=h7t*u#biw-zV*cCd90iIkEi+S8m`&6L`(4(%V>2eysOH+87CEX$ zIP=%;rB-c0qUYWs*`WbfmX3CxI5>E6>s8Eb2q5&!TQZ-=-XppWF)^iOO9Pd=NI@8pt3w)S?v3 z_(dY*ku92D5Qnoi(gWrL0sQG;Q@0fkkaWdwHCB5lr-<9~*{#LpBfqUG$SbsTb&*mn z8bzh1^3takK7IbYESJgp5YHg;IZOJNFRQ~=K_CIgIflAF{StHn<|Md12*C}M(n5(? zjZkJs_b*iUCo7FKWSD6|eAROWtC9sk$1iT%H#I-O4oo>?-;CR}HPlX+OUbi`(~f0p zaz@3*>ZDKDSXeIAe63%yo}HqVXqY0EWjAd@zXIOMZfmZd_+g?*WevH8nQ2cci*Hq` zPun9Q>u;PLpwtd(L`&J{jyc*01_r^LNQLXS^=D({z)Kr?{aHhr?j%i;kdlAUHt=02 zj$lIx=|ny(Kp=;lhW0p4D$AG6?CR5PqibW@TFf+`v4&qFJ4(zhdsD#&XIo#qnWt09bBJtTTx<=VsIn}R)l;o~Y%@`ntE>Jx zcdo+6XJUU+du46y^`CDl4-cCS=lj};A2-f*^chgnnV#Hug7Eg<1GtCZ^f4ULhlvCrS-Tk;-o4kGOqGBdy=alvrWYyrGt5zn#FK zXt3Plc|Zb$p!&9W(z>T<%^vc&6NG=|?0N^{$KF?SvFA$qDuWk^62LH9&kn^D)zs9` zXmrz1=5stqG`mWL$87O0O6W_v$fMV>EI*#GhtZ2L`T1S4;+4JqpU^gc({{3yup=TB zd;szgy(&8Xs~6Q?GUn(+I_!S_8<{tfW+#HcZQvW#Vtl)s(MvO18}Xv>MIGR61#?=} z>jxiYFQcRGZ%_~3sit6R0(v?d=3dOKp;yzg*j*!*n&q~SQ0PFMU1_*5!aGep7yWwI z7y{;uc|6HfPpkgOr8s6&`z7v<)RlCObk}(wIvO$RMWfoUqPWddRa4V4*+t*i$ND>~ zV{iU^6XQsuo)ZYao*VPBeMSml6MRCkeeu^Sgh z$E{loChLR@SytWY~{GRcgu3!E6?RoYkB zU-#b4RF%vuQc^{QgKFo_Y-8l6aIX;)6`W$zV*nol042+AQidGp8iuqcV7Y~{s6Bf3YaAE~I+{$hLXw6eM6&s%9LPn5_(qWO5WCStY!O@Z5U|?>yQLzy( zU}3&c%6Q`si;MTEZG6WzYW)&A$|Yjim@+2)?Uo%c(3AdeAjm!5NO%$JSYTLB^yux2 z){<7@y}_w+>?-ReyFnDX8=s0w%97L2>8I_q@Jx;KRd8Bz)H6dTEo3gtudMYZ1btpG z6%`X}o~~u0;WhludkOSRe3DK#r-EIYLZUMEkm0va1OTq{I@t3Fe7_MG!X)Jg+NZoH z0UQ8IXc7QzHU`URU3|_>&c%Z+mEf1}QR_IkftV(u<7T(b|CI{A_^4(dF8^4ySoV%Q z>LI6;)Rm%!3pRhbmSQJN!fPG#&<@kw-K?cQm_JB>iYRYVe;A*m3j^xEjJ>3%FWQPb zqaeNo1>8TclFMsr(?AxEjlDl7B42G=t$C<$aQ^?iJ#0e*w(dw7(%g@v2FO8PtW3_0spUT^wSe{vU?FnYSjP%1t? z-fcU)`Q*Hn5jH(E<6~BM9aa)Ao)Qwm$vGK)KUtX=p?wuXDNmKJjqookd!!J-Xz4hc z4>GK#Mnu;>@HtHbMc0>nPN*6h5R|p%@v`oI+MjUIe(fMvxAcAW1qOF&fa`zyLNv55 zQFy`7Nx&Cg=nsIit%Ll^2?jM$;(fdSujEp?KeZ*#2Y*`LV3hFs^E>JOy4!+8B2C>jyak1bI^y(&U49Edp@GY2KhYP-f}{X?m5Oz^`1$3i)rgqqWzqVn#dh2iKSlJh^(P+BYLKtFH)4KxPkP1LLBv-HVSHpE{ANFmF ztWELJCgv`G49Q9VA|$4yto)&c4|HDJhcQbix#2*2&Np6tqJ-bq=YUrq+$b6kSvkJ*pp+*4*x zZiXdG#N>D@BJ&`SOm#~K35%1F2S7;C<`)o*PAx~F`wC}6yj@GWJVKQjcnef=H9?uC z2wF1PJ=Es>z_We4rkvNstNez)a#P4+YcXnicB0;sLSNY4&iPJON7FY8d5ELTdB|I< zF>b9eKRi4%XeLlOT~BO zLMDUB(pkhS9$|w>b{3ZEE|1mDzP{^#eU(>IB3tWA3t`P`J*H2NU-i5-hyr-0 z&p^6-f*9s4Ldy&}_qZ)$FKg=iTjfRhA*P*ny0Hzw6FkTjq61_^vczC|(B4XCf~^kq zot75#MfYfDcXvzpZ8(d^VG=b`)NacFWI-M_Q>7r=i*G2mwqmpm=iME=|4z{AT{$7v zbUT;`b!*mmZIkpGT7<6hi$LXkoOP?A%~}LIh)GZXeT0(K`*t9-BX{^24o(2OwH9p9 zYmb5=;6F2GXRzC*oeLuT=vAFQpI(oS154df8^RhF6kbfgVte)E;3LP2mLd{z)H~JS zOplDW%E-n0iogC!mvCa1^ernZo0N`2)mCGDk$=LCy?HsOO(rX1{sPDH_^%U}Ew9z;+z=x)O~AGZ^0ORdWTN8E;SaCQzVi++@l_-yE9 zcm`tcpIE$2t77B9ZHvMby+>~sbXyz&V`!YmCA)Tb8)h5#sc&Wv3e}`~z;G>zg*?oI z_L;~oi^wvWuuJ*H;Wfxi1B{r5A$(9oPlLy>%2&r2u5s!5;>9%@Ze0k3k|1ru@H0RL z@<2ao8;Y{j0!YNx#76PV@5)4}WyUP3Xp7>Ii-V)dKj;&m*9N7a-Hh&zLr6%cf;fWa zXlGv0`Su!5WJn{ibNyR9$an>Blxx3Q+5?R&T*Eg|cg2j}aOc8t85}W6;9inXv>lyy z`Zcm0PIu6-V5rm9%4}NwMC)+8M3~W|aV)7?B48qv*Xs?w zKD_e_qdToT5jkL4)a37-2HO0MQv&}b?eZU^6qjcaP_>_mLOAG?`8qP`$4FO{GP`ds zj@!{9U}0Kk%Uo2Qx(l$`{-1q3wLrNvU%506+Zf#S!c_89=^VgsFzX{KG@WC_#hhGS zTW6CPCA&3bGna0%fdzjFR%U;kJ>1+ni_pY;1y?vZ`A0`-MOl!)ht5erf z+dMVpjG?a6##!~2A3g_0kh%5+^%6o5XC#uXsAvZwp?^WP{TuI@K4QYGt`6u4P%gl8 z+L?>t3RLPE?Ypj(FW%DE*Up1+WVAKg-BvNTPh~$3Lg~4SM!Oj7sHTwkNRJLy)!Z<) z)@a>wqK}X7^hQG}?dLeNJ5y{%t;c*j^a5&}>&-1qzO8UbNZht6zd99s(lzLn8JqMq zFsW9|!5Q{YONtTsrDXh&y|i*5`XX>6r#Z`UQ58aYyh{A$0rW8eW!WFmisbr_c~y+X$xoZto;@feBG>8j*Ns!Idy=4%KA-799MV{H4QI6^7q)e6_RggkxJ_>hAxXX$V9ItgS0@1o-> z!dJ}_)|IBa+zY=x6r(0cd*S+ZwMWMk=u0fL;djoi} z96j@G6L|TR{CN{U)Ob;v-E0jg;u9IWpI`TO*Q>O*C*w*9)i7RHf;c!jx7H`s(wIET zZ0QaEvS;|f#EF%Jh`1@p1TGI`&3mXI6F_9y#tN@UHoYiMPDuE0Uoj%xpps-{Z(nXF zfEX*b_g2t;Zf2?G@b$nfVng&>Ot$5vsTK5A{N0W2g9*|13lJJ)FY+}1lEP0`7K3ZP42CDUzS(KKG~mg|@*tvC<;lGF`Mx>qqJb5vfg|FF=gHUj8eULzy! zboTTp#&BvuAo=43vZjwA{V5W}Dk>^-$5XqU0ux} ze!#c#n1CJ2OV755tfTryaS%`pTq1ba~{rQ5(t^Wd^J;%!Q9&_|7I z9DjQSVmIFqP9M#_?Le<^A_mzYi=FB zV(h%R&^?-eA^=h4h@ss}i4%Z!v@kk;LmA!y-C2K*g~RP> zbl$Q>sbS5IUjXsqs@CoM3fB}7`U7-rH)v^tfo{XBH?EQokWOcNNM@ovQ0yVOuc*Kx z$bHk%@ie@`Y}b)HKQ;6xd;%4mlg?S!qNXhq%X9Ie>HFR2Rmef(Kq8nr@3)PH4T)io zPt7ipCQnM^HL^_|x2O&4PGq*QZ)la1C3ATbFAr@b=krCr@SJ^^gss0?8|ku`Vz;(? z5`(N(_wd<69|&TjI{2&)xetC1-;U)q={P&S?D+94I;?>h4{%3#jTatx$>OdZ1(Rhx z<;+egTo&~R?W!l|E_))Ne9xGE_q$~@8y2%9FBs$XexT^3wWg!PV*?o(uaimbfIEYR z@f;*1WLCj|`b~4pP*CN#`BX_fVBM1rJ_q&i5RYJb{@BHZ=Dj!`Sx}2ECq9X?p+cbS_+@IT69}Yp6%;#(*42Lw}UKX zQbql4<&QV%Avz3}*}lV`er~Y&#Z~lrv2nen$QF_UUnFefF-YT;@Ipge&X25LB;F(h zE;$BRusQT&>#Aen*Ba+PyaA2YBVG#g7k+?ef~}9!fo4QsBJ=wD>4(0(JCw-ilxoz?gU z4Iy^JYL8pw6CcRw3+8>=mrB;NN83uJqO^Yi zr3ltiD6i?gKg5WB=W;;UGBg$BhTz2YcA(=(lJ7FKX=3dUX52fUs| zT?%ynG%uG!sYuzQ(P8G|vU-PI2`XAKnCenpPlc(WMmQ-;f3j4-RJrwSqXyPpTMM}k zSf)+oC>igpam{=Bmx;p7ag_=vI1nI&_QV!#5HI$|mjPGW`uhi~oBOCR9S6)JsF9d} zXkn#G18kiumld`zjTuI*oE>tOAPDVGH$HwOa()WuJ*kY1jg@7TkBzy&R@#2LuNZmv zq0}8vCjn!Z6ui#xGB9I>M$_Nt#Ep$lN&|=~WV1m#<)<|ga=XZ%2k*V(BO^tqBbXII zz`!}#hSbApFVcyze;mT>7BA|+P7+z}>2r8*;Kz{oBjE@p>A;y8!yjk6@Q@VY_KgyH zx)G+-f>X+)oz;b9ipv0(=6ffll^JjE$}~cXD46`?VQWjjn&JH!$tfuRiT10GsI`~o zZ_G{i105|q4GkPmvkL}dhM0c~3m)o^7aCFBD5DgypM!!<<~fE(9UD%NVwde;-0Cj9 z(Rls=)3FB3E7CgMCrS5ZDII?ATLcDu*dWG-Fo;-%nURvBF}8#Yd#sZWQ++Z*LROkcSIi?v)A4vZ6 ztC-vY25X(RAK*VWjy3rlIc9tI>ql3a?$KiK>J+iqK+L~VJXE0nTk+u6-Fza6ni{nx zA-^7^{PuV`0d!ur<#bXB$37$V_iY6L{9%O@p*>e>0|j>nXT&ck6Q?C`~2kd?Yzl-c8pBXSa0|P6wD%R z@L?bH7)^T|IZN9{!3^C6uoAtMg-_=_Z>=TP- zpg^)!Amv8bXC)eMsFdL%yFY3EbKkZLmKj4J8@#ge$6;_nm}1J<{8@yg)NGXVI(eaC zO&IV7Vsbe@N34Vx^TnntmiPfEKb*mRXwmP&(oz^=8Xr$`+KWz5HDH%}&Z{Gs|2u5_ z+&a;)1DVYFxJ1)`e(42B7+0U)lm`N;x;n3SpcjT1%)9;6bK$be=|5HeMA=2Vq*R?Ydeo^fZEzF`19$B1LK$CoReQ z#mIQQk*M#km{WlsMZ_w@--Jkei`ah)PX6`~PQjW1cJK+C&Aqb?ykYz-JM30(6|S8cXyZI65KslaCe^~zkAor+_`Vf znz!EjV@N}~tGcSIt4^J>zn{HNu!5X8BHRZ!2nYy7NePiJ5D<_k5D;(7U?G7e?qxe% zz<=-UB{ZBMAdq@qf8WH>AmITEX`DsXokdKXj2tcOoh|HaA=E5vjqTisg{=*ooVbV; zo#~uh3=Qn(2uTq^W%ty>6*p}qwFih(Cp)Y+6JNi6LVaW6m(7fUf~%TW-dyH= zPyuNpy8PRmKz(htxwEZ|Q`4rbZy=L8_{-b!NjAT~70EcE zAmZn^Nq0JS8g2VC*hcXlM`+-sO#>D<$nnGbUhl*g&l;KLoBdr0U`gwQt}5tQI@&zu}?E-dgOZ~Cau?W*O8Yu8trFeC>u18yOSEQKJl$>O0! zPvmsMhrJ3k!QO)gFNSRl!%M!WVHLrN82FbZtI-SgeZ$3lSpJk667B+%3JsCoM@T{S z9uI#ZgSkLo{W)f^g2I5;e)zyPgZ%J8!u8#|fI3PDZ*xNVhH^18d9N1xy=xd`C(RXF zCe@)>@nFu_GH$PmiW!Q|rScdu1cYuBAvpi+yL!_UVuRKNxl~S#HH8y?;2kUhx;2do~PGc5K=MmN64TBMxsIwjBlq^+nZ zNBiO#i{aRmYt*u~kN*4UYG1U~N-d{C73{`wG-Nz^bI9*W$5f`V&Mtv7_q>?bb~(Q8 z^sIA$iI8)&Ru?PQ-J#ypQ2OY9PCiVSkJp|=XK5Xhh`nUpu|I(-#9Wj-72O*}gYtzE z$=0i_d6l^Va%)%( z4l~n5F@Ht~U+z*}0>sFJ)!Kz&M;@(ZRb8{%(q`77N>GJ-1T#p%L9*O8kB>j+zY=2Q zt5vM&bnHne#oVgoz^@zK1?Qo3Zs=7LM$XK-3BrxL9=Ss6!ijm8+*`+@+N9fVo1_V7O_0n?P zlDbTqc7|~6+UEKZnq+x=z_f!&=?V*8IdXuje%m8b*YHr7q|5XG8=PA*}d_ zif3u+C>iQFNwVa7x!Ml1mp#c%KXuwa*DDl>GJU0|?{NZb*1SpAg{rS}^7BqC;avuMC|XM$Ga5ev|)V?T=Ujeo&!rq^>@cTv;7vn zA=|uL=Lrmr4M6L`XZ2T4XQnzm-_Bh>xr@YMr+nDk?Cz)Eu(wwI{*Fq_a)2@fwo^u3QhtqL(BDzNs`P4zp=ysEKyS}{ht&+XRd>uBKRrt zNCDWV%cfoH6ve*bg5grn=1JJ}_A;h>C9OVLv~b zFXFs5f;K~q!m6tEF^Vx(*6FK*rMV~-HI4LsrlTVKu=sQ|Xg=hZ-@ZHaMu|PEyGDzYNNuop6AwMMEv=Q;jAtRk@eYkQEHMv@OK=y<3&iNz%a<_vn z)~B5&E^D(klMbOAa8Gaw^ak10#o5(xBtV}_tLRBL&;H)%bX-AJ)J~WCa?EF@eR=o~ z{e0uu5(w&^`)Hxvc<=nE=!UtKCzYc#&CcB1e#iD6o5q#WUzWsxHN-O6j)oc?k8!)T zoM9P+2<4&W&{%#+_$Is0qli&{;#65tPbHMeDMZmIr*gyp+aeYO8Jwt+5kY_f^qor& z+(-5@IrZ|^x}vHGFDay}NwQ%dJ`g$2<3$=bd-x0S)h>G#qnw7HOk`87sE}5rGcYz?BwL+N%BsqsrXM%FgqsRrY2LqD*-D#2cp`` ze;&=Y^H)6CLM-!T2_sONy}9$U+WB~SJ);`j^uK1*IuyO-uv@LsX>o;l_l{ntn$mIA zar>4c99axjR9uvZ->0je;q<(Bt)hOpkuT|96GPl`OElTb`hlweU zlzuKzqmP6|!oM6zUg&sn04>iOIQl;xRwT5qRLYYoK99%LgMS)V?ZJ{9X50u49b;>f z=4Kk@bJV=`o}zx&xLUJc=B}$4llb`Cq5RT+S}-I<1>T%%A=qw4VRmx0fsy8vLg(<; z%UY#{Bs!YxxKXePo3)?3Xv6Kx`EVd=$R3$nQ_x_yR=>r~gh+=fBtu?Pm4(%9p}BE( zbJLu0otvG#JUF5w9T{}aVf#tbp5Pa)$4A80)^~Y%yu=xfW!iDq{#JY3RjFxdHq%Gj zCv3(hyhoEqCfSDL7FQeOX)`m|I!%lqNCn(|x3896>eZaiH_sWzt7FPHn)i+`tWY1&W@n1LmNG?wnKayN;efYU`g=1*?7zyjny^RcFvV{PM%{k?s(V7iEIVc$fwUft`taXx-i(!OgK!gfpe%w9Tsnj-WPIW8 zrqIB|#6)LiNtug0I7%ps5)*do3(ybNNzDxa-Ex}!dY^uWgZE+TpE13Gy;+xuR@^!U zDP=J&Y58E2U=c%OX%XmCs?vH?1p18a)el zP|N=bEqJlHu8WI~&T6grGE*{-*-?+Vs5Eayq$jr_e);PB1v7g_QX@XqOfm_}u$8;Z zC67cv!`T@lZDC}%Cc}jxT|u40ZPlxrJ|BUc`y6Y7h$7*@YyR-_<^+Ar7gY10#aL?HT$`JZ*B5L3i`-n`c|gFYch`@QiAR z?#lBJY_Ig*oeW=g>)S#DL7@96DlKL@7}aQaUP2Q*s@LHs0n4RIsk7SkmFsZ#$)}RX ztY2Tx&bGM=f6r%0Do(%_;r^2J*dlB;*Yiu!_HH_<G5I^ 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 diff --git a/doc/salome/gui/SMESH/images/duplicate04.png b/doc/salome/gui/SMESH/images/duplicate04.png index eab51a1fb8c3e03a8e82a9428e9433552a93bb52..7bab0dac4947334759482c64f3bb46ea19ee9159 100644 GIT binary patch literal 19200 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 literal 22084 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 diff --git a/doc/salome/gui/SMESH/input/double_nodes_page.doc b/doc/salome/gui/SMESH/input/double_nodes_page.doc index 955d0cffe..1d5a5ddd4 100644 --- a/doc/salome/gui/SMESH/input/double_nodes_page.doc +++ b/doc/salome/gui/SMESH/input/double_nodes_page.doc @@ -42,7 +42,10 @@ Parameters to be defined in this mode:
  • Group of nodes to duplicate (mandatory): these nodes will be duplicated.
  • Group of elements to replace nodes with new ones - (optional): the new nodes will replace the duplicated nodes within these elements.
  • + (optional): the new nodes will replace the duplicated nodes + within these elements. \b Generate button automatically creates + these groups. +
  • Construct group with newly created nodes option (checked by default): if checked - the group with newly created nodes will be built.
  • @@ -73,7 +76,8 @@ Parameters to be defined in this mode: group of nodes at crack bottom which will not be duplicated.
  • Group of elements to replace nodes with new ones (mandatory): the new nodes will replace the nodes to - duplicate within these elements.
  • + duplicate within these elements. \b Generate button automatically + creates these groups.
  • Construct group with newly created elements option (checked by default): if checked - the group of newly created elements will be built.
  • diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx index 83066678d..62bb61a72 100644 --- a/src/SMESH/SMESH_MeshEditor.cxx +++ b/src/SMESH/SMESH_MeshEditor.cxx @@ -93,6 +93,7 @@ #include #include +#include #include #include @@ -4567,11 +4568,7 @@ void SMESH_MeshEditor::sweepElement(const SMDS_MeshElement* elem, std::swap( itNN[0], itNN[1] ); std::swap( prevNod[0], prevNod[1] ); std::swap( nextNod[0], nextNod[1] ); -#if defined(__APPLE__) std::swap( isSingleNode[0], isSingleNode[1] ); -#else - isSingleNode.swap( isSingleNode[0], isSingleNode[1] ); -#endif if ( nbSame > 0 ) sames[0] = 1 - sames[0]; iNotSameNode = 1 - iNotSameNode; @@ -10596,6 +10593,559 @@ SMESH_MeshEditor::FindMatchingNodes(set& theSide1, return SEW_OK; } +namespace // automatically find theAffectedElems for DoubleNodes() +{ + bool isOut( const SMDS_MeshNode* n, const gp_XYZ& norm, const SMDS_MeshElement* elem ); + + //-------------------------------------------------------------------------------- + // Nodes shared by adjacent FissureBorder's. + // 1 node if FissureBorder separates faces + // 2 nodes if FissureBorder separates volumes + struct SubBorder + { + const SMDS_MeshNode* _nodes[2]; + int _nbNodes; + + SubBorder( const SMDS_MeshNode* n1, const SMDS_MeshNode* n2 = 0 ) + { + _nodes[0] = n1; + _nodes[1] = n2; + _nbNodes = bool( n1 ) + bool( n2 ); + if ( _nbNodes == 2 && n1 > n2 ) + std::swap( _nodes[0], _nodes[1] ); + } + bool operator<( const SubBorder& other ) const + { + for ( int i = 0; i < _nbNodes; ++i ) + { + if ( _nodes[i] < other._nodes[i] ) return true; + if ( _nodes[i] > other._nodes[i] ) return false; + } + return false; + } + }; + + //-------------------------------------------------------------------------------- + // Map a SubBorder to all FissureBorder it bounds + struct FissureBorder; + typedef std::map< SubBorder, std::vector< FissureBorder* > > TBorderLinks; + typedef TBorderLinks::iterator TMappedSub; + + //-------------------------------------------------------------------------------- + /*! + * \brief Element border (volume facet or face edge) at a fissure + */ + struct FissureBorder + { + std::vector< const SMDS_MeshNode* > _nodes; // border nodes + const SMDS_MeshElement* _elems[2]; // volume or face adjacent to fissure + + std::vector< TMappedSub > _mappedSubs; // Sub() in TBorderLinks map + std::vector< const SMDS_MeshNode* > _sortedNodes; // to compare FissureBorder's + + FissureBorder( FissureBorder && from ) // move constructor + { + std::swap( _nodes, from._nodes ); + std::swap( _sortedNodes, from._sortedNodes ); + _elems[0] = from._elems[0]; + _elems[1] = from._elems[1]; + } + + FissureBorder( const SMDS_MeshElement* elemToDuplicate, + std::vector< const SMDS_MeshElement* > & adjElems) + : _nodes( elemToDuplicate->NbCornerNodes() ) + { + for ( size_t i = 0; i < _nodes.size(); ++i ) + _nodes[i] = elemToDuplicate->GetNode( i ); + + SMDSAbs_ElementType type = SMDSAbs_ElementType( elemToDuplicate->GetType() + 1 ); + findAdjacent( type, adjElems ); + } + + FissureBorder( const SMDS_MeshNode** nodes, + const size_t nbNodes, + const SMDSAbs_ElementType adjElemsType, + std::vector< const SMDS_MeshElement* > & adjElems) + : _nodes( nodes, nodes + nbNodes ) + { + findAdjacent( adjElemsType, adjElems ); + } + + void findAdjacent( const SMDSAbs_ElementType adjElemsType, + std::vector< const SMDS_MeshElement* > & adjElems) + { + _elems[0] = _elems[1] = 0; + adjElems.clear(); + if ( SMDS_Mesh::GetElementsByNodes( _nodes, adjElems, adjElemsType )) + for ( size_t i = 0; i < adjElems.size() && i < 2; ++i ) + _elems[i] = adjElems[i]; + } + + bool operator<( const FissureBorder& other ) const + { + return GetSortedNodes() < other.GetSortedNodes(); + } + + const std::vector< const SMDS_MeshNode* >& GetSortedNodes() const + { + if ( _sortedNodes.empty() && !_nodes.empty() ) + { + FissureBorder* me = const_cast( this ); + me->_sortedNodes = me->_nodes; + std::sort( me->_sortedNodes.begin(), me->_sortedNodes.end() ); + } + return _sortedNodes; + } + + size_t NbSub() const + { + return _nodes.size(); + } + + SubBorder Sub(size_t i) const + { + return SubBorder( _nodes[i], NbSub() > 2 ? _nodes[ (i+1)%NbSub() ] : 0 ); + } + + void AddSelfTo( TBorderLinks& borderLinks ) + { + _mappedSubs.resize( NbSub() ); + for ( size_t i = 0; i < NbSub(); ++i ) + { + TBorderLinks::iterator s2b = + borderLinks.insert( std::make_pair( Sub(i), TBorderLinks::mapped_type() )).first; + s2b->second.push_back( this ); + _mappedSubs[ i ] = s2b; + } + } + + void Clear() + { + _nodes.clear(); + } + + const SMDS_MeshElement* GetMarkedElem() const + { + if ( _nodes.empty() ) return 0; // cleared + if ( _elems[0] && _elems[0]->isMarked() ) return _elems[0]; + if ( _elems[1] && _elems[1]->isMarked() ) return _elems[1]; + return 0; + } + + gp_XYZ GetNorm() const // normal to the border + { + gp_XYZ norm; + if ( _nodes.size() == 2 ) + { + gp_XYZ avgNorm( 0,0,0 ); // sum of normals of adjacent faces + if ( SMESH_MeshAlgos::FaceNormal( _elems[0], norm )) + avgNorm += norm; + if ( SMESH_MeshAlgos::FaceNormal( _elems[1], norm )) + avgNorm += norm; + + gp_XYZ bordDir( SMESH_NodeXYZ( _nodes[0] ) - SMESH_NodeXYZ( _nodes[1] )); + norm = bordDir ^ avgNorm; + } + else + { + SMESH_NodeXYZ p0( _nodes[0] ); + SMESH_NodeXYZ p1( _nodes[1] ); + SMESH_NodeXYZ p2( _nodes[2] ); + norm = ( p0 - p1 ) ^ ( p2 - p1 ); + } + if ( isOut( _nodes[0], norm, GetMarkedElem() )) + norm.Reverse(); + + return norm; + } + + void ChooseSide() // mark an _elem located at positive side of fissure + { + _elems[0]->setIsMarked( true ); + gp_XYZ norm = GetNorm(); + double maxX = norm.Coord(1); + if ( Abs( maxX ) < Abs( norm.Coord(2)) ) maxX = norm.Coord(2); + if ( Abs( maxX ) < Abs( norm.Coord(3)) ) maxX = norm.Coord(3); + if ( maxX < 0 ) + { + _elems[0]->setIsMarked( false ); + _elems[1]->setIsMarked( true ); + } + } + + }; // struct FissureBorder + + //-------------------------------------------------------------------------------- + /*! + * \brief Classifier of elements at fissure edge + */ + class FissureNormal + { + std::vector< gp_XYZ > _normals; + bool _bothIn; + + public: + void Add( const SMDS_MeshNode* n, const FissureBorder& bord ) + { + _bothIn = false; + _normals.reserve(2); + _normals.push_back( bord.GetNorm() ); + if ( _normals.size() == 2 ) + _bothIn = !isOut( n, _normals[0], bord.GetMarkedElem() ); + } + + bool IsIn( const SMDS_MeshNode* n, const SMDS_MeshElement* elem ) const + { + bool isIn = false; + switch ( _normals.size() ) { + case 1: + { + isIn = !isOut( n, _normals[0], elem ); + break; + } + case 2: + { + bool in1 = !isOut( n, _normals[0], elem ); + bool in2 = !isOut( n, _normals[1], elem ); + isIn = _bothIn ? ( in1 && in2 ) : ( in1 || in2 ); + } + } + return isIn; + } + }; + + //================================================================================ + /*! + * \brief Classify an element by a plane passing through a node + */ + //================================================================================ + + bool isOut( const SMDS_MeshNode* n, const gp_XYZ& norm, const SMDS_MeshElement* elem ) + { + SMESH_NodeXYZ p = n; + double sumDot = 0; + for ( int i = 0, nb = elem->NbCornerNodes(); i < nb; ++i ) + { + SMESH_NodeXYZ pi = elem->GetNode( i ); + sumDot += norm * ( pi - p ); + } + return sumDot < -1e-100; + } + + //================================================================================ + /*! + * \brief Find FissureBorder's by nodes to duplicate + */ + //================================================================================ + + void findFissureBorders( const TIDSortedElemSet& theNodes, + std::vector< FissureBorder > & theFissureBorders ) + { + TIDSortedElemSet::const_iterator nIt = theNodes.begin(); + const SMDS_MeshNode* n = dynamic_cast< const SMDS_MeshNode*>( *nIt ); + if ( !n ) return; + SMDSAbs_ElementType elemType = SMDSAbs_Volume; + if ( n->NbInverseElements( elemType ) == 0 ) + { + elemType = SMDSAbs_Face; + if ( n->NbInverseElements( elemType ) == 0 ) + return; + } + // unmark elements touching the fissure + for ( ; nIt != theNodes.end(); ++nIt ) + SMESH_MeshAlgos::MarkElems( cast2Node(*nIt)->GetInverseElementIterator(), false ); + + // loop on elements touching the fissure to get their borders belonging to the fissure + std::set< FissureBorder > fissureBorders; + std::vector< const SMDS_MeshElement* > adjElems; + std::vector< const SMDS_MeshNode* > nodes; + SMDS_VolumeTool volTool; + for ( nIt = theNodes.begin(); nIt != theNodes.end(); ++nIt ) + { + SMDS_ElemIteratorPtr invIt = cast2Node(*nIt)->GetInverseElementIterator( elemType ); + while ( invIt->more() ) + { + const SMDS_MeshElement* eInv = invIt->next(); + if ( eInv->isMarked() ) continue; + eInv->setIsMarked( true ); + + if ( elemType == SMDSAbs_Volume ) + { + volTool.Set( eInv ); + int iQuad = eInv->IsQuadratic() ? 2 : 1; + for ( int iF = 0, nbF = volTool.NbFaces(); iF < nbF; ++iF ) + { + const SMDS_MeshNode** nn = volTool.GetFaceNodes( iF ); + int nbN = volTool.NbFaceNodes( iF ) / iQuad; + nodes.clear(); + bool allOnFissure = true; + for ( int iN = 0; iN < nbN && allOnFissure; iN += iQuad ) + if (( allOnFissure = theNodes.count( nn[ iN ]))) + nodes.push_back( nn[ iN ]); + if ( allOnFissure ) + fissureBorders.insert( std::move( FissureBorder( &nodes[0], nodes.size(), + elemType, adjElems ))); + } + } + else // elemType == SMDSAbs_Face + { + const SMDS_MeshNode* nn[2] = { eInv->GetNode( eInv->NbCornerNodes()-1 ), 0 }; + bool onFissure0 = theNodes.count( nn[0] ), onFissure1; + for ( int iN = 0, nbN = eInv->NbCornerNodes(); iN < nbN; ++iN ) + { + nn[1] = eInv->GetNode( iN ); + onFissure1 = theNodes.count( nn[1] ); + if ( onFissure0 && onFissure1 ) + fissureBorders.insert( std::move( FissureBorder( nn, 2, elemType, adjElems ))); + nn[0] = nn[1]; + onFissure0 = onFissure1; + } + } + } + } + + theFissureBorders.reserve( theFissureBorders.size() + fissureBorders.size()); + std::set< FissureBorder >::iterator bord = fissureBorders.begin(); + for ( ; bord != fissureBorders.end(); ++bord ) + { + theFissureBorders.push_back( std::move( const_cast( *bord ) )); + } + return; + } // findFissureBorders() + + //================================================================================ + /*! + * \brief Find elements on one side of a fissure defined by elements or nodes to duplicate + * \param [in] theElemsOrNodes - elements or nodes to duplicate + * \param [in] theNodesNot - nodes not to duplicate + * \param [out] theAffectedElems - the found elements + */ + //================================================================================ + + void findAffectedElems( const TIDSortedElemSet& theElemsOrNodes, + TIDSortedElemSet& theAffectedElems) + { + if ( theElemsOrNodes.empty() ) return; + + // find FissureBorder's + + std::vector< FissureBorder > fissure; + std::vector< const SMDS_MeshElement* > elemsByFacet; + + TIDSortedElemSet::const_iterator elIt = theElemsOrNodes.begin(); + if ( (*elIt)->GetType() == SMDSAbs_Node ) + { + findFissureBorders( theElemsOrNodes, fissure ); + } + else + { + fissure.reserve( theElemsOrNodes.size() ); + for ( ; elIt != theElemsOrNodes.end(); ++elIt ) + fissure.push_back( std::move( FissureBorder( *elIt, elemsByFacet ))); + } + if ( fissure.empty() ) + return; + + // fill borderLinks + + TBorderLinks borderLinks; + + for ( size_t i = 0; i < fissure.size(); ++i ) + { + fissure[i].AddSelfTo( borderLinks ); + } + + // get theAffectedElems + + // unmark elements having nodes on the fissure, theAffectedElems elements will be marked + for ( size_t i = 0; i < fissure.size(); ++i ) + for ( size_t j = 0; j < fissure[i]._nodes.size(); ++j ) + { + SMESH_MeshAlgos::MarkElemNodes( fissure[i]._nodes[j]->GetInverseElementIterator(), + false, /*markElem=*/true ); + } + + std::vector facetNodes; + std::map< const SMDS_MeshNode*, FissureNormal > fissEdgeNodes2Norm; + boost::container::flat_set< const SMDS_MeshNode* > fissureNodes; + + // choose a side of fissure + fissure[0].ChooseSide(); + theAffectedElems.insert( fissure[0].GetMarkedElem() ); + + size_t nbCheckedBorders = 0; + while ( nbCheckedBorders < fissure.size() ) + { + // find a FissureBorder to treat + FissureBorder* bord = 0; + for ( size_t i = 0; i < fissure.size() && !bord; ++i ) + if ( fissure[i].GetMarkedElem() ) + bord = & fissure[i]; + for ( size_t i = 0; i < fissure.size() && !bord; ++i ) + if ( fissure[i].NbSub() > 0 && fissure[i]._elems[0] ) + { + bord = & fissure[i]; + bord->ChooseSide(); + theAffectedElems.insert( bord->GetMarkedElem() ); + } + if ( !bord ) return; + ++nbCheckedBorders; + + // treat FissureBorder's linked to bord + fissureNodes.clear(); + fissureNodes.insert( bord->_nodes.begin(), bord->_nodes.end() ); + for ( size_t i = 0; i < bord->NbSub(); ++i ) + { + TBorderLinks::iterator l2b = bord->_mappedSubs[ i ]; + if ( l2b == borderLinks.end() || l2b->second.empty() ) continue; + std::vector< FissureBorder* >& linkedBorders = l2b->second; + const SubBorder& sb = l2b->first; + const SMDS_MeshElement* bordElem = bord->GetMarkedElem(); + + if ( linkedBorders.size() == 1 ) // fissure edge reached, fill fissEdgeNodes2Norm + { + for ( int j = 0; j < sb._nbNodes; ++j ) + fissEdgeNodes2Norm[ sb._nodes[j] ].Add( sb._nodes[j], *bord ); + continue; + } + + // add to theAffectedElems elems sharing nodes of a SubBorder and a node of bordElem + // until an elem adjacent to a neighbour FissureBorder is found + facetNodes.clear(); + facetNodes.insert( facetNodes.end(), sb._nodes, sb._nodes + sb._nbNodes ); + facetNodes.resize( sb._nbNodes + 1 ); + + while ( bordElem ) + { + // check if bordElem is adjacent to a neighbour FissureBorder + for ( size_t j = 0; j < linkedBorders.size(); ++j ) + { + FissureBorder* bord2 = linkedBorders[j]; + if ( bord2 == bord ) continue; + if ( bordElem == bord2->_elems[0] || bordElem == bord2->_elems[1] ) + bordElem = 0; + else + fissureNodes.insert( bord2->_nodes.begin(), bord2->_nodes.end() ); + } + if ( !bordElem ) + break; + + // find the next bordElem + const SMDS_MeshElement* nextBordElem = 0; + for ( int iN = 0, nbN = bordElem->NbCornerNodes(); iN < nbN && !nextBordElem; ++iN ) + { + const SMDS_MeshNode* n = bordElem->GetNode( iN ); + if ( fissureNodes.count( n )) continue; + + facetNodes[ sb._nbNodes ] = n; + elemsByFacet.clear(); + if ( SMDS_Mesh::GetElementsByNodes( facetNodes, elemsByFacet ) > 1 ) + { + for ( size_t iE = 0; iE < elemsByFacet.size(); ++iE ) + if ( elemsByFacet[ iE ] != bordElem && + !elemsByFacet[ iE ]->isMarked() ) + { + theAffectedElems.insert( elemsByFacet[ iE ]); + elemsByFacet[ iE ]->setIsMarked( true ); + if ( elemsByFacet[ iE ]->GetType() == bordElem->GetType() ) + nextBordElem = elemsByFacet[ iE ]; + } + } + } + bordElem = nextBordElem; + + } // while ( bordElem ) + + linkedBorders.clear(); // not to treat this link any more + + } // loop on SubBorder's of a FissureBorder + + bord->Clear(); + + } // loop on FissureBorder's + + + // add elements sharing only one node of the fissure, except those sharing fissure edge nodes + + // mark nodes of theAffectedElems + SMESH_MeshAlgos::MarkElemNodes( theAffectedElems.begin(), theAffectedElems.end(), true ); + + // unmark nodes of the fissure + elIt = theElemsOrNodes.begin(); + if ( (*elIt)->GetType() == SMDSAbs_Node ) + SMESH_MeshAlgos::MarkElems( elIt, theElemsOrNodes.end(), false ); + else + SMESH_MeshAlgos::MarkElemNodes( elIt, theElemsOrNodes.end(), false ); + + std::vector< gp_XYZ > normVec; + + // loop on nodes of the fissure, add elements having marked nodes + for ( elIt = theElemsOrNodes.begin(); elIt != theElemsOrNodes.end(); ++elIt ) + { + const SMDS_MeshElement* e = (*elIt); + if ( e->GetType() != SMDSAbs_Node ) + e->setIsMarked( true ); // avoid adding a fissure element + + for ( int iN = 0, nbN = e->NbCornerNodes(); iN < nbN; ++iN ) + { + const SMDS_MeshNode* n = e->GetNode( iN ); + if ( fissEdgeNodes2Norm.count( n )) + continue; + + SMDS_ElemIteratorPtr invIt = n->GetInverseElementIterator(); + while ( invIt->more() ) + { + const SMDS_MeshElement* eInv = invIt->next(); + if ( eInv->isMarked() ) continue; + eInv->setIsMarked( true ); + + SMDS_ElemIteratorPtr nIt = eInv->nodesIterator(); + while( nIt->more() ) + if ( nIt->next()->isMarked()) + { + theAffectedElems.insert( eInv ); + SMESH_MeshAlgos::MarkElems( eInv->nodesIterator(), true ); + n->setIsMarked( false ); + break; + } + } + } + } + + // add elements on the fissure edge + std::map< const SMDS_MeshNode*, FissureNormal >::iterator n2N; + for ( n2N = fissEdgeNodes2Norm.begin(); n2N != fissEdgeNodes2Norm.end(); ++n2N ) + { + const SMDS_MeshNode* edgeNode = n2N->first; + const FissureNormal & normals = n2N->second; + + SMDS_ElemIteratorPtr invIt = edgeNode->GetInverseElementIterator(); + while ( invIt->more() ) + { + const SMDS_MeshElement* eInv = invIt->next(); + if ( eInv->isMarked() ) continue; + eInv->setIsMarked( true ); + + // classify eInv using normals + bool toAdd = normals.IsIn( edgeNode, eInv ); + if ( toAdd ) // check if all nodes lie on the fissure edge + { + bool notOnEdge = false; + for ( int iN = 0, nbN = eInv->NbCornerNodes(); iN < nbN && !notOnEdge; ++iN ) + notOnEdge = !fissEdgeNodes2Norm.count( eInv->GetNode( iN )); + toAdd = notOnEdge; + } + if ( toAdd ) + { + theAffectedElems.insert( eInv ); + } + } + } + + return; + } // findAffectedElems() +} // namespace + //================================================================================ /*! * \brief Create elements equal (on same nodes) to given ones @@ -10613,7 +11163,6 @@ void SMESH_MeshEditor::DoubleElements( const TIDSortedElemSet& theElements ) SMDSAbs_ElementType type = SMDSAbs_All; SMDS_ElemIteratorPtr elemIt; - vector< const SMDS_MeshElement* > allElems; if ( theElements.empty() ) { if ( mesh->NbNodes() == 0 ) @@ -10629,12 +11178,7 @@ void SMESH_MeshEditor::DoubleElements( const TIDSortedElemSet& theElements ) type = types[i]; break; } - // put all elements in the vector - allElems.reserve( mesh->GetMeshInfo().NbElements( type )); elemIt = mesh->elementsIterator( type ); - while ( elemIt->more() ) - allElems.push_back( elemIt->next()); - elemIt = elemSetIterator( allElems ); } else { @@ -10676,8 +11220,7 @@ bool SMESH_MeshEditor::DoubleNodes( const TIDSortedElemSet& theElems, const TIDSortedElemSet& theNodesNot, const TIDSortedElemSet& theAffectedElems ) { - myLastCreatedElems.Clear(); - myLastCreatedNodes.Clear(); + ClearLastCreated(); if ( theElems.size() == 0 ) return false; @@ -10722,8 +11265,8 @@ bool SMESH_MeshEditor::doubleNodes(SMESHDS_Mesh* theMeshDS, for ( ; elemItr != theElems.end(); ++elemItr ) { const SMDS_MeshElement* anElem = *elemItr; - if (!anElem) - continue; + // if (!anElem) + // continue; // duplicate nodes to duplicate element bool isDuplicate = false; @@ -10777,8 +11320,7 @@ bool SMESH_MeshEditor::doubleNodes(SMESHDS_Mesh* theMeshDS, bool SMESH_MeshEditor::DoubleNodes( const std::list< int >& theListOfNodes, const std::list< int >& theListOfModifiedElems ) { - myLastCreatedElems.Clear(); - myLastCreatedNodes.Clear(); + ClearLastCreated(); if ( theListOfNodes.size() == 0 ) return false; @@ -10794,8 +11336,7 @@ bool SMESH_MeshEditor::DoubleNodes( const std::list< int >& theListOfNodes, std::list< int >::const_iterator aNodeIter; for ( aNodeIter = theListOfNodes.begin(); aNodeIter != theListOfNodes.end(); ++aNodeIter ) { - int aCurr = *aNodeIter; - SMDS_MeshNode* aNode = (SMDS_MeshNode*)aMeshDS->FindNode( aCurr ); + const SMDS_MeshNode* aNode = aMeshDS->FindNode( *aNodeIter ); if ( !aNode ) continue; @@ -10810,49 +11351,28 @@ bool SMESH_MeshEditor::DoubleNodes( const std::list< int >& theListOfNodes, } } - // Create map of new nodes for modified elements + // Change nodes of elements - std::map< SMDS_MeshElement*, vector > anElemToNodes; + std::vector aNodeArr; std::list< int >::const_iterator anElemIter; - for ( anElemIter = theListOfModifiedElems.begin(); - anElemIter != theListOfModifiedElems.end(); ++anElemIter ) + for ( anElemIter = theListOfModifiedElems.begin(); + anElemIter != theListOfModifiedElems.end(); + anElemIter++ ) { - int aCurr = *anElemIter; - SMDS_MeshElement* anElem = (SMDS_MeshElement*)aMeshDS->FindElement( aCurr ); + const SMDS_MeshElement* anElem = aMeshDS->FindElement( *anElemIter ); if ( !anElem ) continue; - vector aNodeArr( anElem->NbNodes() ); - - SMDS_ElemIteratorPtr anIter = anElem->nodesIterator(); - int ind = 0; - while ( anIter->more() ) + aNodeArr.assign( anElem->begin_nodes(), anElem->end_nodes() ); + for( size_t i = 0; i < aNodeArr.size(); ++i ) { - SMDS_MeshNode* aCurrNode = (SMDS_MeshNode*)anIter->next(); - if ( aCurr && anOldNodeToNewNode.find( aCurrNode ) != anOldNodeToNewNode.end() ) - { - const SMDS_MeshNode* aNewNode = anOldNodeToNewNode[ aCurrNode ]; - aNodeArr[ ind++ ] = aNewNode; - } - else - aNodeArr[ ind++ ] = aCurrNode; - } - anElemToNodes[ anElem ] = aNodeArr; - } - - // Change nodes of elements - - std::map< SMDS_MeshElement*, vector >::iterator - anElemToNodesIter = anElemToNodes.begin(); - for ( ; anElemToNodesIter != anElemToNodes.end(); ++anElemToNodesIter ) - { - const SMDS_MeshElement* anElem = anElemToNodesIter->first; - vector aNodeArr = anElemToNodesIter->second; - if ( anElem ) - { - aMeshDS->ChangeElementNodes( anElem, &aNodeArr[ 0 ], anElem->NbNodes() ); + std::map< const SMDS_MeshNode*, const SMDS_MeshNode* >::iterator n2n = + anOldNodeToNewNode.find( aNodeArr[ i ]); + if ( n2n != anOldNodeToNewNode.end() ) + aNodeArr[ i ] = n2n->second; } + aMeshDS->ChangeElementNodes( anElem, &aNodeArr[ 0 ], aNodeArr.size() ); } return true; @@ -10874,8 +11394,8 @@ namespace { { gp_XYZ centerXYZ (0, 0, 0); SMDS_ElemIteratorPtr aNodeItr = theElem->nodesIterator(); - while (aNodeItr->more()) - centerXYZ += SMESH_TNodeXYZ(cast2Node( aNodeItr->next())); + while ( aNodeItr->more() ) + centerXYZ += SMESH_NodeXYZ( aNodeItr->next() ); gp_Pnt aPnt = centerXYZ / theElem->NbNodes(); theClassifier.Perform(aPnt, theTol); @@ -10930,9 +11450,9 @@ namespace { (select elements with a gravity center on the side given by faces normals). This mode (null shape) is faster, but works only when theElems are faces, with coherents orientations. The replicated nodes should be associated to affected elements. - \return groups of affected elements + \return true \sa DoubleNodeElemGroupsInRegion() - */ +*/ //================================================================================ bool SMESH_MeshEditor::AffectedElemGroupsInRegion( const TIDSortedElemSet& theElems, @@ -10942,94 +11462,7 @@ bool SMESH_MeshEditor::AffectedElemGroupsInRegion( const TIDSortedElemSet& theEl { if ( theShape.IsNull() ) { - std::set alreadyCheckedNodes; - std::set alreadyCheckedElems; - std::set edgesToCheck; - alreadyCheckedNodes.clear(); - alreadyCheckedElems.clear(); - edgesToCheck.clear(); - - // --- iterates on elements to be replicated and get elements by back references from their nodes - - TIDSortedElemSet::const_iterator elemItr = theElems.begin(); - for ( ; elemItr != theElems.end(); ++elemItr ) - { - SMDS_MeshElement* anElem = (SMDS_MeshElement*)*elemItr; - if (!anElem || (anElem->GetType() != SMDSAbs_Face)) - continue; - gp_XYZ normal; - SMESH_MeshAlgos::FaceNormal( anElem, normal, /*normalized=*/true ); - std::set nodesElem; - nodesElem.clear(); - SMDS_ElemIteratorPtr nodeItr = anElem->nodesIterator(); - while ( nodeItr->more() ) - { - const SMDS_MeshNode* aNode = cast2Node(nodeItr->next()); - nodesElem.insert(aNode); - } - std::set::iterator nodit = nodesElem.begin(); - for (; nodit != nodesElem.end(); nodit++) - { - const SMDS_MeshNode* aNode = *nodit; - if ( !aNode || theNodesNot.find(aNode) != theNodesNot.end() ) - continue; - if (alreadyCheckedNodes.find(aNode) != alreadyCheckedNodes.end()) - continue; - alreadyCheckedNodes.insert(aNode); - SMDS_ElemIteratorPtr backElemItr = aNode->GetInverseElementIterator(); - while ( backElemItr->more() ) - { - const SMDS_MeshElement* curElem = backElemItr->next(); - if (alreadyCheckedElems.find(curElem) != alreadyCheckedElems.end()) - continue; - if (theElems.find(curElem) != theElems.end()) - continue; - alreadyCheckedElems.insert(curElem); - double x=0, y=0, z=0; - int nb = 0; - SMDS_ElemIteratorPtr nodeItr2 = curElem->nodesIterator(); - while ( nodeItr2->more() ) - { - const SMDS_MeshNode* anotherNode = cast2Node(nodeItr2->next()); - x += anotherNode->X(); - y += anotherNode->Y(); - z += anotherNode->Z(); - nb++; - } - gp_XYZ p; - p.SetCoord( x/nb -aNode->X(), - y/nb -aNode->Y(), - z/nb -aNode->Z() ); - if (normal*p > 0) - { - theAffectedElems.insert( curElem ); - } - else if (curElem->GetType() == SMDSAbs_Edge) - edgesToCheck.insert(curElem); - } - } - } - // --- add also edges lying on the set of faces (all nodes in alreadyCheckedNodes) - std::set::iterator eit = edgesToCheck.begin(); - for( ; eit != edgesToCheck.end(); eit++) - { - bool onside = true; - const SMDS_MeshElement* anEdge = *eit; - SMDS_ElemIteratorPtr nodeItr = anEdge->nodesIterator(); - while ( nodeItr->more() ) - { - const SMDS_MeshNode* aNode = cast2Node(nodeItr->next()); - if (alreadyCheckedNodes.find(aNode) == alreadyCheckedNodes.end()) - { - onside = false; - break; - } - } - if (onside) - { - theAffectedElems.insert(anEdge); - } - } + findAffectedElems( theElems, theAffectedElems ); } else { @@ -11050,9 +11483,7 @@ bool SMESH_MeshEditor::AffectedElemGroupsInRegion( const TIDSortedElemSet& theEl TIDSortedElemSet::const_iterator elemItr = theElems.begin(); for ( ; elemItr != theElems.end(); ++elemItr ) { - SMDS_MeshElement* anElem = (SMDS_MeshElement*)*elemItr; - if (!anElem) - continue; + SMDS_MeshElement* anElem = (SMDS_MeshElement*)*elemItr; SMDS_ElemIteratorPtr nodeItr = anElem->nodesIterator(); while ( nodeItr->more() ) { @@ -11064,9 +11495,9 @@ bool SMESH_MeshEditor::AffectedElemGroupsInRegion( const TIDSortedElemSet& theEl { const SMDS_MeshElement* curElem = backElemItr->next(); if ( curElem && theElems.find(curElem) == theElems.end() && - ( bsc3d.get() ? - isInside( curElem, *bsc3d, aTol ) : - isInside( curElem, *aFaceClassifier, aTol ))) + ( bsc3d.get() ? + isInside( curElem, *bsc3d, aTol ) : + isInside( curElem, *aFaceClassifier, aTol ))) theAffectedElems.insert( curElem ); } } diff --git a/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx b/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx index 297a85d47..e9e235766 100644 --- a/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx @@ -165,21 +165,23 @@ SMESHGUI_DuplicateNodesDlg::SMESHGUI_DuplicateNodesDlg( SMESHGUI* theModule ) mySelectButton3->setIcon(iconSelect); myLineEdit3 = new QLineEdit(myGroupArguments); myLineEdit3->setReadOnly(true); + myGenerateButton3 = new QPushButton(tr("GENERATE_GROUPS"), myGroupArguments); myCheckBox1 = new QCheckBox(tr("CONSTRUCT_NEW_GROUP_ELEMENTS"), myGroupArguments); myCheckBox2 = new QCheckBox(tr("CONSTRUCT_NEW_GROUP_NODES"), myGroupArguments); - aGroupArgumentsLayout->addWidget(myTextLabel1, 0, 0); - aGroupArgumentsLayout->addWidget(mySelectButton1, 0, 1); - aGroupArgumentsLayout->addWidget(myLineEdit1, 0, 2); - aGroupArgumentsLayout->addWidget(myTextLabel2, 1, 0); - aGroupArgumentsLayout->addWidget(mySelectButton2, 1, 1); - aGroupArgumentsLayout->addWidget(myLineEdit2, 1, 2); - aGroupArgumentsLayout->addWidget(myTextLabel3, 2, 0); - aGroupArgumentsLayout->addWidget(mySelectButton3, 2, 1); - aGroupArgumentsLayout->addWidget(myLineEdit3, 2, 2); - aGroupArgumentsLayout->addWidget(myCheckBox1, 3, 0); - aGroupArgumentsLayout->addWidget(myCheckBox2, 4, 0); + aGroupArgumentsLayout->addWidget(myTextLabel1, 0, 0); + aGroupArgumentsLayout->addWidget(mySelectButton1, 0, 1); + aGroupArgumentsLayout->addWidget(myLineEdit1, 0, 2, 1, 2); + aGroupArgumentsLayout->addWidget(myTextLabel2, 1, 0); + aGroupArgumentsLayout->addWidget(mySelectButton2, 1, 1); + aGroupArgumentsLayout->addWidget(myLineEdit2, 1, 2, 1, 2); + aGroupArgumentsLayout->addWidget(myTextLabel3, 2, 0); + aGroupArgumentsLayout->addWidget(mySelectButton3, 2, 1); + aGroupArgumentsLayout->addWidget(myLineEdit3, 2, 2); + aGroupArgumentsLayout->addWidget(myGenerateButton3,2, 3); + aGroupArgumentsLayout->addWidget(myCheckBox1, 3, 0); + aGroupArgumentsLayout->addWidget(myCheckBox2, 4, 0); aGroupArgumentsLayout->setRowStretch(5, 1); // Buttons @@ -226,6 +228,7 @@ SMESHGUI_DuplicateNodesDlg::SMESHGUI_DuplicateNodesDlg( SMESHGUI* theModule ) connect(mySelectButton1, SIGNAL (clicked()), this, SLOT(onEditCurrentArgument())); connect(mySelectButton2, SIGNAL (clicked()), this, SLOT(onEditCurrentArgument())); connect(mySelectButton3, SIGNAL (clicked()), this, SLOT(onEditCurrentArgument())); + connect(myGenerateButton3, SIGNAL (clicked()), this, SLOT(onGenerate())); connect(myCheckBox2, SIGNAL(stateChanged(int)), SLOT(updateButtons())); @@ -302,20 +305,21 @@ void SMESHGUI_DuplicateNodesDlg::onConstructorsClicked (int constructorId) // Set text to the group of arguments and to the first two labels myGroupArguments->setTitle(tr("DUPLICATION_WITHOUT_ELEMS")); myTextLabel1->setText(tr("GROUP_NODES_TO_DUPLICATE")); - myTextLabel2->setText(tr("GROUP_NODES_TO_REPLACE")); + myTextLabel3->setText(tr("GROUP_NODES_TO_REPLACE")); myCheckBox1->hide(); myCheckBox2->show(); myCheckBox2->setText( tr("CONSTRUCT_NEW_GROUP_NODES")); - // Hide the third field - myTextLabel2->show(); - mySelectButton2->show(); - myLineEdit2->show(); - myTextLabel3->hide(); - mySelectButton3->hide(); - myLineEdit3->hide(); - + // Hide the 2nd field + myTextLabel2 ->hide(); + mySelectButton2 ->hide(); + myLineEdit2 ->hide(); + myTextLabel3 ->show(); + mySelectButton3 ->show(); + myLineEdit3 ->show(); + myGenerateButton3->show(); + break; } case 1: @@ -331,13 +335,14 @@ void SMESHGUI_DuplicateNodesDlg::onConstructorsClicked (int constructorId) myCheckBox1->setText( tr("CONSTRUCT_NEW_GROUP_ELEMENTS")); myCheckBox2->setText( tr("CONSTRUCT_NEW_GROUP_NODES")); - // Show the third field - myTextLabel2->show(); - mySelectButton2->show(); - myLineEdit2->show(); - myTextLabel3->show(); - mySelectButton3->show(); - myLineEdit3->show(); + // Show the 2nd field + myTextLabel2 ->show(); + mySelectButton2 ->show(); + myLineEdit2 ->show(); + myTextLabel3 ->show(); + mySelectButton3 ->show(); + myLineEdit3 ->show(); + myGenerateButton3->show(); break; } @@ -352,12 +357,13 @@ void SMESHGUI_DuplicateNodesDlg::onConstructorsClicked (int constructorId) myCheckBox2->hide(); // Hide the second and the third field - myTextLabel2->hide(); - mySelectButton2->hide(); - myLineEdit2->hide(); - myTextLabel3->hide(); - mySelectButton3->hide(); - myLineEdit3->hide(); + myTextLabel2 ->hide(); + mySelectButton2 ->hide(); + myLineEdit2 ->hide(); + myTextLabel3 ->hide(); + mySelectButton3 ->hide(); + myLineEdit3 ->hide(); + myGenerateButton3->hide(); break; } @@ -373,12 +379,13 @@ void SMESHGUI_DuplicateNodesDlg::onConstructorsClicked (int constructorId) myCheckBox2->setText( tr("ON_ALL_BOUNDARIES")); // Hide the second and the third field - myTextLabel2->hide(); - mySelectButton2->hide(); - myLineEdit2->hide(); - myTextLabel3->hide(); - mySelectButton3->hide(); - myLineEdit3->hide(); + myTextLabel2 ->hide(); + mySelectButton2 ->hide(); + myLineEdit2 ->hide(); + myTextLabel3 ->hide(); + mySelectButton3 ->hide(); + myLineEdit3 ->hide(); + myGenerateButton3->hide(); break; } @@ -410,7 +417,7 @@ bool SMESHGUI_DuplicateNodesDlg::onApply() QStringList anEntryList; try { - SMESH::SMESH_Mesh_var aMesh = myGroups1[0]->GetMesh(); + SMESH::SMESH_Mesh_var aMesh = myGroups1[0]->GetMesh(); SMESH::SMESH_MeshEditor_var aMeshEditor = aMesh->GetMeshEditor(); switch ( operationMode ) { @@ -421,9 +428,9 @@ bool SMESHGUI_DuplicateNodesDlg::onApply() for ( int i = 0; i < myGroups1.count(); i++ ) g1[i] = myGroups1[i]; SMESH::ListOfGroups_var g2 = new SMESH::ListOfGroups(); - g2->length( myGroups2.count() ); - for ( int i = 0; i < myGroups2.count(); i++ ) - g2[i] = myGroups2[i]; + g2->length( myGroups3.count() ); + for ( int i = 0; i < myGroups3.count(); i++ ) + g2[i] = myGroups3[i]; if ( toCreateNodeGroup ) { SMESH::SMESH_GroupBase_var aNewGroup = @@ -504,10 +511,10 @@ bool SMESHGUI_DuplicateNodesDlg::onApply() SalomeApp_Tools::QtCatchCorbaException(S_ex); } catch ( const std::exception& exc ) { - INFOS( "Follow exception was cought:\n\t" << exc.what() ); + INFOS( "Follow exception was caught:\n\t" << exc.what() ); } catch (...) { - INFOS( "Unknown exception was cought !!!" ); + INFOS( "Unknown exception was caught !!!" ); } if (!result) { @@ -638,6 +645,9 @@ void SMESHGUI_DuplicateNodesDlg::updateButtons() bool isDataValid = isValid(); myButtonOk->setEnabled( isDataValid ); myButtonApply->setEnabled( isDataValid ); + + int operationMode = myGroupConstructors->checkedId(); + myGenerateButton3->setEnabled( operationMode <= 1 && !myGroups1.empty() ); } /*! @@ -690,6 +700,59 @@ void SMESHGUI_DuplicateNodesDlg::onDeactivate() } } +/*! + \brief SLOT called when Generate button is clicked +*/ +void SMESHGUI_DuplicateNodesDlg::onGenerate() +{ + if ( mySMESHGUI->isActiveStudyLocked() ) + return; + + SUIT_OverrideCursor aWaitCursor; + BusyLocker lock( myBusy ); + + try { + SMESH::SMESH_Mesh_var aMesh = myGroups1[0]->GetMesh(); + SMESH::SMESH_MeshEditor_var aMeshEditor = aMesh->GetMeshEditor(); + + SMESH::ListOfGroups_var g1 = new SMESH::ListOfGroups(); + g1->length( myGroups1.count() ); + for ( int i = 0; i < myGroups1.count(); i++ ) + g1[i] = myGroups1[i]; + SMESH::ListOfGroups_var g2 = new SMESH::ListOfGroups(); + g2->length( myGroups2.count() ); + for ( int i = 0; i < myGroups2.count(); i++ ) + g2[i] = myGroups2[i]; + + SMESH::ListOfGroups_var newGroups = + aMeshEditor->AffectedElemGroupsInRegion( g1, g2, GEOM::GEOM_Object::_nil() ); + + QString text; + switch ( newGroups->length() ) { + case 0: break; + case 1: text = SMESH::toQStr( newGroups[0]->GetName() ); break; + default: text = tr( "SMESH_OBJECTS_SELECTED" ).arg( newGroups->length() ); + } + myLineEdit3->setText( text ); + + myGroups3.clear(); + for ( CORBA::ULong i = 0; i < newGroups->length(); ++i ) + myGroups3 << SMESH::SMESH_GroupBase::_duplicate( newGroups[i] ); + } + catch (const SALOME::SALOME_Exception& S_ex) { + SalomeApp_Tools::QtCatchCorbaException(S_ex); + } + catch ( const std::exception& exc ) { + INFOS( "Follow exception was caught:\n\t" << exc.what() ); + } + catch (...) { + INFOS( "Unknown exception was caught !!!" ); + } + + mySMESHGUI->updateObjBrowser(true); + updateButtons(); +} + /*! \brief Receive dialog enter events. Activates the dialog when the mouse cursor enters. diff --git a/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.h b/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.h index 337638f87..feb0207ac 100644 --- a/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.h +++ b/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.h @@ -80,8 +80,8 @@ private slots: void onEditCurrentArgument(); void onSelectionChanged(); - void onDeactivate(); + void onGenerate(); void updateButtons(); @@ -97,6 +97,7 @@ private: QPushButton* mySelectButton1; QPushButton* mySelectButton2; QPushButton* mySelectButton3; + QPushButton* myGenerateButton3; QLineEdit* myLineEdit1; QLineEdit* myLineEdit2; QLineEdit* myLineEdit3; diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index 31d955416..9ab185bdb 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -7212,6 +7212,10 @@ It is impossible to read point coordinates from file ON_ALL_BOUNDARIES On all boundaries + + GENERATE_GROUPS + Generate + SMESHGUI_Make2DFrom3DDlg diff --git a/src/SMESHUtils/SMESH_MeshAlgos.hxx b/src/SMESHUtils/SMESH_MeshAlgos.hxx index 1114bfe02..0bf9c49b5 100644 --- a/src/SMESHUtils/SMESH_MeshAlgos.hxx +++ b/src/SMESHUtils/SMESH_MeshAlgos.hxx @@ -154,6 +154,54 @@ namespace SMESH_MeshAlgos std::vector< const SMDS_MeshNode*> GetCommonNodes(const SMDS_MeshElement* e1, const SMDS_MeshElement* e2); + /*! + * \brief Mark elements given by SMDS_Iterator + */ + template< class ElemIter > + void MarkElems( ElemIter it, const bool isMarked ) + { + while ( it->more() ) it->next()->setIsMarked( isMarked ); + } + /*! + * \brief Mark elements given by std iterators + */ + template< class ElemIter > + void MarkElems( ElemIter it, ElemIter end, const bool isMarked ) + { + for ( ; it != end; ++it ) (*it)->setIsMarked( isMarked ); + } + /*! + * \brief Mark nodes of elements given by SMDS_Iterator + */ + template< class ElemIter > + void MarkElemNodes( ElemIter it, const bool isMarked, const bool markElem = false ) + { + if ( markElem ) + while ( it->more() ) { + const SMDS_MeshElement* e = it->next(); + e->setIsMarked( isMarked ); + MarkElems( e->nodesIterator(), isMarked ); + } + else + while ( it->more() ) + MarkElems( it->next()->nodesIterator(), isMarked ); + } + /*! + * \brief Mark elements given by std iterators + */ + template< class ElemIter > + void MarkElemNodes( ElemIter it, ElemIter end, const bool isMarked, const bool markElem = false ) + { + if ( markElem ) + for ( ; it != end; ++it ) { + (*it)->setIsMarked( isMarked ); + MarkElems( (*it)->nodesIterator(), isMarked ); + } + else + for ( ; it != end; ++it ) + MarkElems( (*it)->nodesIterator(), isMarked ); + } + /*! * \brief Return SMESH_NodeSearcher. The caller is responsible for deleteing it */ diff --git a/src/SMESH_I/SMESH_2smeshpy.cxx b/src/SMESH_I/SMESH_2smeshpy.cxx index 220e3d581..9ae41bf3d 100644 --- a/src/SMESH_I/SMESH_2smeshpy.cxx +++ b/src/SMESH_I/SMESH_2smeshpy.cxx @@ -740,15 +740,16 @@ Handle(_pyCommand) _pyGen::AddCommand( const TCollection_AsciiString& theCommand else if ( method == "MakeBoundaryElements") meshID = aCommand->GetResultValue(2); - if ( method.Search("MakeGroups") != -1 || - method == "ExtrusionAlongPathX" || - method == "ExtrusionAlongPathObjX" || - method == "DoubleNodeGroupNew" || - method == "DoubleNodeGroupsNew" || - method == "DoubleNodeElemGroupNew" || - method == "DoubleNodeElemGroupsNew"|| - method == "DoubleNodeElemGroup2New"|| - method == "DoubleNodeElemGroups2New" + if ( method.Search("MakeGroups") != -1 || + method == "ExtrusionAlongPathX" || + method == "ExtrusionAlongPathObjX" || + method == "DoubleNodeGroupNew" || + method == "DoubleNodeGroupsNew" || + method == "DoubleNodeElemGroupNew" || + method == "DoubleNodeElemGroupsNew" || + method == "DoubleNodeElemGroup2New" || + method == "DoubleNodeElemGroups2New" || + method == "AffectedElemGroupsInRegion" ) groups = aCommand->GetResultValue(); else if ( method == "MakeBoundaryMesh" ) @@ -2436,7 +2437,7 @@ void _pyMeshEditor::Process( const Handle(_pyCommand)& theCommand) "Scale","ScaleMakeMesh","RotateMakeMesh","RotateObjectMakeMesh","MakeBoundaryMesh", "MakeBoundaryElements", "SplitVolumesIntoTetra","SplitHexahedraIntoPrisms", "DoubleElements","DoubleNodes","DoubleNode","DoubleNodeGroup","DoubleNodeGroups", - "DoubleNodeElem","DoubleNodeElemInRegion","DoubleNodeElemGroup", + "DoubleNodeElem","DoubleNodeElemInRegion","DoubleNodeElemGroup","AffectedElemGroupsInRegion", "DoubleNodeElemGroupInRegion","DoubleNodeElemGroups","DoubleNodeElemGroupsInRegion", "DoubleNodesOnGroupBoundaries","CreateFlatElementsOnFacesGroups","CreateHoleSkin" ,"" }; // <- mark of the end diff --git a/src/SMESH_I/SMESH_MeshEditor_i.cxx b/src/SMESH_I/SMESH_MeshEditor_i.cxx index 1c93dc90a..b5a9d4f06 100644 --- a/src/SMESH_I/SMESH_MeshEditor_i.cxx +++ b/src/SMESH_I/SMESH_MeshEditor_i.cxx @@ -5546,10 +5546,7 @@ CORBA::Boolean SMESH_MeshEditor_i::DoubleNodeGroup(SMESH::SMESH_GroupBase_ptr th if ( !CORBA::is_nil( theModifiedElems ) ) aModifiedElems = theModifiedElems->GetListOfID(); else - { aModifiedElems = new SMESH::long_array; - aModifiedElems->length( 0 ); - } TPythonDump pyDump; // suppress dump by the next line @@ -6262,12 +6259,9 @@ SMESH_MeshEditor_i::AffectedElemGroupsInRegion( const SMESH::ListOfGroups& theEl { SMESH_TRY; SMESH::ListOfGroups_var aListOfGroups = new SMESH::ListOfGroups(); - bool isEdgeGroup = false; - bool isFaceGroup = false; - bool isVolumeGroup = false; - SMESH::SMESH_Group_var aNewEdgeGroup = myMesh_i->CreateGroup(SMESH::EDGE, "affectedEdges"); - SMESH::SMESH_Group_var aNewFaceGroup = myMesh_i->CreateGroup(SMESH::FACE, "affectedFaces"); - SMESH::SMESH_Group_var aNewVolumeGroup = myMesh_i->CreateGroup(SMESH::VOLUME, "affectedVolumes"); + SMESH::SMESH_Group_var aNewEdgeGroup = SMESH::SMESH_Group::_nil(); + SMESH::SMESH_Group_var aNewFaceGroup = SMESH::SMESH_Group::_nil(); + SMESH::SMESH_Group_var aNewVolumeGroup = SMESH::SMESH_Group::_nil(); initData(); @@ -6275,75 +6269,75 @@ SMESH_MeshEditor_i::AffectedElemGroupsInRegion( const SMESH::ListOfGroups& theEl SMESHDS_Mesh* aMeshDS = getMeshDS(); TIDSortedElemSet anElems, aNodes; - listOfGroupToSet(theElems, aMeshDS, anElems, false); + bool isNodeGrp = theElems.length() ? theElems[0]->GetType() == SMESH::NODE : false; + listOfGroupToSet(theElems, aMeshDS, anElems, isNodeGrp); listOfGroupToSet(theNodesNot, aMeshDS, aNodes, true); TopoDS_Shape aShape = SMESH_Gen_i::GetSMESHGen()->GeomObjectToShape(theShape); TIDSortedElemSet anAffected; bool aResult = aMeshEditor.AffectedElemGroupsInRegion(anElems, aNodes, aShape, anAffected); - declareMeshModified( /*isReComputeSafe=*/ !aResult ); TPythonDump pyDump; - if (aResult) + if ( aResult && anAffected.size() > 0 ) { - int lg = anAffected.size(); SMESH::long_array_var volumeIds = new SMESH::long_array; - volumeIds->length(lg); - SMESH::long_array_var faceIds = new SMESH::long_array; - faceIds->length(lg); - SMESH::long_array_var edgeIds = new SMESH::long_array; - edgeIds->length(lg); + SMESH::long_array_var faceIds = new SMESH::long_array; + SMESH::long_array_var edgeIds = new SMESH::long_array; + volumeIds->length( anAffected.size() ); + faceIds ->length( anAffected.size() ); + edgeIds ->length( anAffected.size() ); + int ivol = 0; int iface = 0; int iedge = 0; - TIDSortedElemSet::const_iterator eIt = anAffected.begin(); for (; eIt != anAffected.end(); ++eIt) { const SMDS_MeshElement* anElem = *eIt; - if (!anElem) - continue; int elemId = anElem->GetID(); - if (myMesh->GetElementType(elemId, true) == SMDSAbs_Volume) - volumeIds[ivol++] = elemId; - else if (myMesh->GetElementType(elemId, true) == SMDSAbs_Face) - faceIds[iface++] = elemId; - else if (myMesh->GetElementType(elemId, true) == SMDSAbs_Edge) - edgeIds[iedge++] = elemId; + switch ( anElem->GetType() ) { + case SMDSAbs_Volume: volumeIds[ivol++] = elemId; break; + case SMDSAbs_Face: faceIds[iface++] = elemId; break; + case SMDSAbs_Edge: edgeIds[iedge++] = elemId; break; + default:; + } } volumeIds->length(ivol); faceIds->length(iface); edgeIds->length(iedge); - aNewVolumeGroup->Add(volumeIds); - aNewFaceGroup->Add(faceIds); - aNewEdgeGroup->Add(edgeIds); - isVolumeGroup = (aNewVolumeGroup->Size() > 0); - isFaceGroup = (aNewFaceGroup->Size() > 0); - isEdgeGroup = (aNewEdgeGroup->Size() > 0); + int nbGroups = 0; + if ( ivol > 0 ) + { + aNewVolumeGroup = myMesh_i->CreateGroup(SMESH::VOLUME, + generateGroupName("affectedVolumes").c_str()); + aNewVolumeGroup->Add(volumeIds); + aListOfGroups->length( nbGroups+1 ); + aListOfGroups[ nbGroups++ ] = aNewVolumeGroup._retn(); + } + if ( iface > 0 ) + { + aNewFaceGroup = myMesh_i->CreateGroup(SMESH::FACE, + generateGroupName("affectedFaces").c_str()); + aNewFaceGroup->Add(faceIds); + aListOfGroups->length( nbGroups+1 ); + aListOfGroups[ nbGroups++ ] = aNewFaceGroup._retn(); + } + if ( iedge > 0 ) + { + aNewEdgeGroup = myMesh_i->CreateGroup(SMESH::EDGE, + generateGroupName("affectedEdges").c_str()); + aNewEdgeGroup->Add(edgeIds); + aListOfGroups->length( nbGroups+1 ); + aListOfGroups[ nbGroups++ ] = aNewEdgeGroup._retn(); + } } - int nbGroups = 0; - if (isEdgeGroup) nbGroups++; - if (isFaceGroup) nbGroups++; - if (isVolumeGroup) nbGroups++; - aListOfGroups->length(nbGroups); - - int i = 0; - if (isEdgeGroup) aListOfGroups[i++] = aNewEdgeGroup._retn(); - if (isFaceGroup) aListOfGroups[i++] = aNewFaceGroup._retn(); - if (isVolumeGroup) aListOfGroups[i++] = aNewVolumeGroup._retn(); - // Update Python script - pyDump << "[ "; - if (isEdgeGroup) pyDump << aNewEdgeGroup << ", "; - if (isFaceGroup) pyDump << aNewFaceGroup << ", "; - if (isVolumeGroup) pyDump << aNewVolumeGroup << ", "; - pyDump << "] = "; - pyDump << this << ".AffectedElemGroupsInRegion( " + pyDump << aListOfGroups << " = " << this << ".AffectedElemGroupsInRegion( " << &theElems << ", " << &theNodesNot << ", " << theShape << " )"; return aListOfGroups._retn(); @@ -6355,7 +6349,7 @@ SMESH_MeshEditor_i::AffectedElemGroupsInRegion( const SMESH::ListOfGroups& theEl //================================================================================ /*! \brief Generated skin mesh (containing 2D cells) from 3D mesh - The created 2D mesh elements based on nodes of free faces of boundary volumes + The created 2D mesh elements based on nodes of free faces of boundary volumes \return TRUE if operation has been completed successfully, FALSE otherwise */ //================================================================================ diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index f2bbcaccc..bd5cde5a7 100644 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -4904,12 +4904,12 @@ class Mesh: ## Identify the elements that will be affected by node duplication (actual duplication is not performed. # This method is the first step of DoubleNodeElemGroupsInRegion. - # @param theElems - list of groups of elements (edges or faces) to be replicated + # @param theElems - list of groups of nodes or elements (edges or faces) to be replicated # @param theNodesNot - list of groups of nodes not to replicated # @param theShape - shape to detect affected elements (element which geometric center # located on or inside shape). # The replicated nodes should be associated to affected elements. - # @return groups of affected elements + # @return groups of affected elements in order: volumes, faces, edges # @ingroup l2_modif_duplicat def AffectedElemGroupsInRegion(self, theElems, theNodesNot, theShape): return self.editor.AffectedElemGroupsInRegion(theElems, theNodesNot, theShape) From ecc6a84a63742db195c9a43811c69ceaa013fada Mon Sep 17 00:00:00 2001 From: Anthony Geay Date: Thu, 28 Dec 2017 12:04:16 +0100 Subject: [PATCH 2/6] Porting to VTK8.1 --- src/OBJECT/SMESH_ScalarBarActor.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/OBJECT/SMESH_ScalarBarActor.cxx b/src/OBJECT/SMESH_ScalarBarActor.cxx index 8096b1609..e631e856c 100644 --- a/src/OBJECT/SMESH_ScalarBarActor.cxx +++ b/src/OBJECT/SMESH_ScalarBarActor.cxx @@ -557,7 +557,8 @@ int SMESH_ScalarBarActor::RenderOpaqueGeometry(vtkViewport *viewport) } //polygons & cell colors - unsigned char *rgba, *rgb; + unsigned char *rgb; + const unsigned char *rgba; vtkIdType ptIds[4], dcCount=0; for ( i = 0; i < numColors; i++ ) { From 04f997252152407f9180e03f0af428ab2ca6f4be Mon Sep 17 00:00:00 2001 From: eap Date: Thu, 28 Dec 2017 14:28:17 +0300 Subject: [PATCH 3/6] Typo-fix by Kunda http://www.salome-platform.org/forum/forum_9/22126441 --- ChangeLog | 1811 ----------------- doc/salome/examples/creating_meshes_ex03.py | 2 +- doc/salome/examples/filters_ex01.py | 2 +- .../gui/SMESH/input/smesh_migration.doc | 2 +- idl/SMESH_BasicHypothesis.idl | 2 +- idl/SMESH_Gen.idl | 4 +- idl/SMESH_MeshEditor.idl | 6 +- src/Controls/SMESH_Controls.cxx | 4 +- src/Driver/Driver_Mesh.cxx | 2 +- src/Driver/Driver_Mesh.h | 2 +- src/DriverMED/DriverMED.hxx | 2 +- src/DriverMED/DriverMED_W_Field.cxx | 2 +- src/MEDWrapper/Base/MED_Common.hxx | 2 +- src/OBJECT/SMESH_ExtractGeometry.cxx | 2 +- src/OBJECT/SMESH_FaceOrientationFilter.cxx | 2 +- src/SMDS/SMDSAbs_ElementType.hxx | 2 +- src/SMDS/SMDS_BallElement.cxx | 2 +- src/SMDS/SMDS_BallElement.hxx | 2 +- src/SMDS/SMDS_EdgePosition.cxx | 2 +- src/SMDS/SMDS_EdgePosition.hxx | 2 +- src/SMDS/SMDS_ElemIterator.hxx | 2 +- src/SMDS/SMDS_FaceOfEdges.cxx | 2 +- src/SMDS/SMDS_FaceOfNodes.cxx | 2 +- src/SMDS/SMDS_FaceOfNodes.hxx | 2 +- src/SMDS/SMDS_FacePosition.cxx | 2 +- src/SMDS/SMDS_FacePosition.hxx | 2 +- src/SMDS/SMDS_Iterator.hxx | 2 +- src/SMDS/SMDS_IteratorOfElements.cxx | 2 +- src/SMDS/SMDS_IteratorOfElements.hxx | 2 +- src/SMDS/SMDS_IteratorOnIterators.hxx | 4 +- src/SMDS/SMDS_Mesh.hxx | 2 +- src/SMDS/SMDS_Mesh0DElement.cxx | 2 +- src/SMDS/SMDS_Mesh0DElement.hxx | 2 +- src/SMDS/SMDS_MeshEdge.hxx | 2 +- src/SMDS/SMDS_MeshElement.cxx | 2 +- src/SMDS/SMDS_MeshElement.hxx | 2 +- src/SMDS/SMDS_MeshElementIDFactory.cxx | 2 +- src/SMDS/SMDS_MeshElementIDFactory.hxx | 2 +- src/SMDS/SMDS_MeshFace.cxx | 2 +- src/SMDS/SMDS_MeshFace.hxx | 2 +- src/SMDS/SMDS_MeshGroup.cxx | 2 +- src/SMDS/SMDS_MeshGroup.hxx | 2 +- src/SMDS/SMDS_MeshIDFactory.cxx | 2 +- src/SMDS/SMDS_MeshIDFactory.hxx | 2 +- src/SMDS/SMDS_MeshNode.cxx | 2 +- src/SMDS/SMDS_MeshNode.hxx | 2 +- src/SMDS/SMDS_MeshObject.cxx | 2 +- src/SMDS/SMDS_MeshObject.hxx | 2 +- src/SMDS/SMDS_MeshVolume.cxx | 2 +- src/SMDS/SMDS_MeshVolume.hxx | 2 +- src/SMDS/SMDS_PolygonalFaceOfNodes.cxx | 2 +- src/SMDS/SMDS_PolygonalFaceOfNodes.hxx | 2 +- src/SMDS/SMDS_PolyhedralVolumeOfNodes.cxx | 2 +- src/SMDS/SMDS_PolyhedralVolumeOfNodes.hxx | 2 +- src/SMDS/SMDS_Position.cxx | 2 +- src/SMDS/SMDS_Position.hxx | 2 +- src/SMDS/SMDS_QuadraticEdge.cxx | 2 +- src/SMDS/SMDS_QuadraticEdge.hxx | 2 +- src/SMDS/SMDS_QuadraticFaceOfNodes.cxx | 2 +- src/SMDS/SMDS_QuadraticFaceOfNodes.hxx | 2 +- src/SMDS/SMDS_QuadraticVolumeOfNodes.cxx | 2 +- src/SMDS/SMDS_QuadraticVolumeOfNodes.hxx | 2 +- src/SMDS/SMDS_SetIterator.hxx | 2 +- src/SMDS/SMDS_SpacePosition.cxx | 2 +- src/SMDS/SMDS_SpacePosition.hxx | 2 +- src/SMDS/SMDS_StdIterator.hxx | 2 +- src/SMDS/SMDS_TypeOfPosition.hxx | 2 +- src/SMDS/SMDS_VertexPosition.cxx | 2 +- src/SMDS/SMDS_VertexPosition.hxx | 2 +- src/SMDS/SMDS_VolumeOfFaces.cxx | 2 +- src/SMDS/SMDS_VolumeOfFaces.hxx | 2 +- src/SMDS/SMDS_VolumeOfNodes.cxx | 2 +- src/SMDS/SMDS_VolumeOfNodes.hxx | 2 +- src/SMDS/SMDS_VolumeTool.cxx | 4 +- src/SMDS/SMDS_VolumeTool.hxx | 2 +- src/SMDS/SMDS_VtkEdge.hxx | 2 +- src/SMESH/SMESH_Algo.cxx | 2 +- src/SMESH/SMESH_Algo.hxx | 4 +- src/SMESH/SMESH_Gen.cxx | 6 +- src/SMESH/SMESH_Gen.hxx | 2 +- src/SMESH/SMESH_Group.cxx | 2 +- src/SMESH/SMESH_Group.hxx | 2 +- src/SMESH/SMESH_HypoFilter.cxx | 2 +- src/SMESH/SMESH_HypoFilter.hxx | 2 +- src/SMESH/SMESH_Hypothesis.cxx | 2 +- src/SMESH/SMESH_Hypothesis.hxx | 2 +- src/SMESH/SMESH_Mesh.cxx | 4 +- src/SMESH/SMESH_MeshEditor.cxx | 8 +- src/SMESH/SMESH_MeshEditor.hxx | 4 +- src/SMESH/SMESH_MesherHelper.cxx | 4 +- src/SMESH/SMESH_Pattern.cxx | 2 +- src/SMESH/SMESH_subMesh.cxx | 2 +- src/SMESHGUI/SMESHGUI_Filter.cxx | 6 +- src/SMESHGUI/SMESHGUI_Filter.h | 2 +- src/SMESHUtils/SMESH_Block.cxx | 4 +- src/SMESHUtils/SMESH_Block.hxx | 2 +- src/SMESHUtils/SMESH_Comment.hxx | 2 +- src/SMESHUtils/SMESH_File.hxx | 2 +- src/SMESHUtils/SMESH_MeshAlgos.hxx | 2 +- src/SMESHUtils/SMESH_TypeDefs.hxx | 2 +- src/SMESH_I/SMESH_2smeshpy.cxx | 6 +- src/SMESH_I/SMESH_DumpPython.cxx | 2 +- src/SMESH_I/SMESH_Filter_i.cxx | 2 +- src/SMESH_I/SMESH_Filter_i.hxx | 2 +- src/SMESH_I/SMESH_Gen_i.cxx | 4 +- src/SMESH_I/SMESH_Gen_i.hxx | 6 +- src/SMESH_I/SMESH_Gen_i_1.cxx | 2 +- src/SMESH_I/SMESH_MeshEditor_i.cxx | 2 +- src/SMESH_I/SMESH_Mesh_i.cxx | 10 +- src/SMESH_SWIG/SMESH_blocks.py | 2 +- src/SMESH_SWIG/StdMeshersBuilder.py | 18 +- src/SMESH_SWIG/smeshBuilder.py | 8 +- src/SMESH_SWIG/smesh_algorithm.py | 2 +- src/StdMeshers/StdMeshers_Arithmetic1D.cxx | 2 +- src/StdMeshers/StdMeshers_Arithmetic1D.hxx | 2 +- src/StdMeshers/StdMeshers_AutomaticLength.cxx | 2 +- src/StdMeshers/StdMeshers_AutomaticLength.hxx | 2 +- src/StdMeshers/StdMeshers_Cartesian_3D.cxx | 4 +- .../StdMeshers_CompositeHexa_3D.cxx | 8 +- .../StdMeshers_CompositeHexa_3D.hxx | 2 +- .../StdMeshers_CompositeSegment_1D.cxx | 2 +- .../StdMeshers_CompositeSegment_1D.hxx | 2 +- src/StdMeshers/StdMeshers_Deflection1D.cxx | 2 +- src/StdMeshers/StdMeshers_Deflection1D.hxx | 2 +- src/StdMeshers/StdMeshers_Distribution.cxx | 2 +- src/StdMeshers/StdMeshers_Distribution.hxx | 2 +- src/StdMeshers/StdMeshers_FixedPoints1D.cxx | 2 +- src/StdMeshers/StdMeshers_FixedPoints1D.hxx | 2 +- src/StdMeshers/StdMeshers_Geometric1D.cxx | 2 +- src/StdMeshers/StdMeshers_Geometric1D.hxx | 2 +- src/StdMeshers/StdMeshers_HexaFromSkin_3D.cxx | 4 +- src/StdMeshers/StdMeshers_Hexa_3D.cxx | 4 +- src/StdMeshers/StdMeshers_Hexa_3D.hxx | 2 +- src/StdMeshers/StdMeshers_ImportSource.cxx | 2 +- src/StdMeshers/StdMeshers_ImportSource.hxx | 2 +- src/StdMeshers/StdMeshers_Import_1D.cxx | 4 +- src/StdMeshers/StdMeshers_Import_1D.hxx | 2 +- src/StdMeshers/StdMeshers_Import_1D2D.cxx | 2 +- src/StdMeshers/StdMeshers_Import_1D2D.hxx | 2 +- src/StdMeshers/StdMeshers_LengthFromEdges.cxx | 2 +- src/StdMeshers/StdMeshers_LengthFromEdges.hxx | 2 +- src/StdMeshers/StdMeshers_LocalLength.cxx | 2 +- src/StdMeshers/StdMeshers_LocalLength.hxx | 2 +- src/StdMeshers/StdMeshers_MEFISTO_2D.cxx | 2 +- src/StdMeshers/StdMeshers_MEFISTO_2D.hxx | 2 +- src/StdMeshers/StdMeshers_MaxElementArea.cxx | 2 +- src/StdMeshers/StdMeshers_MaxElementArea.hxx | 2 +- .../StdMeshers_MaxElementVolume.cxx | 2 +- .../StdMeshers_MaxElementVolume.hxx | 2 +- src/StdMeshers/StdMeshers_MaxLength.cxx | 2 +- src/StdMeshers/StdMeshers_MaxLength.hxx | 2 +- .../StdMeshers_NotConformAllowed.cxx | 2 +- .../StdMeshers_NotConformAllowed.hxx | 2 +- .../StdMeshers_NumberOfSegments.cxx | 2 +- .../StdMeshers_NumberOfSegments.hxx | 2 +- src/StdMeshers/StdMeshers_Penta_3D.cxx | 4 +- src/StdMeshers/StdMeshers_Penta_3D.hxx | 2 +- src/StdMeshers/StdMeshers_Prism_3D.cxx | 6 +- src/StdMeshers/StdMeshers_Prism_3D.hxx | 2 +- src/StdMeshers/StdMeshers_ProjectionUtils.cxx | 4 +- src/StdMeshers/StdMeshers_Projection_1D.cxx | 2 +- src/StdMeshers/StdMeshers_Projection_1D.hxx | 2 +- src/StdMeshers/StdMeshers_Projection_2D.cxx | 2 +- src/StdMeshers/StdMeshers_Projection_2D.hxx | 2 +- src/StdMeshers/StdMeshers_Projection_3D.cxx | 2 +- src/StdMeshers/StdMeshers_Projection_3D.hxx | 2 +- src/StdMeshers/StdMeshers_Propagation.cxx | 2 +- src/StdMeshers/StdMeshers_Propagation.hxx | 2 +- .../StdMeshers_QuadranglePreference.cxx | 2 +- .../StdMeshers_QuadranglePreference.hxx | 2 +- src/StdMeshers/StdMeshers_Quadrangle_2D.cxx | 6 +- src/StdMeshers/StdMeshers_QuadraticMesh.cxx | 2 +- src/StdMeshers/StdMeshers_QuadraticMesh.hxx | 2 +- src/StdMeshers/StdMeshers_RadialPrism_3D.cxx | 2 +- src/StdMeshers/StdMeshers_RadialPrism_3D.hxx | 2 +- .../StdMeshers_RadialQuadrangle_1D2D.hxx | 2 +- src/StdMeshers/StdMeshers_Regular_1D.hxx | 2 +- src/StdMeshers/StdMeshers_Reversible1D.cxx | 2 +- src/StdMeshers/StdMeshers_Reversible1D.hxx | 2 +- .../StdMeshers_SegmentAroundVertex_0D.cxx | 2 +- .../StdMeshers_SegmentAroundVertex_0D.hxx | 2 +- .../StdMeshers_SegmentLengthAroundVertex.cxx | 2 +- .../StdMeshers_SegmentLengthAroundVertex.hxx | 2 +- src/StdMeshers/StdMeshers_StartEndLength.cxx | 2 +- src/StdMeshers/StdMeshers_StartEndLength.hxx | 2 +- .../StdMeshers_UseExisting_1D2D.cxx | 2 +- .../StdMeshers_UseExisting_1D2D.hxx | 2 +- src/StdMeshers/StdMeshers_ViscousLayers.cxx | 6 +- src/StdMeshers/StdMeshers_ViscousLayers2D.cxx | 2 +- .../StdMeshersGUI_CartesianParamCreator.cxx | 4 +- .../StdMeshersGUI_DistrTable.cxx | 2 +- .../StdMeshersGUI_ObjectReferenceParamWdg.cxx | 2 +- .../StdMeshersGUI_QuadrangleParamWdg.h | 2 +- .../StdMeshersGUI_StdHypothesisCreator.cxx | 4 +- src/StdMeshers_I/StdMeshers_ObjRefUlils.cxx | 2 +- src/StdMeshers_I/StdMeshers_ObjRefUlils.hxx | 6 +- src/StdMeshers_I/StdMeshers_i.cxx | 2 +- 197 files changed, 253 insertions(+), 2064 deletions(-) delete mode 100644 ChangeLog diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index 7df59af50..000000000 --- a/ChangeLog +++ /dev/null @@ -1,1811 +0,0 @@ -############################################################################### -#This is the SMESH change log. Do not modify because it is automatically -#created with : -#cvs2cl.pl -l "-b" -U users.cvs2cl --header header.cvs2cl -T -b --utc -############################################################################### - -2004-01-30 13:18 Nicolas Rejneri - - * doc/html/INPUT/: doxyfile, sources/static/tree.js: NRI : 1.4.0 - version - -2004-01-29 17:52 Jerome Robert - - * INSTALL, bin/VERSION: Upgrade to version 1.4.0. - -2004-01-29 17:33 Jerome Robert - - * src/: SMESHGUI/SMESHGUI_StudyAPI.cxx, SMESHGUI/SMESHGUI_Swig.cxx, - SMESH_I/SMESH_Gen_i.cxx: Merge branch merge_1_2_d - -2004-01-14 09:24 Nicolas Rejneri - - * doc/html/Makefile.in: NRI : bug KERNEL5014 fixed. - -2004-01-06 15:19 Nadir Bouhamou - - * src/SMESH_SWIG/SMESH_flight_skin.py: removing the call to the - tetrahedron generator NETGEN, because I did not yet manage to - make NETGEN running on the flight geometry. - -2004-01-06 15:16 Nadir Bouhamou - - * resources/SMESH_en.xml, resources/SMESH_fr.xml, - src/SMESHGUI/SMESHGUI.cxx: Mounting the hypothesis - LengthFromEdges in th GUI of SMESH. This functionality was only - in the C++ API, and in the CORBA API. - -2004-01-05 16:14 Jerome Robert - - * adm_local/unix/config_files/check_Netgen.m4: Fix a misspelled - environment variable for idl python - -2004-01-05 14:28 tag V1_3_1 - -2004-01-05 13:53 Jerome Robert - - * src/NETGEN/: ReadMeForNgUsers, netgen43ForSalome.patch: Add a - patch to make the build of netgen more user-friendly - -2004-01-05 13:52 Jerome Robert - - * src/NETGEN/Makefile.in: We do not need OCAF in Netgen - -2004-01-05 13:38 Jerome Robert - - * adm_local/unix/config_files/check_Netgen.m4: Fix some quotes - problems. - -2004-01-05 09:05 Jerome Robert - - * src/: SMDS/SMDS_Mesh.cxx, SMESHDS/SMESHDS_Document.cxx: [Bug - SMESH4830] bug in install with gcc 2.95. Bug fixed. Note: SGI say - that is requiered to use set_intersection (see - http://www.sgi.com/tech/stl/set_intersection.html). - -2003-12-16 15:27 Nadir Bouhamou - - * adm_local/unix/config_files/check_Netgen.m4: Since there is an - idl precompilation directive in SMESH_BasicHypothesis.idl file, a - -DHAVE_NETGEN idl has to be added when compiling SMESH with - netgen to the idl c++ flags as well as to the idl python flags. - -2003-12-15 13:15 Nadir Bouhamou - - * src/SMESHDS/SMESHDS_Script.cxx: correct a small bug found by the - EDF development team (PN and AT) : AddVolume in the case of a - Tetrahedron. - -2003-12-11 09:51 Jerome Robert - - * src/SMESHGUI/SMESHGUI.cxx: [Bug SMESH4598] Crash of the session - when compute and update are not done in the same view. Bug fixed. - -2003-12-11 09:49 Jerome Robert - - * src/SMESH/SMESH_HypothesisFactory.cxx: HAVE_NETGEN (#define) to - remove an unresolved symbol when building without netgen - -2003-12-10 17:23 Jerome Robert - - * adm_local/unix/config_files/check_Netgen.m4, - idl/SMESH_BasicHypothesis.idl, - src/SMESH_I/SMESH_HypothesisFactory_i.cxx: Create and use - HAVE_NETGEN (#define) to avoid unresolved symbols in libraries. - -2003-12-10 16:05 Jerome Robert - - * src/SMESHGUI/SMESHGUI.cxx: Cosmetics - -2003-12-09 14:13 Nadir Bouhamou - - * src/SMESH/Makefile.in: Correcting a problem araising when - building the SMESH module without Netgen. - -2003-12-09 10:00 Nadir Bouhamou - - * doc/: AddNetgenInSalome2.pdf, AddNetgenInSalome2.ps, - AddNetgenInSalome2.sxw: updating or adding when merging in the - main trunk with the version in the branch nadir_1_2_2 !! Here a - document related to the integration of NETGEN in the SMESH module - has been added for future work in the integration of other - mesher. - -2003-12-08 15:30 Nadir Bouhamou - - * INSTALL, Makefile.in, configure.in.base, - adm_local/unix/make_commence.in, - adm_local/unix/config_files/check_Netgen.m4, bin/VERSION, - idl/SMESH_BasicHypothesis.idl, resources/SMESH_en.xml, - resources/SMESH_fr.xml, resources/flight_solid.brep, - resources/mesh_algo_netgen.png, resources/mesh_algo_tetra.png, - resources/mesh_tree_algo_netgen.png, - resources/mesh_tree_algo_tetra.png, src/Makefile.in, - src/DriverMED/DriverMED_R_SMDS_Mesh.cxx, - src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx, - src/DriverMED/DriverMED_W_SMDS_Mesh.cxx, - src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx, - src/NETGEN/Makefile.in, src/NETGEN/ReadMeForNgUsers, - src/SMESH/Makefile.in, src/SMESH/SMESH_HypothesisFactory.cxx, - src/SMESH/SMESH_MEFISTO_2D.cxx, - src/SMESH/SMESH_MaxElementVolume.cxx, - src/SMESH/SMESH_MaxElementVolume.hxx, - src/SMESH/SMESH_NETGEN_3D.cxx, src/SMESH/SMESH_NETGEN_3D.hxx, - src/SMESH/SMESH_subMesh.cxx, src/SMESHGUI/SMESHGUI.cxx, - src/SMESHGUI/SMESHGUI.h, src/SMESHGUI/SMESHGUI_NbSegmentsDlg.cxx, - src/SMESHGUI/SMESHGUI_icons.po, src/SMESH_I/Makefile.in, - src/SMESH_I/SMESH_Gen_i.cxx, - src/SMESH_I/SMESH_HypothesisFactory_i.cxx, - src/SMESH_I/SMESH_LengthFromEdges_i.cxx, - src/SMESH_I/SMESH_LengthFromEdges_i.hxx, - src/SMESH_I/SMESH_MEDMesh_i.cxx, - src/SMESH_I/SMESH_MEDSupport_i.cxx, - src/SMESH_I/SMESH_MaxElementVolume_i.cxx, - src/SMESH_I/SMESH_MaxElementVolume_i.hxx, - src/SMESH_I/SMESH_NETGEN_3D_i.cxx, - src/SMESH_I/SMESH_NETGEN_3D_i.hxx, src/SMESH_SWIG/Makefile.in, - src/SMESH_SWIG/SMESH_Partition1_tetra.py, - src/SMESH_SWIG/SMESH_box2_tetra.py, - src/SMESH_SWIG/SMESH_box3_tetra.py, - src/SMESH_SWIG/SMESH_box_tetra.py, - src/SMESH_SWIG/SMESH_fixation_hexa.py, - src/SMESH_SWIG/SMESH_fixation_tetra.py, - src/SMESH_SWIG/SMESH_flight_skin.py, - src/SMESH_SWIG/SMESH_mechanic_tetra.py: updating or adding when - merging in the main trunk with the version in the branch - nadir_1_2_2 !! - -2003-12-05 14:49 Jerome Robert - - * src/MEFISTO2/trte.f: Remove "pause" primitive call. - -2003-11-27 11:45 Jerome Robert - - * resources/SMESH_en.xml, resources/SMESH_fr.xml, - src/SMESHGUI/SMESHGUI.cxx: [Bug SMESH839] Spelling: Hypotheses - - Hexa?edron (i,j,k). Bug Fixed. - -2003-11-25 08:52 tag V1_3_0 - -2003-11-25 08:52 Nicolas Rejneri - - * bin/VERSION, INSTALL: NRI: 1.3.0 version. - -2003-11-20 12:45 tag V1_3_0_b3 - -2003-11-20 12:45 Nicolas Rejneri - - * doc/html/INPUT/sources/static/: doxygen.css, page2.html, tree.js, - treeview.js: NRI : Add static documentation. - -2003-11-20 12:45 Nicolas Rejneri - - * doc/html/INPUT/sources/: Application-About.png, - Application-About1.jpg, application.gif, application.jpg, - bg_salome.gif, bg_salomepro.gif, doxygen.css: NRI : Update - images. - -2003-11-20 12:44 Nicolas Rejneri - - * doc/html/INPUT/doxyfile: NRI : Generate TreeView. - -2003-11-20 12:43 Nicolas Rejneri - - * doc/html/Makefile.in: NRI : Add static directory. - -2003-11-18 15:01 tag V1_3_0b2 - -2003-11-18 15:01 Jerome Robert - - * ChangeLog, INSTALL, cvs-tags: update for V1_3_0_b2 - -2003-11-18 09:19 Nadir Bouhamou - - * src/SMESH_I/: SMESH_MEDFamily_i.cxx, SMESH_MEDFamily_i.hxx, - SMESH_MEDMesh_i.cxx, SMESH_MEDMesh_i.hxx, SMESH_MEDSupport_i.cxx, - SMESH_MEDSupport_i.hxx: merge with the branch - nadir_update_MED_v1_3_0 (branch to build the V1_3_0 version of - the module. - -2003-11-12 13:20 tag V1_3_0_b1 - -2003-11-12 13:20 Jerome Robert - - * ChangeLog, INSTALL, cvs-tags, bin/VERSION: Update for V1.3.0b1 - -2003-11-12 11:40 Jerome Robert - - * src/OBJECT/SMESH_Actor.cxx: MergeV1_2c-1 - -2003-11-06 14:43 Nicolas Rejneri - - * src/SMESHGUI/SMESHGUI.cxx: NRI : MergeV1_2c-1. - -2003-11-06 14:34 Nicolas Rejneri - - * src/MEFISTO2/: areteideale.f, trte.f: NRI : Add licence header. - -2003-11-06 11:34 Nicolas Rejneri - - * LICENCE: NRI : add LICENCE file - -2003-11-03 15:50 Nicolas Rejneri - - * doc/html/Makefile.in: NRI : Relative path !!!! - -2003-10-22 15:28 Jerome Robert - - * src/SMDS/: SMDS_Mesh.cxx, SMDS_Mesh.hxx: Fix/implement - removeNode, removeEdge, removeFace, removeVolume and - removeElement - -2003-10-20 16:26 Jerome Robert - - * src/SMESHGUI/SMESHGUI.cxx: When the main window was maximized - some dialogs were cropped at the bottom of the screen. It's now - fixed. - -2003-10-17 16:31 Jerome Robert - - * src/SMDS/SMDS_Mesh.cxx: Fix a bug. Quadrangles were added as - triangles. - -2003-10-06 10:50 tag MergeV1_2c-1 - -2003-10-06 10:50 Jerome Robert - - * cvs-tags: Update. Created a new branch for user nadir. - -2003-10-02 16:16 Nicolas Rejneri - - * build_configure: NRI : RedHat 9 compatibility (M. Tajchman). - -2003-09-26 15:14 tag V1_2_2 - -2003-09-26 15:14 Jerome Robert - - * INSTALL, cvs-tags: Add a tag file to track branch and tag. Update - INSTALL to prepare V1_2_2 tag. - -2003-09-26 14:21 tag V1_2_1 - -2003-09-26 14:21 Nicolas Rejneri - - * INSTALL: NRI : INSTALL file defined into SALOME2_PRODUCTION_CYCLE - document. - -2003-09-23 14:33 Jerome Robert - - * src/: SMDS/SMDS_FaceOfEdges.hxx, SMESHDS/SMESHDS_Mesh.hxx, - SMDS/SMDS_FaceOfNodes.hxx, SMDS/SMDS_MeshEdge.hxx, - SMDS/SMDS_MeshElement.hxx, SMDS/SMDS_Tria3OfNodes.hxx, - SMDS/SMDS_VolumeOfFaces.hxx: Keep compatible with gcc 2 - -2003-09-23 11:52 Nicolas Rejneri - - * src/SMESHGUI/SMESHGUI_StudyAPI.cxx: NRI : Display Component - UserName and Icon. - -2003-09-22 12:23 Jerome Robert - - * src/SMDS/SMDS_IteratorOfArray.hxx: Freshly added file - -2003-09-12 15:12 Jerome Robert - - * src/SMDS/: Makefile.in, SMDS_HexahedronOfNodes.cxx, - SMDS_HexahedronOfNodes.hxx, SMDS_Mesh.cxx, SMDS_Tria3OfNodes.cxx, - SMDS_Tria3OfNodes.hxx: Add HexahedronOfNodes and Tria3OfNodes to - improve performance - -2003-09-12 15:11 Jerome Robert - - * src/SMDS/SMDS_VolumeOfNodes.cxx: Fix bug. Was always printing 8 - nodes - -2003-09-08 15:04 Jerome Robert - - * src/SMDS/: SMDS_Mesh.cxx, SMDS_VolumeOfNodes.cxx, - SMDS_VolumeOfNodes.hxx: Add support for tetra, pyramid and prism - -2003-09-08 13:41 Jerome Robert - - * src/SMDS/: SMDS_Mesh.cxx, SMDS_MeshElement.cxx: Add some comments - -2003-09-05 12:19 Jerome Robert - - * src/SMDS/SMDS_MeshNode.cxx: Some forgotten return statments - -2003-09-05 11:45 Jerome Robert - - * src/: DriverDAT/DriverDAT_W_SMESHDS_Mesh.cxx, - DriverMED/DriverMED_W_SMESHDS_Mesh.cxx, SMESH/SMESH_Hexa_3D.cxx: - Correct some memory leaks - -2003-09-05 10:31 Jerome Robert - - * src/: DriverMED/DriverMED_W_SMESHDS_Mesh.cxx, - SMESH/SMESH_Hexa_3D.cxx, SMESH/SMESH_Hexa_3D.hxx, - SMESH/SMESH_MEFISTO_2D.cxx, SMESH/SMESH_MEFISTO_2D.hxx, - SMESH/SMESH_Quadrangle_2D.cxx, SMESH/SMESH_Quadrangle_2D.hxx, - SMESH/SMESH_Regular_1D.cxx, SMESH/SMESH_subMesh.cxx, - SMESHDS/SMESHDS_Mesh.cxx, SMESHDS/SMESHDS_Mesh.hxx, - SMESHDS/SMESHDS_SubMesh.cxx, SMESHDS/SMESHDS_SubMesh.hxx, - SMESH_I/SMESH_MEDSupport_i.cxx, SMESH_I/SMESH_MeshEditor_i.cxx: - Use nodes and elements pointer instead on IDs - -2003-09-05 10:20 Jerome Robert - - * src/SMDS/: SMDS_Mesh.cxx, SMDS_Mesh.hxx: Change API to use - pointer on elements and no longer ID of elements - -2003-09-04 15:04 Jerome Robert - - * src/SMESHDS/: Handle_SMESHDS_Command.hxx, - Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerMesh.hxx, - Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis.hxx, - Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh.hxx, - Handle_SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis.hxx, - Handle_SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh.hxx, - Handle_SMESHDS_Document.hxx, - Handle_SMESHDS_ListNodeOfListOfAsciiString.hxx, - Handle_SMESHDS_ListNodeOfListOfCommand.hxx, - Handle_SMESHDS_ListNodeOfListOfPtrHypothesis.hxx, - Handle_SMESHDS_Mesh.hxx, Handle_SMESHDS_Script.hxx, - Handle_SMESHDS_SubMesh.hxx, SMESHDS.cdl, SMESHDS_Command.cdl, - SMESHDS_Command.ixx, SMESHDS_Command.jxx, - SMESHDS_DataMapIteratorOfDataMapOfIntegerMesh.hxx, - SMESHDS_DataMapIteratorOfDataMapOfIntegerMesh_0.cxx, - SMESHDS_DataMapIteratorOfDataMapOfIntegerPtrHypothesis.hxx, - SMESHDS_DataMapIteratorOfDataMapOfIntegerPtrHypothesis_0.cxx, - SMESHDS_DataMapIteratorOfDataMapOfIntegerSubMesh.hxx, - SMESHDS_DataMapIteratorOfDataMapOfIntegerSubMesh_0.cxx, - SMESHDS_DataMapIteratorOfDataMapOfShapeListOfPtrHypothesis.hxx, - SMESHDS_DataMapIteratorOfDataMapOfShapeListOfPtrHypothesis_0.cxx, - SMESHDS_DataMapIteratorOfDataMapOfShapeSubMesh.hxx, - SMESHDS_DataMapIteratorOfDataMapOfShapeSubMesh_0.cxx, - SMESHDS_DataMapNodeOfDataMapOfIntegerMesh.hxx, - SMESHDS_DataMapNodeOfDataMapOfIntegerMesh_0.cxx, - SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis.hxx, - SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis_0.cxx, - SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh.hxx, - SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh_0.cxx, - SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis.hxx, - SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis_0.cxx, - SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh.hxx, - SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh_0.cxx, - SMESHDS_DataMapOfIntegerMesh.hxx, - SMESHDS_DataMapOfIntegerMesh_0.cxx, - SMESHDS_DataMapOfIntegerPtrHypothesis.hxx, - SMESHDS_DataMapOfIntegerPtrHypothesis_0.cxx, - SMESHDS_DataMapOfIntegerSubMesh.hxx, - SMESHDS_DataMapOfIntegerSubMesh_0.cxx, - SMESHDS_DataMapOfShapeListOfPtrHypothesis.hxx, - SMESHDS_DataMapOfShapeListOfPtrHypothesis_0.cxx, - SMESHDS_DataMapOfShapeSubMesh.hxx, - SMESHDS_DataMapOfShapeSubMesh_0.cxx, SMESHDS_Document.cdl, - SMESHDS_Document.ixx, SMESHDS_Document.jxx, - SMESHDS_ListIteratorOfListOfAsciiString.hxx, - SMESHDS_ListIteratorOfListOfAsciiString_0.cxx, - SMESHDS_ListIteratorOfListOfCommand.hxx, - SMESHDS_ListIteratorOfListOfCommand_0.cxx, - SMESHDS_ListIteratorOfListOfPtrHypothesis.hxx, - SMESHDS_ListIteratorOfListOfPtrHypothesis_0.cxx, - SMESHDS_ListNodeOfListOfAsciiString.hxx, - SMESHDS_ListNodeOfListOfAsciiString_0.cxx, - SMESHDS_ListNodeOfListOfCommand.hxx, - SMESHDS_ListNodeOfListOfCommand_0.cxx, - SMESHDS_ListNodeOfListOfPtrHypothesis.hxx, - SMESHDS_ListNodeOfListOfPtrHypothesis_0.cxx, - SMESHDS_ListOfAsciiString.hxx, SMESHDS_ListOfAsciiString_0.cxx, - SMESHDS_ListOfCommand.hxx, SMESHDS_ListOfCommand_0.cxx, - SMESHDS_ListOfPtrHypothesis.hxx, - SMESHDS_ListOfPtrHypothesis_0.cxx, SMESHDS_Mesh.cdl, - SMESHDS_Mesh.ixx, SMESHDS_Mesh.jxx, SMESHDS_PtrHypothesis.hxx, - SMESHDS_Script.cdl, SMESHDS_Script.ixx, SMESHDS_Script.jxx, - SMESHDS_SubMesh.cdl, SMESHDS_SubMesh.ixx, SMESHDS_SubMesh.jxx: - Remove no longer needed files - -2003-09-04 14:50 Jerome Robert - - * src/SMDS/: Handle_SMDSControl_BoundaryEdges.hxx, - Handle_SMDSControl_BoundaryFaces.hxx, - Handle_SMDSControl_MeshBoundary.hxx, - Handle_SMDS_DataMapNodeOfDataMapOfIntegerMeshElement.hxx, - Handle_SMDS_DataMapNodeOfDataMapOfPntInteger.hxx, - Handle_SMDS_EdgePosition.hxx, Handle_SMDS_FacePosition.hxx, - Handle_SMDS_HSequenceOfMesh.hxx, - Handle_SMDS_ListNodeOfListOfMesh.hxx, - Handle_SMDS_ListNodeOfListOfMeshElement.hxx, - Handle_SMDS_ListNodeOfListOfMeshGroup.hxx, Handle_SMDS_Mesh.hxx, - Handle_SMDS_MeshEdge.hxx, Handle_SMDS_MeshElement.hxx, - Handle_SMDS_MeshElementIDFactory.hxx, Handle_SMDS_MeshFace.hxx, - Handle_SMDS_MeshGroup.hxx, Handle_SMDS_MeshHexahedron.hxx, - Handle_SMDS_MeshIDFactory.hxx, Handle_SMDS_MeshNode.hxx, - Handle_SMDS_MeshNodeIDFactory.hxx, Handle_SMDS_MeshObject.hxx, - Handle_SMDS_MeshPrism.hxx, Handle_SMDS_MeshPyramid.hxx, - Handle_SMDS_MeshQuadrangle.hxx, Handle_SMDS_MeshTetrahedron.hxx, - Handle_SMDS_MeshTriangle.hxx, Handle_SMDS_MeshVolume.hxx, - Handle_SMDS_Position.hxx, - Handle_SMDS_SequenceNodeOfSequenceOfMesh.hxx, - Handle_SMDS_SpacePosition.hxx, - Handle_SMDS_StdMapNodeOfExtendedMap.hxx, - Handle_SMDS_StdMapNodeOfExtendedOrientedMap.hxx, - Handle_SMDS_VertexPosition.hxx, SMDS.cdl, SMDSAbs.cdl, - SMDSControl.cdl, SMDSControl.ixx, SMDSControl.jxx, - SMDSControl_BoundaryEdges.cdl, SMDSControl_BoundaryEdges.ixx, - SMDSControl_BoundaryEdges.jxx, SMDSControl_BoundaryFaces.cdl, - SMDSControl_BoundaryFaces.ixx, SMDSControl_BoundaryFaces.jxx, - SMDSControl_MeshBoundary.cdl, SMDSControl_MeshBoundary.ixx, - SMDSControl_MeshBoundary.jxx, SMDSEdit.cdl, - SMDSEdit_Transform.cdl, SMDSEdit_Transform.ixx, - SMDSEdit_Transform.jxx, SMDS_BasicMap.lxx, - SMDS_BasicMapIterator.lxx, - SMDS_DataMapIteratorOfDataMapOfIntegerMeshElement.hxx, - SMDS_DataMapIteratorOfDataMapOfIntegerMeshElement_0.cxx, - SMDS_DataMapIteratorOfDataMapOfPntInteger.hxx, - SMDS_DataMapIteratorOfDataMapOfPntInteger_0.cxx, - SMDS_DataMapNodeOfDataMapOfIntegerMeshElement.hxx, - SMDS_DataMapNodeOfDataMapOfIntegerMeshElement_0.cxx, - SMDS_DataMapNodeOfDataMapOfPntInteger.hxx, - SMDS_DataMapNodeOfDataMapOfPntInteger_0.cxx, - SMDS_DataMapOfIntegerMeshElement.hxx, - SMDS_DataMapOfIntegerMeshElement_0.cxx, - SMDS_DataMapOfPntInteger.hxx, SMDS_DataMapOfPntInteger_0.cxx, - SMDS_EdgePosition.cdl, SMDS_EdgePosition.ixx, - SMDS_EdgePosition.jxx, SMDS_EdgePosition.lxx, - SMDS_ExtendedMap.hxx, SMDS_ExtendedMap_0.cxx, - SMDS_ExtendedOrientedMap.hxx, SMDS_ExtendedOrientedMap_0.cxx, - SMDS_FacePosition.cdl, SMDS_FacePosition.ixx, - SMDS_FacePosition.jxx, SMDS_FacePosition.lxx, - SMDS_HSequenceOfMesh.hxx, SMDS_HSequenceOfMesh_0.cxx, - SMDS_ListIteratorOfListOfMesh.hxx, - SMDS_ListIteratorOfListOfMeshElement.hxx, - SMDS_ListIteratorOfListOfMeshElement_0.cxx, - SMDS_ListIteratorOfListOfMeshGroup.hxx, - SMDS_ListIteratorOfListOfMeshGroup_0.cxx, - SMDS_ListIteratorOfListOfMesh_0.cxx, - SMDS_ListNodeOfListOfMesh.hxx, - SMDS_ListNodeOfListOfMeshElement.hxx, - SMDS_ListNodeOfListOfMeshElement_0.cxx, - SMDS_ListNodeOfListOfMeshGroup.hxx, - SMDS_ListNodeOfListOfMeshGroup_0.cxx, - SMDS_ListNodeOfListOfMesh_0.cxx, SMDS_ListOfMesh.hxx, - SMDS_ListOfMeshElement.hxx, SMDS_ListOfMeshElement_0.cxx, - SMDS_ListOfMeshGroup.hxx, SMDS_ListOfMeshGroup_0.cxx, - SMDS_ListOfMesh_0.cxx, SMDS_Map.gxx, SMDS_MapHasher.gxx, - SMDS_MapIterator.gxx, SMDS_MapIteratorOfExtendedMap.hxx, - SMDS_MapIteratorOfExtendedMap_0.cxx, - SMDS_MapIteratorOfExtendedOrientedMap.hxx, - SMDS_MapIteratorOfExtendedOrientedMap_0.cxx, SMDS_MapNode.lxx, - SMDS_MapOfMeshElement.cdl, SMDS_MapOfMeshElement.cxx, - SMDS_MapOfMeshElement.hxx, SMDS_MapOfMeshElement.ixx, - SMDS_MapOfMeshElement.jxx, SMDS_MapOfMeshElement.lxx, - SMDS_MapOfMeshOrientedElement.cdl, - SMDS_MapOfMeshOrientedElement.cxx, - SMDS_MapOfMeshOrientedElement.hxx, - SMDS_MapOfMeshOrientedElement.ixx, - SMDS_MapOfMeshOrientedElement.jxx, - SMDS_MapOfMeshOrientedElement.lxx, SMDS_Mesh.cdl, SMDS_Mesh.ixx, - SMDS_Mesh.jxx, SMDS_Mesh.lxx, SMDS_MeshEdge.cdl, - SMDS_MeshEdge.ixx, SMDS_MeshEdge.jxx, SMDS_MeshEdge.lxx, - SMDS_MeshEdgesIterator.cdl, SMDS_MeshEdgesIterator.cxx, - SMDS_MeshEdgesIterator.hxx, SMDS_MeshEdgesIterator.ixx, - SMDS_MeshEdgesIterator.jxx, SMDS_MeshElement.cdl, - SMDS_MeshElement.ixx, SMDS_MeshElement.jxx, SMDS_MeshElement.lxx, - SMDS_MeshElementIDFactory.cdl, SMDS_MeshElementIDFactory.ixx, - SMDS_MeshElementIDFactory.jxx, SMDS_MeshElementIDFactory.lxx, - SMDS_MeshElementMapHasher.cdl, SMDS_MeshElementMapHasher.cxx, - SMDS_MeshElementMapHasher.hxx, SMDS_MeshElementMapHasher.ixx, - SMDS_MeshElementMapHasher.jxx, SMDS_MeshElementMapHasher.lxx, - SMDS_MeshElementsIterator.cdl, SMDS_MeshElementsIterator.cxx, - SMDS_MeshElementsIterator.hxx, SMDS_MeshElementsIterator.ixx, - SMDS_MeshElementsIterator.jxx, SMDS_MeshElementsIterator.lxx, - SMDS_MeshFace.cdl, SMDS_MeshFace.ixx, SMDS_MeshFace.jxx, - SMDS_MeshFace.lxx, SMDS_MeshFacesIterator.cdl, - SMDS_MeshFacesIterator.cxx, SMDS_MeshFacesIterator.hxx, - SMDS_MeshFacesIterator.ixx, SMDS_MeshFacesIterator.jxx, - SMDS_MeshGroup.cdl, SMDS_MeshGroup.ixx, SMDS_MeshGroup.jxx, - SMDS_MeshGroup.lxx, SMDS_MeshHexahedron.cdl, - SMDS_MeshHexahedron.ixx, SMDS_MeshHexahedron.jxx, - SMDS_MeshHexahedron.lxx, SMDS_MeshIDFactory.cdl, - SMDS_MeshIDFactory.ixx, SMDS_MeshIDFactory.jxx, - SMDS_MeshIDFactory.lxx, SMDS_MeshNode.cdl, SMDS_MeshNode.ixx, - SMDS_MeshNode.jxx, SMDS_MeshNode.lxx, SMDS_MeshNodeIDFactory.cdl, - SMDS_MeshNodeIDFactory.ixx, SMDS_MeshNodeIDFactory.jxx, - SMDS_MeshNodeIDFactory.lxx, SMDS_MeshNodesIterator.cdl, - SMDS_MeshNodesIterator.cxx, SMDS_MeshNodesIterator.hxx, - SMDS_MeshNodesIterator.ixx, SMDS_MeshNodesIterator.jxx, - SMDS_MeshObject.cdl, SMDS_MeshObject.ixx, SMDS_MeshObject.jxx, - SMDS_MeshOrientedElementMapHasher.cdl, - SMDS_MeshOrientedElementMapHasher.cxx, - SMDS_MeshOrientedElementMapHasher.hxx, - SMDS_MeshOrientedElementMapHasher.ixx, - SMDS_MeshOrientedElementMapHasher.jxx, - SMDS_MeshOrientedElementMapHasher.lxx, SMDS_MeshPrism.cdl, - SMDS_MeshPrism.ixx, SMDS_MeshPrism.jxx, SMDS_MeshPrism.lxx, - SMDS_MeshPyramid.cdl, SMDS_MeshPyramid.ixx, SMDS_MeshPyramid.jxx, - SMDS_MeshPyramid.lxx, SMDS_MeshQuadrangle.cdl, - SMDS_MeshQuadrangle.ixx, SMDS_MeshQuadrangle.jxx, - SMDS_MeshQuadrangle.lxx, SMDS_MeshTetrahedron.cdl, - SMDS_MeshTetrahedron.ixx, SMDS_MeshTetrahedron.jxx, - SMDS_MeshTetrahedron.lxx, SMDS_MeshTriangle.cdl, - SMDS_MeshTriangle.ixx, SMDS_MeshTriangle.jxx, - SMDS_MeshTriangle.lxx, SMDS_MeshVolume.cdl, SMDS_MeshVolume.ixx, - SMDS_MeshVolume.jxx, SMDS_MeshVolume.lxx, - SMDS_MeshVolumesIterator.cdl, SMDS_MeshVolumesIterator.cxx, - SMDS_MeshVolumesIterator.hxx, SMDS_MeshVolumesIterator.ixx, - SMDS_MeshVolumesIterator.jxx, SMDS_PntHasher.cdl, - SMDS_PntHasher.cxx, SMDS_PntHasher.hxx, SMDS_PntHasher.ixx, - SMDS_PntHasher.jxx, SMDS_PntHasher.lxx, SMDS_Position.cdl, - SMDS_Position.ixx, SMDS_Position.jxx, SMDS_Position.lxx, - SMDS_SequenceNodeOfSequenceOfMesh.hxx, - SMDS_SequenceNodeOfSequenceOfMesh_0.cxx, SMDS_SequenceOfMesh.hxx, - SMDS_SequenceOfMesh_0.cxx, SMDS_SpacePosition.cdl, - SMDS_SpacePosition.ixx, SMDS_SpacePosition.jxx, - SMDS_SpacePosition.lxx, SMDS_StdMapNode.gxx, SMDS_StdMapNode.lxx, - SMDS_StdMapNodeOfExtendedMap.hxx, - SMDS_StdMapNodeOfExtendedMap_0.cxx, - SMDS_StdMapNodeOfExtendedOrientedMap.hxx, - SMDS_StdMapNodeOfExtendedOrientedMap_0.cxx, - SMDS_VertexPosition.cdl, SMDS_VertexPosition.ixx, - SMDS_VertexPosition.jxx: Remove no longer needed files - -2003-09-04 13:28 Jerome Robert - - * build_configure: It seems "make_omniorb" and "make_commence" need - to be before and after "envScript" - -2003-09-04 12:57 Jerome Robert - - * build_configure: make_commence and make_omniorb were detected - twice. Only one is requiered in AC_OUTPUT - -2003-09-04 12:03 Jerome Robert - - * src/: DriverDAT/DriverDAT_R_SMDS_Mesh.cxx, - DriverDAT/DriverDAT_R_SMDS_Mesh.h, - DriverDAT/DriverDAT_R_SMESHDS_Document.cxx, - DriverDAT/DriverDAT_R_SMESHDS_Mesh.cxx, - DriverDAT/DriverDAT_R_SMESHDS_Mesh.h, - DriverDAT/DriverDAT_W_SMDS_Mesh.cxx, - DriverDAT/DriverDAT_W_SMDS_Mesh.h, - DriverDAT/DriverDAT_W_SMESHDS_Document.cxx, - DriverDAT/DriverDAT_W_SMESHDS_Mesh.cxx, - DriverDAT/DriverDAT_W_SMESHDS_Mesh.h, - DriverMED/DriverMED_R_SMDS_Mesh.cxx, - DriverMED/DriverMED_R_SMDS_Mesh.h, - DriverMED/DriverMED_R_SMESHDS_Document.cxx, - DriverMED/DriverMED_R_SMESHDS_Mesh.cxx, - DriverMED/DriverMED_R_SMESHDS_Mesh.h, - DriverMED/DriverMED_W_SMDS_Mesh.cxx, - DriverMED/DriverMED_W_SMDS_Mesh.h, - DriverMED/DriverMED_W_SMESHDS_Document.cxx, - DriverMED/DriverMED_W_SMESHDS_Mesh.cxx, - DriverMED/DriverMED_W_SMESHDS_Mesh.h, - DriverUNV/DriverUNV_R_SMDS_Mesh.cxx, - DriverUNV/DriverUNV_R_SMDS_Mesh.h, - DriverUNV/DriverUNV_R_SMESHDS_Document.cxx, - DriverUNV/DriverUNV_R_SMESHDS_Mesh.cxx, - DriverUNV/DriverUNV_R_SMESHDS_Mesh.h, - DriverUNV/DriverUNV_W_SMDS_Mesh.cxx, - DriverUNV/DriverUNV_W_SMDS_Mesh.h, - DriverUNV/DriverUNV_W_SMESHDS_Document.cxx, - DriverUNV/DriverUNV_W_SMESHDS_Mesh.cxx, - DriverUNV/DriverUNV_W_SMESHDS_Mesh.h: Update to match the changes - in SMDS - -2003-09-04 11:03 Jerome Robert - - * src/: DriverDAT/Makefile.in, DriverMED/Makefile.in, - DriverUNV/Makefile.in: Remove OCC_LIBS from LDFLAGS - -2003-09-04 10:56 Jerome Robert - - * src/Driver/: Document_Reader.cxx, Document_Reader.h, - Document_Writer.cxx, Document_Writer.h, Mesh_Reader.h, - Mesh_Writer.h: Update to mach the changes in SMDS - -2003-09-04 10:44 Jerome Robert - - * src/Driver/Makefile.in: Remove OCC_LIBS from LDFLAGS - -2003-09-04 10:41 Jerome Robert - - * src/SMESH_I/: SMESH_Gen_i.cxx, SMESH_MEDMesh_i.cxx, - SMESH_MEDMesh_i.hxx, SMESH_MEDSupport_i.cxx, - SMESH_MEDSupport_i.hxx, SMESH_MeshEditor_i.cxx, - SMESH_MeshEditor_i.hxx, SMESH_Mesh_i.cxx: Update to match the new - implementation of SMDS - -2003-09-04 10:10 Jerome Robert - - * src/SMESH/SMESH_MaxElementArea.cxx: make GetMaxArea const - -2003-09-04 10:10 Jerome Robert - - * src/SMESH/: SMESH_MEFISTO_2D.hxx, SMESH_Regular_1D.hxx: make - hypothesis const - -2003-09-04 09:55 Jerome Robert - - * src/SMESH/SMESH_Hexa_3D.hxx: Update to match the change of SMDS - (new DS). - -2003-09-04 09:51 Jerome Robert - - * src/SMESH_I/sstream: Use the file include in gcc instead of this - one - -2003-09-04 09:21 Jerome Robert - - * src/SMESH/: SMESH_Algo.cxx, SMESH_Algo.hxx, SMESH_Gen.cxx, - SMESH_Gen.hxx, SMESH_Hexa_3D.cxx, SMESH_MEFISTO_2D.cxx, - SMESH_MaxElementArea.hxx, SMESH_Mesh.cxx, SMESH_Mesh.hxx, - SMESH_Quadrangle_2D.cxx, SMESH_Regular_1D.cxx, SMESH_subMesh.cxx, - SMESH_subMesh.hxx: Update to match the change of SMDS (new DS). - -2003-09-04 09:13 Jerome Robert - - * src/SMESH/: SMESH_NumberOfSegments.cxx, - SMESH_NumberOfSegments.hxx: make GetNumberOfSegments and - GetScaleFactor const - -2003-09-04 09:10 Jerome Robert - - * src/SMESH/: SMESH_LocalLength.cxx, SMESH_LocalLength.hxx: make - GetLength const - -2003-09-04 08:09 Jerome Robert - - * src/SMESHFiltersSelection/Makefile.in: Change OCC_LIBS to - OCC_KERNEL_LIBS - -2003-09-04 07:55 Jerome Robert - - * src/SMESHGUI/Makefile.in: Change OCC_LIBS to OCC_KERNEL_LIBS - -2003-09-04 07:39 Jerome Robert - - * src/SMESHGUI/: SMESHGUI.cxx, SMESHGUI.h: Change - Handle(SMESHDS_Document) to SMESHDS_Document* - -2003-09-04 07:21 Jerome Robert - - * src/MEFISTO2/Makefile.in: Remove OCC_LIBS from LDFLAGS - -2003-09-04 07:14 Jerome Robert - - * src/SMESHDS/: Makefile.in, SMESHDS_Command.cxx, - SMESHDS_Command.hxx, SMESHDS_Document.cxx, SMESHDS_Document.hxx, - SMESHDS_Hypothesis.cxx, SMESHDS_Hypothesis.hxx, SMESHDS_Mesh.cxx, - SMESHDS_Mesh.hxx, SMESHDS_Script.cxx, SMESHDS_Script.hxx, - SMESHDS_SubMesh.cxx, SMESHDS_SubMesh.hxx: Remove Opencascade - dependencies. Change to STL. - -2003-09-03 17:31 Jerome Robert - - * src/OBJECT/Makefile.in: Change OCC_LIBS to OCC_KERNEL_LIBS - -2003-09-03 17:30 Jerome Robert - - * src/SMDS/: SMDS_Mesh.cxx, SMDS_Mesh.hxx, SMDS_MeshEdge.cxx, - SMDS_MeshEdge.hxx, SMDS_MeshElement.cxx, SMDS_MeshElement.hxx, - SMDS_MeshNode.cxx, SMDS_MeshNode.hxx, SMDS_MeshVolume.cxx, - SMDS_MeshVolume.hxx, SMDS_MeshFace.cxx, SMDS_MeshFace.hxx: New DS - implementation - -2003-09-03 17:29 Jerome Robert - - * src/SMDS/: SMDS_EdgePosition.cxx, SMDS_EdgePosition.hxx, - SMDS_FacePosition.cxx, SMDS_FacePosition.hxx, - SMDS_MeshElementIDFactory.cxx, SMDS_MeshElementIDFactory.hxx, - SMDS_MeshGroup.cxx, SMDS_MeshGroup.hxx, SMDS_MeshIDFactory.cxx, - SMDS_MeshIDFactory.hxx, SMDS_MeshObject.cxx, SMDS_MeshObject.hxx, - SMDS_Position.cxx, SMDS_Position.hxx, SMDS_SpacePosition.cxx, - SMDS_SpacePosition.hxx, SMDS_TypeOfPosition.hxx, - SMDS_VertexPosition.cxx, SMDS_VertexPosition.hxx: Remove - Opencascade dependencies - -2003-09-03 17:21 Jerome Robert - - * src/SMDS/SMDSAbs_ElementType.hxx: comments - -2003-09-03 17:21 Jerome Robert - - * src/SMDS/: SMDS_Iterator.hxx, SMDS_IteratorOfElements.cxx, - SMDS_IteratorOfElements.hxx: Add iterator classes - -2003-09-03 17:16 Jerome Robert - - * src/SMDS/Makefile.in: Remove wok files. Comment no longer needed - files - -2003-09-03 17:09 Jerome Robert - - * src/SMDS/: SMDS_FaceOfEdges.cxx, SMDS_FaceOfEdges.hxx, - SMDS_FaceOfNodes.cxx, SMDS_FaceOfNodes.hxx, - SMDS_VolumeOfFaces.cxx, SMDS_VolumeOfFaces.hxx, - SMDS_VolumeOfNodes.cxx, SMDS_VolumeOfNodes.hxx: Add needed class - for the new DS - -2003-07-18 12:19 Nicolas Rejneri - - * src/SMESHGUI/SMESHGUI_StudyAPI.cxx: NRI : correction wrong merge. - -2003-07-11 07:32 Nicolas Rejneri - - * bin/VERSION, doc/html/Makefile.in, doc/html/INPUT/doxyfile: NRI : - Merge from V1_2. - -2003-07-10 17:51 Nicolas Rejneri - - * configure.in.base: NRI : Merge from V1_2. - -2003-07-10 16:31 Nicolas Rejneri - - * src/SMESHGUI/: SMESHGUI_Swig.cxx, SMESHGUI_Swig.i: NRI : Merge - from V1_2. - -2003-07-10 16:06 Nicolas Rejneri - - * src/SMESHGUI/SMESHGUI_Swig.cxx: NRI : Merge from V1_2. - -2003-07-10 15:36 Nicolas Rejneri - - * src/Driver/Makefile.in: NRI : Merge from V1_2. - -2003-07-10 15:03 Nicolas Rejneri - - * src/SMESH/Makefile.in, src/SMESH_I/Makefile.in, - idl/SMESH_BasicHypothesis.idl, idl/SMESH_Gen.idl, - idl/SMESH_Hypothesis.idl, idl/SMESH_Mesh.idl, - adm_local/unix/make_commence.in: NRI : Merge from V1_2. - -2003-07-10 14:47 Nicolas Rejneri - - * configure.in.base: NRI : Merge from V1_2. - -2003-07-10 14:31 Nicolas Rejneri - - * src/Driver/Makefile.in: NRI : Merge from V1_2. - -2003-07-10 13:35 Yves Fricaud - - * src/: SMESH_I/Makefile.in, SMESH_I/SMESH_1D_Algo_i.cxx, - SMESH_I/SMESH_1D_Algo_i.hxx, SMESH_I/SMESH_2D_Algo_i.cxx, - SMESH_I/SMESH_2D_Algo_i.hxx, SMESH_I/SMESH_3D_Algo_i.cxx, - SMESH_I/SMESH_3D_Algo_i.hxx, SMESH_I/SMESH_Algo_i.cxx, - SMESH_I/SMESH_Algo_i.hxx, SMESH_I/SMESH_Gen_i.cxx, - SMESH_I/SMESH_Gen_i.hxx, SMESH_I/SMESH_Hexa_3D_i.cxx, - SMESH_I/SMESH_Hexa_3D_i.hxx, - SMESH_I/SMESH_HypothesisFactory_i.cxx, - SMESH_I/SMESH_HypothesisFactory_i.hxx, - SMESH_I/SMESH_Hypothesis_i.cxx, SMESH_I/SMESH_Hypothesis_i.hxx, - SMESH_I/SMESH_LocalLength_i.cxx, SMESH_I/SMESH_LocalLength_i.hxx, - SMESH_I/SMESH_MEDFamily_i.cxx, SMESH_I/SMESH_MEDFamily_i.hxx, - SMESH_I/SMESH_MEDMesh_i.cxx, SMESH_I/SMESH_MEDMesh_i.hxx, - SMESH_I/SMESH_MEDSupport_i.cxx, SMESH_I/SMESH_MEDSupport_i.hxx, - SMESH_I/SMESH_MEFISTO_2D_i.cxx, SMESH_I/SMESH_MEFISTO_2D_i.hxx, - SMESH_I/SMESH_MaxElementArea_i.cxx, - SMESH_I/SMESH_MaxElementArea_i.hxx, - SMESH_I/SMESH_MaxElementVolume_i.cxx, - SMESH_I/SMESH_MaxElementVolume_i.hxx, - SMESH_I/SMESH_MeshEditor_i.cxx, SMESH_I/SMESH_MeshEditor_i.hxx, - SMESH_I/SMESH_Mesh_i.cxx, SMESH_I/SMESH_Mesh_i.hxx, - SMESH_I/SMESH_NumberOfSegments_i.cxx, - SMESH_I/SMESH_NumberOfSegments_i.hxx, - SMESH_I/SMESH_Quadrangle_2D_i.cxx, - SMESH_I/SMESH_Quadrangle_2D_i.hxx, - SMESH_I/SMESH_Regular_1D_i.cxx, SMESH_I/SMESH_Regular_1D_i.hxx, - SMESH_I/SMESH_subMesh_i.cxx, SMESH_I/SMESH_subMesh_i.hxx, - SMESH_I/SMESH_test.py, SMESH_I/SMESH_topo.cxx, - SMESH_I/SMESH_topo.hxx, SMESH_I/smeshpy.py, - SMESH_SWIG/Makefile.in, SMESH_SWIG/SMESH_fixation.py, - SMESH_SWIG/SMESH_mechanic.py, SMESH_SWIG/SMESH_test0.py, - SMESH_SWIG/SMESH_test1.py, SMESH_SWIG/SMESH_test2.py, - SMESH_SWIG/SMESH_test3.py, SMESH_SWIG/batchmode_smesh.py, - SMESH_SWIG/libSMESH_Swig.i: yfr : merge 1.2 - -2003-07-10 13:18 Yves Fricaud - - * src/SMESHGUI/: SMESHGUI.h, SMESHGUI_AddAlgorithmDlg.cxx, - SMESHGUI_AddAlgorithmDlg.h, SMESHGUI_AddEdgeDlg.cxx, - SMESHGUI_AddEdgeDlg.h, SMESHGUI_AddFaceDlg.cxx, - SMESHGUI_AddFaceDlg.h, SMESHGUI_AddHypothesisDlg.cxx, - SMESHGUI_AddHypothesisDlg.h, SMESHGUI_AddSubMeshDlg.cxx, - SMESHGUI_AddSubMeshDlg.h, SMESHGUI_AddVolumeDlg.cxx, - SMESHGUI_AddVolumeDlg.h, SMESHGUI_ComputeScalarValue.cxx, - SMESHGUI_ComputeScalarValue.h, SMESHGUI_DiagonalInversionDlg.cxx, - SMESHGUI_DiagonalInversionDlg.h, - SMESHGUI_EdgesConnectivityDlg.cxx, - SMESHGUI_EdgesConnectivityDlg.h, SMESHGUI_EditHypothesesDlg.cxx, - SMESHGUI_EditHypothesesDlg.h, SMESHGUI_EditScalarBarDlg.cxx, - SMESHGUI_EditScalarBarDlg.h, SMESHGUI_InitMeshDlg.cxx, - SMESHGUI_InitMeshDlg.h, SMESHGUI_LocalLengthDlg.cxx, - SMESHGUI_LocalLengthDlg.h, SMESHGUI_MaxElementAreaDlg.cxx, - SMESHGUI_MaxElementAreaDlg.h, SMESHGUI_MaxElementVolumeDlg.cxx, - SMESHGUI_MaxElementVolumeDlg.h, SMESHGUI_MeshInfosDlg.cxx, - SMESHGUI_MeshInfosDlg.h, SMESHGUI_MoveNodesDlg.cxx, - SMESHGUI_MoveNodesDlg.h, SMESHGUI_NbSegmentsDlg.cxx, - SMESHGUI_NbSegmentsDlg.h, SMESHGUI_NodesDlg.cxx, - SMESHGUI_NodesDlg.h, SMESHGUI_OrientationElementsDlg.cxx, - SMESHGUI_OrientationElementsDlg.h, - SMESHGUI_Preferences_ColorDlg.cxx, - SMESHGUI_Preferences_ColorDlg.h, - SMESHGUI_Preferences_ScalarBarDlg.cxx, - SMESHGUI_Preferences_ScalarBarDlg.h, - SMESHGUI_RemoveElementsDlg.cxx, SMESHGUI_RemoveElementsDlg.h, - SMESHGUI_RemoveNodesDlg.cxx, SMESHGUI_RemoveNodesDlg.h, - SMESHGUI_SpinBox.cxx, SMESHGUI_SpinBox.h, SMESHGUI_StudyAPI.cxx, - SMESHGUI_StudyAPI.h, SMESHGUI_Swig.cxx, SMESHGUI_Swig.hxx, - SMESHGUI_Swig.i, SMESHGUI_TransparencyDlg.cxx, - SMESHGUI_TransparencyDlg.h, SMESHGUI_aParameterDlg.cxx, - SMESHGUI_aParameterDlg.h: yfr : merge 1.2 - -2003-07-10 12:18 Yves Fricaud - - * src/SMESHGUI/: Makefile.in, SMESHGUI.cxx: yfr : Merge V1.2 - -2003-07-10 11:35 Yves Fricaud - - * src/SMESHFiltersSelection/Makefile.in: yfr : Merge with v1.2 - -2003-07-10 10:04 Yves Fricaud - - * src/: SMESHDS/Handle_SMESHDS_Command.hxx, - SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerMesh.hxx, - SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis.hxx, - SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh.hxx, - SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis.hxx, - SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh.hxx, - SMESHDS/Handle_SMESHDS_Document.hxx, - SMESHDS/Handle_SMESHDS_ListNodeOfListOfAsciiString.hxx, - SMESHDS/Handle_SMESHDS_ListNodeOfListOfCommand.hxx, - SMESHDS/Handle_SMESHDS_ListNodeOfListOfPtrHypothesis.hxx, - SMESHDS/Handle_SMESHDS_Mesh.hxx, - SMESHDS/Handle_SMESHDS_Script.hxx, - SMESHDS/Handle_SMESHDS_SubMesh.hxx, SMESHDS/Makefile.in, - SMESHDS/SMESHDS.cdl, SMESHDS/SMESHDS_Command.cdl, - SMESHDS/SMESHDS_Command.cxx, SMESHDS/SMESHDS_Command.hxx, - SMESHDS/SMESHDS_Command.ixx, SMESHDS/SMESHDS_Command.jxx, - SMESHDS/SMESHDS_CommandType.hxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerMesh.hxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerMesh_0.cxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerPtrHypothesis.hxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerSubMesh.hxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerSubMesh_0.cxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeListOfPtrHypothesis.hxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeListOfPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeSubMesh.hxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeSubMesh_0.cxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerMesh.hxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerMesh_0.cxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis.hxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh.hxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh_0.cxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis.hxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh.hxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh_0.cxx, - SMESHDS/SMESHDS_DataMapOfIntegerMesh.hxx, - SMESHDS/SMESHDS_DataMapOfIntegerMesh_0.cxx, - SMESHDS/SMESHDS_DataMapOfIntegerPtrHypothesis.hxx, - SMESHDS/SMESHDS_DataMapOfIntegerPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_DataMapOfIntegerSubMesh.hxx, - SMESHDS/SMESHDS_DataMapOfIntegerSubMesh_0.cxx, - SMESHDS/SMESHDS_DataMapOfShapeListOfPtrHypothesis.hxx, - SMESHDS/SMESHDS_DataMapOfShapeListOfPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_DataMapOfShapeSubMesh.hxx, - SMESHDS/SMESHDS_DataMapOfShapeSubMesh_0.cxx, - SMESHDS/SMESHDS_Document.cdl, SMESHDS/SMESHDS_Document.cxx, - SMESHDS/SMESHDS_Document.hxx, SMESHDS/SMESHDS_Document.ixx, - SMESHDS/SMESHDS_Document.jxx, SMESHDS/SMESHDS_Hypothesis.cxx, - SMESHDS/SMESHDS_Hypothesis.hxx, - SMESHDS/SMESHDS_ListIteratorOfListOfAsciiString.hxx, - SMESHDS/SMESHDS_ListIteratorOfListOfAsciiString_0.cxx, - SMESHDS/SMESHDS_ListIteratorOfListOfCommand.hxx, - SMESHDS/SMESHDS_ListIteratorOfListOfCommand_0.cxx, - SMESHDS/SMESHDS_ListIteratorOfListOfPtrHypothesis.hxx, - SMESHDS/SMESHDS_ListIteratorOfListOfPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_ListNodeOfListOfAsciiString.hxx, - SMESHDS/SMESHDS_ListNodeOfListOfAsciiString_0.cxx, - SMESHDS/SMESHDS_ListNodeOfListOfCommand.hxx, - SMESHDS/SMESHDS_ListNodeOfListOfCommand_0.cxx, - SMESHDS/SMESHDS_ListNodeOfListOfPtrHypothesis.hxx, - SMESHDS/SMESHDS_ListNodeOfListOfPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_ListOfAsciiString.hxx, - SMESHDS/SMESHDS_ListOfAsciiString_0.cxx, - SMESHDS/SMESHDS_ListOfCommand.hxx, - SMESHDS/SMESHDS_ListOfCommand_0.cxx, - SMESHDS/SMESHDS_ListOfPtrHypothesis.hxx, - SMESHDS/SMESHDS_ListOfPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_Mesh.cdl, SMESHDS/SMESHDS_Mesh.cxx, - SMESHDS/SMESHDS_Mesh.hxx, SMESHDS/SMESHDS_Mesh.ixx, - SMESHDS/SMESHDS_Mesh.jxx, SMESHDS/SMESHDS_PtrHypothesis.hxx, - SMESHDS/SMESHDS_Script.cdl, SMESHDS/SMESHDS_Script.cxx, - SMESHDS/SMESHDS_Script.hxx, SMESHDS/SMESHDS_Script.ixx, - SMESHDS/SMESHDS_Script.jxx, SMESHDS/SMESHDS_SubMesh.cdl, - SMESHDS/SMESHDS_SubMesh.cxx, SMESHDS/SMESHDS_SubMesh.hxx, - SMESHDS/SMESHDS_SubMesh.ixx, SMESHDS/SMESHDS_SubMesh.jxx, - SMESH/Makefile.in, SMESH/SMESH_1D_Algo.cxx, - SMESH/SMESH_1D_Algo.hxx, SMESH/SMESH_2D_Algo.cxx, - SMESH/SMESH_2D_Algo.hxx, SMESH/SMESH_3D_Algo.cxx, - SMESH/SMESH_3D_Algo.hxx, SMESH/SMESH_Algo.cxx, - SMESH/SMESH_Algo.hxx, SMESH/SMESH_Gen.cxx, SMESH/SMESH_Gen.hxx, - SMESH/SMESH_Hexa_3D.cxx, SMESH/SMESH_Hexa_3D.hxx, - SMESH/SMESH_Hypothesis.cxx, SMESH/SMESH_Hypothesis.hxx, - SMESH/SMESH_HypothesisCreator.hxx, - SMESH/SMESH_HypothesisFactory.cxx, - SMESH/SMESH_HypothesisFactory.hxx, - SMESH/SMESH_LengthFromEdges.cxx, SMESH/SMESH_LengthFromEdges.hxx, - SMESH/SMESH_LocalLength.cxx, SMESH/SMESH_LocalLength.hxx, - SMESH/SMESH_MEFISTO_2D.cxx, SMESH/SMESH_MEFISTO_2D.hxx, - SMESH/SMESH_MaxElementArea.cxx, SMESH/SMESH_MaxElementArea.hxx, - SMESH/SMESH_MaxElementVolume.cxx, - SMESH/SMESH_MaxElementVolume.hxx, SMESH/SMESH_Mesh.cxx, - SMESH/SMESH_Mesh.hxx, SMESH/SMESH_NumberOfSegments.cxx, - SMESH/SMESH_NumberOfSegments.hxx, SMESH/SMESH_Quadrangle_2D.cxx, - SMESH/SMESH_Quadrangle_2D.hxx, SMESH/SMESH_Regular_1D.cxx, - SMESH/SMESH_Regular_1D.hxx, SMESH/SMESH_subMesh.cxx, - SMESH/SMESH_subMesh.hxx: yfr : Merge with v1.2 - -2003-07-10 09:49 Yves Fricaud - - * src/SMDS/: Handle_SMDSControl_BoundaryEdges.hxx, - Handle_SMDSControl_BoundaryFaces.hxx, - Handle_SMDSControl_MeshBoundary.hxx, - Handle_SMDS_DataMapNodeOfDataMapOfIntegerMeshElement.hxx, - Handle_SMDS_DataMapNodeOfDataMapOfPntInteger.hxx, - Handle_SMDS_EdgePosition.hxx, Handle_SMDS_FacePosition.hxx, - Handle_SMDS_HSequenceOfMesh.hxx, - Handle_SMDS_ListNodeOfListOfMesh.hxx, - Handle_SMDS_ListNodeOfListOfMeshElement.hxx, - Handle_SMDS_ListNodeOfListOfMeshGroup.hxx, Handle_SMDS_Mesh.hxx, - Handle_SMDS_MeshEdge.hxx, Handle_SMDS_MeshElement.hxx, - Handle_SMDS_MeshElementIDFactory.hxx, Handle_SMDS_MeshFace.hxx, - Handle_SMDS_MeshGroup.hxx, Handle_SMDS_MeshHexahedron.hxx, - Handle_SMDS_MeshIDFactory.hxx, Handle_SMDS_MeshNode.hxx, - Handle_SMDS_MeshNodeIDFactory.hxx, Handle_SMDS_MeshObject.hxx, - Handle_SMDS_MeshPrism.hxx, Handle_SMDS_MeshPyramid.hxx, - Handle_SMDS_MeshQuadrangle.hxx, Handle_SMDS_MeshTetrahedron.hxx, - Handle_SMDS_MeshTriangle.hxx, Handle_SMDS_MeshVolume.hxx, - Handle_SMDS_Position.hxx, - Handle_SMDS_SequenceNodeOfSequenceOfMesh.hxx, - Handle_SMDS_SpacePosition.hxx, - Handle_SMDS_StdMapNodeOfExtendedMap.hxx, - Handle_SMDS_StdMapNodeOfExtendedOrientedMap.hxx, - Handle_SMDS_VertexPosition.hxx, Makefile.in, SMDS.cdl, - SMDSAbs.cdl, SMDSAbs_ElementType.hxx, SMDSControl.cdl, - SMDSControl.cxx, SMDSControl.hxx, SMDSControl.ixx, - SMDSControl.jxx, SMDSControl_BoundaryEdges.cdl, - SMDSControl_BoundaryEdges.cxx, SMDSControl_BoundaryEdges.hxx, - SMDSControl_BoundaryEdges.ixx, SMDSControl_BoundaryEdges.jxx, - SMDSControl_BoundaryFaces.cdl, SMDSControl_BoundaryFaces.cxx, - SMDSControl_BoundaryFaces.hxx, SMDSControl_BoundaryFaces.ixx, - SMDSControl_BoundaryFaces.jxx, SMDSControl_MeshBoundary.cdl, - SMDSControl_MeshBoundary.cxx, SMDSControl_MeshBoundary.hxx, - SMDSControl_MeshBoundary.ixx, SMDSControl_MeshBoundary.jxx, - SMDSEdit.cdl, SMDSEdit_Transform.cdl, SMDSEdit_Transform.cxx, - SMDSEdit_Transform.hxx, SMDSEdit_Transform.ixx, - SMDSEdit_Transform.jxx, SMDS_BasicMap.lxx, - SMDS_BasicMapIterator.lxx, - SMDS_DataMapIteratorOfDataMapOfIntegerMeshElement.hxx, - SMDS_DataMapIteratorOfDataMapOfIntegerMeshElement_0.cxx, - SMDS_DataMapIteratorOfDataMapOfPntInteger.hxx, - SMDS_DataMapIteratorOfDataMapOfPntInteger_0.cxx, - SMDS_DataMapNodeOfDataMapOfIntegerMeshElement.hxx, - SMDS_DataMapNodeOfDataMapOfIntegerMeshElement_0.cxx, - SMDS_DataMapNodeOfDataMapOfPntInteger.hxx, - SMDS_DataMapNodeOfDataMapOfPntInteger_0.cxx, - SMDS_DataMapOfIntegerMeshElement.hxx, - SMDS_DataMapOfIntegerMeshElement_0.cxx, - SMDS_DataMapOfPntInteger.hxx, SMDS_DataMapOfPntInteger_0.cxx, - SMDS_EdgePosition.cdl, SMDS_EdgePosition.cxx, - SMDS_EdgePosition.hxx, SMDS_EdgePosition.ixx, - SMDS_EdgePosition.jxx, SMDS_EdgePosition.lxx, - SMDS_ExtendedMap.hxx, SMDS_ExtendedMap_0.cxx, - SMDS_ExtendedOrientedMap.hxx, SMDS_ExtendedOrientedMap_0.cxx, - SMDS_FacePosition.cdl, SMDS_FacePosition.cxx, - SMDS_FacePosition.hxx, SMDS_FacePosition.ixx, - SMDS_FacePosition.jxx, SMDS_FacePosition.lxx, - SMDS_HSequenceOfMesh.hxx, SMDS_HSequenceOfMesh_0.cxx, - SMDS_ListIteratorOfListOfMesh.hxx, - SMDS_ListIteratorOfListOfMeshElement.hxx, - SMDS_ListIteratorOfListOfMeshElement_0.cxx, - SMDS_ListIteratorOfListOfMeshGroup.hxx, - SMDS_ListIteratorOfListOfMeshGroup_0.cxx, - SMDS_ListIteratorOfListOfMesh_0.cxx, - SMDS_ListNodeOfListOfMesh.hxx, - SMDS_ListNodeOfListOfMeshElement.hxx, - SMDS_ListNodeOfListOfMeshElement_0.cxx, - SMDS_ListNodeOfListOfMeshGroup.hxx, - SMDS_ListNodeOfListOfMeshGroup_0.cxx, - SMDS_ListNodeOfListOfMesh_0.cxx, SMDS_ListOfMesh.hxx, - SMDS_ListOfMeshElement.hxx, SMDS_ListOfMeshElement_0.cxx, - SMDS_ListOfMeshGroup.hxx, SMDS_ListOfMeshGroup_0.cxx, - SMDS_ListOfMesh_0.cxx, SMDS_MapIteratorOfExtendedMap.hxx, - SMDS_MapIteratorOfExtendedMap_0.cxx, - SMDS_MapIteratorOfExtendedOrientedMap.hxx, - SMDS_MapIteratorOfExtendedOrientedMap_0.cxx, SMDS_MapNode.lxx, - SMDS_MapOfMeshElement.cdl, SMDS_MapOfMeshElement.cxx, - SMDS_MapOfMeshElement.hxx, SMDS_MapOfMeshElement.ixx, - SMDS_MapOfMeshElement.jxx, SMDS_MapOfMeshElement.lxx, - SMDS_MapOfMeshOrientedElement.cdl, - SMDS_MapOfMeshOrientedElement.cxx, - SMDS_MapOfMeshOrientedElement.hxx, - SMDS_MapOfMeshOrientedElement.ixx, - SMDS_MapOfMeshOrientedElement.jxx, - SMDS_MapOfMeshOrientedElement.lxx, SMDS_Mesh.cdl, SMDS_Mesh.cxx, - SMDS_Mesh.hxx, SMDS_Mesh.ixx, SMDS_Mesh.jxx, SMDS_Mesh.lxx, - SMDS_MeshEdge.cdl, SMDS_MeshEdge.cxx, SMDS_MeshEdge.hxx, - SMDS_MeshEdge.ixx, SMDS_MeshEdge.jxx, SMDS_MeshEdge.lxx, - SMDS_MeshEdgesIterator.cdl, SMDS_MeshEdgesIterator.cxx, - SMDS_MeshEdgesIterator.hxx, SMDS_MeshEdgesIterator.ixx, - SMDS_MeshEdgesIterator.jxx, SMDS_MeshElement.cdl, - SMDS_MeshElement.cxx, SMDS_MeshElement.hxx, SMDS_MeshElement.ixx, - SMDS_MeshElement.jxx, SMDS_MeshElement.lxx, - SMDS_MeshElementIDFactory.cdl, SMDS_MeshElementIDFactory.cxx, - SMDS_MeshElementIDFactory.hxx, SMDS_MeshElementIDFactory.ixx, - SMDS_MeshElementIDFactory.jxx, SMDS_MeshElementIDFactory.lxx, - SMDS_MeshElementMapHasher.cdl, SMDS_MeshElementMapHasher.cxx, - SMDS_MeshElementMapHasher.hxx, SMDS_MeshElementMapHasher.ixx, - SMDS_MeshElementMapHasher.jxx, SMDS_MeshElementMapHasher.lxx, - SMDS_MeshElementsIterator.cdl, SMDS_MeshElementsIterator.cxx, - SMDS_MeshElementsIterator.hxx, SMDS_MeshElementsIterator.ixx, - SMDS_MeshElementsIterator.jxx, SMDS_MeshElementsIterator.lxx, - SMDS_MeshFace.cdl, SMDS_MeshFace.cxx, SMDS_MeshFace.hxx, - SMDS_MeshFace.ixx, SMDS_MeshFace.jxx, SMDS_MeshFace.lxx, - SMDS_MeshFacesIterator.cdl, SMDS_MeshFacesIterator.cxx, - SMDS_MeshFacesIterator.hxx, SMDS_MeshFacesIterator.ixx, - SMDS_MeshFacesIterator.jxx, SMDS_MeshGroup.cdl, - SMDS_MeshGroup.cxx, SMDS_MeshGroup.hxx, SMDS_MeshGroup.ixx, - SMDS_MeshGroup.jxx, SMDS_MeshGroup.lxx, SMDS_MeshHexahedron.cdl, - SMDS_MeshHexahedron.cxx, SMDS_MeshHexahedron.hxx, - SMDS_MeshHexahedron.ixx, SMDS_MeshHexahedron.jxx, - SMDS_MeshHexahedron.lxx, SMDS_MeshIDFactory.cdl, - SMDS_MeshIDFactory.cxx, SMDS_MeshIDFactory.hxx, - SMDS_MeshIDFactory.ixx, SMDS_MeshIDFactory.jxx, - SMDS_MeshIDFactory.lxx, SMDS_MeshNode.cdl, SMDS_MeshNode.cxx, - SMDS_MeshNode.hxx, SMDS_MeshNode.ixx, SMDS_MeshNode.jxx, - SMDS_MeshNode.lxx, SMDS_MeshNodeIDFactory.cdl, - SMDS_MeshNodeIDFactory.cxx, SMDS_MeshNodeIDFactory.hxx, - SMDS_MeshNodeIDFactory.ixx, SMDS_MeshNodeIDFactory.jxx, - SMDS_MeshNodeIDFactory.lxx, SMDS_MeshNodesIterator.cdl, - SMDS_MeshNodesIterator.cxx, SMDS_MeshNodesIterator.hxx, - SMDS_MeshNodesIterator.ixx, SMDS_MeshNodesIterator.jxx, - SMDS_MeshObject.cdl, SMDS_MeshObject.cxx, SMDS_MeshObject.hxx, - SMDS_MeshObject.ixx, SMDS_MeshObject.jxx, - SMDS_MeshOrientedElementMapHasher.cdl, - SMDS_MeshOrientedElementMapHasher.cxx, - SMDS_MeshOrientedElementMapHasher.hxx, - SMDS_MeshOrientedElementMapHasher.ixx, - SMDS_MeshOrientedElementMapHasher.jxx, - SMDS_MeshOrientedElementMapHasher.lxx, SMDS_MeshPrism.cdl, - SMDS_MeshPrism.cxx, SMDS_MeshPrism.hxx, SMDS_MeshPrism.ixx, - SMDS_MeshPrism.jxx, SMDS_MeshPrism.lxx, SMDS_MeshPyramid.cdl, - SMDS_MeshPyramid.cxx, SMDS_MeshPyramid.hxx, SMDS_MeshPyramid.ixx, - SMDS_MeshPyramid.jxx, SMDS_MeshPyramid.lxx, - SMDS_MeshQuadrangle.cdl, SMDS_MeshQuadrangle.cxx, - SMDS_MeshQuadrangle.hxx, SMDS_MeshQuadrangle.ixx, - SMDS_MeshQuadrangle.jxx, SMDS_MeshQuadrangle.lxx, - SMDS_MeshTetrahedron.cdl, SMDS_MeshTetrahedron.cxx, - SMDS_MeshTetrahedron.hxx, SMDS_MeshTetrahedron.ixx, - SMDS_MeshTetrahedron.jxx, SMDS_MeshTetrahedron.lxx, - SMDS_MeshTriangle.cdl, SMDS_MeshTriangle.cxx, - SMDS_MeshTriangle.hxx, SMDS_MeshTriangle.ixx, - SMDS_MeshTriangle.jxx, SMDS_MeshTriangle.lxx, - SMDS_MeshVolume.cdl, SMDS_MeshVolume.cxx, SMDS_MeshVolume.hxx, - SMDS_MeshVolume.ixx, SMDS_MeshVolume.jxx, SMDS_MeshVolume.lxx, - SMDS_MeshVolumesIterator.cdl, SMDS_MeshVolumesIterator.cxx, - SMDS_MeshVolumesIterator.hxx, SMDS_MeshVolumesIterator.ixx, - SMDS_MeshVolumesIterator.jxx, SMDS_PntHasher.cdl, - SMDS_PntHasher.cxx, SMDS_PntHasher.hxx, SMDS_PntHasher.ixx, - SMDS_PntHasher.jxx, SMDS_PntHasher.lxx, SMDS_Position.cdl, - SMDS_Position.cxx, SMDS_Position.hxx, SMDS_Position.ixx, - SMDS_Position.jxx, SMDS_Position.lxx, - SMDS_SequenceNodeOfSequenceOfMesh.hxx, - SMDS_SequenceNodeOfSequenceOfMesh_0.cxx, SMDS_SequenceOfMesh.hxx, - SMDS_SequenceOfMesh_0.cxx, SMDS_SpacePosition.cdl, - SMDS_SpacePosition.cxx, SMDS_SpacePosition.hxx, - SMDS_SpacePosition.ixx, SMDS_SpacePosition.jxx, - SMDS_SpacePosition.lxx, SMDS_StdMapNode.lxx, - SMDS_StdMapNodeOfExtendedMap.hxx, - SMDS_StdMapNodeOfExtendedMap_0.cxx, - SMDS_StdMapNodeOfExtendedOrientedMap.hxx, - SMDS_StdMapNodeOfExtendedOrientedMap_0.cxx, - SMDS_TypeOfPosition.hxx, SMDS_VertexPosition.cdl, - SMDS_VertexPosition.cxx, SMDS_VertexPosition.hxx, - SMDS_VertexPosition.ixx, SMDS_VertexPosition.jxx: yfr : Merge - with v1.2 - -2003-07-10 09:32 Yves Fricaud - - * src/: DriverDAT/Makefile.in, DriverUNV/Makefile.in, - MEFISTO2/Makefile.in, OBJECT/Makefile.in, OBJECT/SMESH_Actor.cxx, - OBJECT/SMESH_Actor.h, OBJECT/SMESH_Grid.cxx, OBJECT/SMESH_Grid.h: - yfr : Merge with v1.2 - -2003-07-10 09:14 Yves Fricaud - - * src/Makefile.in: yfr : Merge with v1.2 - -2003-07-10 09:00 Yves Fricaud - - * src/: Driver/Document_Reader.cxx, Driver/Document_Reader.h, - Driver/Document_Writer.cxx, Driver/Document_Writer.h, - Driver/Driver_dl.cxx, Driver/Makefile.in, Driver/Mesh_Reader.cxx, - Driver/Mesh_Reader.h, Driver/Mesh_Writer.cxx, - Driver/Mesh_Writer.h, Driver/SMESHDriver.cxx, - Driver/SMESHDriver.h, DriverDAT/DriverDAT_R_SMDS_Mesh.cxx, - DriverDAT/DriverDAT_R_SMDS_Mesh.h, - DriverDAT/DriverDAT_R_SMESHDS_Document.cxx, - DriverDAT/DriverDAT_R_SMESHDS_Document.h, - DriverDAT/DriverDAT_R_SMESHDS_Mesh.cxx, - DriverDAT/DriverDAT_R_SMESHDS_Mesh.h, - DriverDAT/DriverDAT_W_SMDS_Mesh.cxx, - DriverDAT/DriverDAT_W_SMDS_Mesh.h, - DriverDAT/DriverDAT_W_SMESHDS_Document.cxx, - DriverDAT/DriverDAT_W_SMESHDS_Document.h, - DriverDAT/DriverDAT_W_SMESHDS_Mesh.cxx, - DriverDAT/DriverDAT_W_SMESHDS_Mesh.h, DriverDAT/Makefile.in, - DriverMED/DriverMED_R_SMDS_Mesh.cxx, - DriverMED/DriverMED_R_SMESHDS_Document.cxx, - DriverMED/DriverMED_R_SMESHDS_Mesh.cxx, - DriverMED/DriverMED_W_SMDS_Mesh.cxx, - DriverMED/DriverMED_W_SMESHDS_Document.cxx, - DriverMED/DriverMED_W_SMESHDS_Mesh.cxx, DriverMED/Makefile.in, - MEFISTO2/Makefile.in, MEFISTO2/Rn.h, MEFISTO2/aptrte.cxx, - MEFISTO2/aptrte.h: yfr : Merge with v1.2 - -2003-07-10 08:12 Yves Fricaud - - * src/SMESHGUI/SMESHGUI_icons.po: Initial revision - -2003-07-10 08:09 tag V1_2 - -2003-07-10 08:09 Yves Fricaud - - * src/: DriverMED/DriverMED_R_SMESHDS_Document.h, - DriverMED/DriverMED_W_SMESHDS_Document.h, - SMESHGUI/SMESHGUI_msg_en.po: sources v1.2 - -2003-06-29 13:17 Paul Rascle - - * src/SMESH_SWIG/: Makefile.in, SMESH_shared_modules.py: PR: needed - by merge C. CAREMOLI branch CCAR_br1 - -2003-06-12 10:37 Paul Rascle - - * Makefile.in: PR: avoids unnecessary compilation after - regeneration of SALOMEconfig.h, with gcc3.2 - -2003-06-12 10:34 Paul Rascle - - * src/SMESH_SWIG/SMESH_fixation.py: PR: bug on subshapes not sorted - -2003-05-28 16:42 Nicolas Rejneri - - * adm_local/unix/make_commence.in: NRI : Add path fro GEOM and MED - idls. - -2003-05-28 16:26 Nicolas Rejneri - - * idl/Makefile.in, adm_local/unix/make_commence.in, - adm_local/unix/make_omniorb.in, build_configure, - configure.in.base: NRI : Update IDL Dependencies. - -2003-05-28 07:20 Nicolas Rejneri - - * bin/VERSION, Makefile.in: NRI : Add MODULE version info. - -2003-05-28 07:16 Nicolas Rejneri - - * configure.in.base, adm_local/unix/config_files/check_Med.m4: NRI - : Add Check of MED. - -2003-05-26 14:21 Nicolas Rejneri - - * adm_local/unix/config_files/check_Geom.m4, configure.in.base: NRI - : Add GEOM check local. - -2003-05-26 14:00 Nicolas Rejneri - - * build_configure: NRI : updated aclocal. - -2003-05-23 11:40 tag Start-v1_1a - -2003-05-23 11:40 Nicolas Rejneri - - * src/SMESHGUI/: SMESHGUI_AddAlgorithmDlg.cxx, - SMESHGUI_AddEdgeDlg.cxx, SMESHGUI_AddFaceDlg.cxx, - SMESHGUI_AddHypothesisDlg.cxx, SMESHGUI_AddSubMeshDlg.cxx, - SMESHGUI_AddVolumeDlg.cxx, SMESHGUI_DiagonalInversionDlg.cxx, - SMESHGUI_EdgesConnectivityDlg.cxx, - SMESHGUI_EditHypothesesDlg.cxx, SMESHGUI_InitMeshDlg.cxx, - SMESHGUI_LocalLengthDlg.cxx, SMESHGUI_MaxElementAreaDlg.cxx, - SMESHGUI_MaxElementVolumeDlg.cxx, SMESHGUI_MoveNodesDlg.cxx, - SMESHGUI_NbSegmentsDlg.cxx, SMESHGUI_NodesDlg.cxx, - SMESHGUI_OrientationElementsDlg.cxx, - SMESHGUI_RemoveElementsDlg.cxx, SMESHGUI_RemoveNodesDlg.cxx: NRI - : loadPixmap( "SMESH", ...) instead of "SMESHGUI". - -2003-05-22 09:52 Nicolas Rejneri - - * doc/: Makefile.in, html/Makefile.in, html/INPUT/doxyfile, - html/INPUT/sources/Application-About.png, - html/INPUT/sources/Application-About1.jpg, - html/INPUT/sources/application.gif, - html/INPUT/sources/application.jpg, - html/INPUT/sources/bg_salomepro.gif, - html/INPUT/sources/doxygen.css, html/INPUT/sources/logocorp.gif, - html/INPUT/sources/myheader.html, html/INPUT/sources/occ.gif, - html/INPUT/HTML/SMESH_BasicHypothesis.html, - html/INPUT/HTML/SMESH_Gen.html, - html/INPUT/HTML/SMESH_Hypothesis.html, - html/INPUT/HTML/SMESH_Mesh.html: NRI : Add documentation. - -2003-05-22 09:51 Nicolas Rejneri - - * configure.in.base: NRI : Add check HTML generators. - -2003-05-20 07:17 Nicolas Rejneri - - * src/: SMESH_I/SMESH_Gen_i.cxx, SMESH_I/SMESH_test.py, - SMESH_I/smeshpy.py, SMESH_SWIG/SMESH_fixation.py, - SMESH_SWIG/SMESH_mechanic.py, SMESH_SWIG/SMESH_test0.py, - SMESH_SWIG/SMESH_test1.py, SMESH_SWIG/SMESH_test3.py, - SMESHGUI/SMESHGUI.cxx: NRI : Use GEOM instead of Geometry. - -2003-05-20 07:16 Nicolas Rejneri - - * resources/SMESHCatalog.xml: NRI : Add component-username tag. - -2003-05-20 07:15 Nicolas Rejneri - - * Makefile.in: NRI : Add SMESHCatalog.xml - -2003-05-19 14:50 Nicolas Rejneri - - * src/SMESHGUI/SMESHGUI_StudyAPI.cxx: NRI : Add QAD_Desktop.h. - -2003-05-19 14:49 Nicolas Rejneri - - * src/SMESHGUI/Makefile.in: NRI : Add GEOM includes and libs. - -2003-05-19 14:38 Nicolas Rejneri - - * src/SMESHFiltersSelection/Makefile.in: NRI : Add KERNEL includes. - -2003-05-19 14:34 Nicolas Rejneri - - * src/SMESH_I/Makefile.in: NRI : Change lGeometryClient by - lGEOMClient. - -2003-05-19 14:32 Nicolas Rejneri - - * src/SMESH_I/Makefile.in: NRI : Add GEOM includes and libs. - -2003-05-19 14:11 Nicolas Rejneri - - * src/: SMESH/Makefile.in, SMESHDS/Makefile.in: NRI : Add KERNEL - includes and libs. - -2003-05-19 14:09 Nicolas Rejneri - - * src/: DriverDAT/Makefile.in, DriverMED/Makefile.in, - DriverUNV/Makefile.in: NRI : Add KERNEL includes. - -2003-05-19 14:08 Nicolas Rejneri - - * idl/Makefile.in: NRI : Add MED.idl - -2003-05-19 14:01 Nicolas Rejneri - - * src/: SMESH_SWIG/Makefile.in, SMESH_SWIG/SMESH_fixation.py, - SMESH_SWIG/SMESH_mechanic.py, SMESH_SWIG/SMESH_test0.py, - SMESH_SWIG/SMESH_test1.py, SMESH_SWIG/SMESH_test2.py, - SMESH_SWIG/SMESH_test3.py, SMESH_SWIG/batchmode_smesh.py, - SMESH_SWIG/libSMESH_Swig.i, Makefile.in, - SMESHFiltersSelection/Handle_SMESH_TypeFilter.hxx, - SMESHFiltersSelection/Makefile.in, - SMESHFiltersSelection/SMESH_Type.h, - SMESHFiltersSelection/SMESH_TypeFilter.cxx, - SMESHFiltersSelection/SMESH_TypeFilter.hxx, - SMESHFiltersSelection/SMESH_TypeFilter.ixx, - SMESHFiltersSelection/SMESH_TypeFilter.jxx, MEFISTO2/Makefile.in, - MEFISTO2/Rn.h, MEFISTO2/aptrte.cxx, MEFISTO2/aptrte.h, - MEFISTO2/areteideale.f, MEFISTO2/trte.f, OBJECT/Makefile.in, - OBJECT/SMESH_Actor.cxx, OBJECT/SMESH_Actor.h, - OBJECT/SMESH_Grid.cxx, OBJECT/SMESH_Grid.h, - Driver/Document_Reader.cxx, Driver/Document_Reader.h, - Driver/Document_Writer.cxx, Driver/Document_Writer.h, - Driver/Driver_dl.cxx, Driver/Makefile.in, Driver/Mesh_Reader.cxx, - Driver/Mesh_Reader.h, Driver/Mesh_Writer.cxx, - Driver/Mesh_Writer.h, Driver/SMESHDriver.cxx, - Driver/SMESHDriver.h: NRI : First integration. - -2003-05-19 13:48 Nicolas Rejneri - - * src/: SMDS/Handle_SMDSControl_BoundaryEdges.hxx, - SMDS/Handle_SMDSControl_BoundaryFaces.hxx, - SMDS/Handle_SMDSControl_MeshBoundary.hxx, - SMDS/Handle_SMDS_DataMapNodeOfDataMapOfIntegerMeshElement.hxx, - SMDS/Handle_SMDS_DataMapNodeOfDataMapOfPntInteger.hxx, - SMDS/Handle_SMDS_EdgePosition.hxx, - SMDS/Handle_SMDS_FacePosition.hxx, - SMDS/Handle_SMDS_HSequenceOfMesh.hxx, - SMDS/Handle_SMDS_ListNodeOfListOfMesh.hxx, - SMDS/Handle_SMDS_ListNodeOfListOfMeshElement.hxx, - SMDS/Handle_SMDS_ListNodeOfListOfMeshGroup.hxx, - SMDS/Handle_SMDS_Mesh.hxx, SMDS/Handle_SMDS_MeshEdge.hxx, - SMDS/Handle_SMDS_MeshElement.hxx, - SMDS/Handle_SMDS_MeshElementIDFactory.hxx, - SMDS/Handle_SMDS_MeshFace.hxx, SMDS/Handle_SMDS_MeshGroup.hxx, - SMDS/Handle_SMDS_MeshHexahedron.hxx, - SMDS/Handle_SMDS_MeshIDFactory.hxx, - SMDS/Handle_SMDS_MeshNode.hxx, - SMDS/Handle_SMDS_MeshNodeIDFactory.hxx, - SMDS/Handle_SMDS_MeshObject.hxx, SMDS/Handle_SMDS_MeshPrism.hxx, - SMDS/Handle_SMDS_MeshPyramid.hxx, - SMDS/Handle_SMDS_MeshQuadrangle.hxx, - SMDS/Handle_SMDS_MeshTetrahedron.hxx, - SMDS/Handle_SMDS_MeshTriangle.hxx, - SMDS/Handle_SMDS_MeshVolume.hxx, SMDS/Handle_SMDS_Position.hxx, - SMDS/Handle_SMDS_SequenceNodeOfSequenceOfMesh.hxx, - SMDS/Handle_SMDS_SpacePosition.hxx, - SMDS/Handle_SMDS_StdMapNodeOfExtendedMap.hxx, - SMDS/Handle_SMDS_StdMapNodeOfExtendedOrientedMap.hxx, - SMDS/Handle_SMDS_VertexPosition.hxx, SMDS/Makefile.in, - SMDS/SMDS.cdl, SMDS/SMDSAbs.cdl, SMDS/SMDSAbs_ElementType.hxx, - SMDS/SMDSControl.cdl, SMDS/SMDSControl.cxx, SMDS/SMDSControl.hxx, - SMDS/SMDSControl.ixx, SMDS/SMDSControl.jxx, - SMDS/SMDSControl_BoundaryEdges.cdl, - SMDS/SMDSControl_BoundaryEdges.cxx, - SMDS/SMDSControl_BoundaryEdges.hxx, - SMDS/SMDSControl_BoundaryEdges.ixx, - SMDS/SMDSControl_BoundaryEdges.jxx, - SMDS/SMDSControl_BoundaryFaces.cdl, - SMDS/SMDSControl_BoundaryFaces.cxx, - SMDS/SMDSControl_BoundaryFaces.hxx, - SMDS/SMDSControl_BoundaryFaces.ixx, - SMDS/SMDSControl_BoundaryFaces.jxx, - SMDS/SMDSControl_MeshBoundary.cdl, - SMDS/SMDSControl_MeshBoundary.cxx, - SMDS/SMDSControl_MeshBoundary.hxx, - SMDS/SMDSControl_MeshBoundary.ixx, - SMDS/SMDSControl_MeshBoundary.jxx, SMDS/SMDSEdit.cdl, - SMDS/SMDSEdit_Transform.cdl, SMDS/SMDSEdit_Transform.cxx, - SMDS/SMDSEdit_Transform.hxx, SMDS/SMDSEdit_Transform.ixx, - SMDS/SMDSEdit_Transform.jxx, SMDS/SMDS_BasicMap.lxx, - SMDS/SMDS_BasicMapIterator.lxx, - SMDS/SMDS_DataMapIteratorOfDataMapOfIntegerMeshElement.hxx, - SMDS/SMDS_DataMapIteratorOfDataMapOfIntegerMeshElement_0.cxx, - SMDS/SMDS_DataMapIteratorOfDataMapOfPntInteger.hxx, - SMDS/SMDS_DataMapIteratorOfDataMapOfPntInteger_0.cxx, - SMDS/SMDS_DataMapNodeOfDataMapOfIntegerMeshElement.hxx, - SMDS/SMDS_DataMapNodeOfDataMapOfIntegerMeshElement_0.cxx, - SMDS/SMDS_DataMapNodeOfDataMapOfPntInteger.hxx, - SMDS/SMDS_DataMapNodeOfDataMapOfPntInteger_0.cxx, - SMDS/SMDS_DataMapOfIntegerMeshElement.hxx, - SMDS/SMDS_DataMapOfIntegerMeshElement_0.cxx, - SMDS/SMDS_DataMapOfPntInteger.hxx, - SMDS/SMDS_DataMapOfPntInteger_0.cxx, SMDS/SMDS_EdgePosition.cdl, - SMDS/SMDS_EdgePosition.cxx, SMDS/SMDS_EdgePosition.hxx, - SMDS/SMDS_EdgePosition.ixx, SMDS/SMDS_EdgePosition.jxx, - SMDS/SMDS_EdgePosition.lxx, SMDS/SMDS_ExtendedMap.hxx, - SMDS/SMDS_ExtendedMap_0.cxx, SMDS/SMDS_ExtendedOrientedMap.hxx, - SMDS/SMDS_ExtendedOrientedMap_0.cxx, SMDS/SMDS_FacePosition.cdl, - SMDS/SMDS_FacePosition.cxx, SMDS/SMDS_FacePosition.hxx, - SMDS/SMDS_FacePosition.ixx, SMDS/SMDS_FacePosition.jxx, - SMDS/SMDS_FacePosition.lxx, SMDS/SMDS_HSequenceOfMesh.hxx, - SMDS/SMDS_HSequenceOfMesh_0.cxx, - SMDS/SMDS_ListIteratorOfListOfMesh.hxx, - SMDS/SMDS_ListIteratorOfListOfMeshElement.hxx, - SMDS/SMDS_ListIteratorOfListOfMeshElement_0.cxx, - SMDS/SMDS_ListIteratorOfListOfMeshGroup.hxx, - SMDS/SMDS_ListIteratorOfListOfMeshGroup_0.cxx, - SMDS/SMDS_ListIteratorOfListOfMesh_0.cxx, - SMDS/SMDS_ListNodeOfListOfMesh.hxx, - SMDS/SMDS_ListNodeOfListOfMeshElement.hxx, - SMDS/SMDS_ListNodeOfListOfMeshElement_0.cxx, - SMDS/SMDS_ListNodeOfListOfMeshGroup.hxx, - SMDS/SMDS_ListNodeOfListOfMeshGroup_0.cxx, - SMDS/SMDS_ListNodeOfListOfMesh_0.cxx, SMDS/SMDS_ListOfMesh.hxx, - SMDS/SMDS_ListOfMeshElement.hxx, - SMDS/SMDS_ListOfMeshElement_0.cxx, SMDS/SMDS_ListOfMeshGroup.hxx, - SMDS/SMDS_ListOfMeshGroup_0.cxx, SMDS/SMDS_ListOfMesh_0.cxx, - SMDS/SMDS_Map.gxx, SMDS/SMDS_MapHasher.gxx, - SMDS/SMDS_MapIterator.gxx, - SMDS/SMDS_MapIteratorOfExtendedMap.hxx, - SMDS/SMDS_MapIteratorOfExtendedMap_0.cxx, - SMDS/SMDS_MapIteratorOfExtendedOrientedMap.hxx, - SMDS/SMDS_MapIteratorOfExtendedOrientedMap_0.cxx, - SMDS/SMDS_MapNode.lxx, SMDS/SMDS_MapOfMeshElement.cdl, - SMDS/SMDS_MapOfMeshElement.cxx, SMDS/SMDS_MapOfMeshElement.hxx, - SMDS/SMDS_MapOfMeshElement.ixx, SMDS/SMDS_MapOfMeshElement.jxx, - SMDS/SMDS_MapOfMeshElement.lxx, - SMDS/SMDS_MapOfMeshOrientedElement.cdl, - SMDS/SMDS_MapOfMeshOrientedElement.cxx, - SMDS/SMDS_MapOfMeshOrientedElement.hxx, - SMDS/SMDS_MapOfMeshOrientedElement.ixx, - SMDS/SMDS_MapOfMeshOrientedElement.jxx, - SMDS/SMDS_MapOfMeshOrientedElement.lxx, SMDS/SMDS_Mesh.cdl, - SMDS/SMDS_Mesh.cxx, SMDS/SMDS_Mesh.hxx, SMDS/SMDS_Mesh.ixx, - SMDS/SMDS_Mesh.jxx, SMDS/SMDS_Mesh.lxx, SMDS/SMDS_MeshEdge.cdl, - SMDS/SMDS_MeshEdge.cxx, SMDS/SMDS_MeshEdge.hxx, - SMDS/SMDS_MeshEdge.ixx, SMDS/SMDS_MeshEdge.jxx, - SMDS/SMDS_MeshEdge.lxx, SMDS/SMDS_MeshEdgesIterator.cdl, - SMDS/SMDS_MeshEdgesIterator.cxx, SMDS/SMDS_MeshEdgesIterator.hxx, - SMDS/SMDS_MeshEdgesIterator.ixx, SMDS/SMDS_MeshEdgesIterator.jxx, - SMDS/SMDS_MeshElement.cdl, SMDS/SMDS_MeshElement.cxx, - SMDS/SMDS_MeshElement.hxx, SMDS/SMDS_MeshElement.ixx, - SMDS/SMDS_MeshElement.jxx, SMDS/SMDS_MeshElement.lxx, - SMDS/SMDS_MeshElementIDFactory.cdl, - SMDS/SMDS_MeshElementIDFactory.cxx, - SMDS/SMDS_MeshElementIDFactory.hxx, - SMDS/SMDS_MeshElementIDFactory.ixx, - SMDS/SMDS_MeshElementIDFactory.jxx, - SMDS/SMDS_MeshElementIDFactory.lxx, - SMDS/SMDS_MeshElementMapHasher.cdl, - SMDS/SMDS_MeshElementMapHasher.cxx, - SMDS/SMDS_MeshElementMapHasher.hxx, - SMDS/SMDS_MeshElementMapHasher.ixx, - SMDS/SMDS_MeshElementMapHasher.jxx, - SMDS/SMDS_MeshElementMapHasher.lxx, - SMDS/SMDS_MeshElementsIterator.cdl, - SMDS/SMDS_MeshElementsIterator.cxx, - SMDS/SMDS_MeshElementsIterator.hxx, - SMDS/SMDS_MeshElementsIterator.ixx, - SMDS/SMDS_MeshElementsIterator.jxx, - SMDS/SMDS_MeshElementsIterator.lxx, SMDS/SMDS_MeshFace.cdl, - SMDS/SMDS_MeshFace.cxx, SMDS/SMDS_MeshFace.hxx, - SMDS/SMDS_MeshFace.ixx, SMDS/SMDS_MeshFace.jxx, - SMDS/SMDS_MeshFace.lxx, SMDS/SMDS_MeshFacesIterator.cdl, - SMDS/SMDS_MeshFacesIterator.cxx, SMDS/SMDS_MeshFacesIterator.hxx, - SMDS/SMDS_MeshFacesIterator.ixx, SMDS/SMDS_MeshFacesIterator.jxx, - SMDS/SMDS_MeshGroup.cdl, SMDS/SMDS_MeshGroup.cxx, - SMDS/SMDS_MeshGroup.hxx, SMDS/SMDS_MeshGroup.ixx, - SMDS/SMDS_MeshGroup.jxx, SMDS/SMDS_MeshGroup.lxx, - SMDS/SMDS_MeshHexahedron.cdl, SMDS/SMDS_MeshHexahedron.cxx, - SMDS/SMDS_MeshHexahedron.hxx, SMDS/SMDS_MeshHexahedron.ixx, - SMDS/SMDS_MeshHexahedron.jxx, SMDS/SMDS_MeshHexahedron.lxx, - SMDS/SMDS_MeshIDFactory.cdl, SMDS/SMDS_MeshIDFactory.cxx, - SMDS/SMDS_MeshIDFactory.ixx, SMDS/SMDS_MeshIDFactory.jxx, - SMDS/SMDS_MeshIDFactory.lxx, SMDS/SMDS_MeshNode.cdl, - SMDS/SMDS_MeshNode.cxx, SMDS/SMDS_MeshNode.hxx, - SMDS/SMDS_MeshNode.ixx, SMDS/SMDS_MeshNode.jxx, - SMDS/SMDS_MeshNode.lxx, SMDS/SMDS_MeshNodeIDFactory.cdl, - SMDS/SMDS_MeshNodeIDFactory.cxx, SMDS/SMDS_MeshNodeIDFactory.hxx, - SMDS/SMDS_MeshNodeIDFactory.ixx, SMDS/SMDS_MeshNodeIDFactory.jxx, - SMDS/SMDS_MeshNodeIDFactory.lxx, SMDS/SMDS_MeshNodesIterator.cdl, - SMDS/SMDS_MeshNodesIterator.cxx, SMDS/SMDS_MeshNodesIterator.hxx, - SMDS/SMDS_MeshNodesIterator.ixx, SMDS/SMDS_MeshNodesIterator.jxx, - SMDS/SMDS_MeshObject.cdl, SMDS/SMDS_MeshObject.cxx, - SMDS/SMDS_MeshObject.hxx, SMDS/SMDS_MeshObject.ixx, - SMDS/SMDS_MeshObject.jxx, - SMDS/SMDS_MeshOrientedElementMapHasher.cdl, - SMDS/SMDS_MeshOrientedElementMapHasher.cxx, - SMDS/SMDS_MeshOrientedElementMapHasher.hxx, - SMDS/SMDS_MeshOrientedElementMapHasher.ixx, - SMDS/SMDS_MeshOrientedElementMapHasher.jxx, - SMDS/SMDS_MeshOrientedElementMapHasher.lxx, - SMDS/SMDS_MeshPrism.cdl, SMDS/SMDS_MeshPrism.cxx, - SMDS/SMDS_MeshPrism.hxx, SMDS/SMDS_MeshPrism.ixx, - SMDS/SMDS_MeshPrism.jxx, SMDS/SMDS_MeshPrism.lxx, - SMDS/SMDS_MeshPyramid.cdl, SMDS/SMDS_MeshPyramid.cxx, - SMDS/SMDS_MeshPyramid.hxx, SMDS/SMDS_MeshPyramid.ixx, - SMDS/SMDS_MeshPyramid.jxx, SMDS/SMDS_MeshPyramid.lxx, - SMDS/SMDS_MeshQuadrangle.cdl, SMDS/SMDS_MeshQuadrangle.cxx, - SMDS/SMDS_MeshQuadrangle.hxx, SMDS/SMDS_MeshQuadrangle.ixx, - SMDS/SMDS_MeshQuadrangle.jxx, SMDS/SMDS_MeshQuadrangle.lxx, - SMDS/SMDS_MeshTetrahedron.cdl, SMDS/SMDS_MeshTetrahedron.cxx, - SMDS/SMDS_MeshTetrahedron.hxx, SMDS/SMDS_MeshTetrahedron.ixx, - SMDS/SMDS_MeshTetrahedron.jxx, SMDS/SMDS_MeshTetrahedron.lxx, - SMDS/SMDS_MeshTriangle.cdl, SMDS/SMDS_MeshTriangle.cxx, - SMDS/SMDS_MeshTriangle.hxx, SMDS/SMDS_MeshTriangle.ixx, - SMDS/SMDS_MeshTriangle.jxx, SMDS/SMDS_MeshTriangle.lxx, - SMDS/SMDS_MeshVolume.cdl, SMDS/SMDS_MeshVolume.cxx, - SMDS/SMDS_MeshVolume.hxx, SMDS/SMDS_MeshVolume.ixx, - SMDS/SMDS_MeshVolume.jxx, SMDS/SMDS_MeshVolume.lxx, - SMDS/SMDS_MeshVolumesIterator.cdl, - SMDS/SMDS_MeshVolumesIterator.cxx, - SMDS/SMDS_MeshVolumesIterator.hxx, - SMDS/SMDS_MeshVolumesIterator.ixx, - SMDS/SMDS_MeshVolumesIterator.jxx, SMDS/SMDS_PntHasher.cdl, - SMDS/SMDS_PntHasher.cxx, SMDS/SMDS_PntHasher.hxx, - SMDS/SMDS_PntHasher.ixx, SMDS/SMDS_PntHasher.jxx, - SMDS/SMDS_PntHasher.lxx, SMDS/SMDS_Position.cdl, - SMDS/SMDS_Position.cxx, SMDS/SMDS_Position.hxx, - SMDS/SMDS_Position.ixx, SMDS/SMDS_Position.jxx, - SMDS/SMDS_Position.lxx, - SMDS/SMDS_SequenceNodeOfSequenceOfMesh.hxx, - SMDS/SMDS_SequenceNodeOfSequenceOfMesh_0.cxx, - SMDS/SMDS_SequenceOfMesh.hxx, SMDS/SMDS_SequenceOfMesh_0.cxx, - SMDS/SMDS_SpacePosition.cdl, SMDS/SMDS_SpacePosition.cxx, - SMDS/SMDS_SpacePosition.hxx, SMDS/SMDS_SpacePosition.ixx, - SMDS/SMDS_SpacePosition.jxx, SMDS/SMDS_SpacePosition.lxx, - SMDS/SMDS_StdMapNode.gxx, SMDS/SMDS_StdMapNode.lxx, - SMDS/SMDS_StdMapNodeOfExtendedMap.hxx, - SMDS/SMDS_StdMapNodeOfExtendedMap_0.cxx, - SMDS/SMDS_StdMapNodeOfExtendedOrientedMap.hxx, - SMDS/SMDS_StdMapNodeOfExtendedOrientedMap_0.cxx, - SMDS/SMDS_TypeOfPosition.hxx, SMDS/SMDS_VertexPosition.cdl, - SMDS/SMDS_VertexPosition.cxx, SMDS/SMDS_VertexPosition.hxx, - SMDS/SMDS_VertexPosition.ixx, SMDS/SMDS_VertexPosition.jxx, - SMDS/SMDS_MeshIDFactory.hxx, SMESH_I/Makefile.in, - SMESH_I/SMESH_1D_Algo_i.cxx, SMESH_I/SMESH_1D_Algo_i.hxx, - SMESH_I/SMESH_2D_Algo_i.cxx, SMESH_I/SMESH_2D_Algo_i.hxx, - SMESH_I/SMESH_3D_Algo_i.cxx, SMESH_I/SMESH_3D_Algo_i.hxx, - SMESH_I/SMESH_Algo_i.cxx, SMESH_I/SMESH_Algo_i.hxx, - SMESH_I/SMESH_Gen_i.cxx, SMESH_I/SMESH_Gen_i.hxx, - SMESH_I/SMESH_Hexa_3D_i.cxx, SMESH_I/SMESH_Hexa_3D_i.hxx, - SMESH_I/SMESH_HypothesisFactory_i.cxx, - SMESH_I/SMESH_HypothesisFactory_i.hxx, - SMESH_I/SMESH_Hypothesis_i.cxx, SMESH_I/SMESH_Hypothesis_i.hxx, - SMESH_I/SMESH_LocalLength_i.cxx, SMESH_I/SMESH_LocalLength_i.hxx, - SMESH_I/SMESH_MEDFamily_i.cxx, SMESH_I/SMESH_MEDFamily_i.hxx, - SMESH_I/SMESH_MEDMesh_i.cxx, SMESH_I/SMESH_MEDMesh_i.hxx, - SMESH_I/SMESH_MEDSupport_i.cxx, SMESH_I/SMESH_MEDSupport_i.hxx, - SMESH_I/SMESH_MEFISTO_2D_i.cxx, SMESH_I/SMESH_MEFISTO_2D_i.hxx, - SMESH_I/SMESH_MaxElementArea_i.cxx, - SMESH_I/SMESH_MaxElementArea_i.hxx, - SMESH_I/SMESH_MaxElementVolume_i.cxx, - SMESH_I/SMESH_MaxElementVolume_i.hxx, - SMESH_I/SMESH_MeshEditor_i.cxx, SMESH_I/SMESH_MeshEditor_i.hxx, - SMESH_I/SMESH_Mesh_i.cxx, SMESH_I/SMESH_Mesh_i.hxx, - SMESH_I/SMESH_NumberOfSegments_i.cxx, - SMESH_I/SMESH_NumberOfSegments_i.hxx, - SMESH_I/SMESH_Quadrangle_2D_i.cxx, - SMESH_I/SMESH_Quadrangle_2D_i.hxx, - SMESH_I/SMESH_Regular_1D_i.cxx, SMESH_I/SMESH_Regular_1D_i.hxx, - SMESH_I/SMESH_subMesh_i.cxx, SMESH_I/SMESH_subMesh_i.hxx, - SMESH_I/SMESH_test.py, SMESH_I/SMESH_topo.cxx, - SMESH_I/SMESH_topo.hxx, SMESH_I/smeshpy.py, SMESH_I/sstream, - SMESHGUI/Makefile.in, SMESHGUI/SMESHGUI.cxx, SMESHGUI/SMESHGUI.h, - SMESHGUI/SMESHGUI_AddAlgorithmDlg.cxx, - SMESHGUI/SMESHGUI_AddAlgorithmDlg.h, - SMESHGUI/SMESHGUI_AddEdgeDlg.cxx, SMESHGUI/SMESHGUI_AddEdgeDlg.h, - SMESHGUI/SMESHGUI_AddFaceDlg.cxx, SMESHGUI/SMESHGUI_AddFaceDlg.h, - SMESHGUI/SMESHGUI_AddHypothesisDlg.cxx, - SMESHGUI/SMESHGUI_AddHypothesisDlg.h, - SMESHGUI/SMESHGUI_AddSubMeshDlg.cxx, - SMESHGUI/SMESHGUI_AddSubMeshDlg.h, - SMESHGUI/SMESHGUI_AddVolumeDlg.cxx, - SMESHGUI/SMESHGUI_AddVolumeDlg.h, - SMESHGUI/SMESHGUI_ComputeScalarValue.cxx, - SMESHGUI/SMESHGUI_ComputeScalarValue.h, - SMESHGUI/SMESHGUI_DiagonalInversionDlg.cxx, - SMESHGUI/SMESHGUI_DiagonalInversionDlg.h, - SMESHGUI/SMESHGUI_EdgesConnectivityDlg.cxx, - SMESHGUI/SMESHGUI_EdgesConnectivityDlg.h, - SMESHGUI/SMESHGUI_EditHypothesesDlg.cxx, - SMESHGUI/SMESHGUI_EditHypothesesDlg.h, - SMESHGUI/SMESHGUI_EditScalarBarDlg.cxx, - SMESHGUI/SMESHGUI_EditScalarBarDlg.h, - SMESHGUI/SMESHGUI_InitMeshDlg.cxx, - SMESHGUI/SMESHGUI_InitMeshDlg.h, - SMESHGUI/SMESHGUI_LocalLengthDlg.cxx, - SMESHGUI/SMESHGUI_LocalLengthDlg.h, - SMESHGUI/SMESHGUI_MaxElementAreaDlg.cxx, - SMESHGUI/SMESHGUI_MaxElementAreaDlg.h, - SMESHGUI/SMESHGUI_MaxElementVolumeDlg.cxx, - SMESHGUI/SMESHGUI_MaxElementVolumeDlg.h, - SMESHGUI/SMESHGUI_MeshInfosDlg.cxx, - SMESHGUI/SMESHGUI_MeshInfosDlg.h, - SMESHGUI/SMESHGUI_MoveNodesDlg.cxx, - SMESHGUI/SMESHGUI_MoveNodesDlg.h, - SMESHGUI/SMESHGUI_NbSegmentsDlg.cxx, - SMESHGUI/SMESHGUI_NbSegmentsDlg.h, - SMESHGUI/SMESHGUI_NodesDlg.cxx, SMESHGUI/SMESHGUI_NodesDlg.h, - SMESHGUI/SMESHGUI_OrientationElementsDlg.cxx, - SMESHGUI/SMESHGUI_OrientationElementsDlg.h, - SMESHGUI/SMESHGUI_Preferences_ColorDlg.cxx, - SMESHGUI/SMESHGUI_Preferences_ColorDlg.h, - SMESHGUI/SMESHGUI_Preferences_ScalarBarDlg.cxx, - SMESHGUI/SMESHGUI_Preferences_ScalarBarDlg.h, - SMESHGUI/SMESHGUI_RemoveElementsDlg.cxx, - SMESHGUI/SMESHGUI_RemoveElementsDlg.h, - SMESHGUI/SMESHGUI_RemoveNodesDlg.cxx, - SMESHGUI/SMESHGUI_RemoveNodesDlg.h, - SMESHGUI/SMESHGUI_SpinBox.cxx, SMESHGUI/SMESHGUI_SpinBox.h, - SMESHGUI/SMESHGUI_StudyAPI.cxx, SMESHGUI/SMESHGUI_StudyAPI.h, - SMESHGUI/SMESHGUI_Swig.cxx, SMESHGUI/SMESHGUI_Swig.hxx, - SMESHGUI/SMESHGUI_Swig.i, SMESHGUI/SMESHGUI_TransparencyDlg.cxx, - SMESHGUI/SMESHGUI_TransparencyDlg.h, - SMESHGUI/SMESHGUI_aParameterDlg.cxx, - SMESHGUI/SMESHGUI_aParameterDlg.h, SMESHGUI/SMESH_icons.po, - SMESHGUI/SMESH_msg_en.po: NRI : First integration. - -2003-05-19 13:18 Nicolas Rejneri - - * src/: SMESH/Makefile.in, SMESH/SMESH_1D_Algo.cxx, - SMESH/SMESH_1D_Algo.hxx, SMESH/SMESH_2D_Algo.cxx, - SMESH/SMESH_2D_Algo.hxx, SMESH/SMESH_3D_Algo.cxx, - SMESH/SMESH_3D_Algo.hxx, SMESH/SMESH_Algo.cxx, - SMESH/SMESH_Algo.hxx, SMESH/SMESH_Gen.cxx, SMESH/SMESH_Gen.hxx, - SMESH/SMESH_Hexa_3D.cxx, SMESH/SMESH_Hexa_3D.hxx, - SMESH/SMESH_Hypothesis.cxx, SMESH/SMESH_Hypothesis.hxx, - SMESH/SMESH_HypothesisCreator.hxx, - SMESH/SMESH_HypothesisFactory.cxx, - SMESH/SMESH_HypothesisFactory.hxx, - SMESH/SMESH_LengthFromEdges.cxx, SMESH/SMESH_LengthFromEdges.hxx, - SMESH/SMESH_LocalLength.cxx, SMESH/SMESH_LocalLength.hxx, - SMESH/SMESH_MEFISTO_2D.cxx, SMESH/SMESH_MEFISTO_2D.hxx, - SMESH/SMESH_MaxElementArea.cxx, SMESH/SMESH_MaxElementArea.hxx, - SMESH/SMESH_MaxElementVolume.cxx, - SMESH/SMESH_MaxElementVolume.hxx, SMESH/SMESH_Mesh.cxx, - SMESH/SMESH_Mesh.hxx, SMESH/SMESH_NumberOfSegments.cxx, - SMESH/SMESH_NumberOfSegments.hxx, SMESH/SMESH_Quadrangle_2D.cxx, - SMESH/SMESH_Quadrangle_2D.hxx, SMESH/SMESH_Regular_1D.cxx, - SMESH/SMESH_Regular_1D.hxx, SMESH/SMESH_subMesh.cxx, - SMESH/SMESH_subMesh.hxx, SMESHDS/Handle_SMESHDS_Command.hxx, - SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerMesh.hxx, - SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis.hxx, - SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh.hxx, - SMESHDS/Handle_SMESHDS_ListNodeOfListOfCommand.hxx, - SMESHDS/Handle_SMESHDS_Mesh.hxx, - SMESHDS/Handle_SMESHDS_Script.hxx, SMESHDS/Makefile.in, - SMESHDS/SMESHDS_Command.cdl, SMESHDS/SMESHDS_Command.cxx, - SMESHDS/SMESHDS_Command.ixx, SMESHDS/SMESHDS_Command.jxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerMesh_0.cxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerSubMesh.hxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerSubMesh_0.cxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeListOfPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeSubMesh.hxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerMesh.hxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh.hxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerSubMesh_0.cxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis.hxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh.hxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh_0.cxx, - SMESHDS/SMESHDS_DataMapOfIntegerMesh.hxx, - SMESHDS/SMESHDS_DataMapOfIntegerMesh_0.cxx, - SMESHDS/SMESHDS_DataMapOfIntegerPtrHypothesis.hxx, - SMESHDS/SMESHDS_DataMapOfIntegerPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_DataMapOfIntegerSubMesh.hxx, - SMESHDS/SMESHDS_DataMapOfIntegerSubMesh_0.cxx, - SMESHDS/SMESHDS_DataMapOfShapeSubMesh.hxx, - SMESHDS/SMESHDS_DataMapOfShapeSubMesh_0.cxx, - SMESHDS/SMESHDS_Document.cdl, SMESHDS/SMESHDS_Document.hxx, - SMESHDS/SMESHDS_Document.ixx, SMESHDS/SMESHDS_Hypothesis.hxx, - SMESHDS/SMESHDS_ListIteratorOfListOfAsciiString_0.cxx, - SMESHDS/SMESHDS_ListIteratorOfListOfCommand.hxx, - SMESHDS/SMESHDS_ListIteratorOfListOfCommand_0.cxx, - SMESHDS/SMESHDS_ListIteratorOfListOfPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_ListNodeOfListOfAsciiString.hxx, - SMESHDS/SMESHDS_ListNodeOfListOfAsciiString_0.cxx, - SMESHDS/SMESHDS_ListNodeOfListOfCommand.hxx, - SMESHDS/SMESHDS_ListNodeOfListOfCommand_0.cxx, - SMESHDS/SMESHDS_ListNodeOfListOfPtrHypothesis.hxx, - SMESHDS/SMESHDS_ListOfCommand.hxx, - SMESHDS/SMESHDS_ListOfPtrHypothesis.hxx, - SMESHDS/SMESHDS_ListOfPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_Mesh.cdl, SMESHDS/SMESHDS_Mesh.hxx, - SMESHDS/SMESHDS_Script.cdl, SMESHDS/SMESHDS_Script.cxx, - SMESHDS/SMESHDS_Script.hxx, SMESHDS/SMESHDS_Script.ixx, - SMESHDS/SMESHDS_Script.jxx, SMESHDS/SMESHDS_SubMesh.cdl, - SMESHDS/SMESHDS_SubMesh.cxx, SMESHDS/SMESHDS_SubMesh.hxx, - SMESHDS/SMESHDS_SubMesh.ixx, SMESHDS/SMESHDS_SubMesh.jxx, - SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfShapeListOfPtrHypothesis.hxx, - SMESHDS/Handle_SMESHDS_DataMapNodeOfDataMapOfShapeSubMesh.hxx, - SMESHDS/Handle_SMESHDS_Document.hxx, - SMESHDS/Handle_SMESHDS_ListNodeOfListOfAsciiString.hxx, - SMESHDS/Handle_SMESHDS_ListNodeOfListOfPtrHypothesis.hxx, - SMESHDS/Handle_SMESHDS_SubMesh.hxx, SMESHDS/SMESHDS.cdl, - SMESHDS/SMESHDS_Command.hxx, SMESHDS/SMESHDS_CommandType.hxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerMesh.hxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfIntegerPtrHypothesis.hxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeListOfPtrHypothesis.hxx, - SMESHDS/SMESHDS_DataMapIteratorOfDataMapOfShapeSubMesh_0.cxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerMesh_0.cxx, - SMESHDS/SMESHDS_DataMapNodeOfDataMapOfIntegerPtrHypothesis.hxx, - SMESHDS/SMESHDS_DataMapOfShapeListOfPtrHypothesis.hxx, - SMESHDS/SMESHDS_DataMapOfShapeListOfPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_Document.cxx, SMESHDS/SMESHDS_Document.jxx, - SMESHDS/SMESHDS_Hypothesis.cxx, - SMESHDS/SMESHDS_ListIteratorOfListOfAsciiString.hxx, - SMESHDS/SMESHDS_ListIteratorOfListOfPtrHypothesis.hxx, - SMESHDS/SMESHDS_ListNodeOfListOfPtrHypothesis_0.cxx, - SMESHDS/SMESHDS_ListOfAsciiString.hxx, - SMESHDS/SMESHDS_ListOfAsciiString_0.cxx, - SMESHDS/SMESHDS_ListOfCommand_0.cxx, SMESHDS/SMESHDS_Mesh.cxx, - SMESHDS/SMESHDS_Mesh.ixx, SMESHDS/SMESHDS_Mesh.jxx, - SMESHDS/SMESHDS_PtrHypothesis.hxx: NRI : First integration. - -2003-05-19 13:03 Nicolas Rejneri - - * Makefile.in, build_configure, configure.in.base, - resources/ModuleMesh.png, resources/SMESHCatalog.xml, - resources/SMESH_en.xml, resources/SMESH_fr.xml, - resources/delete.png, resources/mesh.png, - resources/mesh_add_sub.png, resources/mesh_algo_hexa.png, - resources/mesh_algo_mefisto.png, resources/mesh_algo_quad.png, - resources/mesh_algo_regular.png, resources/mesh_angle.png, - resources/mesh_area.png, resources/mesh_aspect.png, - resources/mesh_compute.png, resources/mesh_connectivity.png, - resources/mesh_diagonal.png, resources/mesh_edit.png, - resources/mesh_hexa.png, resources/mesh_hexa_n.png, - resources/mesh_hypo_area.png, resources/mesh_hypo_length.png, - resources/mesh_hypo_segment.png, resources/mesh_hypo_volume.png, - resources/mesh_info.png, resources/mesh_init.png, - resources/mesh_length.png, resources/mesh_line.png, - resources/mesh_line_n.png, resources/mesh_move_node.png, - resources/mesh_orientation.png, resources/mesh_pyramid.png, - resources/mesh_pyramid_n.png, resources/mesh_quad.png, - resources/mesh_quad_n.png, resources/mesh_rem_element.png, - resources/mesh_rem_node.png, resources/mesh_set_algo.png, - resources/mesh_set_hypo.png, resources/mesh_shading.png, - resources/mesh_shrink.png, resources/mesh_skew.png, - resources/mesh_taper.png, resources/mesh_tetra.png, - resources/mesh_tetra_n.png, resources/mesh_tree_algo.png, - resources/mesh_tree_algo_hexa.png, - resources/mesh_tree_algo_mefisto.png, - resources/mesh_tree_algo_quad.png, - resources/mesh_tree_algo_regular.png, - resources/mesh_tree_hypo.png, resources/mesh_tree_hypo_area.png, - resources/mesh_tree_hypo_length.png, - resources/mesh_tree_hypo_segment.png, - resources/mesh_tree_hypo_volume.png, - resources/mesh_tree_mesh.png, resources/mesh_tree_mesh_warn.png, - resources/mesh_triangle.png, resources/mesh_triangle_n.png, - resources/mesh_update.png, resources/mesh_vertex.png, - resources/mesh_vertex_n.png, resources/mesh_wireframe.png, - resources/mesh_wrap.png, resources/select1.png, idl/Makefile.in, - idl/SMESH_BasicHypothesis.idl, idl/SMESH_Gen.idl, - idl/SMESH_Hypothesis.idl, idl/SMESH_Mesh.idl, - src/DriverDAT/DriverDAT_R_SMDS_Mesh.cxx, - src/DriverDAT/DriverDAT_R_SMDS_Mesh.h, - src/DriverDAT/DriverDAT_R_SMESHDS_Document.cxx, - src/DriverDAT/DriverDAT_R_SMESHDS_Document.h, - src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.cxx, - src/DriverDAT/DriverDAT_R_SMESHDS_Mesh.h, - src/DriverDAT/DriverDAT_W_SMDS_Mesh.cxx, - src/DriverDAT/DriverDAT_W_SMDS_Mesh.h, - src/DriverDAT/DriverDAT_W_SMESHDS_Document.cxx, - src/DriverDAT/DriverDAT_W_SMESHDS_Document.h, - src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.cxx, - src/DriverDAT/DriverDAT_W_SMESHDS_Mesh.h, - src/DriverDAT/Makefile.in, - src/DriverMED/DriverMED_R_SMDS_Mesh.cxx, - src/DriverMED/DriverMED_R_SMESHDS_Document.cxx, - src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx, - src/DriverMED/DriverMED_W_SMDS_Mesh.cxx, - src/DriverMED/DriverMED_W_SMESHDS_Document.cxx, - src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx, - src/DriverMED/Makefile.in, - src/DriverUNV/DriverUNV_R_SMDS_Mesh.cxx, - src/DriverUNV/DriverUNV_R_SMDS_Mesh.h, - src/DriverUNV/DriverUNV_R_SMESHDS_Document.cxx, - src/DriverUNV/DriverUNV_R_SMESHDS_Document.h, - src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.cxx, - src/DriverUNV/DriverUNV_R_SMESHDS_Mesh.h, - src/DriverUNV/DriverUNV_W_SMDS_Mesh.cxx, - src/DriverUNV/DriverUNV_W_SMDS_Mesh.h, - src/DriverUNV/DriverUNV_W_SMESHDS_Document.cxx, - src/DriverUNV/DriverUNV_W_SMESHDS_Document.h, - src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.cxx, - src/DriverUNV/DriverUNV_W_SMESHDS_Mesh.h, - src/DriverUNV/Makefile.in: NRI : First integration. - -2003-03-07 14:55 tag V1 - -2003-03-07 14:55 cvsadmin - - * src/DriverMED/: DriverMED_R_SMESHDS_Document.h, - DriverMED_W_SMESHDS_Document.h: - Initialisation module SMESH_SRC de la base SMESH - -2003-03-07 14:55 cvsadmin - - * src/DriverMED/: DriverMED_R_SMDS_Mesh.cxx, - DriverMED_R_SMDS_Mesh.h, DriverMED_R_SMESHDS_Document.cxx, - DriverMED_R_SMESHDS_Mesh.cxx, DriverMED_R_SMESHDS_Mesh.h, - DriverMED_W_SMDS_Mesh.cxx, DriverMED_W_SMDS_Mesh.h, - DriverMED_W_SMESHDS_Document.cxx, DriverMED_W_SMESHDS_Mesh.cxx, - DriverMED_W_SMESHDS_Mesh.h, Makefile.in: Initial revision - diff --git a/doc/salome/examples/creating_meshes_ex03.py b/doc/salome/examples/creating_meshes_ex03.py index 8687b8971..30d263caa 100644 --- a/doc/salome/examples/creating_meshes_ex03.py +++ b/doc/salome/examples/creating_meshes_ex03.py @@ -42,7 +42,7 @@ Nb_Segments_4 = Regular_1D_3.NumberOfSegments(12) MEFISTO_2D_3 = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO,geom=Face_3) SubMesh_3 = MEFISTO_2D_3.GetSubMesh() -# check exisiting sub-mesh priority order +# check existing sub-mesh priority order [ [ SubMesh_1, SubMesh_3, SubMesh_2 ] ] = Mesh_1.GetMeshOrder() isDone = Mesh_1.Compute() print "Nb elements at initial order of sub-meshes:", Mesh_1.NbElements() diff --git a/doc/salome/examples/filters_ex01.py b/doc/salome/examples/filters_ex01.py index 812e94288..9ee7ce852 100644 --- a/doc/salome/examples/filters_ex01.py +++ b/doc/salome/examples/filters_ex01.py @@ -15,7 +15,7 @@ ids = filter.GetIDs() print "Number of faces with aspect ratio > 1.5:", len(ids) # copy the faces with aspect ratio > 1.5 to another mesh; -# this demostrates that a filter can be used where usually a group or sub-mesh is acceptable +# this demonstrates that a filter can be used where usually a group or sub-mesh is acceptable filter.SetMesh( mesh.GetMesh() ) # - actually non necessary as mesh is set at filter creation mesh2 = smesh.CopyMesh( filter, "AR > 1.5" ) print "Number of copied faces with aspect ratio > 1.5:", mesh2.NbFaces() diff --git a/doc/salome/gui/SMESH/input/smesh_migration.doc b/doc/salome/gui/SMESH/input/smesh_migration.doc index f869fd16d..71c18b1e0 100644 --- a/doc/salome/gui/SMESH/input/smesh_migration.doc +++ b/doc/salome/gui/SMESH/input/smesh_migration.doc @@ -1,6 +1,6 @@ /*! -\page smesh_migration_page Modifing Mesh Python scripts from SALOME 6 and before +\page smesh_migration_page Modifying Mesh Python scripts from SALOME 6 and before \n In SALOME 7.2, the Python interface for %Mesh has been slightly modified to offer new functionality: diff --git a/idl/SMESH_BasicHypothesis.idl b/idl/SMESH_BasicHypothesis.idl index 565d189ef..e3510b109 100644 --- a/idl/SMESH_BasicHypothesis.idl +++ b/idl/SMESH_BasicHypothesis.idl @@ -128,7 +128,7 @@ module StdMeshers }; /*! - * Common inteface of 1D hypotheses that can be reversed + * Common interface of 1D hypotheses that can be reversed */ interface Reversible1D { diff --git a/idl/SMESH_Gen.idl b/idl/SMESH_Gen.idl index 03ae8e0f8..dd0866f8a 100644 --- a/idl/SMESH_Gen.idl +++ b/idl/SMESH_Gen.idl @@ -76,7 +76,7 @@ module SMESH const long Tag_LastGroup = 16; /*! - * Hypothesis definintion error + * Hypothesis definition error */ struct AlgoStateError { @@ -343,7 +343,7 @@ module SMESH raises ( SALOME::SALOME_Exception ); /*! - * Return errors of hypotheses definintion + * Return errors of hypotheses definition * algo_error_array is empty if everything is OK */ algo_error_array GetAlgoState( in SMESH_Mesh theMesh, diff --git a/idl/SMESH_MeshEditor.idl b/idl/SMESH_MeshEditor.idl index 9d568ff16..9e40dcb58 100644 --- a/idl/SMESH_MeshEditor.idl +++ b/idl/SMESH_MeshEditor.idl @@ -318,7 +318,7 @@ module SMESH * \param IDsOfElements Ids of triangles to be fused. * \param theCriterion Is used to choose a neighbour to fuse with. * \param theMaxAngle Is a max angle between element normals at which fusion - * is still performed; theMaxAngle is mesured in radians. + * is still performed; theMaxAngle is measured in radians. * \return \c true in case of success, FALSE otherwise. */ boolean TriToQuad (in long_array IDsOfElements, @@ -356,7 +356,7 @@ module SMESH /*! * \brief Split quadrangles into triangles. - * \param theElems The faces to be splitted. + * \param theElems The faces to be split. * \param the13Diag Is used to choose a diagonal for splitting. * \return TRUE in case of success, FALSE otherwise. */ @@ -372,7 +372,7 @@ module SMESH /*! * Find better splitting of the given quadrangle. - * \param IDOfQuad ID of the quadrangle to be splitted. + * \param IDOfQuad ID of the quadrangle to be split. * \param Criterion A criterion to choose a diagonal for splitting. * \return 1 if 1-3 diagonal is better, 2 if 2-4 * diagonal is better, 0 if error occurs. diff --git a/src/Controls/SMESH_Controls.cxx b/src/Controls/SMESH_Controls.cxx index f86b56387..b1279a659 100644 --- a/src/Controls/SMESH_Controls.cxx +++ b/src/Controls/SMESH_Controls.cxx @@ -1279,7 +1279,7 @@ double AspectRatio3D::GetValue( const TSequenceOfXYZ& P ) } // switch(nbNodes) if ( nbNodes > 4 ) { - // avaluate aspect ratio of quadranle faces + // evaluate aspect ratio of quadrangle faces AspectRatio aspect2D; SMDS_VolumeTool::VolumeType type = SMDS_VolumeTool::GetType( nbNodes ); int nbFaces = SMDS_VolumeTool::NbFaces( type ); @@ -1288,7 +1288,7 @@ double AspectRatio3D::GetValue( const TSequenceOfXYZ& P ) if ( SMDS_VolumeTool::NbFaceNodes( type, i ) != 4 ) continue; const int* pInd = SMDS_VolumeTool::GetFaceNodesIndices( type, i, true ); - for ( int p = 0; p < 4; ++p ) // loop on nodes of a quadranle face + for ( int p = 0; p < 4; ++p ) // loop on nodes of a quadrangle face points( p + 1 ) = P( pInd[ p ] + 1 ); aQuality = std::max( aQuality, aspect2D.GetValue( points )); } diff --git a/src/Driver/Driver_Mesh.cxx b/src/Driver/Driver_Mesh.cxx index 024a0b836..38cdcc778 100644 --- a/src/Driver/Driver_Mesh.cxx +++ b/src/Driver/Driver_Mesh.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH Driver : implementaion of driver for reading and writing +// SMESH Driver : implementation of driver for reading and writing // File : Mesh_Reader.cxx // Module : SMESH // diff --git a/src/Driver/Driver_Mesh.h b/src/Driver/Driver_Mesh.h index 8bcd157cc..d36833640 100644 --- a/src/Driver/Driver_Mesh.h +++ b/src/Driver/Driver_Mesh.h @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH Driver : implementaion of driver for reading and writing +// SMESH Driver : implementation of driver for reading and writing // File : Mesh_Reader.h // Module : SMESH // diff --git a/src/DriverMED/DriverMED.hxx b/src/DriverMED/DriverMED.hxx index 08c4d848d..ff0e0f4ec 100644 --- a/src/DriverMED/DriverMED.hxx +++ b/src/DriverMED/DriverMED.hxx @@ -32,7 +32,7 @@ typedef boost::shared_ptr DriverMED_FamilyPtr; namespace DriverMED { - // Implemetation is in DriverMED_W_Field.cxx + // Implementation is in DriverMED_W_Field.cxx /* * Returns MED element geom type (MED::EGeometrieElement) by SMDS type diff --git a/src/DriverMED/DriverMED_W_Field.cxx b/src/DriverMED/DriverMED_W_Field.cxx index b012325bc..57e8edf19 100644 --- a/src/DriverMED/DriverMED_W_Field.cxx +++ b/src/DriverMED/DriverMED_W_Field.cxx @@ -358,7 +358,7 @@ Driver_Mesh::Status DriverMED_W_Field::Perform() return DRS_OK; } -namespace DriverMED // Implemetation of fuctions declared in DriverMED.hxx +namespace DriverMED // Implementation of functions declared in DriverMED.hxx { //================================================================================ /*! diff --git a/src/MEDWrapper/Base/MED_Common.hxx b/src/MEDWrapper/Base/MED_Common.hxx index 00eb32bdf..623cc0e3f 100644 --- a/src/MEDWrapper/Base/MED_Common.hxx +++ b/src/MEDWrapper/Base/MED_Common.hxx @@ -44,7 +44,7 @@ #endif namespace MED{ - // enum EVersion sould be synchronized with enum MED_VERSION in SMESH_Mesh.idl (.hh) + // enum EVersion should be synchronized with enum MED_VERSION in SMESH_Mesh.idl (.hh) // i.e. same positive values! enum EVersion {eVUnknown = -1, eV2_1, eV2_2, eLATEST, eMINOR_0, eMINOR_1, eMINOR_2, eMINOR_3, eMINOR_4, eMINOR_5, eMINOR_6, eMINOR_7, eMINOR_8, eMINOR_9}; diff --git a/src/OBJECT/SMESH_ExtractGeometry.cxx b/src/OBJECT/SMESH_ExtractGeometry.cxx index 21b47e65a..25b10cedc 100644 --- a/src/OBJECT/SMESH_ExtractGeometry.cxx +++ b/src/OBJECT/SMESH_ExtractGeometry.cxx @@ -80,7 +80,7 @@ int SMESH_ExtractGeometry::RequestData(vtkInformation *vtkNotUsed(request), vtkInformation *inInfo = inputVector[0]->GetInformationObject(0); vtkInformation *outInfo = outputVector->GetInformationObject(0); - // get the input and ouptut + // get the input and output vtkDataSet *input = vtkDataSet::SafeDownCast(inInfo->Get(vtkDataObject::DATA_OBJECT())); vtkUnstructuredGrid *output = diff --git a/src/OBJECT/SMESH_FaceOrientationFilter.cxx b/src/OBJECT/SMESH_FaceOrientationFilter.cxx index 3060141c2..9f01a561f 100644 --- a/src/OBJECT/SMESH_FaceOrientationFilter.cxx +++ b/src/OBJECT/SMESH_FaceOrientationFilter.cxx @@ -242,7 +242,7 @@ int SMESH_FaceOrientationFilter::RequestData( vtkInformation *inInfo = inputVector[0]->GetInformationObject(0); vtkInformation *outInfo = outputVector->GetInformationObject(0); - // get the input and ouptut + // get the input and output vtkDataSet *input = vtkDataSet::SafeDownCast( inInfo->Get(vtkDataObject::DATA_OBJECT())); vtkPolyData *output = vtkPolyData::SafeDownCast( diff --git a/src/SMDS/SMDSAbs_ElementType.hxx b/src/SMDS/SMDSAbs_ElementType.hxx index 491f4f068..816d1f5ac 100644 --- a/src/SMDS/SMDSAbs_ElementType.hxx +++ b/src/SMDS/SMDSAbs_ElementType.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDSAbs_ElementType.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_BallElement.cxx b/src/SMDS/SMDS_BallElement.cxx index 8cf426a91..fd3859681 100644 --- a/src/SMDS/SMDS_BallElement.cxx +++ b/src/SMDS/SMDS_BallElement.cxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // Module : SMESH // File : SMDS_BallElement.cxx // Author : Edward AGAPOV (eap) diff --git a/src/SMDS/SMDS_BallElement.hxx b/src/SMDS/SMDS_BallElement.hxx index 6f6ad13c6..c62034de7 100644 --- a/src/SMDS/SMDS_BallElement.hxx +++ b/src/SMDS/SMDS_BallElement.hxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_BallElement.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_EdgePosition.cxx b/src/SMDS/SMDS_EdgePosition.cxx index 91c96fce7..9ac728d64 100644 --- a/src/SMDS/SMDS_EdgePosition.cxx +++ b/src/SMDS/SMDS_EdgePosition.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_EdgePosition.cxx // Author : Jean-Michel BOULCOURT // Module : SMESH diff --git a/src/SMDS/SMDS_EdgePosition.hxx b/src/SMDS/SMDS_EdgePosition.hxx index 47093a426..f0870e970 100644 --- a/src/SMDS/SMDS_EdgePosition.hxx +++ b/src/SMDS/SMDS_EdgePosition.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_EdgePosition.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_ElemIterator.hxx b/src/SMDS/SMDS_ElemIterator.hxx index 25bd0aafc..a90df4766 100755 --- a/src/SMDS/SMDS_ElemIterator.hxx +++ b/src/SMDS/SMDS_ElemIterator.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshElement.hxx // Module : SMESH // Created: 12.01.05 18:02:52 diff --git a/src/SMDS/SMDS_FaceOfEdges.cxx b/src/SMDS/SMDS_FaceOfEdges.cxx index 2b239c85a..67ff4f6d1 100644 --- a/src/SMDS/SMDS_FaceOfEdges.cxx +++ b/src/SMDS/SMDS_FaceOfEdges.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // #ifdef _MSC_VER #pragma warning(disable:4786) diff --git a/src/SMDS/SMDS_FaceOfNodes.cxx b/src/SMDS/SMDS_FaceOfNodes.cxx index 4d24ec05d..dfd3b7385 100644 --- a/src/SMDS/SMDS_FaceOfNodes.cxx +++ b/src/SMDS/SMDS_FaceOfNodes.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // #ifdef _MSC_VER #pragma warning(disable:4786) diff --git a/src/SMDS/SMDS_FaceOfNodes.hxx b/src/SMDS/SMDS_FaceOfNodes.hxx index 9a08f2748..fec0b0999 100644 --- a/src/SMDS/SMDS_FaceOfNodes.hxx +++ b/src/SMDS/SMDS_FaceOfNodes.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // #ifndef _SMDS_FaceOfNodes_HeaderFile #define _SMDS_FaceOfNodes_HeaderFile diff --git a/src/SMDS/SMDS_FacePosition.cxx b/src/SMDS/SMDS_FacePosition.cxx index b0c25049f..ae12dc313 100644 --- a/src/SMDS/SMDS_FacePosition.cxx +++ b/src/SMDS/SMDS_FacePosition.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_FacePosition.cxx // Author : Jean-Michel BOULCOURT // Module : SMESH diff --git a/src/SMDS/SMDS_FacePosition.hxx b/src/SMDS/SMDS_FacePosition.hxx index 81ecb4870..45015887d 100644 --- a/src/SMDS/SMDS_FacePosition.hxx +++ b/src/SMDS/SMDS_FacePosition.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_FacePosition.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_Iterator.hxx b/src/SMDS/SMDS_Iterator.hxx index fab164267..f20d7062e 100644 --- a/src/SMDS/SMDS_Iterator.hxx +++ b/src/SMDS/SMDS_Iterator.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // #ifndef _SMDS_Iterator_HeaderFile #define _SMDS_Iterator_HeaderFile diff --git a/src/SMDS/SMDS_IteratorOfElements.cxx b/src/SMDS/SMDS_IteratorOfElements.cxx index 050eb506f..3d125fcfb 100644 --- a/src/SMDS/SMDS_IteratorOfElements.cxx +++ b/src/SMDS/SMDS_IteratorOfElements.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // #ifdef _MSC_VER #pragma warning(disable:4786) diff --git a/src/SMDS/SMDS_IteratorOfElements.hxx b/src/SMDS/SMDS_IteratorOfElements.hxx index 07b4b0b38..f2d73d8c7 100644 --- a/src/SMDS/SMDS_IteratorOfElements.hxx +++ b/src/SMDS/SMDS_IteratorOfElements.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // #include "SMESH_SMDS.hxx" diff --git a/src/SMDS/SMDS_IteratorOnIterators.hxx b/src/SMDS/SMDS_IteratorOnIterators.hxx index 9e1a1f40c..96072ab0e 100644 --- a/src/SMDS/SMDS_IteratorOnIterators.hxx +++ b/src/SMDS/SMDS_IteratorOnIterators.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_IteratorOnIterators.hxx // Author : Edward AGAPOV (eap) // @@ -32,7 +32,7 @@ /////////////////////////////////////////////////////////////////////////////// /// SMDS_Iterator iterating over all elements provided by other iterators /// -/// Other iterators must implement SMDS_Iterator iterface and +/// Other iterators must implement SMDS_Iterator interface and /// must be provided within a stl-like container /// BE CAREFUL: iterator pointed value is static_cast'ed to VALUE /////////////////////////////////////////////////////////////////////////////// diff --git a/src/SMDS/SMDS_Mesh.hxx b/src/SMDS/SMDS_Mesh.hxx index 5adcd6d62..8bce6011b 100644 --- a/src/SMDS/SMDS_Mesh.hxx +++ b/src/SMDS/SMDS_Mesh.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_Mesh.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_Mesh0DElement.cxx b/src/SMDS/SMDS_Mesh0DElement.cxx index 2b03025db..8ac7bcc18 100644 --- a/src/SMDS/SMDS_Mesh0DElement.cxx +++ b/src/SMDS/SMDS_Mesh0DElement.cxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_Mesh0DElement.cxx // Module : SMESH // diff --git a/src/SMDS/SMDS_Mesh0DElement.hxx b/src/SMDS/SMDS_Mesh0DElement.hxx index be2840b8e..f4b9fa2dd 100644 --- a/src/SMDS/SMDS_Mesh0DElement.hxx +++ b/src/SMDS/SMDS_Mesh0DElement.hxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_Mesh0DElement.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_MeshEdge.hxx b/src/SMDS/SMDS_MeshEdge.hxx index 359612377..423d96241 100644 --- a/src/SMDS/SMDS_MeshEdge.hxx +++ b/src/SMDS/SMDS_MeshEdge.hxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshEdge.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_MeshElement.cxx b/src/SMDS/SMDS_MeshElement.cxx index 7150b6c59..31119a8ed 100644 --- a/src/SMDS/SMDS_MeshElement.cxx +++ b/src/SMDS/SMDS_MeshElement.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // #ifdef _MSC_VER #pragma warning(disable:4786) diff --git a/src/SMDS/SMDS_MeshElement.hxx b/src/SMDS/SMDS_MeshElement.hxx index 620e4d82d..4634548aa 100644 --- a/src/SMDS/SMDS_MeshElement.hxx +++ b/src/SMDS/SMDS_MeshElement.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshElement.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_MeshElementIDFactory.cxx b/src/SMDS/SMDS_MeshElementIDFactory.cxx index 43a51d5cf..c7fc45eb6 100644 --- a/src/SMDS/SMDS_MeshElementIDFactory.cxx +++ b/src/SMDS/SMDS_MeshElementIDFactory.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshElementIDFactory.cxx // Author : Jean-Michel BOULCOURT // Module : SMESH diff --git a/src/SMDS/SMDS_MeshElementIDFactory.hxx b/src/SMDS/SMDS_MeshElementIDFactory.hxx index 4bd6c638d..f75d24f5c 100644 --- a/src/SMDS/SMDS_MeshElementIDFactory.hxx +++ b/src/SMDS/SMDS_MeshElementIDFactory.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshElementIDFactory.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_MeshFace.cxx b/src/SMDS/SMDS_MeshFace.cxx index b4e09c56c..126945596 100644 --- a/src/SMDS/SMDS_MeshFace.cxx +++ b/src/SMDS/SMDS_MeshFace.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // #include "SMDS_MeshFace.hxx" diff --git a/src/SMDS/SMDS_MeshFace.hxx b/src/SMDS/SMDS_MeshFace.hxx index 70f1658f0..92f2f9b4f 100644 --- a/src/SMDS/SMDS_MeshFace.hxx +++ b/src/SMDS/SMDS_MeshFace.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshFace.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_MeshGroup.cxx b/src/SMDS/SMDS_MeshGroup.cxx index f61079353..4040a3e1d 100644 --- a/src/SMDS/SMDS_MeshGroup.cxx +++ b/src/SMDS/SMDS_MeshGroup.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshGroup.cxx // Author : Jean-Michel BOULCOURT // Module : SMESH diff --git a/src/SMDS/SMDS_MeshGroup.hxx b/src/SMDS/SMDS_MeshGroup.hxx index 052ea2c90..7ba1375ad 100644 --- a/src/SMDS/SMDS_MeshGroup.hxx +++ b/src/SMDS/SMDS_MeshGroup.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshGroup.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_MeshIDFactory.cxx b/src/SMDS/SMDS_MeshIDFactory.cxx index cc765d866..ea74aa576 100644 --- a/src/SMDS/SMDS_MeshIDFactory.cxx +++ b/src/SMDS/SMDS_MeshIDFactory.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshIDFactory.cxx // Author : Jean-Michel BOULCOURT // Module : SMESH diff --git a/src/SMDS/SMDS_MeshIDFactory.hxx b/src/SMDS/SMDS_MeshIDFactory.hxx index bf36699c9..35be69bd9 100644 --- a/src/SMDS/SMDS_MeshIDFactory.hxx +++ b/src/SMDS/SMDS_MeshIDFactory.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshIDFactory.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_MeshNode.cxx b/src/SMDS/SMDS_MeshNode.cxx index 53054f8e4..554f0fa71 100644 --- a/src/SMDS/SMDS_MeshNode.cxx +++ b/src/SMDS/SMDS_MeshNode.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // #ifdef _MSC_VER #pragma warning(disable:4786) diff --git a/src/SMDS/SMDS_MeshNode.hxx b/src/SMDS/SMDS_MeshNode.hxx index 43dc9c7f2..2c8bad7be 100644 --- a/src/SMDS/SMDS_MeshNode.hxx +++ b/src/SMDS/SMDS_MeshNode.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshNode.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_MeshObject.cxx b/src/SMDS/SMDS_MeshObject.cxx index 4208546a7..fd5589555 100644 --- a/src/SMDS/SMDS_MeshObject.cxx +++ b/src/SMDS/SMDS_MeshObject.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshObject.cxx // Author : Jean-Michel BOULCOURT // Module : SMESH diff --git a/src/SMDS/SMDS_MeshObject.hxx b/src/SMDS/SMDS_MeshObject.hxx index 5d7222cb7..4cfb2f2f7 100644 --- a/src/SMDS/SMDS_MeshObject.hxx +++ b/src/SMDS/SMDS_MeshObject.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshObject.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_MeshVolume.cxx b/src/SMDS/SMDS_MeshVolume.cxx index bf67d6a36..a56c119b7 100644 --- a/src/SMDS/SMDS_MeshVolume.cxx +++ b/src/SMDS/SMDS_MeshVolume.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshVolume.cxx // Author : Jean-Michel BOULCOURT // Module : SMESH diff --git a/src/SMDS/SMDS_MeshVolume.hxx b/src/SMDS/SMDS_MeshVolume.hxx index 69bffbfc3..15887bdcd 100644 --- a/src/SMDS/SMDS_MeshVolume.hxx +++ b/src/SMDS/SMDS_MeshVolume.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshVolume.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_PolygonalFaceOfNodes.cxx b/src/SMDS/SMDS_PolygonalFaceOfNodes.cxx index 8ea55e098..54ead2af0 100644 --- a/src/SMDS/SMDS_PolygonalFaceOfNodes.cxx +++ b/src/SMDS/SMDS_PolygonalFaceOfNodes.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // #ifdef _MSC_VER #pragma warning(disable:4786) diff --git a/src/SMDS/SMDS_PolygonalFaceOfNodes.hxx b/src/SMDS/SMDS_PolygonalFaceOfNodes.hxx index 67c611542..2fec139fb 100644 --- a/src/SMDS/SMDS_PolygonalFaceOfNodes.hxx +++ b/src/SMDS/SMDS_PolygonalFaceOfNodes.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // #ifndef _SMDS_PolygonalFaceOfNodes_HeaderFile #define _SMDS_PolygonalFaceOfNodes_HeaderFile diff --git a/src/SMDS/SMDS_PolyhedralVolumeOfNodes.cxx b/src/SMDS/SMDS_PolyhedralVolumeOfNodes.cxx index 5da8e7168..20c948ba1 100644 --- a/src/SMDS/SMDS_PolyhedralVolumeOfNodes.cxx +++ b/src/SMDS/SMDS_PolyhedralVolumeOfNodes.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // #ifdef _MSC_VER #pragma warning(disable:4786) diff --git a/src/SMDS/SMDS_PolyhedralVolumeOfNodes.hxx b/src/SMDS/SMDS_PolyhedralVolumeOfNodes.hxx index 61789daf0..cba8a9169 100644 --- a/src/SMDS/SMDS_PolyhedralVolumeOfNodes.hxx +++ b/src/SMDS/SMDS_PolyhedralVolumeOfNodes.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_PolyhedralVolumeOfNodes.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_Position.cxx b/src/SMDS/SMDS_Position.cxx index f329cce82..e7c408f07 100644 --- a/src/SMDS/SMDS_Position.cxx +++ b/src/SMDS/SMDS_Position.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_Position.cxx // Author : Jean-Michel BOULCOURT // Module : SMESH diff --git a/src/SMDS/SMDS_Position.hxx b/src/SMDS/SMDS_Position.hxx index 3d9dbf53e..b6976677d 100644 --- a/src/SMDS/SMDS_Position.hxx +++ b/src/SMDS/SMDS_Position.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_Position.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_QuadraticEdge.cxx b/src/SMDS/SMDS_QuadraticEdge.cxx index a2a39510c..9f6cf94df 100644 --- a/src/SMDS/SMDS_QuadraticEdge.cxx +++ b/src/SMDS/SMDS_QuadraticEdge.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File: SMDS_QuadraticEdge.cxx // Created: 16.01.06 16:25:42 // Author: Sergey KUUL diff --git a/src/SMDS/SMDS_QuadraticEdge.hxx b/src/SMDS/SMDS_QuadraticEdge.hxx index e9faf0beb..7eeabf65a 100644 --- a/src/SMDS/SMDS_QuadraticEdge.hxx +++ b/src/SMDS/SMDS_QuadraticEdge.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_QuadraticEdge.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_QuadraticFaceOfNodes.cxx b/src/SMDS/SMDS_QuadraticFaceOfNodes.cxx index b96ff5c31..49066ac82 100644 --- a/src/SMDS/SMDS_QuadraticFaceOfNodes.cxx +++ b/src/SMDS/SMDS_QuadraticFaceOfNodes.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File: SMDS_QuadraticFaceOfNodes.cxx // Created: 16.01.06 17:12:58 // Author: Sergey KUUL diff --git a/src/SMDS/SMDS_QuadraticFaceOfNodes.hxx b/src/SMDS/SMDS_QuadraticFaceOfNodes.hxx index 96111a478..8ef0a9da8 100644 --- a/src/SMDS/SMDS_QuadraticFaceOfNodes.hxx +++ b/src/SMDS/SMDS_QuadraticFaceOfNodes.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_QuadraticVolumeOfNodes.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_QuadraticVolumeOfNodes.cxx b/src/SMDS/SMDS_QuadraticVolumeOfNodes.cxx index f9c689a17..0248ba86b 100644 --- a/src/SMDS/SMDS_QuadraticVolumeOfNodes.cxx +++ b/src/SMDS/SMDS_QuadraticVolumeOfNodes.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File: SMDS_QuadraticVolumeOfNodes.cxx // Created: 17.01.06 09:46:11 // Author: Sergey KUUL diff --git a/src/SMDS/SMDS_QuadraticVolumeOfNodes.hxx b/src/SMDS/SMDS_QuadraticVolumeOfNodes.hxx index fadb0d597..0f3d6a8e6 100644 --- a/src/SMDS/SMDS_QuadraticVolumeOfNodes.hxx +++ b/src/SMDS/SMDS_QuadraticVolumeOfNodes.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_QuadraticVolumeOfNodes.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_SetIterator.hxx b/src/SMDS/SMDS_SetIterator.hxx index 3402cbf6a..a3bcd44fa 100644 --- a/src/SMDS/SMDS_SetIterator.hxx +++ b/src/SMDS/SMDS_SetIterator.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_SetIterator.hxx // Created : Feb 27 2006 // Author : Edward AGAPOV (eap) diff --git a/src/SMDS/SMDS_SpacePosition.cxx b/src/SMDS/SMDS_SpacePosition.cxx index 5c61b20c6..b2b9a7f2e 100644 --- a/src/SMDS/SMDS_SpacePosition.cxx +++ b/src/SMDS/SMDS_SpacePosition.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_SpacePosition.cxx // Author : Jean-Michel BOULCOURT // Module : SMESH diff --git a/src/SMDS/SMDS_SpacePosition.hxx b/src/SMDS/SMDS_SpacePosition.hxx index 59543dee3..fc2d22cc3 100644 --- a/src/SMDS/SMDS_SpacePosition.hxx +++ b/src/SMDS/SMDS_SpacePosition.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_SpacePosition.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_StdIterator.hxx b/src/SMDS/SMDS_StdIterator.hxx index 0e960cb80..c6502c457 100644 --- a/src/SMDS/SMDS_StdIterator.hxx +++ b/src/SMDS/SMDS_StdIterator.hxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_StdIterator.hxx // Created : Fri Feb 5 11:03:46 2010 // Author : Edward AGAPOV (eap) diff --git a/src/SMDS/SMDS_TypeOfPosition.hxx b/src/SMDS/SMDS_TypeOfPosition.hxx index 0bedf136b..d2a929723 100644 --- a/src/SMDS/SMDS_TypeOfPosition.hxx +++ b/src/SMDS/SMDS_TypeOfPosition.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_TypeOfPosition.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_VertexPosition.cxx b/src/SMDS/SMDS_VertexPosition.cxx index 62b3abdb4..0e2d183e2 100644 --- a/src/SMDS/SMDS_VertexPosition.cxx +++ b/src/SMDS/SMDS_VertexPosition.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_VertexPosition.cxx // Author : Jean-Michel BOULCOURT // Module : SMESH diff --git a/src/SMDS/SMDS_VertexPosition.hxx b/src/SMDS/SMDS_VertexPosition.hxx index d1fa9a7a0..0943de91c 100644 --- a/src/SMDS/SMDS_VertexPosition.hxx +++ b/src/SMDS/SMDS_VertexPosition.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_VertexPosition.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_VolumeOfFaces.cxx b/src/SMDS/SMDS_VolumeOfFaces.cxx index fa6b800a4..929c54675 100644 --- a/src/SMDS/SMDS_VolumeOfFaces.cxx +++ b/src/SMDS/SMDS_VolumeOfFaces.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_VolumeOfFaces.cxx // Author : Jean-Michel BOULCOURT // Module : SMESH diff --git a/src/SMDS/SMDS_VolumeOfFaces.hxx b/src/SMDS/SMDS_VolumeOfFaces.hxx index 870d37f3c..103b919a0 100644 --- a/src/SMDS/SMDS_VolumeOfFaces.hxx +++ b/src/SMDS/SMDS_VolumeOfFaces.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_VolumeOfFaces.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_VolumeOfNodes.cxx b/src/SMDS/SMDS_VolumeOfNodes.cxx index 670802e76..3f76d5322 100644 --- a/src/SMDS/SMDS_VolumeOfNodes.cxx +++ b/src/SMDS/SMDS_VolumeOfNodes.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // #ifdef _MSC_VER #pragma warning(disable:4786) diff --git a/src/SMDS/SMDS_VolumeOfNodes.hxx b/src/SMDS/SMDS_VolumeOfNodes.hxx index a1a0f3aac..485ea7eda 100644 --- a/src/SMDS/SMDS_VolumeOfNodes.hxx +++ b/src/SMDS/SMDS_VolumeOfNodes.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_MeshVolume.hxx // Module : SMESH // diff --git a/src/SMDS/SMDS_VolumeTool.cxx b/src/SMDS/SMDS_VolumeTool.cxx index f7857c3eb..9e144a620 100644 --- a/src/SMDS/SMDS_VolumeTool.cxx +++ b/src/SMDS/SMDS_VolumeTool.cxx @@ -1683,7 +1683,7 @@ double SMDS_VolumeTool::MaxLinearSize2() const //================================================================================ /*! - * \brief fast check that only one volume is build on the face nodes + * \brief Fast quickly check that only one volume is built on the face nodes * This check is valid for conformal meshes only */ //================================================================================ @@ -1731,7 +1731,7 @@ bool SMDS_VolumeTool::IsFreeFace( int faceIndex, const SMDS_MeshElement** otherV //================================================================================ /*! - * \brief Thorough check that only one volume is build on the face nodes + * \brief Thorough check that only one volume is built on the face nodes */ //================================================================================ diff --git a/src/SMDS/SMDS_VolumeTool.hxx b/src/SMDS/SMDS_VolumeTool.hxx index 4e018c0c7..271ab4af5 100644 --- a/src/SMDS/SMDS_VolumeTool.hxx +++ b/src/SMDS/SMDS_VolumeTool.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_VolumeTool.hxx // Module : SMESH // Created : Tue Jul 13 11:27:17 2004 diff --git a/src/SMDS/SMDS_VtkEdge.hxx b/src/SMDS/SMDS_VtkEdge.hxx index 36fe9fa0a..aebfb6e0b 100644 --- a/src/SMDS/SMDS_VtkEdge.hxx +++ b/src/SMDS/SMDS_VtkEdge.hxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMDS : implementaion of Salome mesh data structure +// SMESH SMDS : implementation of Salome mesh data structure // File : SMDS_VtkEdge.hxx // Module : SMESH diff --git a/src/SMESH/SMESH_Algo.cxx b/src/SMESH/SMESH_Algo.cxx index acb3e7137..561f64471 100644 --- a/src/SMESH/SMESH_Algo.cxx +++ b/src/SMESH/SMESH_Algo.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : SMESH_Algo.cxx // Author : Paul RASCLE, EDF // Module : SMESH diff --git a/src/SMESH/SMESH_Algo.hxx b/src/SMESH/SMESH_Algo.hxx index ba8c2d356..81ff8eb3a 100644 --- a/src/SMESH/SMESH_Algo.hxx +++ b/src/SMESH/SMESH_Algo.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : SMESH_Algo.hxx // Author : Paul RASCLE, EDF // Module : SMESH @@ -69,7 +69,7 @@ typedef std::map< SMESH_subMesh*, std::vector >::iterator MapShapeNbElemsIt * Methods of the class are grouped into several parts: * - main lifecycle methods, like Compute() * - methods describing features of the algorithm, like NeedShape() - * - methods related to dependencies between sub-meshes imposed by the algorith + * - methods related to dependencies between sub-meshes imposed by the algorithm * - static utilities, like EdgeLength() */ // ================================================================================== diff --git a/src/SMESH/SMESH_Gen.cxx b/src/SMESH/SMESH_Gen.cxx index bd5654c89..69e499dd5 100644 --- a/src/SMESH/SMESH_Gen.cxx +++ b/src/SMESH/SMESH_Gen.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : SMESH_Gen.cxx // Author : Paul RASCLE, EDF // Module : SMESH @@ -121,7 +121,7 @@ SMESH_Mesh* SMESH_Gen::CreateMesh(int theStudyId, bool theIsEmbeddedMode) { Unexpect aCatch(SalomeException); - // Get studyContext, create it if it does'nt exist, with a SMESHDS_Document + // Get studyContext, create it if it doesn't exist, with a SMESHDS_Document StudyContextStruct *aStudyContext = GetStudyContext(theStudyId); // create a new SMESH_mesh object @@ -1151,7 +1151,7 @@ SMESH_Algo *SMESH_Gen::GetAlgo(SMESH_subMesh * aSubMesh, StudyContextStruct *SMESH_Gen::GetStudyContext(int studyId) { - // Get studyContext, create it if it does'nt exist, with a SMESHDS_Document + // Get studyContext, create it if it doesn't exist, with a SMESHDS_Document if (_mapStudyContext.find(studyId) == _mapStudyContext.end()) { diff --git a/src/SMESH/SMESH_Gen.hxx b/src/SMESH/SMESH_Gen.hxx index d01105035..64eb26a70 100644 --- a/src/SMESH/SMESH_Gen.hxx +++ b/src/SMESH/SMESH_Gen.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : SMESH_Gen.hxx // Author : Paul RASCLE, EDF // Module : SMESH diff --git a/src/SMESH/SMESH_Group.cxx b/src/SMESH/SMESH_Group.cxx index d76c3750b..5ab9b683d 100644 --- a/src/SMESH/SMESH_Group.cxx +++ b/src/SMESH/SMESH_Group.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : SMESH_Group.cxx // Author : Michael Sazonov (OCC) // Module : SMESH diff --git a/src/SMESH/SMESH_Group.hxx b/src/SMESH/SMESH_Group.hxx index 967746c09..2842b9a51 100644 --- a/src/SMESH/SMESH_Group.hxx +++ b/src/SMESH/SMESH_Group.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : SMESH_Group.hxx // Author : Michael Sazonov (OCC) // Module : SMESH diff --git a/src/SMESH/SMESH_HypoFilter.cxx b/src/SMESH/SMESH_HypoFilter.cxx index 73c87fec4..40bb38a03 100644 --- a/src/SMESH/SMESH_HypoFilter.cxx +++ b/src/SMESH/SMESH_HypoFilter.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : SMESH_HypoFilter.cxx // Module : SMESH // diff --git a/src/SMESH/SMESH_HypoFilter.hxx b/src/SMESH/SMESH_HypoFilter.hxx index 3b059c5f2..1a1f34ef8 100644 --- a/src/SMESH/SMESH_HypoFilter.hxx +++ b/src/SMESH/SMESH_HypoFilter.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : SMESH_HypoFilter.hxx // Module : SMESH // diff --git a/src/SMESH/SMESH_Hypothesis.cxx b/src/SMESH/SMESH_Hypothesis.cxx index c4107fb38..23c52bcc3 100644 --- a/src/SMESH/SMESH_Hypothesis.cxx +++ b/src/SMESH/SMESH_Hypothesis.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : SMESH_Hypothesis.cxx // Author : Paul RASCLE, EDF // Module : SMESH diff --git a/src/SMESH/SMESH_Hypothesis.hxx b/src/SMESH/SMESH_Hypothesis.hxx index bfcd2f518..7973a26a1 100644 --- a/src/SMESH/SMESH_Hypothesis.hxx +++ b/src/SMESH/SMESH_Hypothesis.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : SMESH_Hypothesis.hxx // Author : Paul RASCLE, EDF // Module : SMESH diff --git a/src/SMESH/SMESH_Mesh.cxx b/src/SMESH/SMESH_Mesh.cxx index 713869c25..0e2b961ea 100644 --- a/src/SMESH/SMESH_Mesh.cxx +++ b/src/SMESH/SMESH_Mesh.cxx @@ -697,7 +697,7 @@ SMESH_Mesh::AddHypothesis(const TopoDS_Shape & aSubShape, } } - // check concurent hypotheses on ancestors + // check concurrent hypotheses on ancestors if (ret < SMESH_Hypothesis::HYP_CONCURENT && !isGlobalHyp ) { SMESH_subMeshIteratorPtr smIt = subMesh->getDependsOnIterator(false,false); @@ -767,7 +767,7 @@ SMESH_Mesh::RemoveHypothesis(const TopoDS_Shape & aSubShape, if (ret2 > ret) // more severe ret = ret2; - // check concurent hypotheses on ancestors + // check concurrent hypotheses on ancestors if (ret < SMESH_Hypothesis::HYP_CONCURENT && !IsMainShape( aSubShape ) ) { SMESH_subMeshIteratorPtr smIt = subMesh->getDependsOnIterator(false,false); diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx index 4d7720381..e414cd972 100644 --- a/src/SMESH/SMESH_MeshEditor.cxx +++ b/src/SMESH/SMESH_MeshEditor.cxx @@ -1279,7 +1279,7 @@ int SMESH_MeshEditor::Reorient2D (TIDSortedElemSet & theFaces, } if ( otherFace && otherFace != theFace) { - // link must be reverse in otherFace if orientation ot otherFace + // link must be reverse in otherFace if orientation to otherFace // is same as that of theFace if ( abs(nodeInd2-nodeInd1) == 1 ? nodeInd2 > nodeInd1 : nodeInd1 > nodeInd2 ) { @@ -1501,7 +1501,7 @@ bool SMESH_MeshEditor::QuadToTri (TIDSortedElemSet & theElems, //======================================================================= /*! * \brief Split each of given quadrangles into 4 triangles. - * \param theElems - The faces to be splitted. If empty all faces are split. + * \param theElems - The faces to be split. If empty all faces are split. */ //======================================================================= @@ -6145,7 +6145,7 @@ SMESH_MeshEditor::ExtrusionAlongTrack (TIDSortedElemSet theElements[2], makeEdgePathPoints(aPrms, aTrackEdge,(aN1->GetID()==startNid), LPP); LLPPs.push_back(LPP); UsedNums.Add(k); - // update startN for search following egde + // update startN for search following edge if( aN1->GetID() == startNid ) startNid = aN2->GetID(); else startNid = aN1->GetID(); break; @@ -6444,7 +6444,7 @@ SMESH_MeshEditor::ExtrusionAlongTrack (TIDSortedElemSet theElements[2], makeEdgePathPoints(aPrms, aTrackEdge, aN1isOK, LPP); LLPPs.push_back(LPP); UsedNums.Add(k); - // update startN for search following egde + // update startN for search following edge if ( aN1isOK ) aVprev = aV2; else aVprev = aV1; break; diff --git a/src/SMESH/SMESH_MeshEditor.hxx b/src/SMESH/SMESH_MeshEditor.hxx index 1773a1bf6..9a54cb7ad 100644 --- a/src/SMESH/SMESH_MeshEditor.hxx +++ b/src/SMESH/SMESH_MeshEditor.hxx @@ -199,7 +199,7 @@ public: const bool the13Diag); /*! * \brief Split each of given quadrangles into 4 triangles. - * \param theElems - The faces to be splitted. If empty all faces are split. + * \param theElems - The faces to be split. If empty all faces are split. */ void QuadTo4Tri (TIDSortedElemSet & theElems); @@ -542,7 +542,7 @@ public: // of the side 2. If nb of links in the free border and // between theSide2FirstNode and theSide2LastNode are different, // additional nodes are inserted on a link provided that no - // volume elements share the splitted link. + // volume elements share the split link. // The side 2 is a free border if theSide2IsFreeBorder == true. // Sewing is performed between the given first, second and last // nodes on the sides. diff --git a/src/SMESH/SMESH_MesherHelper.cxx b/src/SMESH/SMESH_MesherHelper.cxx index 6b167f132..0a9251a26 100644 --- a/src/SMESH/SMESH_MesherHelper.cxx +++ b/src/SMESH/SMESH_MesherHelper.cxx @@ -2963,7 +2963,7 @@ bool SMESH_MesherHelper::IsDistorted2D( SMESH_subMesh* faceSM, * \brief Find out elements orientation on a geometrical face * \param theFace - The face correctly oriented in the shape being meshed * \retval bool - true if the face normal and the normal of first element - * in the correspoding submesh point in different directions + * in the corresponding submesh point in different directions */ //================================================================================ @@ -4378,7 +4378,7 @@ namespace { // Structures used by FixQuadraticElements() vector< TChain> & resultChains, SMDS_TypeOfPosition pos ) { - // put links in the set and evalute number of result chains by number of boundary links + // put links in the set and evaluate number of result chains by number of boundary links TLinkSet linkSet; size_t nbBndLinks = 0; for ( TChain::iterator lnk = allLinks.begin(); lnk != allLinks.end(); ++lnk ) { diff --git a/src/SMESH/SMESH_Pattern.cxx b/src/SMESH/SMESH_Pattern.cxx index 51564bf78..b307ba31c 100644 --- a/src/SMESH/SMESH_Pattern.cxx +++ b/src/SMESH/SMESH_Pattern.cxx @@ -2481,7 +2481,7 @@ bool SMESH_Pattern::Apply (const TopoDS_Face& theFace, // If there are several wires, define the order of edges of inner wires: // compute UV of inner edge-points using 2 methods: the one for in-face points // and the one for on-edge points and then choose the best edge order - // by the best correspondance of the 2 results + // by the best correspondence of the 2 results if ( nbWires > 1 ) { // compute UV of inner edge-points using the method for in-face points diff --git a/src/SMESH/SMESH_subMesh.cxx b/src/SMESH/SMESH_subMesh.cxx index 2f89997ba..184a45a51 100644 --- a/src/SMESH/SMESH_subMesh.cxx +++ b/src/SMESH/SMESH_subMesh.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : SMESH_subMesh.cxx // Author : Paul RASCLE, EDF // Module : SMESH diff --git a/src/SMESHGUI/SMESHGUI_Filter.cxx b/src/SMESHGUI/SMESHGUI_Filter.cxx index 1222c4b80..f5017351b 100755 --- a/src/SMESHGUI/SMESHGUI_Filter.cxx +++ b/src/SMESHGUI/SMESHGUI_Filter.cxx @@ -176,7 +176,7 @@ int SMESHGUI_PredicateFilter::GetId() const /* Class : SMESHGUI_QuadrangleFilter - Description : Verify whether selected cell is quadranle + Description : Verify whether selected cell is quadrangle */ //======================================================================= @@ -194,7 +194,7 @@ SMESHGUI_QuadrangleFilter::~SMESHGUI_QuadrangleFilter() //======================================================================= // name : SMESHGUI_QuadrangleFilter::IsValid -// Purpose : Verify whether selected cell is quadranle +// Purpose : Verify whether selected cell is quadrangle //======================================================================= bool SMESHGUI_QuadrangleFilter::IsValid( const int theCellId ) const { @@ -214,7 +214,7 @@ bool SMESHGUI_QuadrangleFilter::IsValid( const int theCellId ) const //======================================================================= // name : SMESHGUI_QuadrangleFilter::IsValid -// Purpose : Verify whether selected cell is quadranle +// Purpose : Verify whether selected cell is quadrangle //======================================================================= bool SMESHGUI_QuadrangleFilter::IsObjValid( const int theObjId ) const { diff --git a/src/SMESHGUI/SMESHGUI_Filter.h b/src/SMESHGUI/SMESHGUI_Filter.h index 08a43c767..d8f662b55 100755 --- a/src/SMESHGUI/SMESHGUI_Filter.h +++ b/src/SMESHGUI/SMESHGUI_Filter.h @@ -104,7 +104,7 @@ public: /* Class : SMESHGUI_QuadrangleFilter - Description : Verify whether selected cell is quadranle + Description : Verify whether selected cell is quadrangle */ DEFINE_STANDARD_HANDLE(SMESHGUI_QuadrangleFilter, SMESHGUI_Filter) diff --git a/src/SMESHUtils/SMESH_Block.cxx b/src/SMESHUtils/SMESH_Block.cxx index 3b46da1b4..5ff01e3ab 100644 --- a/src/SMESHUtils/SMESH_Block.cxx +++ b/src/SMESHUtils/SMESH_Block.cxx @@ -720,7 +720,7 @@ bool SMESH_Block::ComputeParameters(const gp_Pnt& thePoint, const bool isOnFace = IsFaceID( theShapeID ); double * coef = GetShapeCoef( theShapeID ); - // Find the first guess paremeters + // Find the first guess parameters gp_XYZ start(0, 0, 0); @@ -1585,7 +1585,7 @@ int SMESH_Block::GetOrderedEdges (const TopoDS_Face& theFace, } //================================================================================ /*! - * \brief Call it after geometry initialisation + * \brief Call it after geometry initialization */ //================================================================================ diff --git a/src/SMESHUtils/SMESH_Block.hxx b/src/SMESHUtils/SMESH_Block.hxx index cd680a811..6b0caabbb 100644 --- a/src/SMESHUtils/SMESH_Block.hxx +++ b/src/SMESHUtils/SMESH_Block.hxx @@ -306,7 +306,7 @@ public: protected: /*! - * \brief Call it after geometry initialisation + * \brief Call it after geometry initialization */ void init(); diff --git a/src/SMESHUtils/SMESH_Comment.hxx b/src/SMESHUtils/SMESH_Comment.hxx index c3bbe6fb5..2de8877e5 100644 --- a/src/SMESHUtils/SMESH_Comment.hxx +++ b/src/SMESHUtils/SMESH_Comment.hxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : SMESH_Comment.hxx // Created : Wed Mar 14 18:28:45 2007 // Author : Edward AGAPOV (eap) diff --git a/src/SMESHUtils/SMESH_File.hxx b/src/SMESHUtils/SMESH_File.hxx index c30b69db1..783835f38 100644 --- a/src/SMESHUtils/SMESH_File.hxx +++ b/src/SMESHUtils/SMESH_File.hxx @@ -87,7 +87,7 @@ public: bool getInts(std::vector& ids); // ------------------------ - // Writting a binary file + // Writing a binary file // ------------------------ bool openForWriting(); // binary writing only diff --git a/src/SMESHUtils/SMESH_MeshAlgos.hxx b/src/SMESHUtils/SMESH_MeshAlgos.hxx index 10af7a636..6b8f7c609 100644 --- a/src/SMESHUtils/SMESH_MeshAlgos.hxx +++ b/src/SMESHUtils/SMESH_MeshAlgos.hxx @@ -172,7 +172,7 @@ namespace SMESH_MeshAlgos const SMDS_MeshNode* node1 ); /*! - * \brief Return SMESH_NodeSearcher. The caller is responsible for deleteing it + * \brief Return SMESH_NodeSearcher. The caller is responsible for deleting it */ SMESHUtils_EXPORT SMESH_NodeSearcher* GetNodeSearcher( SMDS_Mesh& mesh ); diff --git a/src/SMESHUtils/SMESH_TypeDefs.hxx b/src/SMESHUtils/SMESH_TypeDefs.hxx index 4c2dddab0..dc74b0702 100644 --- a/src/SMESHUtils/SMESH_TypeDefs.hxx +++ b/src/SMESHUtils/SMESH_TypeDefs.hxx @@ -143,7 +143,7 @@ struct SMESH_OrientedLink: public SMESH_TLink //------------------------------------------ /*! - * \brief SMDS_MeshNode -> gp_XYZ convertor + * \brief SMDS_MeshNode -> gp_XYZ converter */ //------------------------------------------ struct SMESH_TNodeXYZ : public gp_XYZ diff --git a/src/SMESH_I/SMESH_2smeshpy.cxx b/src/SMESH_I/SMESH_2smeshpy.cxx index b8f06d7a4..b5a31ed82 100644 --- a/src/SMESH_I/SMESH_2smeshpy.cxx +++ b/src/SMESH_I/SMESH_2smeshpy.cxx @@ -501,7 +501,7 @@ SMESH_2smeshpy::ConvertScript(std::list< TCollection_AsciiString >& theScrip MESSAGE_BEGIN ( std::endl << " ######## RESULT ######## " << std::endl<< std::endl ); #endif - // clean commmands of removed objects depending on myIsPublished flag + // clean commands of removed objects depending on myIsPublished flag theGen->ClearCommands(); // reorder commands after conversion @@ -1215,7 +1215,7 @@ void _pyGen::PlaceSubmeshAfterItsCreation( Handle(_pyCommand) theCmdUsingSubmesh //================================================================================ /*! - * \brief Clean commmands of removed objects depending on myIsPublished flag + * \brief Clean commands of removed objects depending on myIsPublished flag */ //================================================================================ @@ -4086,7 +4086,7 @@ void _pyCommand::SetPart(int thePartIndex, const TCollection_AsciiString& thePar //================================================================================ /*! - * \brief Set agrument + * \brief Set argument * \param index - The argument index, it counts from 1 * \param theArg - The argument string */ diff --git a/src/SMESH_I/SMESH_DumpPython.cxx b/src/SMESH_I/SMESH_DumpPython.cxx index 966fa7b0f..7ca8be9be 100644 --- a/src/SMESH_I/SMESH_DumpPython.cxx +++ b/src/SMESH_I/SMESH_DumpPython.cxx @@ -1333,7 +1333,7 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl { // find the function name int functBeg = posAlready; - char* script = (char*) anUpdatedScript.ToCString() + posAlready - 1; // look at ":" after "def fuction()" + char* script = (char*) anUpdatedScript.ToCString() + posAlready - 1; // look at ":" after "def function()" while ( *script != ' ' ) { script--; functBeg--; diff --git a/src/SMESH_I/SMESH_Filter_i.cxx b/src/SMESH_I/SMESH_Filter_i.cxx index c62297be8..28e749b6e 100644 --- a/src/SMESH_I/SMESH_Filter_i.cxx +++ b/src/SMESH_I/SMESH_Filter_i.cxx @@ -192,7 +192,7 @@ static TopoDS_Shape getShapeByID (const char* theID) /* Class : Functor_i - Description : An abstact class for all functors + Description : An abstract class for all functors */ Functor_i::Functor_i(): SALOME::GenericObj_i( SMESH_Gen_i::GetPOA() ) diff --git a/src/SMESH_I/SMESH_Filter_i.hxx b/src/SMESH_I/SMESH_Filter_i.hxx index 5555a69b5..54128103a 100644 --- a/src/SMESH_I/SMESH_Filter_i.hxx +++ b/src/SMESH_I/SMESH_Filter_i.hxx @@ -73,7 +73,7 @@ namespace SMESH /* Class : Functor_i - Description : An abstact class for all functors + Description : An abstract class for all functors */ class SMESH_I_EXPORT Functor_i: public virtual POA_SMESH::Functor, public virtual SALOME::GenericObj_i diff --git a/src/SMESH_I/SMESH_Gen_i.cxx b/src/SMESH_I/SMESH_Gen_i.cxx index b3c0f73b1..b29e9a901 100644 --- a/src/SMESH_I/SMESH_Gen_i.cxx +++ b/src/SMESH_I/SMESH_Gen_i.cxx @@ -378,7 +378,7 @@ GenericHypothesisCreator_i* SMESH_Gen_i::getHypothesisCreator(const char* theHyp throw (SALOME::SALOME_Exception) { std::string aPlatformLibName; - /* It's Need to tranlate lib name for WIN32 or X platform */ + /* It's Need to translate lib name for WIN32 or X platform */ if ( theLibName && theLibName[0] != '\0' ) { int libNameLen = strlen(theLibName); @@ -1754,7 +1754,7 @@ SMESH_Gen_i::MakeGroupsOfBadInputElements( SMESH::SMESH_Mesh_ptr theMesh, //================================================================================ /*! - * \brief Returns errors of hypotheses definintion + * \brief Returns errors of hypotheses definition * \param theMesh - the mesh * \param theSubObject - the main or sub- shape * \retval SMESH::algo_error_array* - sequence of errors diff --git a/src/SMESH_I/SMESH_Gen_i.hxx b/src/SMESH_I/SMESH_Gen_i.hxx index ef9842298..e5bd4f95d 100644 --- a/src/SMESH_I/SMESH_Gen_i.hxx +++ b/src/SMESH_I/SMESH_Gen_i.hxx @@ -154,9 +154,9 @@ public: // Get the SALOMEDS::SObject corresponding to a CORBA object static SALOMEDS::SObject_ptr ObjectToSObject(SALOMEDS::Study_ptr theStudy, CORBA::Object_ptr theObject); - // Get GEOM Object correspoding to TopoDS_Shape + // Get GEOM Object corresponding to TopoDS_Shape GEOM::GEOM_Object_ptr ShapeToGeomObject (const TopoDS_Shape& theShape ); - // Get TopoDS_Shape correspoding to GEOM_Object + // Get TopoDS_Shape corresponding to GEOM_Object TopoDS_Shape GeomObjectToShape(GEOM::GEOM_Object_ptr theGeomObject); // Default constructor @@ -321,7 +321,7 @@ public: SMESH::long_array& theShapesId ) throw ( SALOME::SALOME_Exception ); - // Returns errors of hypotheses definintion + // Returns errors of hypotheses definition SMESH::algo_error_array* GetAlgoState( SMESH::SMESH_Mesh_ptr theMesh, GEOM::GEOM_Object_ptr theSubObject ) throw ( SALOME::SALOME_Exception ); diff --git a/src/SMESH_I/SMESH_Gen_i_1.cxx b/src/SMESH_I/SMESH_Gen_i_1.cxx index b08b7e3e6..e434840dd 100644 --- a/src/SMESH_I/SMESH_Gen_i_1.cxx +++ b/src/SMESH_I/SMESH_Gen_i_1.cxx @@ -1006,7 +1006,7 @@ bool SMESH_Gen_i::RemoveHypothesisFromShape(SALOMEDS::Study_ptr theStudy * \brief Stores names of variables that WILL be passes as parameters when calling * some method of a given object. * \param [in] theObject - the object whose a method WILL be called with \a theParameters. - * \param [in] theParameters - a string contating parameters separated by ':'. + * \param [in] theParameters - a string containing parameters separated by ':'. */ //================================================================================ diff --git a/src/SMESH_I/SMESH_MeshEditor_i.cxx b/src/SMESH_I/SMESH_MeshEditor_i.cxx index de17f8795..55b451188 100644 --- a/src/SMESH_I/SMESH_MeshEditor_i.cxx +++ b/src/SMESH_I/SMESH_MeshEditor_i.cxx @@ -2013,7 +2013,7 @@ CORBA::Boolean SMESH_MeshEditor_i::SplitQuadObject (SMESH::SMESH_IDSource_ptr th //============================================================================= /*! * Find better splitting of the given quadrangle. - * \param IDOfQuad ID of the quadrangle to be splitted. + * \param IDOfQuad ID of the quadrangle to be split. * \param Criterion A criterion to choose a diagonal for splitting. * \return 1 if 1-3 diagonal is better, 2 if 2-4 * diagonal is better, 0 if error occurs. diff --git a/src/SMESH_I/SMESH_Mesh_i.cxx b/src/SMESH_I/SMESH_Mesh_i.cxx index b598cc0eb..76fe5989c 100644 --- a/src/SMESH_I/SMESH_Mesh_i.cxx +++ b/src/SMESH_I/SMESH_Mesh_i.cxx @@ -5588,10 +5588,10 @@ TopAbs_ShapeEnum shapeTypeByDim(const int theDim) //----------------------------------------------------------------------------- /*! - * \brief Internal structure used to find concurent submeshes + * \brief Internal structure used to find concurrent submeshes * - * It represents a pair < submesh, concurent dimension >, where - * 'concurrent dimension' is dimension of shape where the submesh can concurent + * It represents a pair < submesh, concurrent dimension >, where + * 'concurrent dimension' is dimension of shape where the submesh can concurrent * with another submesh. In other words, it is dimension of a hypothesis assigned * to submesh. */ @@ -5983,7 +5983,7 @@ TListOfListOfInt SMESH_Mesh_i::findConcurrentSubMeshes() removeDimHyps(dimHypListArr); - // now, minimise the number of concurrent groups + // now, minimize the number of concurrent groups // Here we assume that lists of submeshes can have same submesh // in case of multi-dimension algorithms, as result // list with common submesh has to be united into one list @@ -6080,7 +6080,7 @@ void SMESH_Mesh_i::convertMeshOrder (const TListOfListOfInt& theIdsOrder, continue; if ( theIsDump ) aPythonDump << "[ "; - // convert shape indeces into interfaces + // convert shape indices into interfaces SMESH::submesh_array_var aResSubSet = new SMESH::submesh_array(); aResSubSet->length(aSubOrder.size()); TListOfInt::const_iterator subIt = aSubOrder.begin(); diff --git a/src/SMESH_SWIG/SMESH_blocks.py b/src/SMESH_SWIG/SMESH_blocks.py index b8a4707e3..65a12f5c3 100644 --- a/src/SMESH_SWIG/SMESH_blocks.py +++ b/src/SMESH_SWIG/SMESH_blocks.py @@ -21,7 +21,7 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -# SMESH SMESH_SWIG : binding of C++ implementaion with Python +# SMESH SMESH_SWIG : binding of C++ implementation with Python # File : SMESH_blocks.py # Author : Julia DOROVSKIKH # Module : SMESH diff --git a/src/SMESH_SWIG/StdMeshersBuilder.py b/src/SMESH_SWIG/StdMeshersBuilder.py index beea2de8d..29e0fccf3 100644 --- a/src/SMESH_SWIG/StdMeshersBuilder.py +++ b/src/SMESH_SWIG/StdMeshersBuilder.py @@ -983,7 +983,7 @@ class StdMeshersBuilder_Prism3D(Mesh_Algorithm): ## Return 3D hypothesis holding the 1D one def Get3DHypothesis(self): if self.algoType != "RadialPrism_3D": - print "Prism_3D algorith doesn't support any hyposesis" + print "Prism_3D algorithm doesn't support any hypothesis" return None return self.distribHyp @@ -991,7 +991,7 @@ class StdMeshersBuilder_Prism3D(Mesh_Algorithm): # hypothesis. Returns the created hypothesis def OwnHypothesis(self, hypType, args=[], so="libStdMeshersEngine.so"): if self.algoType != "RadialPrism_3D": - print "Prism_3D algorith doesn't support any hyposesis" + print "Prism_3D algorithm doesn't support any hypothesis" return None if not self.nbLayers is None: self.mesh.GetMesh().RemoveHypothesis( self.geom, self.nbLayers ) @@ -1012,7 +1012,7 @@ class StdMeshersBuilder_Prism3D(Mesh_Algorithm): # the same parameters, else (default) - creates a new one def NumberOfLayers(self, n, UseExisting=0): if self.algoType != "RadialPrism_3D": - print "Prism_3D algorith doesn't support any hyposesis" + print "Prism_3D algorithm doesn't support any hypothesis" return None self.mesh.RemoveHypothesis( self.distribHyp, self.geom ) from salome.smesh.smeshBuilder import IsEqual @@ -1028,7 +1028,7 @@ class StdMeshersBuilder_Prism3D(Mesh_Algorithm): # @param p the precision of rounding def LocalLength(self, l, p=1e-07): if self.algoType != "RadialPrism_3D": - print "Prism_3D algorith doesn't support any hyposesis" + print "Prism_3D algorithm doesn't support any hypothesis" return None hyp = self.OwnHypothesis("LocalLength", [l,p]) hyp.SetLength(l) @@ -1041,7 +1041,7 @@ class StdMeshersBuilder_Prism3D(Mesh_Algorithm): # @param s the scale factor (optional) def NumberOfSegments(self, n, s=[]): if self.algoType != "RadialPrism_3D": - print "Prism_3D algorith doesn't support any hyposesis" + print "Prism_3D algorithm doesn't support any hypothesis" return None if not s: hyp = self.OwnHypothesis("NumberOfSegments", [n]) @@ -1058,7 +1058,7 @@ class StdMeshersBuilder_Prism3D(Mesh_Algorithm): # @param end the length of the last segment def Arithmetic1D(self, start, end ): if self.algoType != "RadialPrism_3D": - print "Prism_3D algorith doesn't support any hyposesis" + print "Prism_3D algorithm doesn't support any hypothesis" return None hyp = self.OwnHypothesis("Arithmetic1D", [start, end]) hyp.SetLength(start, 1) @@ -1072,7 +1072,7 @@ class StdMeshersBuilder_Prism3D(Mesh_Algorithm): # @param ratio the common ratio of the geometric progression def GeometricProgression(self, start, ratio ): if self.algoType != "RadialPrism_3D": - print "Prism_3D algorith doesn't support any hyposesis" + print "Prism_3D algorithm doesn't support any hypothesis" return None hyp = self.OwnHypothesis("GeometricProgression", [start, ratio]) hyp.SetStartLength( start ) @@ -1085,7 +1085,7 @@ class StdMeshersBuilder_Prism3D(Mesh_Algorithm): # @param end for the length of the last segment def StartEndLength(self, start, end): if self.algoType != "RadialPrism_3D": - print "Prism_3D algorith doesn't support any hyposesis" + print "Prism_3D algorithm doesn't support any hypothesis" return None hyp = self.OwnHypothesis("StartEndLength", [start, end]) hyp.SetLength(start, 1) @@ -1097,7 +1097,7 @@ class StdMeshersBuilder_Prism3D(Mesh_Algorithm): # @param fineness defines the quality of the mesh within the range [0-1] def AutomaticLength(self, fineness=0): if self.algoType != "RadialPrism_3D": - print "Prism_3D algorith doesn't support any hyposesis" + print "Prism_3D algorithm doesn't support any hypothesis" return None hyp = self.OwnHypothesis("AutomaticLength") hyp.SetFineness( fineness ) diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index 9e30399e4..6a1a4e1df 100644 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -3290,7 +3290,7 @@ class Mesh: return self.editor.TriToQuadObject(theObject, Functor, MaxAngle) ## Split quadrangles into triangles. - # @param IDsOfElements the faces to be splitted. + # @param IDsOfElements the faces to be split. # @param theCriterion is a numerical functor, in terms of enum SMESH.FunctorType, used to # choose a diagonal for splitting. If @a theCriterion is None, which is a default # value, then quadrangles will be split by the smallest diagonal. @@ -3326,7 +3326,7 @@ class Mesh: ## Split each of given quadrangles into 4 triangles. A node is added at the center of # a quadrangle. - # @param theElements the faces to be splitted. This can be either mesh, sub-mesh, + # @param theElements the faces to be split. This can be either mesh, sub-mesh, # group or a list of face IDs. By default all quadrangles are split # @ingroup l2_modif_cutquadr def QuadTo4Tri (self, theElements=[]): @@ -3341,7 +3341,7 @@ class Mesh: return self.editor.QuadTo4Tri( theElements ) ## Split quadrangles into triangles. - # @param IDsOfElements the faces to be splitted + # @param IDsOfElements the faces to be split # @param Diag13 is used to choose a diagonal for splitting. # @return TRUE in case of success, FALSE otherwise. # @ingroup l2_modif_cutquadr @@ -3362,7 +3362,7 @@ class Mesh: return self.editor.SplitQuadObject(theObject, Diag13) ## Find a better splitting of the given quadrangle. - # @param IDOfQuad the ID of the quadrangle to be splitted. + # @param IDOfQuad the ID of the quadrangle to be split. # @param theCriterion is a numerical functor, in terms of enum SMESH.FunctorType, used to # choose a diagonal for splitting. # Type SMESH.FunctorType._items in the Python Console to see all items. diff --git a/src/SMESH_SWIG/smesh_algorithm.py b/src/SMESH_SWIG/smesh_algorithm.py index 3690f76d8..e5b5a3d6a 100644 --- a/src/SMESH_SWIG/smesh_algorithm.py +++ b/src/SMESH_SWIG/smesh_algorithm.py @@ -58,7 +58,7 @@ import SMESH, StdMeshers # @ingroup l2_algorithms class Mesh_Algorithm: - ## Private constuctor + ## Private constructor def __init__(self): self.mesh = None self.geom = None diff --git a/src/StdMeshers/StdMeshers_Arithmetic1D.cxx b/src/StdMeshers/StdMeshers_Arithmetic1D.cxx index a06202a8e..1dff20515 100644 --- a/src/StdMeshers/StdMeshers_Arithmetic1D.cxx +++ b/src/StdMeshers/StdMeshers_Arithmetic1D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Arithmetic1D.cxx // Author : Damien COQUERET, OCC // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_Arithmetic1D.hxx b/src/StdMeshers/StdMeshers_Arithmetic1D.hxx index 870589752..a95940dc4 100644 --- a/src/StdMeshers/StdMeshers_Arithmetic1D.hxx +++ b/src/StdMeshers/StdMeshers_Arithmetic1D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Arithmetic1D.hxx // Author : Damien COQUERET, OCC // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_AutomaticLength.cxx b/src/StdMeshers/StdMeshers_AutomaticLength.cxx index c86e02a78..4e49040c1 100644 --- a/src/StdMeshers/StdMeshers_AutomaticLength.cxx +++ b/src/StdMeshers/StdMeshers_AutomaticLength.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_AutomaticLength.cxx // Author : Edward AGAPOV, OCC // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_AutomaticLength.hxx b/src/StdMeshers/StdMeshers_AutomaticLength.hxx index 2e30f8c10..d3da396c2 100644 --- a/src/StdMeshers/StdMeshers_AutomaticLength.hxx +++ b/src/StdMeshers/StdMeshers_AutomaticLength.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_AutomaticLength.hxx // Author : Edward AGAPOV, OCC // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_Cartesian_3D.cxx b/src/StdMeshers/StdMeshers_Cartesian_3D.cxx index 002f20961..3eaed0f7a 100644 --- a/src/StdMeshers/StdMeshers_Cartesian_3D.cxx +++ b/src/StdMeshers/StdMeshers_Cartesian_3D.cxx @@ -3388,7 +3388,7 @@ namespace } //================================================================================ /*! - * \brief Classify a point by grid paremeters + * \brief Classify a point by grid parameters */ bool Hexahedron::isOutParam(const double uvw[3]) const { @@ -3588,7 +3588,7 @@ bool StdMeshers_Cartesian_3D::Compute(SMESH_Mesh & theMesh, facesItersectors[i].Intersect(); #endif - // put interesection points onto the GridLine's; this is done after intersection + // put intersection points onto the GridLine's; this is done after intersection // to avoid contention of facesItersectors for writing into the same GridLine // in case of parallel work of facesItersectors for ( size_t i = 0; i < facesItersectors.size(); ++i ) diff --git a/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx b/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx index d80d072a9..662e62b8d 100644 --- a/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx +++ b/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_CompositeHexa_3D.cxx // Module : SMESH // Created : Tue Nov 25 11:04:59 2008 @@ -85,7 +85,7 @@ enum EAxes{ COO_X=1, COO_Y, COO_Z }; //================================================================================ /*! - * \brief Convertor of a pair of integers to a sole index + * \brief Converter of a pair of integers to a sole index */ struct _Indexer { @@ -564,7 +564,7 @@ bool StdMeshers_CompositeHexa_3D::findBoxFaces( const TopoDS_Shape& shape, if ( !fTop ) return error(COMPERR_BAD_SHAPE); - // orient bottom egde of faces along axes of the unit box + // orient bottom edge of faces along axes of the unit box fBottom->ReverseEdges(); fBack ->ReverseEdges(); fLeft ->ReverseEdges(); @@ -1158,7 +1158,7 @@ bool _QuadFaceGrid::LoadGrid( SMESH_Mesh& mesh ) myGrid.resize( myIndexer.size() ); - // strore nodes bound to the bottom edge + // store nodes bound to the bottom edge mySides.GetSide( Q_BOTTOM )->StoreNodes( mesh, myGrid, myReverse ); // store the rest nodes row by row diff --git a/src/StdMeshers/StdMeshers_CompositeHexa_3D.hxx b/src/StdMeshers/StdMeshers_CompositeHexa_3D.hxx index f1082b73f..85cc6f2ec 100644 --- a/src/StdMeshers/StdMeshers_CompositeHexa_3D.hxx +++ b/src/StdMeshers/StdMeshers_CompositeHexa_3D.hxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_CompositeBlock_3D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_CompositeSegment_1D.cxx b/src/StdMeshers/StdMeshers_CompositeSegment_1D.cxx index 9a66a5633..ee3858c26 100644 --- a/src/StdMeshers/StdMeshers_CompositeSegment_1D.cxx +++ b/src/StdMeshers/StdMeshers_CompositeSegment_1D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_CompositeSegment_1D.cxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_CompositeSegment_1D.hxx b/src/StdMeshers/StdMeshers_CompositeSegment_1D.hxx index 5380a65f5..1a0129813 100644 --- a/src/StdMeshers/StdMeshers_CompositeSegment_1D.hxx +++ b/src/StdMeshers/StdMeshers_CompositeSegment_1D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_CompositeSegment_1D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_Deflection1D.cxx b/src/StdMeshers/StdMeshers_Deflection1D.cxx index 6181e8cbf..fa0fcb264 100644 --- a/src/StdMeshers/StdMeshers_Deflection1D.cxx +++ b/src/StdMeshers/StdMeshers_Deflection1D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers_Deflection1D : implementaion of SMESH idl descriptions +// SMESH StdMeshers_Deflection1D : implementation of SMESH idl descriptions // File : StdMeshers_Deflection1D.cxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_Deflection1D.hxx b/src/StdMeshers/StdMeshers_Deflection1D.hxx index 664a4a094..c1d2d741d 100644 --- a/src/StdMeshers/StdMeshers_Deflection1D.hxx +++ b/src/StdMeshers/StdMeshers_Deflection1D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers : implementaion of SMESH idl descriptions +// SMESH StdMeshers : implementation of SMESH idl descriptions // File : StdMeshers_Deflection1D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_Distribution.cxx b/src/StdMeshers/StdMeshers_Distribution.cxx index aeef4e1ef..900723108 100644 --- a/src/StdMeshers/StdMeshers_Distribution.cxx +++ b/src/StdMeshers/StdMeshers_Distribution.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers : implementaion of point distribution algorithm +// SMESH StdMeshers : implementation of point distribution algorithm // File : StdMeshers_Distribution.cxx // Author : Alexandre SOLOVYOV // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_Distribution.hxx b/src/StdMeshers/StdMeshers_Distribution.hxx index 5bcf68c22..62682390d 100644 --- a/src/StdMeshers/StdMeshers_Distribution.hxx +++ b/src/StdMeshers/StdMeshers_Distribution.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers : implementaion of point distribution algorithm +// SMESH StdMeshers : implementation of point distribution algorithm // File : StdMeshers_Distribution.hxx // Author : Alexandre SOLOVYOV // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_FixedPoints1D.cxx b/src/StdMeshers/StdMeshers_FixedPoints1D.cxx index e316cb11a..254df4e1c 100644 --- a/src/StdMeshers/StdMeshers_FixedPoints1D.cxx +++ b/src/StdMeshers/StdMeshers_FixedPoints1D.cxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_FixedPoints1D.cxx // Author : Damien COQUERET, OCC // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_FixedPoints1D.hxx b/src/StdMeshers/StdMeshers_FixedPoints1D.hxx index 4855f0307..342b5c9d5 100644 --- a/src/StdMeshers/StdMeshers_FixedPoints1D.hxx +++ b/src/StdMeshers/StdMeshers_FixedPoints1D.hxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_FixedPoints1D.hxx // Author : Damien COQUERET, OCC // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_Geometric1D.cxx b/src/StdMeshers/StdMeshers_Geometric1D.cxx index 33b091783..87514e2c9 100644 --- a/src/StdMeshers/StdMeshers_Geometric1D.cxx +++ b/src/StdMeshers/StdMeshers_Geometric1D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Geometric1D.cxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_Geometric1D.hxx b/src/StdMeshers/StdMeshers_Geometric1D.hxx index 1dc38b1e2..4efc66101 100644 --- a/src/StdMeshers/StdMeshers_Geometric1D.hxx +++ b/src/StdMeshers/StdMeshers_Geometric1D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Geometric1D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_HexaFromSkin_3D.cxx b/src/StdMeshers/StdMeshers_HexaFromSkin_3D.cxx index 2824be8cc..a32b65891 100644 --- a/src/StdMeshers/StdMeshers_HexaFromSkin_3D.cxx +++ b/src/StdMeshers/StdMeshers_HexaFromSkin_3D.cxx @@ -145,7 +145,7 @@ namespace //================================================================================ /*! - * \brief Convertor of a pair of integers to a sole index + * \brief Converter of a pair of integers to a sole index */ struct _Indexer { @@ -156,7 +156,7 @@ namespace }; //================================================================================ /*! - * \brief Oriented convertor of a pair of integers to a sole index + * \brief Oriented converter of a pair of integers to a sole index */ class _OrientedIndexer : public _Indexer { diff --git a/src/StdMeshers/StdMeshers_Hexa_3D.cxx b/src/StdMeshers/StdMeshers_Hexa_3D.cxx index 335a36a78..aa7b1c043 100644 --- a/src/StdMeshers/StdMeshers_Hexa_3D.cxx +++ b/src/StdMeshers/StdMeshers_Hexa_3D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Hexa_3D.cxx // Moved here from SMESH_Hexa_3D.cxx // Author : Paul RASCLE, EDF @@ -189,7 +189,7 @@ namespace //================================================================================ /*! - * \brief Convertor of a pair of integers to a sole index + * \brief Converter of a pair of integers to a sole index */ struct _Indexer { diff --git a/src/StdMeshers/StdMeshers_Hexa_3D.hxx b/src/StdMeshers/StdMeshers_Hexa_3D.hxx index 8b50468b7..0548c3ff4 100644 --- a/src/StdMeshers/StdMeshers_Hexa_3D.hxx +++ b/src/StdMeshers/StdMeshers_Hexa_3D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Hexa_3D.hxx // Moved here from SMESH_Hexa_3D.hxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_ImportSource.cxx b/src/StdMeshers/StdMeshers_ImportSource.cxx index 0ee9c4b41..bf5128733 100644 --- a/src/StdMeshers/StdMeshers_ImportSource.cxx +++ b/src/StdMeshers/StdMeshers_ImportSource.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers_ImportSource1D : implementaion of SMESH idl descriptions +// SMESH StdMeshers_ImportSource1D : implementation of SMESH idl descriptions // File : StdMeshers_ImportSource1D.cxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_ImportSource.hxx b/src/StdMeshers/StdMeshers_ImportSource.hxx index c4d40d005..52329e514 100644 --- a/src/StdMeshers/StdMeshers_ImportSource.hxx +++ b/src/StdMeshers/StdMeshers_ImportSource.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers : implementaion of SMESH idl descriptions +// SMESH StdMeshers : implementation of SMESH idl descriptions // File : StdMeshers_ImportSource1D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_Import_1D.cxx b/src/StdMeshers/StdMeshers_Import_1D.cxx index 193448010..aeb105383 100644 --- a/src/StdMeshers/StdMeshers_Import_1D.cxx +++ b/src/StdMeshers/StdMeshers_Import_1D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Import_1D.cxx // Module : SMESH // @@ -211,7 +211,7 @@ namespace // INTERNAL STUFF "StdMeshers_Import_1D::_Listener") {} public: - // return poiter to a static listener + // return pointer to a static listener static _Listener* get() { static _Listener theListener; return &theListener; } static _ImportData* getImportData(const SMESH_Mesh* srcMesh, SMESH_Mesh* tgtMesh); diff --git a/src/StdMeshers/StdMeshers_Import_1D.hxx b/src/StdMeshers/StdMeshers_Import_1D.hxx index 2c0166308..ffee0fe4c 100644 --- a/src/StdMeshers/StdMeshers_Import_1D.hxx +++ b/src/StdMeshers/StdMeshers_Import_1D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // Module : SMESH // #ifndef _SMESH_Import_1D_HXX_ diff --git a/src/StdMeshers/StdMeshers_Import_1D2D.cxx b/src/StdMeshers/StdMeshers_Import_1D2D.cxx index 8cc97b6e0..949bd3a90 100644 --- a/src/StdMeshers/StdMeshers_Import_1D2D.cxx +++ b/src/StdMeshers/StdMeshers_Import_1D2D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Import_1D2D.cxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_Import_1D2D.hxx b/src/StdMeshers/StdMeshers_Import_1D2D.hxx index a260f1d2d..15d1adf67 100644 --- a/src/StdMeshers/StdMeshers_Import_1D2D.hxx +++ b/src/StdMeshers/StdMeshers_Import_1D2D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // Module : SMESH // #ifndef _SMESH_Import_2D_HXX_ diff --git a/src/StdMeshers/StdMeshers_LengthFromEdges.cxx b/src/StdMeshers/StdMeshers_LengthFromEdges.cxx index 026d858ae..ce35e21b9 100644 --- a/src/StdMeshers/StdMeshers_LengthFromEdges.cxx +++ b/src/StdMeshers/StdMeshers_LengthFromEdges.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_LengthFromEdges.cxx // Moved here from SMESH_LengthFromEdges.cxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_LengthFromEdges.hxx b/src/StdMeshers/StdMeshers_LengthFromEdges.hxx index 1d210433c..14494eec2 100644 --- a/src/StdMeshers/StdMeshers_LengthFromEdges.hxx +++ b/src/StdMeshers/StdMeshers_LengthFromEdges.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_LengthFromEdges.hxx // Moved here from SMESH_LengthFromEdges.hxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_LocalLength.cxx b/src/StdMeshers/StdMeshers_LocalLength.cxx index d4ebdfb0a..e5c09bd04 100644 --- a/src/StdMeshers/StdMeshers_LocalLength.cxx +++ b/src/StdMeshers/StdMeshers_LocalLength.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_LocalLength.cxx // Moved here from SMESH_LocalLength.cxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_LocalLength.hxx b/src/StdMeshers/StdMeshers_LocalLength.hxx index c6de5797b..76815141b 100644 --- a/src/StdMeshers/StdMeshers_LocalLength.hxx +++ b/src/StdMeshers/StdMeshers_LocalLength.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_LocalLength.hxx // Moved here from SMESH_LocalLength.hxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_MEFISTO_2D.cxx b/src/StdMeshers/StdMeshers_MEFISTO_2D.cxx index 972d4b12c..196dbe7da 100644 --- a/src/StdMeshers/StdMeshers_MEFISTO_2D.cxx +++ b/src/StdMeshers/StdMeshers_MEFISTO_2D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_MEFISTO_2D.cxx // Moved here from SMESH_MEFISTO_2D.cxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_MEFISTO_2D.hxx b/src/StdMeshers/StdMeshers_MEFISTO_2D.hxx index 3c9d69b9b..ba272fd31 100644 --- a/src/StdMeshers/StdMeshers_MEFISTO_2D.hxx +++ b/src/StdMeshers/StdMeshers_MEFISTO_2D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_MEFISTO_2D.hxx // Moved here from SMESH_MEFISTO_2D.hxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_MaxElementArea.cxx b/src/StdMeshers/StdMeshers_MaxElementArea.cxx index 513536da1..5e423c4b5 100644 --- a/src/StdMeshers/StdMeshers_MaxElementArea.cxx +++ b/src/StdMeshers/StdMeshers_MaxElementArea.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_MaxElementArea.cxx // Moved here from SMESH_MaxElementArea.cxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_MaxElementArea.hxx b/src/StdMeshers/StdMeshers_MaxElementArea.hxx index 187c514c1..66139b17c 100644 --- a/src/StdMeshers/StdMeshers_MaxElementArea.hxx +++ b/src/StdMeshers/StdMeshers_MaxElementArea.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_MaxElementArea.hxx // Moved here from SMESH_MaxElementArea.hxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_MaxElementVolume.cxx b/src/StdMeshers/StdMeshers_MaxElementVolume.cxx index 7cdb3e488..2ded219bb 100644 --- a/src/StdMeshers/StdMeshers_MaxElementVolume.cxx +++ b/src/StdMeshers/StdMeshers_MaxElementVolume.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_MaxElementVolume.cxx // Moved here from SMESH_MaxElementVolume.cxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_MaxElementVolume.hxx b/src/StdMeshers/StdMeshers_MaxElementVolume.hxx index 88d0218c9..291385f4d 100644 --- a/src/StdMeshers/StdMeshers_MaxElementVolume.hxx +++ b/src/StdMeshers/StdMeshers_MaxElementVolume.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_MaxElementVolume.hxx // Moved here from SMESH_MaxElementVolume.hxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_MaxLength.cxx b/src/StdMeshers/StdMeshers_MaxLength.cxx index a5774bbc7..b8ca75232 100644 --- a/src/StdMeshers/StdMeshers_MaxLength.cxx +++ b/src/StdMeshers/StdMeshers_MaxLength.cxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_MaxLength.cxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_MaxLength.hxx b/src/StdMeshers/StdMeshers_MaxLength.hxx index 1024d6af5..f9a6ab2ad 100644 --- a/src/StdMeshers/StdMeshers_MaxLength.hxx +++ b/src/StdMeshers/StdMeshers_MaxLength.hxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_MaxLength.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_NotConformAllowed.cxx b/src/StdMeshers/StdMeshers_NotConformAllowed.cxx index a3ab8278d..301fd8ba3 100644 --- a/src/StdMeshers/StdMeshers_NotConformAllowed.cxx +++ b/src/StdMeshers/StdMeshers_NotConformAllowed.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers : implementaion of SMESH idl descriptions +// SMESH StdMeshers : implementation of SMESH idl descriptions // File : StdMeshers_NotConformAllowed.cxx // Author : Paul RASCLE, EDF // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_NotConformAllowed.hxx b/src/StdMeshers/StdMeshers_NotConformAllowed.hxx index 79c4d0210..012eccfba 100644 --- a/src/StdMeshers/StdMeshers_NotConformAllowed.hxx +++ b/src/StdMeshers/StdMeshers_NotConformAllowed.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers : implementaion of SMESH idl descriptions +// SMESH StdMeshers : implementation of SMESH idl descriptions // File : StdMeshers_NotConformAllowed.hxx // Author : Paul RASCLE, EDF // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_NumberOfSegments.cxx b/src/StdMeshers/StdMeshers_NumberOfSegments.cxx index 98dac7e84..fc8da4162 100644 --- a/src/StdMeshers/StdMeshers_NumberOfSegments.cxx +++ b/src/StdMeshers/StdMeshers_NumberOfSegments.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_NumberOfSegments.cxx // Moved here from SMESH_NumberOfSegments.cxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_NumberOfSegments.hxx b/src/StdMeshers/StdMeshers_NumberOfSegments.hxx index 459c286a1..a85308bbf 100644 --- a/src/StdMeshers/StdMeshers_NumberOfSegments.hxx +++ b/src/StdMeshers/StdMeshers_NumberOfSegments.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_NumberOfSegments.hxx // Moved here from SMESH_NumberOfSegments.hxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_Penta_3D.cxx b/src/StdMeshers/StdMeshers_Penta_3D.cxx index b6fc7449d..c45cabf95 100644 --- a/src/StdMeshers/StdMeshers_Penta_3D.cxx +++ b/src/StdMeshers/StdMeshers_Penta_3D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers_Penta_3D implementaion of SMESH idl descriptions +// SMESH StdMeshers_Penta_3D implementation of SMESH idl descriptions // File : StdMeshers_Penta_3D.cxx // Module : SMESH // @@ -421,7 +421,7 @@ void StdMeshers_Penta_3D::MakeNodes() aZ=(double)i/(double)(myISize-1); aCoords.SetCoord(aX, aY, aZ); // - // suporting shape ID + // supporting shape ID ShapeSupportID(bIsUpperLayer, aBNSSID, aSSID); if (!myErrorStatus->IsOK()) { MESSAGE("StdMeshers_Penta_3D::MakeNodes() pb"); diff --git a/src/StdMeshers/StdMeshers_Penta_3D.hxx b/src/StdMeshers/StdMeshers_Penta_3D.hxx index 244101e12..f216d0fba 100644 --- a/src/StdMeshers/StdMeshers_Penta_3D.hxx +++ b/src/StdMeshers/StdMeshers_Penta_3D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers : implementaion of SMESH idl descriptions +// SMESH StdMeshers : implementation of SMESH idl descriptions // File : StdMeshers_Penta_3D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_Prism_3D.cxx b/src/StdMeshers/StdMeshers_Prism_3D.cxx index 4dd948be3..d27c966c1 100644 --- a/src/StdMeshers/StdMeshers_Prism_3D.cxx +++ b/src/StdMeshers/StdMeshers_Prism_3D.cxx @@ -3424,7 +3424,7 @@ bool StdMeshers_Prism_3D::initPrism(Prism_3D::TPrismTopo& thePrism, if ( !botSM ) // find a proper bottom { bool savedSetErrorToSM = mySetErrorToSM; - mySetErrorToSM = false; // ingore errors in initPrism() + mySetErrorToSM = false; // ignore errors in initPrism() // search among meshed FACEs list< SMESH_subMesh* >::iterator sm = meshedSubMesh.begin(); @@ -4959,7 +4959,7 @@ bool StdMeshers_Sweeper::ComputeNodesByTrsf( const double tol, const size_t zSrc = 0, zTgt = zSize-1; if ( zSize < 3 ) return true; - vector< vector< gp_XYZ > > intPntsOfLayer( zSize ); // node coodinates to compute + vector< vector< gp_XYZ > > intPntsOfLayer( zSize ); // node coordinates to compute // set coordinates of src and tgt nodes for ( size_t z = 0; z < intPntsOfLayer.size(); ++z ) intPntsOfLayer[ z ].resize( myIntColumns.size() ); @@ -4973,7 +4973,7 @@ bool StdMeshers_Sweeper::ComputeNodesByTrsf( const double tol, prepareTopBotDelaunay(); bool isErrorCorrectable = findDelaunayTriangles(); - // compute coordinates of internal nodes by projecting (transfroming) src and tgt + // compute coordinates of internal nodes by projecting (transforming) src and tgt // nodes towards the central layer vector< NSProjUtils::TrsfFinder3D > trsfOfLayer( zSize ); diff --git a/src/StdMeshers/StdMeshers_Prism_3D.hxx b/src/StdMeshers/StdMeshers_Prism_3D.hxx index 62f0b9a14..129a6e3e3 100644 --- a/src/StdMeshers/StdMeshers_Prism_3D.hxx +++ b/src/StdMeshers/StdMeshers_Prism_3D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Prism_3D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_ProjectionUtils.cxx b/src/StdMeshers/StdMeshers_ProjectionUtils.cxx index 924eba9bf..2070ef108 100644 --- a/src/StdMeshers/StdMeshers_ProjectionUtils.cxx +++ b/src/StdMeshers/StdMeshers_ProjectionUtils.cxx @@ -479,7 +479,7 @@ namespace { } /*! - * \brief Convertor used in Delaunay constructor + * \brief Converter used in Delaunay constructor */ struct SideVector2UVPtStructVec { @@ -1253,7 +1253,7 @@ bool StdMeshers_ProjectionUtils::FindSubShapeAssociation(const TopoDS_Shape& the const TopoDS_Shape& v1 = vMap1(i); if ( vMap2.Contains( v1 )) { - // find an egde sharing v1 and sharing at the same time another common vertex + // find an edge sharing v1 and sharing at the same time another common vertex PShapeIteratorPtr edgeIt = SMESH_MesherHelper::GetAncestors( v1, *theMesh1, TopAbs_EDGE); bool edgeFound = false; while ( edgeIt->more() && !edgeFound ) diff --git a/src/StdMeshers/StdMeshers_Projection_1D.cxx b/src/StdMeshers/StdMeshers_Projection_1D.cxx index 976b0311c..cf41af196 100644 --- a/src/StdMeshers/StdMeshers_Projection_1D.cxx +++ b/src/StdMeshers/StdMeshers_Projection_1D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Projection_1D.cxx // Module : SMESH // Created : Fri Oct 20 11:37:07 2006 diff --git a/src/StdMeshers/StdMeshers_Projection_1D.hxx b/src/StdMeshers/StdMeshers_Projection_1D.hxx index cf7bccb23..2fbd27420 100644 --- a/src/StdMeshers/StdMeshers_Projection_1D.hxx +++ b/src/StdMeshers/StdMeshers_Projection_1D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Projection_1D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_Projection_2D.cxx b/src/StdMeshers/StdMeshers_Projection_2D.cxx index 64ce054c5..0686b165a 100644 --- a/src/StdMeshers/StdMeshers_Projection_2D.cxx +++ b/src/StdMeshers/StdMeshers_Projection_2D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Projection_2D.cxx // Module : SMESH // Created : Fri Oct 20 11:37:07 2006 diff --git a/src/StdMeshers/StdMeshers_Projection_2D.hxx b/src/StdMeshers/StdMeshers_Projection_2D.hxx index 2ccb21729..0fbe35cc0 100644 --- a/src/StdMeshers/StdMeshers_Projection_2D.hxx +++ b/src/StdMeshers/StdMeshers_Projection_2D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Projection_2D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_Projection_3D.cxx b/src/StdMeshers/StdMeshers_Projection_3D.cxx index 040b2efc4..43a6c4c09 100644 --- a/src/StdMeshers/StdMeshers_Projection_3D.cxx +++ b/src/StdMeshers/StdMeshers_Projection_3D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Projection_3D.cxx // Module : SMESH // Created : Fri Oct 20 11:37:07 2006 diff --git a/src/StdMeshers/StdMeshers_Projection_3D.hxx b/src/StdMeshers/StdMeshers_Projection_3D.hxx index 008ca7429..78db64c6b 100644 --- a/src/StdMeshers/StdMeshers_Projection_3D.hxx +++ b/src/StdMeshers/StdMeshers_Projection_3D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Projection_3D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_Propagation.cxx b/src/StdMeshers/StdMeshers_Propagation.cxx index 56a5887bc..750d1abd2 100644 --- a/src/StdMeshers/StdMeshers_Propagation.cxx +++ b/src/StdMeshers/StdMeshers_Propagation.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Propagation.cxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_Propagation.hxx b/src/StdMeshers/StdMeshers_Propagation.hxx index d94608a96..17b09eefc 100644 --- a/src/StdMeshers/StdMeshers_Propagation.hxx +++ b/src/StdMeshers/StdMeshers_Propagation.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Propagation.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_QuadranglePreference.cxx b/src/StdMeshers/StdMeshers_QuadranglePreference.cxx index b6c49182a..8b6ccfa3c 100644 --- a/src/StdMeshers/StdMeshers_QuadranglePreference.cxx +++ b/src/StdMeshers/StdMeshers_QuadranglePreference.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers_QuadranglePreference : implementaion of SMESH idl descriptions +// SMESH StdMeshers_QuadranglePreference : implementation of SMESH idl descriptions // File : StdMeshers_QuadranglePreference.cxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_QuadranglePreference.hxx b/src/StdMeshers/StdMeshers_QuadranglePreference.hxx index 6ed0677c1..9bc482e1a 100644 --- a/src/StdMeshers/StdMeshers_QuadranglePreference.hxx +++ b/src/StdMeshers/StdMeshers_QuadranglePreference.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers : implementaion of SMESH idl descriptions +// SMESH StdMeshers : implementation of SMESH idl descriptions // File : StdMeshers_QuadranglePreference.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx b/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx index 66654eeac..679769a8f 100644 --- a/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx +++ b/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx @@ -1761,7 +1761,7 @@ bool StdMeshers_Quadrangle_2D::computeQuadPref (SMESH_Mesh & aMesh, // | | | | // | |C | | // | L | | R | - // left | |__| | rigth + // left | |__| | right // | / \ | // | / C \ | // |/ \| @@ -1774,7 +1774,7 @@ bool StdMeshers_Quadrangle_2D::computeQuadPref (SMESH_Mesh & aMesh, // | |__| | // | / \ | // | / C \ | - // left |/________\| rigth + // left |/________\| right // | | // | C | // | | @@ -2997,7 +2997,7 @@ bool StdMeshers_Quadrangle_2D::computeReduced (SMESH_Mesh & aMesh, // | | | | // | | | | // | L | | R | - // left | | | | rigth + // left | | | | right // | / \ | // | / C \ | // |/ \| diff --git a/src/StdMeshers/StdMeshers_QuadraticMesh.cxx b/src/StdMeshers/StdMeshers_QuadraticMesh.cxx index e014c36c9..81270bfab 100644 --- a/src/StdMeshers/StdMeshers_QuadraticMesh.cxx +++ b/src/StdMeshers/StdMeshers_QuadraticMesh.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers_QuadraticMesh : implementaion of SMESH idl descriptions +// SMESH StdMeshers_QuadraticMesh : implementation of SMESH idl descriptions // File : StdMeshers_QuadraticMesh.cxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_QuadraticMesh.hxx b/src/StdMeshers/StdMeshers_QuadraticMesh.hxx index aba088089..6fd428754 100644 --- a/src/StdMeshers/StdMeshers_QuadraticMesh.hxx +++ b/src/StdMeshers/StdMeshers_QuadraticMesh.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers : implementaion of SMESH idl descriptions +// SMESH StdMeshers : implementation of SMESH idl descriptions // File : StdMeshers_QuadraticMesh.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_RadialPrism_3D.cxx b/src/StdMeshers/StdMeshers_RadialPrism_3D.cxx index 23962cba2..c5af23f3d 100644 --- a/src/StdMeshers/StdMeshers_RadialPrism_3D.cxx +++ b/src/StdMeshers/StdMeshers_RadialPrism_3D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_RadialPrism_3D.cxx // Module : SMESH // Created : Fri Oct 20 11:37:07 2006 diff --git a/src/StdMeshers/StdMeshers_RadialPrism_3D.hxx b/src/StdMeshers/StdMeshers_RadialPrism_3D.hxx index 144905e81..71d4d2238 100644 --- a/src/StdMeshers/StdMeshers_RadialPrism_3D.hxx +++ b/src/StdMeshers/StdMeshers_RadialPrism_3D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_RadialPrism_3D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.hxx b/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.hxx index a029757dd..0b0803b9d 100644 --- a/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.hxx +++ b/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.hxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_RadialQuadrangle_1D2D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_Regular_1D.hxx b/src/StdMeshers/StdMeshers_Regular_1D.hxx index d2af675f7..90dba12ad 100644 --- a/src/StdMeshers/StdMeshers_Regular_1D.hxx +++ b/src/StdMeshers/StdMeshers_Regular_1D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Regular_1D.hxx // Moved here from SMESH_Regular_1D.hxx // Author : Paul RASCLE, EDF diff --git a/src/StdMeshers/StdMeshers_Reversible1D.cxx b/src/StdMeshers/StdMeshers_Reversible1D.cxx index b5b20f7af..9562e9da1 100644 --- a/src/StdMeshers/StdMeshers_Reversible1D.cxx +++ b/src/StdMeshers/StdMeshers_Reversible1D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Reversible1D.cxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_Reversible1D.hxx b/src/StdMeshers/StdMeshers_Reversible1D.hxx index c146e1728..a856eddfa 100644 --- a/src/StdMeshers/StdMeshers_Reversible1D.hxx +++ b/src/StdMeshers/StdMeshers_Reversible1D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_Reversible1D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.cxx b/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.cxx index f938d2829..b109328a5 100644 --- a/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.cxx +++ b/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_SegmentAroundVertex_0D.cxx // Module : SMESH // Created : Fri Oct 20 11:37:07 2006 diff --git a/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.hxx b/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.hxx index 3e863df4c..4b0e53968 100644 --- a/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.hxx +++ b/src/StdMeshers/StdMeshers_SegmentAroundVertex_0D.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_SegmentAroundVertex_0D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.cxx b/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.cxx index 317d44cbd..46baaadc2 100644 --- a/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.cxx +++ b/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_SegmentLengthAroundVertex.cxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.hxx b/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.hxx index 66b095c13..355bee46c 100644 --- a/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.hxx +++ b/src/StdMeshers/StdMeshers_SegmentLengthAroundVertex.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_SegmentLengthAroundVertex.hxx // Author : Paul RASCLE, EDF // Module : SMESH diff --git a/src/StdMeshers/StdMeshers_StartEndLength.cxx b/src/StdMeshers/StdMeshers_StartEndLength.cxx index 5e63f8cae..51bb2cf92 100644 --- a/src/StdMeshers/StdMeshers_StartEndLength.cxx +++ b/src/StdMeshers/StdMeshers_StartEndLength.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers_StartEndLength : implementaion of SMESH idl descriptions +// SMESH StdMeshers_StartEndLength : implementation of SMESH idl descriptions // File : StdMeshers_StartEndLength.cxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_StartEndLength.hxx b/src/StdMeshers/StdMeshers_StartEndLength.hxx index 37a442c43..12f5f3c95 100644 --- a/src/StdMeshers/StdMeshers_StartEndLength.hxx +++ b/src/StdMeshers/StdMeshers_StartEndLength.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers : implementaion of SMESH idl descriptions +// SMESH StdMeshers : implementation of SMESH idl descriptions // File : StdMeshers_StartEndLength.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_UseExisting_1D2D.cxx b/src/StdMeshers/StdMeshers_UseExisting_1D2D.cxx index 6fcd338dc..2999915f4 100644 --- a/src/StdMeshers/StdMeshers_UseExisting_1D2D.cxx +++ b/src/StdMeshers/StdMeshers_UseExisting_1D2D.cxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_UseExisting_1D2D.cxx // Module : SMESH // Created : Fri Oct 20 11:37:07 2006 diff --git a/src/StdMeshers/StdMeshers_UseExisting_1D2D.hxx b/src/StdMeshers/StdMeshers_UseExisting_1D2D.hxx index 9bcb4a0ff..89b3bf06f 100644 --- a/src/StdMeshers/StdMeshers_UseExisting_1D2D.hxx +++ b/src/StdMeshers/StdMeshers_UseExisting_1D2D.hxx @@ -17,7 +17,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_UseExisting_1D2D.hxx // Module : SMESH // diff --git a/src/StdMeshers/StdMeshers_ViscousLayers.cxx b/src/StdMeshers/StdMeshers_ViscousLayers.cxx index 0864aaa25..e6d99c74e 100644 --- a/src/StdMeshers/StdMeshers_ViscousLayers.cxx +++ b/src/StdMeshers/StdMeshers_ViscousLayers.cxx @@ -4309,7 +4309,7 @@ void _Simplex::SortSimplices(vector<_Simplex>& simplices) //================================================================================ /*! - * \brief DEBUG. Create groups contating temorary data of _LayerEdge's + * \brief DEBUG. Create groups containing temporary data of _LayerEdge's */ //================================================================================ @@ -6722,7 +6722,7 @@ void _ViscousBuilder::findCollisionEdges( _SolidData& data, SMESH_MesherHelper& src2->GetID() < edge->_nodes[0]->GetID() ) continue; // avoid using same segment twice - // a _LayerEdge containg tgt2 + // a _LayerEdge containing tgt2 _LayerEdge* neiborEdge = edge->_2neibors->_edges[j]; _TmpMeshFaceOnEdge* f = new _TmpMeshFaceOnEdge( edge, neiborEdge, --_tmpFaceID ); @@ -10981,7 +10981,7 @@ void _ViscousBuilder::restoreNoShrink( _LayerEdge& edge ) const //================================================================================ /*! - * \brief Try to fix triangles with high aspect ratio by swaping diagonals + * \brief Try to fix triangles with high aspect ratio by swapping diagonals */ //================================================================================ diff --git a/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx b/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx index 971cebf88..6cb97c538 100644 --- a/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx +++ b/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx @@ -176,7 +176,7 @@ namespace VISCOUS_2D */ struct _Segment { - const gp_XY* _uv[2]; // poiter to _LayerEdge::_uvIn + const gp_XY* _uv[2]; // pointer to _LayerEdge::_uvIn int _indexInLine; // position in _PolyLine _Segment() {} diff --git a/src/StdMeshersGUI/StdMeshersGUI_CartesianParamCreator.cxx b/src/StdMeshersGUI/StdMeshersGUI_CartesianParamCreator.cxx index eddf11b3c..88ea48899 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_CartesianParamCreator.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_CartesianParamCreator.cxx @@ -430,7 +430,7 @@ namespace StdMeshersGUI //================================================================================ /*! - * \brief Checks grid definintion mode + * \brief Checks grid definition mode */ //================================================================================ @@ -1428,7 +1428,7 @@ void StdMeshersGUI_CartesianParamCreator::onResetAxes(bool) //================================================================================ /*! - * \brief SLOT called when the grid definintion mode changes + * \brief SLOT called when the grid definition mode changes */ //================================================================================ diff --git a/src/StdMeshersGUI/StdMeshersGUI_DistrTable.cxx b/src/StdMeshersGUI/StdMeshersGUI_DistrTable.cxx index d1acacfef..bcda6e0de 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_DistrTable.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_DistrTable.cxx @@ -28,7 +28,7 @@ #include -// Qt incldues +// Qt includes #include #include #include diff --git a/src/StdMeshersGUI/StdMeshersGUI_ObjectReferenceParamWdg.cxx b/src/StdMeshersGUI/StdMeshersGUI_ObjectReferenceParamWdg.cxx index 823331951..8ce79e2f8 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_ObjectReferenceParamWdg.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_ObjectReferenceParamWdg.cxx @@ -36,7 +36,7 @@ #include #include -// SALOME KERNEL incldues +// SALOME KERNEL includes #include #include diff --git a/src/StdMeshersGUI/StdMeshersGUI_QuadrangleParamWdg.h b/src/StdMeshersGUI/StdMeshersGUI_QuadrangleParamWdg.h index 67af7fbe7..e80223a24 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_QuadrangleParamWdg.h +++ b/src/StdMeshersGUI/StdMeshersGUI_QuadrangleParamWdg.h @@ -109,7 +109,7 @@ class STDMESHERSGUI_EXPORT StdMeshersGUI_QuadrangleParamWdg : public QWidget void typeChanged(int); private: - QButtonGroup* myType; // Quadranle preference, Triangle preference, Reduced + QButtonGroup* myType; // Quadrangle preference, Triangle preference, Reduced }; //================================================================================ diff --git a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx index a7841c1e5..bc551c68b 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx @@ -126,7 +126,7 @@ QWidget* StdMeshersGUI_StdHypothesisCreator::getWidgetForParam( int i ) const //================================================================================ /*! - * \brief Allow modifing myCustomWidgets in const methods + * \brief Allow modifying myCustomWidgets in const methods * \retval ListOfWidgets* - non-const pointer to myCustomWidgets */ //================================================================================ @@ -1433,7 +1433,7 @@ QString StdMeshersGUI_StdHypothesisCreator::type() const //================================================================================ /*! * \brief String to insert in "SMESH_%1_HYPOTHESIS" to get hypothesis type name - * from message resouce file + * from message resource file * \param t - hypothesis type * \retval QString - result string */ diff --git a/src/StdMeshers_I/StdMeshers_ObjRefUlils.cxx b/src/StdMeshers_I/StdMeshers_ObjRefUlils.cxx index 89cca0caa..7ad64cee2 100644 --- a/src/StdMeshers_I/StdMeshers_ObjRefUlils.cxx +++ b/src/StdMeshers_I/StdMeshers_ObjRefUlils.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_ObjRefUlils.cxx // Created : Wed Oct 18 15:38:22 2006 // Author : Edward AGAPOV (eap) diff --git a/src/StdMeshers_I/StdMeshers_ObjRefUlils.hxx b/src/StdMeshers_I/StdMeshers_ObjRefUlils.hxx index 63d6714aa..ca30fd3d2 100644 --- a/src/StdMeshers_I/StdMeshers_ObjRefUlils.hxx +++ b/src/StdMeshers_I/StdMeshers_ObjRefUlils.hxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_ObjRefUlils.hxx // Created : Wed Oct 18 15:15:27 2006 // Author : Edward AGAPOV (eap) @@ -42,7 +42,7 @@ class StdMeshers_ObjRefUlils { public: /*! - * \brief Return GEOM Object correspoding to TopoDS_Shape + * \brief Return GEOM Object corresponding to TopoDS_Shape * \param theShape - input TopoDS_Shape * \retval GEOM::GEOM_Object_ptr - result object */ @@ -54,7 +54,7 @@ public: } /*! - * \brief Return TopoDS_Shape correspoding to GEOM_Object + * \brief Return TopoDS_Shape corresponding to GEOM_Object * \param theGeomObject - input object * \retval TopoDS_Shape - result TopoDS_Shape */ diff --git a/src/StdMeshers_I/StdMeshers_i.cxx b/src/StdMeshers_I/StdMeshers_i.cxx index b94ca0a0f..97b28afcf 100644 --- a/src/StdMeshers_I/StdMeshers_i.cxx +++ b/src/StdMeshers_I/StdMeshers_i.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers : implementaion of SMESH idl descriptions +// SMESH StdMeshers : implementation of SMESH idl descriptions // File : StdMeshers_i.cxx // Author : Julia DOROVSKIKH // Module : SMESH From 80637e48ef0a19bb89acdf00c98959ab08b5dcc8 Mon Sep 17 00:00:00 2001 From: eap Date: Tue, 9 Jan 2018 13:48:40 +0300 Subject: [PATCH 4/6] typo-fix by Kunda http://www.salome-platform.org/forum/forum_10/195000978 --- doc/salome/gui/SMESH/input/tui_filters.doc | 2 +- src/DriverGMF/libmesh5.c | 2 +- src/StdMeshers/StdMeshers_Cartesian_3D.cxx | 2 +- .../StdMeshers_CompositeHexa_3D.cxx | 2 +- src/StdMeshers/StdMeshers_Penta_3D.cxx | 8 ++++---- src/StdMeshers/StdMeshers_Penta_3D.hxx | 2 +- src/StdMeshers/StdMeshers_Prism_3D.cxx | 2 +- .../StdMeshers_QuadFromMedialAxis_1D2D.cxx | 4 ++-- src/StdMeshers/StdMeshers_ViscousLayers.cxx | 20 +++++++++---------- src/Tools/YamsPlug/doc/Advanced_params.rst | 2 +- 10 files changed, 23 insertions(+), 23 deletions(-) diff --git a/doc/salome/gui/SMESH/input/tui_filters.doc b/doc/salome/gui/SMESH/input/tui_filters.doc index 3c115293e..d77c447e6 100755 --- a/doc/salome/gui/SMESH/input/tui_filters.doc +++ b/doc/salome/gui/SMESH/input/tui_filters.doc @@ -190,7 +190,7 @@ filters over-constrained faces: \section filter_double_elements Double edges, Double faces, Double volumes filters mesh elements basing on the same set of nodes: -- element type is either \a SMESH.EGDE, \a SMESH.FACE or \a SMESH.VOLUME +- element type is either \a SMESH.EDGE, \a SMESH.FACE or \a SMESH.VOLUME - functor type is either \a SMESH.FT_EqualEdges, \a SMESH.FT_EqualFaces or \a SMESH.FT_EqualVolumes, - threshold value is not required diff --git a/src/DriverGMF/libmesh5.c b/src/DriverGMF/libmesh5.c index e0892c77e..73b6247d2 100644 --- a/src/DriverGMF/libmesh5.c +++ b/src/DriverGMF/libmesh5.c @@ -247,7 +247,7 @@ int GmfOpenMesh(const char *FilNam, int mod, ...) return(0); } - /* Open the file in the required mod and initialyse the mesh structure */ + /* Open the file in the required mod and initialise the mesh structure */ if(msh->mod == GmfRead) { diff --git a/src/StdMeshers/StdMeshers_Cartesian_3D.cxx b/src/StdMeshers/StdMeshers_Cartesian_3D.cxx index 3eaed0f7a..62e590b62 100644 --- a/src/StdMeshers/StdMeshers_Cartesian_3D.cxx +++ b/src/StdMeshers/StdMeshers_Cartesian_3D.cxx @@ -2460,7 +2460,7 @@ namespace ip._faceIDs = e2fIt->second; ip._shapeID = edgeID; - // discretize the EGDE + // discretize the EDGE GCPnts_UniformDeflection discret( curve, deflection, true ); if ( !discret.IsDone() || discret.NbPoints() < 2 ) continue; diff --git a/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx b/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx index 662e62b8d..ebdbd9ee4 100644 --- a/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx +++ b/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx @@ -577,7 +577,7 @@ bool StdMeshers_CompositeHexa_3D::findBoxFaces( const TopoDS_Shape& shape, * \brief Computes hexahedral mesh on a box with composite sides * \param aMesh - mesh to compute * \param aShape - shape to mesh - * \retval bool - succes sign + * \retval bool - success sign */ //================================================================================ diff --git a/src/StdMeshers/StdMeshers_Penta_3D.cxx b/src/StdMeshers/StdMeshers_Penta_3D.cxx index c45cabf95..0223a7a07 100644 --- a/src/StdMeshers/StdMeshers_Penta_3D.cxx +++ b/src/StdMeshers/StdMeshers_Penta_3D.cxx @@ -574,7 +574,7 @@ double StdMeshers_Penta_3D::SetHorizEdgeXYZ(const gp_XYZ& aBase SMESH_Block::GetFaceEdgesIDs( aFaceID, edgeVec ); // int coord = SMESH_Block::GetCoordIndOnEdge( edgeVec[ BASE ] ); - bool isForward = myBlock.IsForwadEdge( edgeVec[ BASE ] ); + bool isForward = myBlock.IsForwardEdge( edgeVec[ BASE ] ); double param = aBaseNodeParams.Coord( coord ); if ( !isForward) @@ -1543,7 +1543,7 @@ bool StdMeshers_Penta_3D::LoadIJNodes(StdMeshers_IJNodeMap & theIJNodes, } // look for a not loaded node of the bool found = false; - const SMDS_MeshNode* n3 = 0; // a node defferent from n1 and n2 + const SMDS_MeshNode* n3 = 0; // a node different from n1 and n2 eIt = face->nodesIterator() ; while ( !found && eIt->more() ) { node = static_cast( eIt->next() ); @@ -1609,11 +1609,11 @@ StdMeshers_SMESHBlock::StdMeshers_SMESHBlock() } //======================================================================= -//function : IsForwadEdge +//function : IsForwardEdge //purpose : //======================================================================= -bool StdMeshers_SMESHBlock::IsForwadEdge(const int theEdgeID) +bool StdMeshers_SMESHBlock::IsForwardEdge(const int theEdgeID) { int index = myTBlock.ShapeIndex( theEdgeID ); if ( !myTBlock.IsEdgeID( theEdgeID )) diff --git a/src/StdMeshers/StdMeshers_Penta_3D.hxx b/src/StdMeshers/StdMeshers_Penta_3D.hxx index f216d0fba..57f6ad447 100644 --- a/src/StdMeshers/StdMeshers_Penta_3D.hxx +++ b/src/StdMeshers/StdMeshers_Penta_3D.hxx @@ -86,7 +86,7 @@ public: SMESH_Block & Block() { return myTBlock; } - bool IsForwadEdge(const int theEdgeID); + bool IsForwardEdge(const int theEdgeID); int ErrorStatus() const; diff --git a/src/StdMeshers/StdMeshers_Prism_3D.cxx b/src/StdMeshers/StdMeshers_Prism_3D.cxx index d27c966c1..9dde41365 100644 --- a/src/StdMeshers/StdMeshers_Prism_3D.cxx +++ b/src/StdMeshers/StdMeshers_Prism_3D.cxx @@ -3063,7 +3063,7 @@ bool StdMeshers_Prism_3D::IsApplicable(const TopoDS_Shape & shape, bool toCheckA if ( side._topEdge.IsNull() ) { - // find vertical EDGEs --- EGDEs shared with neighbor side FACEs + // find vertical EDGEs --- EDGEs shared with neighbor side FACEs for ( int is2nd = 0; is2nd < 2 && isOK; ++is2nd ) // 2 adjacent neighbors { int di = is2nd ? 1 : -1; diff --git a/src/StdMeshers/StdMeshers_QuadFromMedialAxis_1D2D.cxx b/src/StdMeshers/StdMeshers_QuadFromMedialAxis_1D2D.cxx index 85592db51..094784908 100644 --- a/src/StdMeshers/StdMeshers_QuadFromMedialAxis_1D2D.cxx +++ b/src/StdMeshers/StdMeshers_QuadFromMedialAxis_1D2D.cxx @@ -1019,7 +1019,7 @@ namespace * \param [in] theDivPoints - projections of VERTEXes to MA * \param [in] theSinuEdges - the sinuous EDGEs * \param [in] theSideEdgeIDs - indices of sinuous EDGEs per side - * \param [in] theIsEdgeComputed - is sinuous EGDE is meshed + * \param [in] theIsEdgeComputed - is sinuous EDGE is meshed * \param [in,out] thePointsOnE - the map to fill * \param [out] theNodes2Merge - the map of nodes to merge */ @@ -1642,7 +1642,7 @@ namespace //================================================================================ /*! * \brief Divide the sinuous EDGEs by projecting the division point of Medial - * Axis to the EGDEs + * Axis to the EDGEs * \param [in] theHelper - the helper * \param [in] theMinSegLen - minimal segment length * \param [in] theMA - the Medial Axis diff --git a/src/StdMeshers/StdMeshers_ViscousLayers.cxx b/src/StdMeshers/StdMeshers_ViscousLayers.cxx index e6d99c74e..34f3f07a5 100644 --- a/src/StdMeshers/StdMeshers_ViscousLayers.cxx +++ b/src/StdMeshers/StdMeshers_ViscousLayers.cxx @@ -764,7 +764,7 @@ namespace VISCOUS_3D // Convex FACEs whose radius of curvature is less than the thickness of layers map< TGeomID, _ConvexFace > _convexFaces; - // shapes (EDGEs and VERTEXes) srink from which is forbidden due to collisions with + // shapes (EDGEs and VERTEXes) shrink from which is forbidden due to collisions with // the adjacent SOLID set< TGeomID > _noShrinkShapes; @@ -3082,7 +3082,7 @@ bool _ViscousBuilder::findShapesToSmooth( _SolidData& data ) } - // Fill _eosC1 to make that C1 FACEs and EGDEs between them to be smoothed as a whole + // Fill _eosC1 to make that C1 FACEs and EDGEs between them to be smoothed as a whole TopTools_MapOfShape c1VV; @@ -10331,7 +10331,7 @@ bool _ViscousBuilder::shrink(_SolidData& theData) vector< _EdgesOnShape* > subEOS; vector< _LayerEdge* > lEdges; - // loop on FACEs to srink mesh on + // loop on FACEs to shrink mesh on map< TGeomID, list< _SolidData* > >::iterator f2sd = f2sdMap.begin(); for ( ; f2sd != f2sdMap.end(); ++f2sd ) { @@ -10481,13 +10481,13 @@ bool _ViscousBuilder::shrink(_SolidData& theData) if ( eos.SWOLType() == TopAbs_EDGE ) { SMESH_subMesh* edgeSM = _mesh->GetSubMesh( eos._sWOL ); - _Shrinker1D& srinker = e2shrMap[ edgeSM->GetId() ]; - eShri1D.insert( & srinker ); - srinker.AddEdge( eos._edges[0], eos, helper ); + _Shrinker1D& shrinker = e2shrMap[ edgeSM->GetId() ]; + eShri1D.insert( & shrinker ); + shrinker.AddEdge( eos._edges[0], eos, helper ); VISCOUS_3D::ToClearSubWithMain( edgeSM, data._solid ); - // restore params of nodes on EGDE if the EDGE has been already - // srinked while srinking other FACE - srinker.RestoreParams(); + // restore params of nodes on EDGE if the EDGE has been already + // shrinked while shrinking other FACE + shrinker.RestoreParams(); } for ( size_t i = 0; i < eos._edges.size(); ++i ) { @@ -10834,7 +10834,7 @@ bool _ViscousBuilder::shrink(_SolidData& theData) if ( data2 ) VISCOUS_3D::ToClearSubWithMain( sm, data2->_solid ); - } // loop on FACES to srink mesh on + } // loop on FACES to shrink mesh on // Replace source nodes by target nodes in shrinked mesh edges diff --git a/src/Tools/YamsPlug/doc/Advanced_params.rst b/src/Tools/YamsPlug/doc/Advanced_params.rst index e0034905b..ba6fef3a5 100644 --- a/src/Tools/YamsPlug/doc/Advanced_params.rst +++ b/src/Tools/YamsPlug/doc/Advanced_params.rst @@ -34,7 +34,7 @@ These two parameters allow the user to prescribe a Maximal/Minimal size for the - **Mesh gradation** -This parameter P controls the element size variation : MeshGems-SurfOpt will avoid having two adjacent egdes which sizes vary more than th given gradation. A size correction is applied to the size map : if two adjacent edges are respectively e1 and e2 long and e2 > Pxe1, then, the new size for the second edge will be set to P x e1. +This parameter P controls the element size variation : MeshGems-SurfOpt will avoid having two adjacent edges which sizes vary more than the given gradation. A size correction is applied to the size map : if two adjacent edges are respectively e1 and e2 long and e2 > Pxe1, then, the new size for the second edge will be set to P x e1. **This procedure is deactived if P=-1** From c656333fb4f2415a0b88821a721072f28b30a53a Mon Sep 17 00:00:00 2001 From: eap Date: Mon, 15 Jan 2018 17:20:17 +0300 Subject: [PATCH 5/6] IPAL54364: Add Gravity Center measurement --- idl/SMESH_Measurements.idl | 8 +++- src/SMESH_I/SMESH_Measurements_i.cxx | 57 ++++++++++++++++++++++++---- src/SMESH_I/SMESH_Measurements_i.hxx | 9 ++++- src/SMESH_SWIG/smeshBuilder.py | 12 ++++++ 4 files changed, 74 insertions(+), 12 deletions(-) diff --git a/idl/SMESH_Measurements.idl b/idl/SMESH_Measurements.idl index cb6d68acf..d3a9c77f4 100644 --- a/idl/SMESH_Measurements.idl +++ b/idl/SMESH_Measurements.idl @@ -31,7 +31,6 @@ module SMESH { - /* * Measure component */ @@ -70,7 +69,12 @@ module SMESH * sum of volume of 3D elements of the source */ double Volume(in SMESH_IDSource source); + + /*! + * gravity center of the source + */ + PointStruct GravityCenter(in SMESH_IDSource source); }; -}; +}; #endif diff --git a/src/SMESH_I/SMESH_Measurements_i.cxx b/src/SMESH_I/SMESH_Measurements_i.cxx index d5ddc864c..ca0103c01 100644 --- a/src/SMESH_I/SMESH_Measurements_i.cxx +++ b/src/SMESH_I/SMESH_Measurements_i.cxx @@ -28,16 +28,15 @@ #include "SMESH_Measurements_i.hxx" -#include "SMESH_Gen_i.hxx" -#include "SMESH_Filter_i.hxx" -#include "SMESH_PythonDump.hxx" - -#include "SMDS_Mesh.hxx" -#include "SMDS_MeshNode.hxx" -#include "SMDS_MeshElement.hxx" #include "SMDS_ElemIterator.hxx" - +#include "SMDS_Mesh.hxx" +#include "SMDS_MeshElement.hxx" +#include "SMDS_MeshNode.hxx" #include "SMESHDS_Mesh.hxx" +#include "SMESH_Filter_i.hxx" +#include "SMESH_Gen_i.hxx" +#include "SMESH_MeshAlgos.hxx" +#include "SMESH_PythonDump.hxx" using namespace SMESH; @@ -308,3 +307,45 @@ double Measurements_i::Volume(SMESH::SMESH_IDSource_ptr theSource) { return getNumericalValue( theSource, SMESH::Controls::NumericalFunctorPtr(new SMESH::Controls::Volume()) ); } + +//======================================================================= +//function : GravityCenter +//purpose : return gravity center of the source: average coordinates of all nodes +//======================================================================= + +SMESH::PointStruct Measurements_i::GravityCenter(SMESH::SMESH_IDSource_ptr theSource) +{ + SMESH::PointStruct grCenter = { 0.,0.,0. }; + const SMESHDS_Mesh* mesh = getMesh( theSource ); + if ( !mesh ) + return grCenter; + + // unmark all nodes; visited nodes will be marked + SMESH_MeshAlgos::MarkElems( mesh->nodesIterator(), /*isMarked=*/false ); + + gp_XYZ sumCoord( 0,0,0 ); + int nodeCount = 0; + + SMDS_ElemIteratorPtr eIt = SMESH_Mesh_i::GetElements( theSource, SMESH::ALL ); + while ( eIt->more() ) + { + const SMDS_MeshElement* elem = eIt->next(); + for ( SMDS_NodeIteratorPtr nIt = elem->nodeIterator(); nIt->more(); ) + { + const SMDS_MeshNode* n = nIt->next(); + if ( !n->isMarked() ) + { + sumCoord += SMESH_NodeXYZ( n ); + ++nodeCount; + n->setIsMarked( true ); + } + } + } + sumCoord /= nodeCount; + + grCenter.x = sumCoord.X(); + grCenter.y = sumCoord.Y(); + grCenter.z = sumCoord.Z(); + + return grCenter; +} diff --git a/src/SMESH_I/SMESH_Measurements_i.hxx b/src/SMESH_I/SMESH_Measurements_i.hxx index 1b2fcc7b0..bb696eb92 100644 --- a/src/SMESH_I/SMESH_Measurements_i.hxx +++ b/src/SMESH_I/SMESH_Measurements_i.hxx @@ -67,12 +67,17 @@ namespace SMESH /*! * sum of area of 2D elements of the source */ - double Area(SMESH::SMESH_IDSource_ptr); + double Area(SMESH::SMESH_IDSource_ptr theSource); /*! * sum of volume of 3D elements of the source */ - double Volume(SMESH::SMESH_IDSource_ptr); + double Volume(SMESH::SMESH_IDSource_ptr theSource); + + /*! + * gravity center of the source + */ + SMESH::PointStruct GravityCenter(SMESH::SMESH_IDSource_ptr theSource); }; } diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index 6a1a4e1df..270d5946b 100644 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -1155,6 +1155,18 @@ class smeshBuilder(object, SMESH._objref_SMESH_Gen): aMeasurements.UnRegister() return value + ## Get gravity center of all nodes of the mesh object. + # @param obj mesh, submesh or group + # @return three components of the gravity center: x,y,z + # @ingroup l1_measurements + def GetGravityCenter(self, obj): + if isinstance(obj, Mesh): obj = obj.mesh + if isinstance(obj, Mesh_Algorithm): obj = obj.GetSubMesh() + aMeasurements = self.CreateMeasurements() + pointStruct = aMeasurements.GravityCenter(obj) + aMeasurements.UnRegister() + return pointStruct.x, pointStruct.y, pointStruct.z + pass # end of class smeshBuilder import omniORB From 9655cb578db3659e41763af22c9de67724bdd66d Mon Sep 17 00:00:00 2001 From: eap Date: Tue, 16 Jan 2018 14:01:03 +0300 Subject: [PATCH 6/6] Regression of doc/salome/examples/transforming_meshes_ex11.py --- src/SMESH/SMESH_MeshEditor.cxx | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx index b11f6c32a..7b0d86fdb 100644 --- a/src/SMESH/SMESH_MeshEditor.cxx +++ b/src/SMESH/SMESH_MeshEditor.cxx @@ -7979,33 +7979,29 @@ void SMESH_MeshEditor::FindEqualElements(TIDSortedElemSet & theElements, typedef map< SortableElement, int > TMapOfNodeSet; typedef list TGroupOfElems; - if ( theElements.empty() ) - { // get all elements in the mesh - SMDS_ElemIteratorPtr eIt = GetMeshDS()->elementsIterator(); - while ( eIt->more() ) - theElements.insert( theElements.end(), eIt->next() ); - } + SMDS_ElemIteratorPtr elemIt; + if ( theElements.empty() ) elemIt = GetMeshDS()->elementsIterator(); + else elemIt = elemSetIterator( theElements ); vector< TGroupOfElems > arrayOfGroups; TGroupOfElems groupOfElems; TMapOfNodeSet mapOfNodeSet; - TIDSortedElemSet::iterator elemIt = theElements.begin(); - for ( int i = 0; elemIt != theElements.end(); ++elemIt ) + for ( int iGroup = 0; elemIt->more(); ) { - const SMDS_MeshElement* curElem = *elemIt; + const SMDS_MeshElement* curElem = elemIt->next(); SortableElement SE(curElem); // check uniqueness - pair< TMapOfNodeSet::iterator, bool> pp = mapOfNodeSet.insert(make_pair(SE, i)); + pair< TMapOfNodeSet::iterator, bool> pp = mapOfNodeSet.insert(make_pair(SE, iGroup)); if ( !pp.second ) { // one more coincident elem TMapOfNodeSet::iterator& itSE = pp.first; - int ind = (*itSE).second; - arrayOfGroups[ind].push_back( curElem->GetID() ); + int iG = itSE->second; + arrayOfGroups[ iG ].push_back( curElem->GetID() ); } else { arrayOfGroups.push_back( groupOfElems ); arrayOfGroups.back().push_back( curElem->GetID() ); - i++; + iGroup++; } } @@ -11189,6 +11185,9 @@ void SMESH_MeshEditor::DoubleElements( const TIDSortedElemSet& theElements ) elemIt = elemSetIterator( theElements ); } + // un-mark all elements to avoid duplicating just created elements + SMESH_MeshAlgos::MarkElems( mesh->elementsIterator( type ), false ); + // duplicate elements ElemFeatures elemType; @@ -11197,13 +11196,14 @@ void SMESH_MeshEditor::DoubleElements( const TIDSortedElemSet& theElements ) while ( elemIt->more() ) { const SMDS_MeshElement* elem = elemIt->next(); - if ( elem->GetType() != type ) + if ( elem->GetType() != type || elem->isMarked() ) continue; elemType.Init( elem, /*basicOnly=*/false ); nodes.assign( elem->begin_nodes(), elem->end_nodes() ); - AddElement( nodes, elemType ); + if ( const SMDS_MeshElement* newElem = AddElement( nodes, elemType )) + newElem->setIsMarked( true ); } }