From 2dbe613765884256942925d8a95293e3c473caec Mon Sep 17 00:00:00 2001 From: dmv Date: Tue, 22 Jul 2008 07:20:59 +0000 Subject: [PATCH] 0016756: EDF 545 GEOM : Extrusion, give the coordinates of the vector as input --- doc/salome/gui/GEOM/images/extrusion1.png | Bin 10515 -> 25793 bytes doc/salome/gui/GEOM/images/extrusion2.png | Bin 10333 -> 24992 bytes doc/salome/gui/GEOM/images/extrusion3.png | Bin 0 -> 26509 bytes .../gui/GEOM/input/creating_extrusion.doc | 10 + idl/GEOM_Gen.idl | 12 ++ resources/Makefile.am | 1 + src/DlgRef/DlgRef.cxx | 14 ++ src/DlgRef/DlgRef.h | 16 ++ src/DlgRef/DlgRef.pro | 3 + src/DlgRef/DlgRef_1Sel3Spin1Check_QTD.ui | 177 ++++++++++++++++++ src/DlgRef/Makefile.am | 1 + src/GEOMGUI/GEOM_images.ts | 4 + src/GEOMGUI/GEOM_msg_en.ts | 4 + src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx | 115 ++++++++++++ src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx | 6 + src/GEOMImpl/GEOMImpl_IPrism.hxx | 11 ++ src/GEOMImpl/GEOMImpl_PrismDriver.cxx | 16 +- src/GEOMImpl/GEOMImpl_Types.hxx | 2 + src/GEOMToolsGUI/GEOMToolsGUI.cxx | 4 +- src/GEOM_I/GEOM_I3DPrimOperations_i.cc | 62 ++++++ src/GEOM_I/GEOM_I3DPrimOperations_i.hh | 9 + src/GEOM_I_Superv/GEOM_Superv_i.cc | 28 +++ src/GEOM_I_Superv/GEOM_Superv_i.hh | 8 + src/GEOM_SWIG/GEOM_TestAll.py | 4 + src/GEOM_SWIG/geompyDC.py | 26 +++ src/GenerationGUI/GenerationGUI_PrismDlg.cxx | 120 ++++++++++-- src/GenerationGUI/GenerationGUI_PrismDlg.h | 4 +- 27 files changed, 634 insertions(+), 23 deletions(-) create mode 100644 doc/salome/gui/GEOM/images/extrusion3.png create mode 100644 src/DlgRef/DlgRef_1Sel3Spin1Check_QTD.ui diff --git a/doc/salome/gui/GEOM/images/extrusion1.png b/doc/salome/gui/GEOM/images/extrusion1.png index c278fdf9e7901c00be662a8b247325cd60be031f..4b0a7097082c8940e73f48b1a3f0473b422b2bbe 100755 GIT binary patch literal 25793 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 literal 10515 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 Iyw&yjH*`{%&Hw-a literal 10333 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

R-)+q>ag@zgy0ITc&kdI!d`V<5 zL!&{UC6Hd7eqniExYrq)GVM!K> z#Y#0)FU9}Ja-*^Pdp*cLarEw?;w*jTbb}Ty_B0Hg#yg@tS zC0!%#IsxSV{g7`02csz)ZIndoPDlA9-FA!31r>CKKJ$S+vV>`4H+*8cUY81+2_1UmEss1vbwqgW*sTpzikQ7)6A}g+f0MwB?I|h>}=pGh_ftNosl}@{0!D>T+XX&7kGug+# zEs(ehk;u;K?@SlyD-S0!lYVGMk`Yw@Hej6269m2Y@}*jubfvbkg8>`LV{>(LT>_*@VdraMPXiE>55?D zM~Py+l1QNifNZpm{C&0`%>n@b#{ht0L`KP$*nOnJ;(g$5qV-nC?0a&vlgCI=rS=f4p5_q;&uv?(6iuK z%yjX>c)x(B9$^k&EgPU5ovAW`BtL=;-DCEQ99%nDzA*Usj_{mBkA78sW1qmOhz5UfKo`(8g>CK#z?~XsG%bXWSUIU6v zc0{Ky&SQW(6rb;Y4CU_k@uSQfqg`M98MQx}>&LN~$xLV20dLl6G?-f-Y#kWOSZNp9 z!LV1pfA&0>ACq!&0a2+I7tQu5QvBvl6;4l!rtQV8<_waWwO4*ZS;NnmeI>s(eGHVl zhIKb8y}mXKDLS#=13=&Jg&*l%J~#K}gVUi`Ecs!;Kz{|p&u0)f5$!r_D<+>!AN+{x zj_PV;O&u6gZt|bXB@D*e?!s@7t4>j`fPFJa_VWgV-n)!bcC4GO-I128XDfof@!kbOeC4Z%Ft|(40^@JjR zH14>o{f{RdkIyt9KAMza;rg4B;Hrbu+k`l-1VvN696ggDek+V0GqC%TfU zN6YyHK}4eU0-g3+2Qw#=3t<^w&VVLq2;^TZ+rCy*EG4!E`kkP3x=Nia!?cuWut%R9{=0*+b%rTmHEI6Xb>*kbwe(q!9`t)X+gXL8D|udU+B^ z(t@ae3LZif&?=?6w5%n;s}@0dsl%Njqy~%{QwI))uzGTAbsn1X>8IkG;ZGAaOvH%m61)xT^?g79KPqkX|d7HW}fTI4lp>1 zh=~{(Jm2G?jG@{c1!|+CJncd>!`Vs?|8Z~q^);tTqSthV&*Uh6zaRNvsk8JayxT;A zhCbZ`1MjOoz*n?ot|%q`AzC6E#2Gb}F6dHyUEnMC=9656$Y|TY| z?F-Rlo$OuZa(g|F4vH=M<+Tcx8HT1=d4ENwXB!BC?};iB0U=-ZTQb2!K5aedPNKP^ zas0=->4|@vlNkds713FRZ6oKCkdgI?Z2F|lr}}bgwXL>+Lhlnnx0KtOB58 z-S7zHNU$-Q)RW$K^a9a3`i<+(319OuGY@+d)zYeR3(^R*p%Ybo9LP@BgGTov;6vxK zqlu#gBP-;3if@W$%xJ*ZJ@My3FS?PzY+UrE?~fcspo>)I`V3C0Tzyw}nM3LU;Pj-`Q;A^uI2?;d`7p<6CU+3a{#p zMB`NRp45x>yDx%C+#9G}zBk7~avpo_-TAl_0{WJAI>9@qRhrw;O~FRCrFZDRL%P2e zO%KlGB~f8J%*k>v@gG<|UTlh#R0m6ZJS#)!aV88?P9>y7uKbc8rz9@H@I~1Gf!mm| zZCGjb>-7MD4#7qFP*hG5&8JVV>aIsCfb+;jE1^)I`D66N$Fp(ug6{3^_Kjh#$5fyk z*|Hgx5S=qaPZ(f1!{j@3`u_3+(fwAP)mtD04Gj|!6Gh6}m|IZ93n0s@jHCmDh;?;&{OB4?Zg`O#5gTdg(S|PxH&ATjM@ERp!*wl|T zscwSiTc9_}HSRUMMybH{eb0TrEfv@9MTzi_@fL9L^E;>bE(>hpt9FRxV^v3C2Nls6PBAm9j-iT8I$~`EkU1>@*8|X;*&OIhm z>Vsx=m_B$&*#sMiS%m>g4hU8PM(z;<>DF+Ls)vV21Q~OE)xZUp9M3B{8y!vD5=o!t z8jdvtD=4w3vK}ikHrBc`1bg=PpVEGFZy>kHpvnbXP*8AVYs=8s@i#D*0s;bqQTd&n zfj+F78d*cTNR#&-&8Z!&e^_7(;kTOAK-Ca+Yzk^>l}ePquOE|XTl~NtFt<11X_P>0 z;MFA>_xVX=Ibi}uJ%(8%ten&YN+c>^;>5s6AYgNWP-C2bE1(*6TL3n(UPY_qkRzUa z0!yuaV?+Iim!{`^MDM{I3OAC-BNl8Cxr?2Ykbu?sr?OuB=eet^tCh9&d0R!YwFwzp zsW@t;+{#5nj<(4tRR}qJIGB4%%2hBwUML$(Z<>tq*A1fjeo{LEUYvecvHpNU!U@k` zm9Nm&CuHv~NcAOILLmB2&XF|EeYs*GLe_fZ-CW3y>IKI8tePZy8S|k!ZE>K5VBmXB zU#|o!B)cI4Q*_|IRy6a{?|mgP>rW5@2N&1Bj7gE|H(O=-1)rCR$Jl2s(@xaZGEMRn zjt?JCXevUPGOOb)u7(Q+GsBbZnj(up;qTaQxm^FT_t{#)R`l1?Pmn( zaQlbY6e~GDO_wWJV}v=14i@71x6?YLqMNRLGMPYAacWV!Ll}0{SHAI%E<<+>E0EcC znqa9T@xYM~SJb1l=^+c11ZZa@OcT)jvOB)N=D)$sHqUrMur1s?PSG36WbDIQuBwM* z4$HRVd_3{xF!pp=d--IkMp2AfMN1Vl!x?FFF~}Ft;YS-5NKi@b++JyJ zlCE;+;cuVHJ3GkbVepn|81&848Hp(hESZtEX&p|X-kLy*Jl+y59CF!eYY1DW#}~`G z1DoEsFaW=ZaMK&IT}Px=$3AXDA8h319>0eurKhB%BxGg|)W z=2+LY>`IJRlwzc^-S_>{>UPQOiO_P2g>z+P4GHb+IYEJFLHp_Q(xpBi1pVo964PCn z?$WWk2M82BMSUx)V|K6;8#hD5m!eGfs|AWWE0j-K4#1E_Q~3MuMI&N@KBKS10_(Xr zVYoL$O0|E@;(+n691SPnlv7mXp&tC`B6M?tO8Z~b8h<5hGkDvB5KO_A%4^d5Nhun~ zB;1Tsj?TbKLyU`y>n)#x;yXocKh4`Kb3RIn8y-biK+;s+O>5m8MC2gQVI+>CqGG_O zf+{+LfQU1>G#2m>#7m>z8h*oDe%Z=tG>Jk79(X)ku_30YwbeCfVm+KoT;C5`h12~I zpXP(?=w2XW7!=|@G3xwDih(p+!WN*sAQHnq?l5_e1z;8lt=vcBNt$2HN3SH9b1W>d+ zKmv#~|Fzs9i=~tIBNMBCx%*6B`^WBRSjltTiOt?IS1ik-<)O)sjJInGp;*GwGNf5r z-P69p2C@#cSvFqg%kQ+*d|s2}$;c*@$jxwqQ%jgwfRr07hig0k&|GGKx4OEi%X^Xr z()j>p4f0SmOoYGg`#;Ye@|~MF*u7LrIycv$Qd)p)ObXvdX{1AZ4MG%UK%>iFgXi45h5bsFRc9& z3>BfD!etW{PG*wvtJ)9s++gfqhb)1Pj*c`MbJNmP3=Qdk+>Ie$W(aMBQ0n0;H_1y| zGxaAu#mLb{HYa5B+qr)FpFRs8y2bl7H~)XrFMS52Ur%!}@-qT07AnOTDRcOv{2fV> z?f;c{Mf{*B5suA@%#q#}UQ7Bwzth!zS(zQe#3%uP757C&KRD7Z*abSV=u@(cg&H)W z7VxDUoYt0|z0m08Ay?eERsd>Tn`fo}MWmAXv4rKtxwR zzznFq+P_pBBy=cUkad(D3Q5qf_n?iY;wAE+4f=@n#_BJ!kV1V&=6;Cn`aMwMM8-eC z_ctEKb=g@RGOpp8yn~9c0(Db)Rk1DJwqjZhk-{XGQ~>EH5JH(pN4@9j@$^NDuXgTt z5s{bCyn1(@|qwb za^m!GgQ*FuQqtUtUy(ki5XHisGF~|gOG{dTS6E&xZFX+6i~w?}c#P%L)JU3|nyB=Q z0D|L@kdV}ZIXO2YbjaM%$zOhnKjC!mbDhKGKkW9jwIDE#5IZJq!;LJ_cVt{(J~Wj@i3 z;8P5vOXm}hi^HW6zH}-g{VkWyu5>GXb;os<$m^g}Ay2?!>VZujwZ@yR06r#fSu>NS zY+@s-gsV{#jC*%hfM6N1{|i3ru29R_V+__O9Fq>{nfeJ9U|?gtLhCKiA7dIDAJx>< zU`%KFYbpqCo;Q14p+|K2F^jya8Q$AIHY5HKDO!$i#`CK0RQ59|wn-b9*(h3=a$3VsDuW(dd3C;slY7 zsQnGPn{vE*7~Iw~=Y@NOnl+%2e^Ex2TmHtA52Uo$&n+wfto`cB0(QEp z*A^&o7nVA4)bdkyVEU3R`==7-eA@BeQ#iKUIXM94AqRW17J1dX%YtA2SC7{X7=ka7 zD!qeX)5TzY9~Ad5E@BUJu*JPJ_!K9gTmQ*lENg?-9O;~Uw%3XGypO>H=+45Dr9m^H zc#i4#p+$Dpq#}pnX=RukIrZ%?a!VSKK;VP z0$}(i*~yc+oD~USQaOrCNK5nXI%#c{9v>h7F*ryPWnP7acY|r&1N4T+g)D}g@FSjs z*`rvrw@Dv&rLpQ0?W^wJkFr{Fa|XYjl5D=KAvZRcY1}!N9YbJ~D=qis-G6g*>!M?~ z_tCl`72l2u{9=m>T>K$(3FG~1R(>Q`#`ol#9>CG>2EV#@%F`cK6o39)4dmYD-zKXP zk|Pp=FiA!IAje(27jgKwKIsc=o+7CuQspXDBPdIHpQg48bp{zp&_QxmZjbonaPj*f zybNo`>_(k^Q7E)@#L2t^jaY%5?Mujls;>vai|NkmSnzoIfQe{cthZ6G*v0WaEIHV3 zoD$5g@$A_%&i~AFNu*g~Q^UTm$cKM%JoGp!4}~@qJw4K*aifLOp815TYrzM5+ zv|8~yOQZ4qxtX&&A`fx{k?>>F{G=?tYM>?0gkE;Ty^@n(_A1uBvglO^Z zaBZ-?tZb@IWd*O{s^S)YT-7SRnOw=w>~{MK+x;Yrwq(Bt(;tN!CiP^_%p^?Z*L``D z!CVt`>Gv4(nz3@xoz!fIcH|dXaF>qnb<+89ThdL=WN-$D!gH2k$Fg(~J{hWm5X57HbfSzU$n< zP|?Zkz<|mxy`G;xg$G4SU!sl9dhSh45AlFeo69aeO4P#OL$``nKgsAnDPmPaN{VsS z9?THy5#0Q3Uzxd#Ce-_blGYAgyj=0g+s`DjQIv_)?39#tIQS{s2TSF$sLSpKNZaGM zOJ|MMX8)zlPvU*T*Rkin)U!2@GCz>S;U9_1A7YQUbo3^n*SY5Ya26o1=$B&y(wXA? zX5RnPa8JP<&XTCTKnxpuk)BC8UpG;jV^xHfw;|scd$;$?@;f~357ut9*#h&KNhMc& zj5vFA?v?7TYQEVQ3MG77Q-F3=>YXxn|13HE4L1bELfd9)dk&kL{_4P?*?t_XW^hSJ zDHZCx`gs-T~iL)0{TMz1#cVy5*k{Oxt|3 z9r$sp>o%+TMr_@PUwmNCw?Xbt+~THmnl$)YCj9Kv=VnKA81q(eogIZQl{V$b!FvL^ zvD5OU3r6NaT9p@ToV|-Dd=WWj?v1xNFJx2qp__lc;6{G&VJ5SujVNg6)n0C%u6K&N zRq@j`-FE++H=Z{j*893PVtjsDL9vh&o3?8n82rYCHrRS0>FGD6(aR|M*O$u;v)ZbV zNeOY*TPHSB)yh!Pp#wtR;tPPt08K7 z(|j{{R0MkG65TjAS?^>{Xxwo|sXIcinOBeJ;Oi?{;1mE8zRLl2qrjnH5zC5o_6o$! zreWeZ4NP<+bud-XuwtIC!|IX}lw8FMzGll38u)QFvn-Jykg2g60#b%22$7~W?`6G_ z8F-XZ9Yc^ju_KGNqv+ZV#s}qOxOnkJFI|O$DFsyLu9tZk9^!(7dMo|5juy+zT)K6t zb@2#Xn)kjmRd{|?^?kf-^I>eiRh33&$BW6wO46|%{hq;$l#e{ohWF;qg?=hJczy7g zoIZW?bE5^m%U+k!jvWEi(&L#>7BU;MR*P>_CO;UoMJM?lC(#zQ2X`D~%7Q#wAWpw- zIK0E($`ZO!T>vE!?EL)?Ly^g-f70CX&FE5Sf|qgq3RioZvzT72hee8Hb&hDlAC0KZb_zSWXJ!eg9;HO&8|Rn44f+SkNl7pEF6VXc{Hw&| zOzM?|K}aLQsf>!f7_u-BJehh`P*3uhh+N`r{fFxk-b)on+5nOF>>Q)@M>lPj@P@|w zvAE$la$jp1UBu4|o$1fuy6#QDcAosZHsC5SzBqPi{!5+ks*PLoxCUb^}hKFLO)FPiam{{PYmr| z8{unZ8L{6EuX;9D>&Jyh&0*16n}V3wFK$`COSRz@O6UaaoXS>BHXBnnAxEs{%W`~= zk=Is`mgk(;k^D2|pYtcfxSyX)e>{vJ%KRbb9MWqKpFnzgmh#Ycm3~3c&8MnY4eeQ) zkacfX_&!`5I`T%uWO#B=!X9s&I1@=XFwb?re_P;l)ZTBLBN7u`ncaVMeQzc>4-Obo z9v_m?W4y+a){F#jY4}690ld(B0wSXy~G2m_hk$=S~ft_uS@V^yOj=5{#Jg&&l0Rp{_!0O3}zz(L|=1^rYJd z4}H3pC`;AOMBNWg7s`b5tAY=sXr&w2zDu!q5*EMwseaH%5&+G-z2!&I(csw|6hBz6vhPKL{vJU+2@?d)9zntca zs{X^EA4r_MZw6+%sT-c;eGk)=9&Toi5Uys$99*edk@hi^{ca?{n-}V;GOCvvGUZwk1|lIulmrAd5s~b+sQlS9t~ala{xJ zJ*{1~URkbWuQ=<#_#R#hy3P@(L2lzsgiSc21}8qi3EZh)c8|{65}4?Cd#xFVu{p_BCjM^mG-RMYt-vo~AHw>Avtcjn`Mu(RWS+q>mUY42@zOmL;!wG6W6 zl0*Fd-CF)r61OPlkCYD-Jy!M7>NvU`DT211&r@B;va&lZen#u3O)Zs$M|#`|9;!7) z>Ug#Y3Uc>8h^3?JEnDh}@+FOC?RI2!npK>aZAn5BSANW4jqBcz@ZE24pAB?%_WMKI zJ&JAe#ytIbW16>+SMA=%NQXLX8`^Vggv2k8iMa^g#S+Vs?^Q#*ldm0p>DntaKCoM& zohZTnhuufwG_y5p^#xfO(l+KwM$=;tmMRr?ecF^ouk7^M^Ht0J5sfAvVA1yw3bnatwc1bI)C06LYT(_}o`A8I?32}wjn5)( zJF{3=1OhkT2+%O^n|Xl|MQv9U{w`4Uv6ZuTh{J(4&jn*YkSaqdyNQ>3cVIDpwIYy|row7{_kc-?i5(pPcJ!9MPop zt$tFPZ6aafSAH^teByk4bAyJhDR9d+751_zH=>0Bvv(F*MkQmZ{{I|+h0zv-vFM`B zh^Wlu>`Gq0*@+8G+-r zu;mqGo-UVFZMT&y*;3_6-3ErDkqKrmy?CcO0=1^ler>Nh`{{Iikg7 zEORw}WW7ZtsPBD)s=&arD$n+);;lTDIx=PuonyI#etlCIo%`aIhrdbA!?L(8$*XTK ze~T5wi5&(pc($3+2aA?l7`yeeZ#gy~lpCB7X8|bcMbB+UD{I>+boUwQ;hn4gn;(be z_REcj+-FH|*7LUOKScjD3mmMfKx;hj+TV6wSz7DU7b=q~cB^}>eb~*MTXHfp5CE*r zZgftld`I}i^JF`CvR~VUnTex;2_ST)gB#nI`q;ZU60)+0<#tt=QNM(Vaf9#bI`TFC zw83g`{E4AMBJ)N&dNt8~T#Nn4VBxf(P28sIxjYb6r{<^P0o< z!1~*WsEA(dl*Wmpw)jEUJavg{i?Z=^bl}oEhb-~lBl@Fj<@}izLH%lt|7t^$`u|WF z@>1{F-xfG-%G#*{+66x^pRp^cbL`);##4qo?XgTYU)@)XisO!~9ekyL3Hn!=@;?zp zR4l-&r|Rvr+@k*7oaNIS)hB+|%0r?5zqODHQKy8cl42p(jc?<>LIQ657JrWvNPZr2 zDyvVn<#)MQ28B-U#`z}^3dUVB61hyxW_=gns-M%p>a~Acs;;Q`PJi5U!lh9SD_7OG zlaj?I+ABSMmcg7uyjJV!RpoP_zzfJrX&WtrspXGYXt%g`g!jMxx|6E~?B4+@8+lCx zC}+-1riVqpAg(t>WH;`HV1q8k`~c@h&v%8My9_+HCWK?|5gn|*#Ua5pjQE+)1DrD0 zPqZNYed_TjA1p`8@UU0l?T_RI0wCaFsBaZR0UYV-PQL#UD z_I%(Ys|MEma}Y}p`zBUO>P{B0+xVh(Tu4vHG^9O}4+xle0gMg=_L3n`=jlIO?}T_G zOCGqInLGwH?}Gy|l_6B@VDNYAaTxcRUmB{>RE0Bybr7E>h3doMlK1bk-CE`nNe#G> zHL~Xb)7RN8vifc|81<7CMb{DpY)6I?FlY8nFPhWfr_+QO{Jun}DpAqca21(bkd;Bn zZIwdaH{AX%lFv5MU-5M=w?j~XWJFCpbU?}Hszkr=G$|^3xYx)CXs67@|8~ zpmePpg^u%vU~$6&YLpp0FM$^vBM3RJ&P!S@CmE zZFS^j-w3M+u)}>{A$;@`oDo>QMhXT?6G|ZWkWSF;w=|~2JX&OmiW_ySuR$*o=|7m< zdDM=UpSlzNhGEZ)=6TJw0pNJNElL6tP)`QhNat-q=!m-49?9mK#@cQ~Sz>!EemCAc zP?#o*txW}@PrS`P_IX9<1)Ej+jZ_YXSn5e!Af5nCNc(rGSFZa-kkGne!47=u2gyPTvpV`5Bs-&S<@#NLJ{{<(1ju8L= literal 0 HcmV?d00001 diff --git a/doc/salome/gui/GEOM/input/creating_extrusion.doc b/doc/salome/gui/GEOM/input/creating_extrusion.doc index 3f3435ca6..70cc6edb0 100644 --- a/doc/salome/gui/GEOM/input/creating_extrusion.doc +++ b/doc/salome/gui/GEOM/input/creating_extrusion.doc @@ -34,6 +34,16 @@ shell) serving as base object + 2 vertices. \image html extrusion2.png +\n Finally, you can define the \b Extrusion by the Base Shape +and the DX, DY, DZ Vector\n +Both Directions checkbox allows extruding the +source objects forward and backward also. +\n TUI Command: geompy.MakePrismDXDYDZ(Base, dx, dy, dz) +\n Arguments: Name + 1 shape (vertex, edge, planar wire, face or +shell) serving as base object + 3 axis directions. + +\image html extrusion3.png + Examples: \image html prisms_basessn.png diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index 26a9368dc..311f9ea63 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -942,6 +942,18 @@ module GEOM GEOM_Object MakePrismTwoPnt2Ways (in GEOM_Object theBase, in GEOM_Object thePoint1, in GEOM_Object thePoint2); + + /*! + * Create a shape by extrusion of the base shape along a vector, defined by DX DY DZ. + * \param theBase Base shape to be extruded. + * \param DX, DY, DZ end of extrusion vector. + * \return New GEOM_Object, containing the created prism. + */ + GEOM_Object MakePrismDXDYDZ (in GEOM_Object theBase, + in double theDX, in double theDY, in double theDZ); + /* The same prism but in two directions forward&backward */ + GEOM_Object MakePrismDXDYDZ2Ways (in GEOM_Object theBase, + in double theDX, in double theDY, in double theDZ); /*! * Create a shape by extrusion of the base shape along diff --git a/resources/Makefile.am b/resources/Makefile.am index 5773224e3..bff974dee 100644 --- a/resources/Makefile.am +++ b/resources/Makefile.am @@ -119,6 +119,7 @@ point_line_intersection.png \ polyline.png \ prism.png \ prism2.png \ +prism3.png \ revol.png \ rotate.png \ rotatepnt.png \ diff --git a/src/DlgRef/DlgRef.cxx b/src/DlgRef/DlgRef.cxx index 434faf86e..b29fdee59 100644 --- a/src/DlgRef/DlgRef.cxx +++ b/src/DlgRef/DlgRef.cxx @@ -177,6 +177,20 @@ DlgRef_1Sel3Spin::~DlgRef_1Sel3Spin() { } +////////////////////////////////////////// +// DlgRef_1Sel3Spin1Check +////////////////////////////////////////// + +DlgRef_1Sel3Spin1Check::DlgRef_1Sel3Spin1Check( QWidget* parent, Qt::WindowFlags f ) +: QWidget( parent, f ) +{ + setupUi( this ); +} + +DlgRef_1Sel3Spin1Check::~DlgRef_1Sel3Spin1Check() +{ +} + ////////////////////////////////////////// // DlgRef_1Sel4Spin ////////////////////////////////////////// diff --git a/src/DlgRef/DlgRef.h b/src/DlgRef/DlgRef.h index 0fe826fcb..b84bd55a3 100644 --- a/src/DlgRef/DlgRef.h +++ b/src/DlgRef/DlgRef.h @@ -210,6 +210,22 @@ public: ~DlgRef_1Sel3Spin(); }; +////////////////////////////////////////// +// DlgRef_1Sel3Spin1Check +////////////////////////////////////////// + +#include "ui_DlgRef_1Sel3Spin1Check_QTD.h" + +class DLGREF_EXPORT DlgRef_1Sel3Spin1Check : public QWidget, + public Ui::DlgRef_1Sel3Spin1Check_QTD +{ + Q_OBJECT + +public: + DlgRef_1Sel3Spin1Check( QWidget* = 0, Qt::WindowFlags = 0 ); + ~DlgRef_1Sel3Spin1Check(); +}; + ////////////////////////////////////////// // DlgRef_1Sel4Spin ////////////////////////////////////////// diff --git a/src/DlgRef/DlgRef.pro b/src/DlgRef/DlgRef.pro index 8f0a5d198..f8f824056 100644 --- a/src/DlgRef/DlgRef.pro +++ b/src/DlgRef/DlgRef.pro @@ -42,6 +42,7 @@ HEADERS += DlgRef_2Sel1Spin_QTD.h HEADERS += DlgRef_2Sel2Spin_QTD.h HEADERS += DlgRef_2Sel3Spin_QTD.h HEADERS += DlgRef_1Sel1Spin1Check_QTD.h +HEADERS += DlgRef_1Sel3Spin1Check_QTD.h HEADERS += DlgRef_2Sel1Spin2Check_QTD.h HEADERS += DlgRef_2Sel2Spin1Check_QTD.h HEADERS += DlgRef_2Sel4Spin1Check_QTD.h @@ -66,6 +67,7 @@ HEADERS += DlgRef_2Sel1Spin.h HEADERS += DlgRef_2Sel2Spin.h HEADERS += DlgRef_2Sel3Spin.h HEADERS += DlgRef_1Sel1Spin1Check.h +HEADERS += DlgRef_1Sel3Spin1Check.h HEADERS += DlgRef_2Sel1Spin2Check.h HEADERS += DlgRef_2Sel2Spin1Check.h HEADERS += DlgRef_2Sel4Spin1Check.h @@ -93,6 +95,7 @@ SOURCES += DlgRef_2Sel1Spin.cxx SOURCES += DlgRef_2Sel2Spin.cxx SOURCES += DlgRef_2Sel3Spin.cxx SOURCES += DlgRef_1Sel1Spin1Check.cxx +SOURCES += DlgRef_1Sel3Spin1Check.cxx SOURCES += DlgRef_2Sel1Spin2Check.cxx SOURCES += DlgRef_2Sel2Spin1Check.cxx SOURCES += DlgRef_2Sel4Spin1Check.cxx diff --git a/src/DlgRef/DlgRef_1Sel3Spin1Check_QTD.ui b/src/DlgRef/DlgRef_1Sel3Spin1Check_QTD.ui new file mode 100644 index 000000000..f8501134c --- /dev/null +++ b/src/DlgRef/DlgRef_1Sel3Spin1Check_QTD.ui @@ -0,0 +1,177 @@ + + DlgRef_1Sel3Spin1Check_QTD + + + + 0 + 0 + 156 + 120 + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 6 + + + 6 + + + + + + + + + 9 + + + 9 + + + 9 + + + 9 + + + 6 + + + 6 + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + TL2 + + + false + + + + + + + + 0 + 0 + + + + TL4 + + + false + + + + + + + + 0 + 0 + + + + TL3 + + + false + + + + + + + + + + + 0 + 0 + + + + TL1 + + + false + + + + + + + + 0 + 0 + + + + + + + + + + + + + + qPixmapFromMimeSource + + + QtxDoubleSpinBox + QDoubleSpinBox +

QtxDoubleSpinBox.h
+ + + + PushButton1 + LineEdit1 + SpinBox_DX + SpinBox_DY + SpinBox_DZ + + + + diff --git a/src/DlgRef/Makefile.am b/src/DlgRef/Makefile.am index a88a95ac4..ed593f335 100644 --- a/src/DlgRef/Makefile.am +++ b/src/DlgRef/Makefile.am @@ -49,6 +49,7 @@ UIC_FILES = \ ui_DlgRef_1Sel2Spin_QTD.h \ ui_DlgRef_1Sel3Check_QTD.h \ ui_DlgRef_1Sel3Spin_QTD.h \ + ui_DlgRef_1Sel3Spin1Check_QTD.h \ ui_DlgRef_1Sel4Spin_QTD.h \ ui_DlgRef_1Sel5Spin1Check_QTD.h \ ui_DlgRef_1Sel5Spin_QTD.h \ diff --git a/src/GEOMGUI/GEOM_images.ts b/src/GEOMGUI/GEOM_images.ts index 9e4d68621..caa1b974c 100644 --- a/src/GEOMGUI/GEOM_images.ts +++ b/src/GEOMGUI/GEOM_images.ts @@ -338,6 +338,10 @@ ICON_DLG_PRISM_2P prism2.png + + ICON_DLG_PRISM_DXDYDZ + prism3.png + ICON_DLG_PROPAGATE propagate.png diff --git a/src/GEOMGUI/GEOM_msg_en.ts b/src/GEOMGUI/GEOM_msg_en.ts index 0aed9801d..2544d2a81 100644 --- a/src/GEOMGUI/GEOM_msg_en.ts +++ b/src/GEOMGUI/GEOM_msg_en.ts @@ -496,6 +496,10 @@ Please, select face, shell or solid and try again GEOM_EXTRUSION_BSV_2P Base Shape + 2 Points + + GEOM_EXTRUSION_DXDYDZ + Base Shape + DX DY DZ Vector + GEOM_EXTRUSION_TITLE Construction by Extrusion diff --git a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx b/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx index a1c554544..e834e35bc 100644 --- a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx @@ -874,6 +874,121 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePrismTwoPnt2Ways return aPrism; } +//============================================================================= +/*! + * MakePrismDXDYDZ + */ +//============================================================================= +Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePrismDXDYDZ + (Handle(GEOM_Object) theBase, double theDX, double theDY, double theDZ) +{ + SetErrorCode(KO); + + if (theBase.IsNull()) return NULL; + + //Add a new Prism object + Handle(GEOM_Object) aPrism = GetEngine()->AddObject(GetDocID(), GEOM_PRISM); + + //Add a new Prism function for creation a Prism by DXDYDZ + Handle(GEOM_Function) aFunction = + aPrism->AddFunction(GEOMImpl_PrismDriver::GetID(), PRISM_BASE_DXDYDZ); + if (aFunction.IsNull()) return NULL; + + //Check if the function is set correctly + if (aFunction->GetDriverGUID() != GEOMImpl_PrismDriver::GetID()) return NULL; + + GEOMImpl_IPrism aCI (aFunction); + + Handle(GEOM_Function) aRefBase = theBase->GetLastFunction(); + + if (aRefBase.IsNull()) return NULL; + + aCI.SetBase(aRefBase); + aCI.SetDX(theDX); + aCI.SetDY(theDY); + aCI.SetDZ(theDZ); + + //Compute the Prism value + try { +#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100 + OCC_CATCH_SIGNALS; +#endif + if (!GetSolver()->ComputeFunction(aFunction)) { + SetErrorCode("Extrusion can not be created, check input data"); + return NULL; + } + } + catch (Standard_Failure) { + Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + SetErrorCode(aFail->GetMessageString()); + return NULL; + } + + //Make a Python command + GEOM::TPythonDump(aFunction) << aPrism << " = geompy.MakePrismDXDYDZ(" + << theBase << ", " << theDX << ", " << theDY << ", " << theDZ << ")"; + + SetErrorCode(OK); + return aPrism; +} + +//============================================================================= +/*! + * MakePrismDXDYDZ_2WAYS + */ +//============================================================================= +Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakePrismDXDYDZ2Ways + (Handle(GEOM_Object) theBase, double theDX, double theDY, double theDZ) +{ + SetErrorCode(KO); + + if (theBase.IsNull()) return NULL; + + //Add a new Prism object + Handle(GEOM_Object) aPrism = GetEngine()->AddObject(GetDocID(), GEOM_PRISM); + + //Add a new Prism function for creation a Prism by DXDYDZ + Handle(GEOM_Function) aFunction = + aPrism->AddFunction(GEOMImpl_PrismDriver::GetID(), PRISM_BASE_DXDYDZ_2WAYS); + if (aFunction.IsNull()) return NULL; + + //Check if the function is set correctly + if (aFunction->GetDriverGUID() != GEOMImpl_PrismDriver::GetID()) return NULL; + + GEOMImpl_IPrism aCI (aFunction); + + Handle(GEOM_Function) aRefBase = theBase->GetLastFunction(); + + if (aRefBase.IsNull()) return NULL; + + aCI.SetBase(aRefBase); + aCI.SetDX(theDX); + aCI.SetDY(theDY); + aCI.SetDZ(theDZ); + + //Compute the Prism value + try { +#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100 + OCC_CATCH_SIGNALS; +#endif + if (!GetSolver()->ComputeFunction(aFunction)) { + SetErrorCode("Extrusion can not be created, check input data"); + return NULL; + } + } + catch (Standard_Failure) { + Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + SetErrorCode(aFail->GetMessageString()); + return NULL; + } + + //Make a Python command + GEOM::TPythonDump(aFunction) << aPrism << " = geompy.MakePrismDXDYDZ2Ways(" + << theBase << ", " << theDX << ", " << theDY << ", " << theDZ << ")"; + + SetErrorCode(OK); + return aPrism; +} //============================================================================= /*! diff --git a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx b/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx index 5f1f52f36..707a0ca4e 100644 --- a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx +++ b/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx @@ -70,6 +70,12 @@ class GEOMImpl_I3DPrimOperations : public GEOM_IOperations { Handle(GEOM_Object) thePoint1, Handle(GEOM_Object) thePoint2); + Standard_EXPORT Handle(GEOM_Object) MakePrismDXDYDZ (Handle(GEOM_Object) theBase, + double theDX, double theDY, double theDZ); + + Standard_EXPORT Handle(GEOM_Object) MakePrismDXDYDZ2Ways (Handle(GEOM_Object) theBase, + double theDX, double theDY, double theDZ); + Standard_EXPORT Handle(GEOM_Object) MakePipe (Handle(GEOM_Object) theBase, Handle(GEOM_Object) thePath); diff --git a/src/GEOMImpl/GEOMImpl_IPrism.hxx b/src/GEOMImpl/GEOMImpl_IPrism.hxx index 14c01864e..abe542b1a 100644 --- a/src/GEOMImpl/GEOMImpl_IPrism.hxx +++ b/src/GEOMImpl/GEOMImpl_IPrism.hxx @@ -27,6 +27,9 @@ #define PRISM_ARG_BASE 3 #define PRISM_ARG_PNT_F 4 #define PRISM_ARG_PNT_L 5 +#define PRISM_ARG_DX 6 +#define PRISM_ARG_DY 7 +#define PRISM_ARG_DZ 8 class GEOMImpl_IPrism { @@ -39,6 +42,14 @@ class GEOMImpl_IPrism void SetFirstPoint(Handle(GEOM_Function) thePoint) { _func->SetReference(PRISM_ARG_PNT_F, thePoint); } void SetLastPoint (Handle(GEOM_Function) thePoint) { _func->SetReference(PRISM_ARG_PNT_L, thePoint); } + void SetDX(double theDX) { _func->SetReal(PRISM_ARG_DX, theDX); } + void SetDY(double theDY) { _func->SetReal(PRISM_ARG_DY, theDY); } + void SetDZ(double theDZ) { _func->SetReal(PRISM_ARG_DZ, theDZ); } + + double GetDX() { return _func->GetReal(PRISM_ARG_DX); } + double GetDY() { return _func->GetReal(PRISM_ARG_DY); } + double GetDZ() { return _func->GetReal(PRISM_ARG_DZ); } + Handle(GEOM_Function) GetBase () { return _func->GetReference(PRISM_ARG_BASE); } Handle(GEOM_Function) GetVector() { return _func->GetReference(PRISM_ARG_VEC ); } Handle(GEOM_Function) GetFirstPoint() { return _func->GetReference(PRISM_ARG_PNT_F ); } diff --git a/src/GEOMImpl/GEOMImpl_PrismDriver.cxx b/src/GEOMImpl/GEOMImpl_PrismDriver.cxx index 11bb15ad6..cc492ef14 100644 --- a/src/GEOMImpl/GEOMImpl_PrismDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_PrismDriver.cxx @@ -129,7 +129,21 @@ Standard_Integer GEOMImpl_PrismDriver::Execute(TFunction_Logbook& log) const } } } - } else { + } else if (aType == PRISM_BASE_DXDYDZ || aType == PRISM_BASE_DXDYDZ_2WAYS) { + Handle(GEOM_Function) aRefBase = aCI.GetBase(); + TopoDS_Shape aShapeBase = aRefBase->GetValue(); + gp_Vec aV (aCI.GetDX(), aCI.GetDY(), aCI.GetDZ()); + if (aV.Magnitude() > gp::Resolution()) { + if (aType == PRISM_BASE_DXDYDZ_2WAYS) + { + gp_Trsf aTrsf; + aTrsf.SetTranslation(-aV); + BRepBuilderAPI_Transform aTransformation(aShapeBase, aTrsf, Standard_False); + aShapeBase = aTransformation.Shape(); + aV = aV * 2; + } + aShape = BRepPrimAPI_MakePrism(aShapeBase, aV, Standard_False).Shape(); + } } if (aShape.IsNull()) return 0; diff --git a/src/GEOMImpl/GEOMImpl_Types.hxx b/src/GEOMImpl/GEOMImpl_Types.hxx index 54b156448..1a6ec8907 100755 --- a/src/GEOMImpl/GEOMImpl_Types.hxx +++ b/src/GEOMImpl/GEOMImpl_Types.hxx @@ -171,6 +171,8 @@ #define PRISM_BASE_TWO_PNT 2 #define PRISM_BASE_VEC_H_2WAYS 3 #define PRISM_BASE_TWO_PNT_2WAYS 4 +#define PRISM_BASE_DXDYDZ 5 +#define PRISM_BASE_DXDYDZ_2WAYS 6 #define REVOLUTION_BASE_AXIS_ANGLE 1 #define REVOLUTION_BASE_AXIS_ANGLE_2WAYS 2 diff --git a/src/GEOMToolsGUI/GEOMToolsGUI.cxx b/src/GEOMToolsGUI/GEOMToolsGUI.cxx index 081edeee6..781760a76 100644 --- a/src/GEOMToolsGUI/GEOMToolsGUI.cxx +++ b/src/GEOMToolsGUI/GEOMToolsGUI.cxx @@ -239,8 +239,8 @@ static bool inUse( _PTR(Study) study, const QString& component, const QMapGetDependency(); - if( list->length() <= 1 ) - continue; // ??? why 1? + if( list->length() == 0 ) + continue; for( int i = 0; i < list->length(); i++ ) { bool depends = false; diff --git a/src/GEOM_I/GEOM_I3DPrimOperations_i.cc b/src/GEOM_I/GEOM_I3DPrimOperations_i.cc index 55160f0fb..6689cf345 100644 --- a/src/GEOM_I/GEOM_I3DPrimOperations_i.cc +++ b/src/GEOM_I/GEOM_I3DPrimOperations_i.cc @@ -459,6 +459,68 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePrismTwoPnt2Ways return GetObject(anObject); } +//============================================================================= +/*! + * MakePrismDXDYDZ + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePrismDXDYDZ + (GEOM::GEOM_Object_ptr theBase, CORBA::Double theDX, + CORBA::Double theDY, CORBA::Double theDZ) +{ + GEOM::GEOM_Object_var aGEOMObject; + + //Set a not done flag + GetOperations()->SetNotDone(); + + if (theBase == NULL) return aGEOMObject._retn(); + + //Get the reference objects + Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject + (theBase->GetStudyID(), theBase->GetEntry()); + + if (aBase.IsNull()) return aGEOMObject._retn(); + + //Create the Prism + Handle(GEOM_Object) anObject = + GetOperations()->MakePrismDXDYDZ(aBase, theDX, theDY, theDZ); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} + +//============================================================================= +/*! + * MakePrismDXDYDZ2Ways + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakePrismDXDYDZ2Ways + (GEOM::GEOM_Object_ptr theBase, CORBA::Double theDX, + CORBA::Double theDY, CORBA::Double theDZ) +{ + GEOM::GEOM_Object_var aGEOMObject; + + //Set a not done flag + GetOperations()->SetNotDone(); + + if (theBase == NULL) return aGEOMObject._retn(); + + //Get the reference objects + Handle(GEOM_Object) aBase = GetOperations()->GetEngine()->GetObject + (theBase->GetStudyID(), theBase->GetEntry()); + + if (aBase.IsNull()) return aGEOMObject._retn(); + + //Create the Prism + Handle(GEOM_Object) anObject = + GetOperations()->MakePrismDXDYDZ2Ways(aBase, theDX, theDY, theDZ); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} + //============================================================================= /*! * MakePipe diff --git a/src/GEOM_I/GEOM_I3DPrimOperations_i.hh b/src/GEOM_I/GEOM_I3DPrimOperations_i.hh index 330f4974b..d661684bd 100644 --- a/src/GEOM_I/GEOM_I3DPrimOperations_i.hh +++ b/src/GEOM_I/GEOM_I3DPrimOperations_i.hh @@ -94,6 +94,15 @@ class GEOM_I_EXPORT GEOM_I3DPrimOperations_i : GEOM::GEOM_Object_ptr thePoint1, GEOM::GEOM_Object_ptr thePoint2); + GEOM::GEOM_Object_ptr MakePrismDXDYDZ (GEOM::GEOM_Object_ptr theBase, + CORBA::Double theDX, + CORBA::Double theDY, + CORBA::Double theDZ); + GEOM::GEOM_Object_ptr MakePrismDXDYDZ2Ways (GEOM::GEOM_Object_ptr theBase, + CORBA::Double theDX, + CORBA::Double theDY, + CORBA::Double theDZ); + GEOM::GEOM_Object_ptr MakePipe (GEOM::GEOM_Object_ptr theBase, GEOM::GEOM_Object_ptr thePath); diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.cc b/src/GEOM_I_Superv/GEOM_Superv_i.cc index 461ef2d96..3df6f396f 100644 --- a/src/GEOM_I_Superv/GEOM_Superv_i.cc +++ b/src/GEOM_I_Superv/GEOM_Superv_i.cc @@ -967,6 +967,34 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr return anObj; } +//============================================================================= +// MakePrismDXDYDZ: +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ (GEOM::GEOM_Object_ptr theBase, + CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ) +{ + beginService( " GEOM_Superv_i::MakePrismDXDYDZ" ); + MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ"); + get3DPrimOp(); + GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ(theBase, theDX, theDY, theDZ); + endService( " GEOM_Superv_i::MakePrismDXDYDZ" ); + return anObj; +} + +//============================================================================= +// MakePrismDXDYDZ: +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePrismDXDYDZ2Ways (GEOM::GEOM_Object_ptr theBase, + CORBA::Double theDX, CORBA::Double theDY, CORBA::Double theDZ) +{ + beginService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" ); + MESSAGE("GEOM_Superv_i::MakePrismDXDYDZ2Ways"); + get3DPrimOp(); + GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ); + endService( " GEOM_Superv_i::MakePrismDXDYDZ2Ways" ); + return anObj; +} + //============================================================================= // MakePipe: //============================================================================= diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.hh b/src/GEOM_I_Superv/GEOM_Superv_i.hh index bdeadb12d..d5e03edee 100644 --- a/src/GEOM_I_Superv/GEOM_Superv_i.hh +++ b/src/GEOM_I_Superv/GEOM_Superv_i.hh @@ -226,6 +226,14 @@ public: GEOM::GEOM_Object_ptr MakePrismTwoPnt2Ways (GEOM::GEOM_Object_ptr theBase, GEOM::GEOM_Object_ptr thePoint1, GEOM::GEOM_Object_ptr thePoint2); + GEOM::GEOM_Object_ptr MakePrismDXDYDZ (GEOM::GEOM_Object_ptr theBase, + CORBA::Double theDX, + CORBA::Double theDY, + CORBA::Double theDZ); + GEOM::GEOM_Object_ptr MakePrismDXDYDZ2Ways (GEOM::GEOM_Object_ptr theBase, + CORBA::Double theDX, + CORBA::Double theDY, + CORBA::Double theDZ); GEOM::GEOM_Object_ptr MakePipe (GEOM::GEOM_Object_ptr theBase, GEOM::GEOM_Object_ptr thePath); GEOM::GEOM_Object_ptr MakeRevolutionAxisAngle (GEOM::GEOM_Object_ptr theBase, diff --git a/src/GEOM_SWIG/GEOM_TestAll.py b/src/GEOM_SWIG/GEOM_TestAll.py index 46fb32260..17057005c 100644 --- a/src/GEOM_SWIG/GEOM_TestAll.py +++ b/src/GEOM_SWIG/GEOM_TestAll.py @@ -171,6 +171,8 @@ def TestAll (geompy, math): Copy = geompy.MakeCopy(Box) #(GEOM_Object_ptr)->GEOM_Object_ptr Prism = geompy.MakePrismVecH(Face, vz, 100.0) #(2 GEOM_Object_ptr, Double)->GEOM_Object_ptr Prism2Ways = geompy.MakePrismVecH2Ways(Face, vz, 10.0) #(2 GEOM_Object_ptr, Double)->GEOM_Object_ptr + PrismDXDYDZ= geompy.MakePrismDXDYDZ(Face2, 10, 20, 100)#(2 GEOM_Object_ptr, Double)->GEOM_Object_ptr + PrismDXDYDZ2Ways= geompy.MakePrismDXDYDZ2Ways(Face, 30, -20, 200)#(2 GEOM_Object_ptr, Double)->GEOM_Object_ptr Revolution = geompy.MakeRevolution(Face, vz, angle2) # Revolution2Ways = geompy.MakeRevolution(Face, vz, angle1) # Filling = geompy.MakeFilling(Compound, mindeg, maxdeg, @@ -336,6 +338,8 @@ def TestAll (geompy, math): id_Copy = geompy.addToStudy(Copy, "Copy") id_Prism = geompy.addToStudy(Prism, "Prism") id_Prism2Ways = geompy.addToStudy(Prism2Ways, "Prism2Ways") + id_PrismDXDYDZ= geompy.addToStudy(PrismDXDYDZ,"PrismDXDYDZ") + id_PrismDXDYDZ2Ways= geompy.addToStudy(PrismDXDYDZ2Ways,"PrismDXDYDZ2Ways") id_Revolution = geompy.addToStudy(Revolution, "Revolution") id_Revolution2Ways = geompy.addToStudy(Revolution2Ways, "Revolution2Ways") id_Filling = geompy.addToStudy(Filling, "Filling") diff --git a/src/GEOM_SWIG/geompyDC.py b/src/GEOM_SWIG/geompyDC.py index 65fde5c8a..fcc2d4028 100644 --- a/src/GEOM_SWIG/geompyDC.py +++ b/src/GEOM_SWIG/geompyDC.py @@ -851,6 +851,32 @@ class geompyDC(GEOM._objref_GEOM_Gen): anObj = self.PrimOp.MakePrismVecH2Ways(theBase, theVec, theH) RaiseIfFailed("MakePrismVecH2Ways", self.PrimOp) return anObj + + ## Create a shape by extrusion of the base shape along the dx, dy, dz direction + # @param theBase Base shape to be extruded. + # @param theDX, theDY, theDZ Directions of extrusion. + # @return New GEOM_Object, containing the created prism. + # + # @ref tui_creation_prism "Example" + def MakePrismDXDYDZ(self, theBase, theDX, theDY, theDZ): + # Example: see GEOM_TestAll.py + anObj = self.PrimOp.MakePrismDXDYDZ(theBase, theDX, theDY, theDZ) + RaiseIfFailed("MakePrismDXDYDZ", self.PrimOp) + return anObj + + ## Create a shape by extrusion of the base shape along the dx, dy, dz direction + # i.e. all the space, transfixed by the base shape during its translation + # along the vector on the given distance in 2 Ways (forward/backward) . + # @param theBase Base shape to be extruded. + # @param theDX, theDY, theDZ Directions of extrusion. + # @return New GEOM_Object, containing the created prism. + # + # @ref tui_creation_prism "Example" + def MakePrismDXDYDZ2Ways(self, theBase, theDX, theDY, theDZ): + # Example: see GEOM_TestAll.py + anObj = self.PrimOp.MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ) + RaiseIfFailed("MakePrismDXDYDZ2Ways", self.PrimOp) + return anObj ## Create a shape by revolution of the base shape around the axis # on the given angle, i.e. all the space, transfixed by the base diff --git a/src/GenerationGUI/GenerationGUI_PrismDlg.cxx b/src/GenerationGUI/GenerationGUI_PrismDlg.cxx index 2149a7781..e64a13e6c 100644 --- a/src/GenerationGUI/GenerationGUI_PrismDlg.cxx +++ b/src/GenerationGUI/GenerationGUI_PrismDlg.cxx @@ -58,6 +58,7 @@ GenerationGUI_PrismDlg::GenerationGUI_PrismDlg( GeometryGUI* theGeometryGUI, QWi QPixmap image0( aResMgr->loadPixmap( "GEOM", tr( "ICON_DLG_PRISM" ) ) ); QPixmap image1( aResMgr->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) ); QPixmap image2( aResMgr->loadPixmap( "GEOM", tr( "ICON_DLG_PRISM_2P" ) ) ); + QPixmap image3( aResMgr->loadPixmap( "GEOM", tr( "ICON_DLG_PRISM_DXDYDZ" ) ) ); setWindowTitle( tr( "GEOM_EXTRUSION_TITLE" ) ); @@ -65,11 +66,10 @@ GenerationGUI_PrismDlg::GenerationGUI_PrismDlg( GeometryGUI* theGeometryGUI, QWi mainFrame()->GroupConstructors->setTitle( tr( "GEOM_EXTRUSION" ) ); mainFrame()->RadioButton1->setIcon( image0 ); mainFrame()->RadioButton2->setIcon( image2 ); - mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose ); - mainFrame()->RadioButton3->close(); + mainFrame()->RadioButton3->setIcon( image3 ); mainFrame()->RadioButton1->setChecked( true ); - myBothway = myBothway2 = false; + myBothway = myBothway2 = myBothway3 = false; GroupPoints = new DlgRef_2Sel1Spin2Check( centralWidget() ); GroupPoints->GroupBox1->setTitle( tr( "GEOM_EXTRUSION_BSV" ) ); @@ -85,7 +85,6 @@ GenerationGUI_PrismDlg::GenerationGUI_PrismDlg( GeometryGUI* theGeometryGUI, QWi GroupPoints->CheckButton2->setText( tr( "GEOM_REVERSE" ) ); GroupPoints2 = new DlgRef_3Sel1Check( centralWidget() ); - GroupPoints2->GroupBox1->setTitle( tr( "GEOM_EXTRUSION_BSV_2P" ) ); GroupPoints2->TextLabel1->setText( tr( "GEOM_BASE" ) ); GroupPoints2->TextLabel2->setText( tr( "GEOM_POINT_I" ).arg( 1 ) ); @@ -96,10 +95,21 @@ GenerationGUI_PrismDlg::GenerationGUI_PrismDlg( GeometryGUI* theGeometryGUI, QWi GroupPoints2->CheckButton1->setText( tr( "GEOM_BOTHWAY" ) ); GroupPoints2->CheckButton1->setChecked( myBothway2 ); + GroupPoints3 = new DlgRef_1Sel3Spin1Check( centralWidget() ); + GroupPoints3->GroupBox1->setTitle(tr("GEOM_EXTRUSION_DXDYDZ")); + GroupPoints3->TextLabel1->setText(tr("GEOM_BASE")); + GroupPoints3->PushButton1->setIcon(image1); + GroupPoints3->TextLabel2->setText(tr("GEOM_DX")); + GroupPoints3->TextLabel3->setText(tr("GEOM_DY")); + GroupPoints3->TextLabel4->setText(tr("GEOM_DZ")); + GroupPoints3->CheckButton1->setText( tr( "GEOM_BOTHWAY" ) ); + GroupPoints3->CheckButton1->setChecked( myBothway3 ); + QVBoxLayout* layout = new QVBoxLayout( centralWidget() ); layout->setMargin( 0 ); layout->setSpacing( 6 ); layout->addWidget( GroupPoints ); layout->addWidget( GroupPoints2 ); + layout->addWidget( GroupPoints3); /***************************************************************/ setHelpFileName( "create_extrusion_page.html" ); @@ -133,6 +143,8 @@ void GenerationGUI_PrismDlg::Init() GroupPoints2->LineEdit2->setReadOnly( true ); GroupPoints2->LineEdit3->setReadOnly( true ); + GroupPoints3->LineEdit1->setReadOnly( true ); + myPoint1 = myPoint2 = myBase = myVec = GEOM::GEOM_Object::_nil(); myOkBase = myOkVec = myOkPnt1 = myOkPnt2 = false; @@ -141,6 +153,13 @@ void GenerationGUI_PrismDlg::Init() double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 ); /* min, max, step and decimals for spin boxes & initial values */ + initSpinBox( GroupPoints3->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY + initSpinBox( GroupPoints3->SpinBox_DY, COORD_MIN, COORD_MAX, step, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY + initSpinBox( GroupPoints3->SpinBox_DZ, COORD_MIN, COORD_MAX, step, 3 ); // VSR:TODO : DBL_DIGITS_DISPLAY + GroupPoints3->SpinBox_DX->setValue( 0.0 ); + GroupPoints3->SpinBox_DY->setValue( 0.0 ); + GroupPoints3->SpinBox_DZ->setValue( 0.0 ); + initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, step, 3 ); // VSR: TODO: DBL_DIGITS_DISPLAY GroupPoints->SpinBox_DX->setValue( 100.0 ); @@ -165,12 +184,18 @@ void GenerationGUI_PrismDlg::Init() connect( GroupPoints2->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); connect( GroupPoints2->PushButton2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); connect( GroupPoints2->PushButton3, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); - connect( GroupPoints2->CheckButton1, SIGNAL( toggled( bool ) ), this, SLOT( onBothway2() ) ); + connect( GroupPoints2->CheckButton1, SIGNAL( toggled( bool ) ), this, SLOT( onBothway() ) ); connect( GroupPoints2->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ); connect( GroupPoints2->LineEdit2, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ); connect( GroupPoints2->LineEdit3, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ); + connect( GroupPoints3->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); + connect( GroupPoints3->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ); + connect( GroupPoints3->SpinBox_DX, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox() ) ); + connect( GroupPoints3->SpinBox_DY, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox() ) ); + connect( GroupPoints3->SpinBox_DZ, SIGNAL( valueChanged ( double ) ), this, SLOT( ValueChangedInSpinBox() ) ); + connect( GroupPoints3->CheckButton1, SIGNAL( toggled( bool ) ), this, SLOT( onBothway() ) ); connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); @@ -187,6 +212,9 @@ void GenerationGUI_PrismDlg::Init() void GenerationGUI_PrismDlg::SetDoubleSpinBoxStep( double step ) { GroupPoints->SpinBox_DX->setSingleStep(step); + GroupPoints3->SpinBox_DX->setSingleStep(step); + GroupPoints3->SpinBox_DY->setSingleStep(step); + GroupPoints3->SpinBox_DZ->setSingleStep(step); } @@ -205,6 +233,7 @@ void GenerationGUI_PrismDlg::ConstructorsClicked( int constructorId ) globalSelection( GEOM_ALLSHAPES ); GroupPoints2->hide(); + GroupPoints3->hide(); GroupPoints->show(); myEditCurrentArgument = GroupPoints->LineEdit1; @@ -221,6 +250,7 @@ void GenerationGUI_PrismDlg::ConstructorsClicked( int constructorId ) GroupPoints->hide(); GroupPoints2->show(); + GroupPoints3->hide(); myEditCurrentArgument = GroupPoints2->LineEdit1; GroupPoints2->LineEdit1->setText( GroupPoints->LineEdit1->text() ); // keep base @@ -231,6 +261,17 @@ void GenerationGUI_PrismDlg::ConstructorsClicked( int constructorId ) break; } + case 2: + { + globalSelection( GEOM_ALLSHAPES ); + + GroupPoints->hide(); + GroupPoints2->hide(); + GroupPoints3->show(); + + myEditCurrentArgument = GroupPoints3->LineEdit1; + GroupPoints3->LineEdit1->setText( GroupPoints->LineEdit1->text() ); // keep base + } } qApp->processEvents(); @@ -340,7 +381,7 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument() } myEditCurrentArgument->setText( aName ); } - else { // getConstructorId()==1 - extrusion using 2 points + else if ( getConstructorId() == 1 ) { // getConstructorId()==1 - extrusion using 2 points if ( IObjectCount() != 1 ) { if ( myEditCurrentArgument == GroupPoints2->LineEdit1 ) myOkBase = false; @@ -410,6 +451,18 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument() myPoint2 = aSelectedObject; } } + else if ( getConstructorId() == 2 ) { // extrusion using dx dy dz + Standard_Boolean testResult = Standard_False; + GEOM::GEOM_Object_var aSelectedObject = + GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + + if ( !testResult || CORBA::is_nil( aSelectedObject ) ) + return; + + QString aName = GEOMBase::GetName( aSelectedObject ); + myBase = aSelectedObject; + myEditCurrentArgument->setText( aName ); + } displayPreview(); } @@ -447,6 +500,10 @@ void GenerationGUI_PrismDlg::SetEditCurrentArgument() myEditCurrentArgument = GroupPoints2->LineEdit3; localSelection( GEOM::GEOM_Object::_nil(), TopAbs_VERTEX ); } + else if ( send == GroupPoints3->PushButton1 ) { + GroupPoints3->LineEdit1->setFocus(); + myEditCurrentArgument = GroupPoints3->LineEdit1; + } myEditCurrentArgument->setFocus(); SelectionIntoArgument(); @@ -464,7 +521,8 @@ void GenerationGUI_PrismDlg::LineEditReturnPressed() send == GroupPoints->LineEdit2 || send == GroupPoints2->LineEdit1 || send == GroupPoints2->LineEdit2 || - send == GroupPoints2->LineEdit3 ) { + send == GroupPoints2->LineEdit3 || + send == GroupPoints3->LineEdit1) { myEditCurrentArgument = send; GEOMBase_Skeleton::LineEditReturnPressed(); } @@ -532,8 +590,10 @@ bool GenerationGUI_PrismDlg::isValid( QString& ) { if ( getConstructorId() == 0 ) return ( myOkBase && myOkVec ); // by vector and height - else + else if ( getConstructorId() == 1 ) return ( myOkBase && myOkPnt1 && myOkPnt2 ); // by two points + else if ( getConstructorId() == 2 ) + return true; } //================================================================================= @@ -565,6 +625,20 @@ bool GenerationGUI_PrismDlg::execute( ObjectList& objects ) MakePrismTwoPnt2Ways( myBase, myPoint1, myPoint2 ); } break; + case 2 : + double dx = GroupPoints3->SpinBox_DX->value(); + double dy = GroupPoints3->SpinBox_DY->value(); + double dz = GroupPoints3->SpinBox_DZ->value(); + + if ( !myBothway3 ) { + anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )-> + MakePrismDXDYDZ( myBase, dx, dy, dz ); + } + else { + anObj = GEOM::GEOM_I3DPrimOperations::_narrow( getOperation() )-> + MakePrismDXDYDZ2Ways( myBase, dx, dy, dz ); + } + break; } if ( !anObj->_is_nil() ) objects.push_back( anObj._retn() ); @@ -589,17 +663,25 @@ void GenerationGUI_PrismDlg::onReverse() //================================================================================= void GenerationGUI_PrismDlg::onBothway() { - bool anOldValue = myBothway; - myBothway = !anOldValue; - GroupPoints->CheckButton2->setEnabled( !myBothway ); - displayPreview(); -} - -void GenerationGUI_PrismDlg::onBothway2() -{ - bool anOldValue = myBothway2; - myBothway2 = !anOldValue; - displayPreview(); + bool anOldValue; + switch ( getConstructorId() ) { + case 0: + anOldValue = myBothway; + myBothway = !anOldValue; + GroupPoints->CheckButton2->setEnabled( !myBothway ); + displayPreview(); + break; + case 1: + anOldValue = myBothway2; + myBothway2 = !anOldValue; + displayPreview(); + break; + case 2: + anOldValue = myBothway3; + myBothway3 = !anOldValue; + displayPreview(); + break; + } } //================================================================================= diff --git a/src/GenerationGUI/GenerationGUI_PrismDlg.h b/src/GenerationGUI/GenerationGUI_PrismDlg.h index c36047a50..78bf3453a 100644 --- a/src/GenerationGUI/GenerationGUI_PrismDlg.h +++ b/src/GenerationGUI/GenerationGUI_PrismDlg.h @@ -30,6 +30,7 @@ class DlgRef_2Sel1Spin2Check; class DlgRef_3Sel1Check; +class DlgRef_1Sel3Spin1Check; //================================================================================= // class : GenerationGUI_PrismDlg @@ -66,9 +67,11 @@ private: bool myOkPnt2; bool myBothway; bool myBothway2; + bool myBothway3; DlgRef_2Sel1Spin2Check* GroupPoints; DlgRef_3Sel1Check* GroupPoints2; // for second layout for extrusion using 2 points + DlgRef_1Sel3Spin1Check* GroupPoints3; private slots: void ClickOnOk(); @@ -82,7 +85,6 @@ private slots: void SetDoubleSpinBoxStep( double ); void onReverse(); void onBothway(); - void onBothway2(); }; #endif // GENERATIONGUI_PRISMDLG_H -- 2.39.2