From 080bddc9415b6774e31827149c972f8ef517bfe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rk=20Vitarius?= Date: Wed, 11 Jun 2025 14:06:59 +0200 Subject: [PATCH] Add project files. --- Dokumentáció Készítő 3.sln | 25 + Dokumentáció Készítő 3/App.config | 6 + Dokumentáció Készítő 3/Application.xaml | 49 + Dokumentáció Készítő 3/Application.xaml.vb | 6 + .../Dokumentáció Készítő 3.exe | Bin 0 -> 137728 bytes .../Dokumentáció Készítő 3.vbproj | 283 + Dokumentáció Készítő 3/Form2.xaml | 25 + Dokumentáció Készítő 3/Form2.xaml.vb | 25 + Dokumentáció Készítő 3/HandleWindow.vb | 73 + .../Images/baseline_clear_black_18dp.png | Bin 0 -> 209 bytes Dokumentáció Készítő 3/Images/logo.png | Bin 0 -> 9377 bytes Dokumentáció Készítő 3/MainWindow.xaml | 143 + Dokumentáció Készítő 3/MainWindow.xaml.vb | 2634 + Dokumentáció Készítő 3/Module1.vb | 143 + .../My Project/AssemblyInfo.vb | 59 + .../My Project/Resources.Designer.vb | 62 + .../My Project/Resources.resx | 117 + .../My Project/Settings.Designer.vb | 73 + .../My Project/Settings.settings | 7 + Dokumentáció Készítő 3/Serialized2.ser | Bin 0 -> 3760 bytes Dokumentáció Készítő 3/Window1.xaml | 31 + Dokumentáció Készítő 3/Window1.xaml.vb | 69 + .../baseline_clear_black_18dp.png | Bin 0 -> 209 bytes Dokumentáció Készítő 3/form3.xaml | 25 + Dokumentáció Készítő 3/form3.xaml.vb | 35 + Dokumentáció Készítő 3/logo.png | Bin 0 -> 9377 bytes Dokumentáció Készítő 3/packages.config | 12 + test/SHM-8415-210-009.DXF | 91290 +++++++++++++++ test/SHM-8415-210-009.PDF | Bin 0 -> 468344 bytes test/SHM-8415-210-009.dwg | Bin 0 -> 168537 bytes test/SHM-8415-210-010.DXF | 97444 ++++++++++++++++ test/SHM-8415-210-010.dwg | Bin 0 -> 176058 bytes test/SHM-8415-210-011.DXF | 94100 +++++++++++++++ test/SHM-8415-210-011.dwg | Bin 0 -> 164824 bytes test/SHM-8415-210-012.DXF | 86584 ++++++++++++++ test/SHM-8415-210-012.dwg | Bin 0 -> 155125 bytes test/SHM-8415-210-013.DXF | 92372 +++++++++++++++ test/SHM-8415-210-013.dwg | Bin 0 -> 183095 bytes 38 files changed, 465692 insertions(+) create mode 100644 Dokumentáció Készítő 3.sln create mode 100644 Dokumentáció Készítő 3/App.config create mode 100644 Dokumentáció Készítő 3/Application.xaml create mode 100644 Dokumentáció Készítő 3/Application.xaml.vb create mode 100644 Dokumentáció Készítő 3/Dokumentáció Készítő 3.exe create mode 100644 Dokumentáció Készítő 3/Dokumentáció Készítő 3.vbproj create mode 100644 Dokumentáció Készítő 3/Form2.xaml create mode 100644 Dokumentáció Készítő 3/Form2.xaml.vb create mode 100644 Dokumentáció Készítő 3/HandleWindow.vb create mode 100644 Dokumentáció Készítő 3/Images/baseline_clear_black_18dp.png create mode 100644 Dokumentáció Készítő 3/Images/logo.png create mode 100644 Dokumentáció Készítő 3/MainWindow.xaml create mode 100644 Dokumentáció Készítő 3/MainWindow.xaml.vb create mode 100644 Dokumentáció Készítő 3/Module1.vb create mode 100644 Dokumentáció Készítő 3/My Project/AssemblyInfo.vb create mode 100644 Dokumentáció Készítő 3/My Project/Resources.Designer.vb create mode 100644 Dokumentáció Készítő 3/My Project/Resources.resx create mode 100644 Dokumentáció Készítő 3/My Project/Settings.Designer.vb create mode 100644 Dokumentáció Készítő 3/My Project/Settings.settings create mode 100644 Dokumentáció Készítő 3/Serialized2.ser create mode 100644 Dokumentáció Készítő 3/Window1.xaml create mode 100644 Dokumentáció Készítő 3/Window1.xaml.vb create mode 100644 Dokumentáció Készítő 3/baseline_clear_black_18dp.png create mode 100644 Dokumentáció Készítő 3/form3.xaml create mode 100644 Dokumentáció Készítő 3/form3.xaml.vb create mode 100644 Dokumentáció Készítő 3/logo.png create mode 100644 Dokumentáció Készítő 3/packages.config create mode 100644 test/SHM-8415-210-009.DXF create mode 100644 test/SHM-8415-210-009.PDF create mode 100644 test/SHM-8415-210-009.dwg create mode 100644 test/SHM-8415-210-010.DXF create mode 100644 test/SHM-8415-210-010.dwg create mode 100644 test/SHM-8415-210-011.DXF create mode 100644 test/SHM-8415-210-011.dwg create mode 100644 test/SHM-8415-210-012.DXF create mode 100644 test/SHM-8415-210-012.dwg create mode 100644 test/SHM-8415-210-013.DXF create mode 100644 test/SHM-8415-210-013.dwg diff --git a/Dokumentáció Készítő 3.sln b/Dokumentáció Készítő 3.sln new file mode 100644 index 0000000..738c92f --- /dev/null +++ b/Dokumentáció Készítő 3.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29102.190 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Dokumentáció Készítő 3", "Dokumentáció Készítő 3\Dokumentáció Készítő 3.vbproj", "{0D82F19D-DF81-45F3-9BF3-6CE2E79267E6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0D82F19D-DF81-45F3-9BF3-6CE2E79267E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0D82F19D-DF81-45F3-9BF3-6CE2E79267E6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0D82F19D-DF81-45F3-9BF3-6CE2E79267E6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0D82F19D-DF81-45F3-9BF3-6CE2E79267E6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3A13563B-6A8A-4203-8467-975D7AE62D66} + EndGlobalSection +EndGlobal diff --git a/Dokumentáció Készítő 3/App.config b/Dokumentáció Készítő 3/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/Dokumentáció Készítő 3/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Dokumentáció Készítő 3/Application.xaml b/Dokumentáció Készítő 3/Application.xaml new file mode 100644 index 0000000..0515c55 --- /dev/null +++ b/Dokumentáció Készítő 3/Application.xaml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Dokumentáció Készítő 3/Application.xaml.vb b/Dokumentáció Készítő 3/Application.xaml.vb new file mode 100644 index 0000000..084cbe9 --- /dev/null +++ b/Dokumentáció Készítő 3/Application.xaml.vb @@ -0,0 +1,6 @@ +Class Application + + ' Application-level events, such as Startup, Exit, and DispatcherUnhandledException + ' can be handled in this file. + +End Class diff --git a/Dokumentáció Készítő 3/Dokumentáció Készítő 3.exe b/Dokumentáció Készítő 3/Dokumentáció Készítő 3.exe new file mode 100644 index 0000000000000000000000000000000000000000..2f648306359719fc0f5a0d61707c66d61f58b915 GIT binary patch literal 137728 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%0Di21 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⁢JSU@);O5*edc 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 z zS|hsMEOi${)2wnq^U(0(6bDVgp;ui_zo#0Y8fFKk@#=lrgg6 z(nQ}-fVEWxxdhE3WuLTkMPI{yXZkQUkZHL#ULrC9e^~y9Pm*D0GiUl+3;GR@M@%Ay`Mytv@a~H5EV>G6#q^B4aWLSS8vOIoy7Y^G>uGwl_a}exi9dhE`MSa{ zExQTY2rz>xr$GRxoG_=9lc*EALOF{FJOsrA*l<$L5`t0!{(Q5uoPfX6?BowXJ1Yn( z36>IEM6itDVuC7yYJ%kiD+u^o(#{%!RRot1tR|=>s3W+Ppq^k2!CHdL2>3hM&UFO* z)oUl#=gPT(U?V{T0hWu(c_o0c%(&E8Y19}ijHQ#G0mJ0S=UovJ;N>%kG5Z3LM&CHD ziWtS$pu9X1-$gg(E`1qH5Wg{m4>#iJEXT&$`B663TG!(4*wom>KeEVG_B-N{aopw} z+gRI&-(iS`@m-1B*|+0hQ|qD4hqfMSZXVj)6lx7A&O)*}w2_Hoi<0@JO}Yyv&g2IO z9&!{_Vo;Y8e}dpCf~UCkzkx)g5WOBTA5!Ga$yVj5T-6JVHsLYEsrVhwDo+}dY*CBg7XPcHIq+>=PB)Z zN<2?%&(q?0L7=rFoRxVav#qqEwg|1VO?2=GZ2HpD5|}Pa%1cY3aYxEIyJWU4vFtb) z&}_nT%d68EDPLrf!KqOsH&V`&moPF?6|-r?%9AUl>gwupK0VdN)zy_Sc?vnpJXVre z+UP8oa1Li#7Gcq>`xX=|7#*Gx6w->m5%FNTJm>M~7RuaUJ@;78n{+B8NQE^)w2{S_ zSCKA#Cj8Iks(`hSaKTJRG)!XUrMfg?x9_u(HUsGOQjP;OM zU0jIP)YMRA<56B)TseqmO-;oZ090@dRIpLGzh-Ie;>!Ky5|jm()~?Rt7eH9U5rTaL zgGDe{k$!1yF>}-Zifb{wZY0k7WUgU@WxBA%fk!uHesm0`c2BtueupryjJ|ggO ziT0&(G%YMdk1Xgi>#PU&Ua&wwU6H|;1>PrZn7L0pFG*%Ep(AZ%jP%JLN~k76#K#~n z;1QGKaoXOp8mkd2{Bsm~VQ*q)lV4)id(%hM}aAc4>mR#r* z@C~s_T<9N=G`=tJYYdwFvgSzZT8>D9lg~-A>m=^GbjX7k3n=)5NW`l4r(i(RIc>lrfqgHSu&@E~4zXbvOD<6o4-0gKNgiMg!8#cwwF1`&WDSwzVx)lRk)nKA;C%vL5;#IQd8!DhK$zqKF`^Fw!3P9_9M1{&I;2!1 zBObg=|bTa5OriMP_1AXQ}pE=jDcL3H9tn(O(W{`pTOSyj7yPo3){# zRF9!*8h7IdO6{8wHrlqxZJQdmHnyN1O1Db!w<7zkc_!apGTACUJ74rGevCxd7<3gWPXuAx23puIMw(MD*RO3*T! zveHKWHH+9h&)Ud#8m>%GoX}s|Qk*e5$_v zSD1M{RQ_*iDphHyvcg|@lipeQt{KH4zQAYml1kwh@M^iCF0#8M@0wqJFmgSH{i{^EG4n2z6_$egCZvFcJt9A#Ec69#2hiP-ckO``Zr=63s>V=N7rL2P z6&uPaS9?f}7rgaY7d-EB1R><#o}kN-cO8P1W8U?~lEH%47)$dN-gHQ<>(_N<+$PSvLsc zqEYz~t}H?Sgde5E`WdZ6GOuW&AgMBos44Z_)6~?|vT0LuYXgub4SY66Qd83=yqJ5V zq1NTfw9wBdG-mIe`J)+?+K0&xIkYrwD=0u1G${(RX8{`j*u1SfZ=@d)6A5>0e)F0I z4Ry2CUHbZ|jkWeKD*sp3_glAyHitKFY2MztDbloUdqEpFzj;aih&Ik%0Q4WVahCDF zuZ^=w+HK6)E_*{%UW;$q^5*rV#bfo&)<2rl`^RxYl3U)K^MHYOzM{A)TyA(@P?8I; zocqsliuRWF&A!dP z&W7#VHnlgjwr<_p;N8;F+0fD1zI|Kg*6p2}eLg)-Hnn=2J2rc_G;C@1HZ`>RTD%SI zo&PU;?*Z53(kzSz2)zYFKv4-08<3D*RKQd#Vnt9alu(pjL{u!G2%=)|iegvn9lK)h z{ixXW2zF7yO1_yVg@Ag_x$nLA|9`*V_eK+T_t`Q#Gdnx8&+d*?NEayNT#ittV97X| zoNSRmDiO%Vbg4)tr$d!|x=;c_gDaJ>nJhU=&X-Emb&7dR8H=f4(M2pav@T@H>0%aJ zM3;y-Y?gq}mx`F6FCnsI95IhC$@( zIg75~3AuER1VEGsq$0XPER~3)Yz|)`gEn#h1y}+Q zgnR{u&Sr|GTrNk#m-97!=d<_{Xcy{a@v%oTAziHC@BnO%m?M|*cx;(i-8x6i6f?Op z8C}j)0GvDkRwNXN=|T<{YT&bEBDq4-BO#9^=E*gxx|qO*+5A60XQKepD$s_HLdf3K@^QY!58s(00SCrNF$+wCF1d+ z+cLHo>SSR~1&>9SN%&GRP=gC?s&lgCGO3is=F@pX9tUzlw?sndkwV6livS`Hu!^>I zHj4wa1qAYeKUp9>g(9&4u)vdX`C_hICeidr!WS}`Qs88c3<$-MLUtjb8-65WnL;4v zvsglPodSVO#1Q~jviZQy9B34?S zI>jt#7&1Yf5}t_71E%IfonojH#vhl*iDJ|FFkRBQ2!b#|6iElfMT&$GECG|Lbb_1y zKy~`b!_mJ~1FHKvZ%FEXNjN-#Od*p12INR7j)*Q63!!r?1&707^2IVP;0hEbG(!;) zGQL8=0ff`V0xTetiReNuP+Gy30=w~8LM|HXn3FAHabZvbC-GP?R3s7*dA5)v6K-4h~745C$r;3j!__ieZca zMVM?Ei!Ebn*_tJjuvlCLT`mIN=WzHS^VlFz6nrL(AhuY-l4=GOn+FWa7BWGCNT5z0 zQ$m+WMJ&1$WC2i}FAzyU1tbOlj9;D%Y64jbq?I#4KuZ8v8I#GE!4QLfYS@J-ka758 z9MU2lu!{_YkOag#3~2>h&SMJ&d?}cuSf_$5lFQh9lsXC#5P&J53z;BQxDsGOv6#u@ zBMX{?Re`rKYv51_^ix9v z4#*CHfW@b?#3;5DKOglqv$q z&f-X5j7lUdjs~9~jpbs6oKHty2Yf=q5)_sq8DB2qiFq6uUxOu~kSkAP8Lq3=AA1hB}1;7M-P#a>Npa7^ZKH0G7gZ#ATs+qQIPdm>tZ7K?-;ISZyA4d$gh5b6RUtRKRR2sGkBbv)2} zq#_}UE#LwM_*xDTaiwx5>Zw9L@TVMjUMNNMf_xAQ6atQjspWa#VirsZph^G}gNB1N z0^3RmvzI~)oW@dU>Xd?V0uqu(7fIzHci1Qc1Td&!5fh}J2&QCsOmkUH(F&)MyDl%-SlLw5?5sKvsU}Uyfpj9D(3=%HT zoy(EI*aS@n`VJ#sBw|THxdhhJVqPo(3i3gTgJF+Yg1H~&G2moAOax+Ba}`Q8G~&ty z60RJ&&F8bQPLU8e8RiKNC@_4OYvrJ$X=Dgj!sl`Lpk~QX>frzt3PGwtGZG00cvqs$ z2_ssffC(N(4^HN6nEJ$QP@^~kV12m)rdI*XBH^$ksWDE~H*13T*Vu%}#0-1&n$8g7 zrg-$3He^U6T;v6x=K5(=@LZwi>J9IchigH>U$v&1RP}-!NK-LB*+JL<_;Ghk_>t3i3J_AOQNEgq(J!AmknedJKX%R)c zVxsm%^gn8+d;Hv(`qp%9n}8of0E$@LhQB?FrbAS)hg5<+`;d^L&K08fX#91hxJDR@RnTdxu9@6bKKgPz(4PENoM z>MMB?b=9nJhxa1CK4qaT*QpaMhv}anz!RX_hqU1&l3N>q1zLrp0)6195MBt@9b!Xu zUjq^>&Z`WX!PbxlFIMXLSAmQ5;M4jqUcG=T&oFfKgsV|Tke7$tgu7Up^*12((SOAu zO-xb#3ky6PR(KRg$m54aa`;>&hu19BkQA(6ukOvt|3u}zjYvH-10Ve}{SQ>>0O!DB z;O5VEK0c`t;KDsDl@YI74T(sM_sNJ&h#Kj`28GTCP#Ncw1lMxIZPbL%L?cjw4M|2M z9u5TptG&sj9-5&O47vXW0K*%sm^rjF80r0AfsjlBF{1_xDNcYDWK8OKu4oGo9OaER4<>kDajoDRV1W=9!_;KBQ?^+>T($Y^gMjA zi#yxk4IU5Q5+ZvTL1%fGXb)eSr6I|wS!nwR}y1P3Wqy(hr_T6OTw%6iSg3T+uPgccXVnGqfLEVypNhWf0YwF zxkiP-p0ZR1GLioeKF%WQwo#rE9T;UyO8ZA`6GTe=x!vAC_jtGlKT;X#qaj}dScsAU zixw$ALj$a*je7>T!~GdC z#5U#`oO4pTN0P9V<#|AU=yqn z$Tc4BUquL-IBNw~=XCH_0Mdf+z(yi@n2-h<8j$#)0>QY%BDmX?DB|8iGnlkR>O_-% zVM7wXm##4Gk|hc|!s|&wLPOzz*hu{XMkHJf)wG5fAqr5N)hqDpw#X!YpspzH!zGG3 zHL5Er1NSKUjTw{pVAEKndb(7kgxy8cg*mjAM}~;@+Y`kzeD%OhaKZ5BD%59;~q6 zBr?w%esQ0S4Vi}^q5fj%b_IU(d-mvLZP64bDeEqsWxe4qqKyWJ1xau|eZd0wv!IJi z+;^nG>uVE?k1!qNR|;*e`%YP&6FJAfb0@2-)Q-nnuJ7=9{@RYs^MkpJDaEM|{P&gz zeaqk{dd2Udk4W#{(qZVZAtAo&SH2E&i1=E*+;|R2+QuNam!Z{4va`ZKG2U>h{j*l* zO_zJ0>fCdD^2n^wtao2&&W)CnjM^AS8Cftb`Yt+3da?7w64unO-|oyxo>=NVrMTj* zW&7IM1|6@ztpylKUF1DvnNio(J7WV2q~0@79B`&XO`=&J15#jpQBo%X>%c@M^B-*uM-9^@qgQ<} ze^);^n^ik6Y#)}Is*Deh%k=$SR=3|h(A5Fs5Sb7=)x0(Qklg+PJA?}Zw$8R9Fwx)e zf62Bo`rovzz;yYyvaJkZ{FBvMDuLDB#{UMk6>PXxgN339!E)$m5Xt^a`%I~Gedq(; zj1nTzm=u!1WYN@wN;6SYSHt*-_6@26?-L0lGBP%dfm%hp>UunbY=&yfl4#q?kklMZ;J&eGaY~wXViUEm(k* zfX&HDUlqSAW@$#oERD5Uz+qN;Qg;{wxY$dxCzGtCU?zj>50@D3-U03R&i1AI9Ub!}!s>IxWAGX~)k7{yCq zN^Ep&0?p2ZWXWU*ggkFp3SzQa)$$9W4B2Q+Es5swyeu)cE5&A`?@OZ%PYGi1mkFQn3K` zis=pgg8$g7?wClh0>6!lKLle|4^$>L1$D%bjYheovS5k0b>xA&cJ%>C zBBDC-jKln#1vln z8+bfd9i*yM{M}f_^iP!m3%ZVP+g#nvu!IYoQA~q(V{u@NB*w)_!cu}_Q#BSn&B9D; zsqw);)2OSz)4yEcJ{E%ug5UP*KtP0f2X?B-XmMoz_k3dnFTnE!=BC0bhW)p>eqCpWP!^;R9 zz6~|;6<{L#yyk9*sLLVN+^6?&MPu0@wRa~8Y4gQql~`A_I6zDyZ7a0=9!9K0By|o+ zg~j|b{2I*lvOycaNt!%3txsZ9S_ZiO27k_p;YwkdvGCO0knZeA1Ir70A5S_F+;f|(r7MF>>u2J~8Z#$o-MU`I#p|aSMmT!*9QOX1 zOx?m9P^XTKxm&6dh1OZHTb{E`#+&fIMxMKZOGz0`enYSEac2S-=^sJL$W zy!hI|@ZDP$WoCZ7KB!>!LCBL=?ZM(6qo%YuHOk#|Tk2<@wT!%FecrYn9eV!zmh*Xo z@1{j>ZwdK!y5_I2Bh8HP?!d^7rr1j*W^SdqWj!Z%E@&~h=*zp%st3bnINM9iuJCBN z1M-p+o4+t`5gIyYgFMimmJ8+6tn*hKVX=H2N_@Zn`22nCnQ@Cdg?Bb{liix(Y+*&d z#Ps&t+}R4iu4rm6m6n}a8R)2oW2Mm}GfQJngG(SANB>U>_eK}*`Ddol(^-q{&@ zUbp+>&B-;MaYv;gmmB%^Ih^+BV5^7XJ9`p`lplFNw0Zjx-d`@g z3)wnU{GIgSq4%It?wfb#-u)3#C@=J{9l8AmeceX)V}H)-#^^G5*Zd8Od%sA2bZpX@ zp!VxGj=sGwHF{^tv$K(2MLDLnyCsz5sgrG*ciqj%eO@qPdz?#OUgoLzksq&gdQ!cG zG3IX2x7zP(pT0favE#>SFEbQFR5eA@R#7A$AHMi{WzUv^W#5lJuGlp#Lox2|kDeco zp0hpiX3KNe;HL4x$ zWohuo?%%FD%?{++G8)hMe#&*+k^_zS&03$jJNIP2yxrU4@9wVnSb6QtJeOCOo|lqx zwWOY=kLF@3K^B#cGUKvX-G(3sa@3nQ5xKVIB~(YJh3anp8Qxn@%jWxib2V+u9mJu87Rv2a^8rF`l;^X5%g z?=HMv%D(DQOsB?788Gup=q(fG-Z!^OLT1P1v(tK5E&cZNTFjGWf?}^X_Z$y?UEAo) z{?{kUKL4?qfi-RBXXo#sZ{9XG={uQY;r3!O->4w2$?n7l_xCMavZPU?_NC#UnmR7E zmqzB--nmmGUp)54;31xmpRd_+Y04(QabM456`lG#@x=?zuKmB?tGa7>#j0OOda3i< znzLS8%93S+0&ZU+FQrI>bCUA!Rh2Ef`OM<1z5n6Nk@C1tvBUVcm=$N^%r3m36p!6{ zq_q3J5fk24KBne=?$&D6x&Tkb%MVsz)}`Mnvo;M7Snau$afs!$`(s+jJFD!rFBlxj z>256V(5imt7jjPRfA3bYZTgW;ib9d9th7=n&_H z{mq;24qUb(%+Kq`y0eR(+!?$VcHld%YJ7q>B(R0gfp?OXj?7z6Y($rO4nHv?-}-Ci z+xy+`o6oPDA5d_@Hs9)tS9$xxVfUBC3l%O!xyxfx%1YnaN#naL@9#K-b^Yp^4o*ei zn$CRNv>XzN+(FRKLHi*mj29Mfm z=9bW=!+b_s@`kLYje_aoIe{C?CQmn@_vDclodWcz=L=h2rK{F}?kpydUpd2QHf$VZ+@uIB(R$FDXmA7RIn&rhhS8 z!sxLpP&$;y>TglfqWkbNilky$^s$POQ!UTSNnww~N2p0#KW<%mqVihw~&6t!TJ5yg|8mvHnDw&(VHif1!rHqw6-uk?}2$N zdxGU&<18^{=C;z8n~xTgeR6Z@6Bn2ix=j7Ju~L?x{}9ccbICFPITs@W+W_O2O(QFV2v?a!-4def-jjwVAo*_>SuN z-6Umg`>c_@yye?$(}47hw93``Fq#l0kCwd9Lj~j(z9v`jX;a z67ZPx^5WgZ!-GyMO)N^5b>G^>$xafmiC<{uZW7b8*$l5TBfB=QUw-vGTiU6`^r%Y- zL)<&vqK$ToyrFbZth5Wi8R61yX0Ohrr>7ojXZS~DsKjEb>xoqbWC`c^Ipg_H7avML zeUNva8gcPd%b>G<8D&;m2F(swBkt}-KDXCmP~pHP>wGi+ydhZWstO;sy`RtCxLf`uVb zD-+D7^51OTFo|-$NZ@maUpqT^>-D2^+N$jDjlH|+OwhNOC$GE}gFoM?Tt4S^zlkP~ z*Pp%0J#>5JpyUffA+OU^ma@aX!VT-?5siAMq_^=cd?B<#yWli1KJc=Pld0=FRtQ{FGZh#P3b_>Jzh` zS~yPUx9TIOB$r>BHvE5;5r_u^c$>hJRU!#d+2 z)0Vj-4%YUF4{}Q}o=GpYnZLj?BI4Rg`eK3N+ShcZ*y1 zdC|j3l-X|8r+7DwXZ9{TF+KhCsqm}2*H_1G9WZ}k?8z??2VGY`%gwfz(t=BxmWMyJ zY&yqlUEA~A@9gZDFWZ$@l-7ZdwiNIMe3POh-QCI}lTPg&5a!%rZY<|>Nue<2Zr^X* zlcmQOO_9UxGa*|JH<@cNgc)w;6mrAs%8p#;Zqa+6S`M26byb&yTzPz=VAiJU;}s`P z&3E-onQPw5s@;HFZ67I31B2&`DIe0T|KfYf@$#wFXIek#y=d3)ThnD@BAMY8_h#R) zT+u3fRl!ihjak_nZfD#$_myn?}>M!=7-$sf6%emW@JL>CYxZvhKd<>0>7JX zhEwjgXde-^Xl|2{(HoWYaG|ighciK2SZ%hg~{fzIt+|O=J6=TX_s(CLx z*Llsl%ssKR+(nbdbbM;MzI10+Zp7UqSDy@Pyy0xW9Ok=S%w6}|MGk!!(tl|BOyTCs zX00mS_f6ve*w8fN_;8oEQ~w;&q(`gU;#YTmq@+DO@^<#7+E*j1{lg1p#n?0rm`@&@ z-r7F(#HW!fE_88{cAFmT6k4=q?cTfBZ}UDcahbPdgK>UfxZjac7nW~ISk!rN=XCO=3NI?UNgz2kIP;Z z5ad`M;S#iS<4o>*Y38eptu4&m6i#K`=B{RJ_1xLTOni6kowaS-U$Y9@9C~~G!YEKF z`g!kcXB8YXS2iW*NJ`qriYt-b%-rsD87MbyK5o8YUj7F$Wv+Qi)S4!bcU!WgNAp$~ zH!k};aYnawZ5a6uHE-vqcQ(5+m?BYza*nUE?DKj@$MekO)op_F?)W{i$+nX!jh3w) z!l$2({kWOg$NN&dwC`p4gQY30ZojbU(7D5m&qb^Uxm&aMQHlp_-LUiCrmK_ISBFrm z@(er|ZCf-dw!L`Ync(&%Z8!tGCt5KKu70y^)_L%*M%ffQzYb%_mhNLV@B4Gn$h4zI z&lb%aVs?cw^3Q^cLoM^&4+5*myelo+8&X*RR89{+qJ+v9%qyl?AQ!t2jALG`jlL)4A>6 zci*w+{*>w-ufBy+XYM~8JY!w7+eBxRk}+?F8Mo?hpSfxggVyik1nN6RfLCA+_1M>E zJFbqq+ho{PdAniW&0e<16ppZK(&GD<+KRP@M{{ncJUJL6Zk_Ay^+Ti}@G zRr+K1_uIn)#y7dyl9Bf`^my)-UX9EzZ^({tp0ui9YH-MSHaBm=Ms^e0ty8Tl!>M0V zeX@r?YnNjc)?3;9>%$Mq zKD}q@^~Zy~W7pPrRtMG&Oh?0Z`E%JcZTedud@Nq3XvN7vq4-+euC z`00$E(w-wb=S(SG=N^$>!DZx9I!-QZmLD*1X)GT=V9S z_hX_=eeb(8`J;>RG-_$qif__m*<1GBzH|PM;9c`p%!mnp_PkZts_T>bew6ezzqX@G z(W9=NvyasTCk;_9 zdr3*=m@&22D&}n(J!{j5V~;oWYt;46VG5@~O+(Un28$_5=EjBlDFZroIQ8bP!fknJ zyBmI%Wv)#&?w36aKfU)TKk=uGgS z_0GpEBFl%4=rF^_tQfSr(4AfPZ?k7j@(Xl`|9ZpaO1CY7{kc}xzJ9sjB6u}*^WKbs zA15gbPwaTyx$(QZ{>$E_JYX4>Y^1pKjB37w($Q?14C5EYd`I7UA%bDoBYD{uag6mVSSIjB6oipZ!ahJXZy~H=wC8}GW%%OdeCGW>Eqg~3s!7c zJF)1;)_ayy7mZJJ>g?R*VS2k*+Oen`8}`rM6ql5q0pa-P4-ebQP{7619(>govL{R)z!}s_93~+gpe(#U9)4$6AIN7cB z9WM2p%RJ$?>bp>WW{PQ3@`PKl;<61Ng2!7GIMJs(c$u<$7ywjk?%7zHzBhWhtN*eC z!+gpNzA)MqP~H7!T62zB?TEhAV=yk46`E4X34^_^W2Qyu-l8DfTr`fwBHz5W-{w# zJ-5fEx26l%hwOj$aUmx;sIsK-OH-C#ZQs@@&$f2xWCtr1CU5t8xS1T?ZqQ29B)_FJ zaI9cTMbo)CtBPA0(9By%dn_2>ILmYqIeSU#=U(4qWLC;B%T)(%yjsYUZ%w+})-$*B z`P1&ZLKbeA)W)z$(S`6ujT$u?*1@RkkfP+7Q~1e8J#WJj(9XEqlO`T4VL3`hyeaMY zZsz+%&pHM_o|yW2`@4+=D^6J1#Z5am`G7F8TZ^)p9-U_Of4%zrfJj>W&WOnq+ZZ*U zR2g~d)Tx#e4QW}^XcNCPgSa=(6*Kl*b<3qr9G^Ou;;En*T=#ZinXUO_cK*H#3zXt1 z?kw7d@x4}6wh5;7-#q`_WuB+$W6~C*Ap0`$e5bxA=ay!DtNzTpd7M%5Uf`Wgk(LzA zJ$3)!>!6w~a~wF{5-(Xu-pb`GkEB1`v3y00&7hT!sW$8UpD;X2hYlOabUc1zWB+rb zf@cBbt20NOO5L|jdcL>EwG@{xd-~md+){A%U15GWtCPezxL4D2Mr%GY3K!g+y17^K zI>C#=Q7*{|?Ozrb$xh!&fRwnabact2xpO?2dqL|W{jbJ0PCKfdK0YM<3?^Si7=E5+p| zX^tlIzX}|Ddo+C^p0;ba@9Gs#j#~^}{$Zn6ZQCr{(#NT9{6216>;6Dc;kV(%for!c zLN_}VJ=$SX?Mh3zS`#z)$J$3b#!R-|X@0$k9$GM_FyQM~$E@lj&lfhGnAIca1@GR; zj)#X2`dIrsRr!Ltgfn9S?GSq--oex?4J*h=Jfd1kjk0L)ev^ zh=_Ch?tUd8g{PHg}w^ zek*lsbFD=$q3h!1?4FmFj*hR|;BRX4-EY~v2acT=osMH(X^!iKBl|`c1{WM#clSKG zZT6+pZO#?XZIO9Pe#f(?qheC!+f^+JrgKeuMSV1nUvMEZJ1PEbi;S-yrXDk|+7+@d z<(WK)y!>M3MJw{G=Yvd_t?oZKv*qnl(zgET<&9#eH*X(w)}CwjVq13?1LfOC9fTPr z{?%D!$6os$z1sOle{s+7iliRrXM`QNWwtxa;8yhDEY7G;fj7+e?B0L6lswHf>Sjr9 z`Q(q!M;py4ml#DP#nWC-&wkjusprEF@@Ow*^Tln`Mt$!w=<<<8seB=JU@z7MEnTss0q;I{Id9$caOa z>Dj?jvn#Ed0%7cj^qK$d`omO}(SxO*{HFvQejBi-5h(BnN4H+W>BG4(_S&CdS}&lq z{`h1__rWo{tZ0KB!o<<%jc$KD?P_<@s7G|Cm9Mhz^?G-w#U?lE*(s&mv{7<-Pz!GO z?i=Id_eWTS(awIE?V30I`o|xS443wAe$#ON2mUwb^QjXTJRERGl4o=8neg_hw3B&B zhfd|aXJ;RF?U2)NVEemfpSq@W<1klT?DF{RuEc@w#!ddx%GDHh~_2FkEQps+SRzJ zG}PdvgDsbm#tuk7##q(fV!!lZv$JWA_}bt>xL{7lgL5X0TJ6D3Ixr$SR#kZ9cB@V4 zZpU~Xg;9-PoLaN~^DJ(xnCvGpvz(N*^oyU%w`C6xWRd;9Mc=zS$J?#TDc=p$;Iq3& zm(Q;D9oDta>&l)dE>DiWG;05;?Hwuc_Yb7Uh;Mk$O+K+9{>r1nH=kVGm-Xnz(m|`{ z+Q|nu36d@~o#r}iH@!{8_=?Z5&0f_M9P3>0VNbVqNjqFCr)R%qdkpLoH?#Mx^Dfi( zO?mq)^i_}YJdZwm9d`?rs#c*T*TcRxy?yGDMKNi@QbziecGG7Mz2$zm*Nx1z##RZA zFp5GmJgUFE-pOm7^~3IRzl_b_6YlgbPmjrYHGEp*1>YuoP4tpBmbPEE>0)szn5h*r z(_KbQQzm=O_6g2OxL?}3^jW^|t{z1XwifUAu-X6UMSn?)RFlbN6;chvjFYs>B208^jZ{e^mpA?Z> zWKa{(L>zgm<>o*qFVfOgcE_)eI~?5jTe;|B$!MBo^|?EOEsU%-qwo8DN^lii>bUIk zql{N=KX-rLA~Ngg!sIi9B8yUQCMWr9FQlKhGunJ}jprTz`Fz7y!yoltn`yPd$_R%YMV?WI}G&plw_+Zln!LiNFmynC?ZJ%x0xL;U(d~4roEIl+O83vIIas}K!MCAp64>6-fC&|M4k(9v zAAxrqkDEtMYnj*hd1Cq29lhKpj_%Gm{r$+-q5Fr8VSX95VZ36p&D{mpO^-@DNAw~e z^56J=>w}ekp%)9XUX`v~kyJT!`@@>o<9oNWE(=+f?rGW1aDQ@oy!RLS{@UA&7u%og zkmo%55<2sPjlr8IluL_8A2DMsAUuv10K3*1MjVR*<}0l6VFS(&8RuJhVfcuEw?&)Wo4(8@8bho53D_Zu=-f> z=1vbrdDY&vC0{Pzm%4Jx#e@9X_IVLtpBk-P=;>c_qMw~)OMK~$9epY%!7K91&WoH4 z%Y)jF=ui~*EEQfxC_X$NvLImoXqh>ez?$Tkd@e9T-JSS=7%kBy|Tx!4D;CDf?!8`3D|sP@604t z6X-CefGwAauguyCa&p>NhV75&neXg=q{+63 ziMA~NK~8>rd!n+@?;WLOHA`OPFAaW2+p^#O$rH;r%+N5+!!r)j;0(Xor`LqbZ}0xP zvu#n}(l)Ko_^zKA(#39}K~(tor-qF%WyOwgvzNApFs;B;#M0vAQVRfd;1Ci3sthZIzr=wRRy#2oSySxKy zc|kQ}aaCTN;*FzAP&U-)Uq4&Qm3>HGFTqh?o(!&zxhzAh~qm_}*; zeeNWpwv`>db7$Sc{1gv`!w=WzTT<^|7mhB69Yl3!X#eo|XXgc6|K=JUZ>+V|UmfzS zyW*YL)sE+1)VtaZ{+CXA{y%t&PP2c%%X5&%|MCG(-8DR94YxS__YZjL>eQa}YxeJb zwU73UVZ*(>aPU!kUJ3Sc>UmIrJ&{(hYc+}GH zpB%L$&QAXFs3lx9q&;ehd!VsaSGeQ{w&(upsHLHH11}E`HDTtzJ8G#taZCN{qn6qe zudY_aaY)TkOIIUOlln4@sy=tQDec5ez$?HWov6n)!Kc$4ZIl zMQ!vfMDdI#ZnZ`B!ZV%?4>5wn9__JAJVK{+;sJ=mQpA>by(4tZA&odC$`Rn{RUr}8 zof1_LQP_X0#w#9_b8QTsS5zdM-iaA-hf!=oES^VAwKOLY2Tzeljh?^(Kit}m9yOB@u()9n5G~*@u9g^ss55Ruqd&o z8aFw!+0Y>$NYUF++#aI@XK-Q9bRUfAAtQ^(4Bh4Ou`KS1CmYR#-Z()ByGCthL~^cw zPOWcPxaQ6Vk29))hH!}sZtT{a6JQHq&psPA%Xh*wy_P~Sj>m1`R%&P|4Wp(4uHwa-*={OPU_0pPD zpgoEVKGMy!j&`7bSOT#{LmuZLpE5CKe@SJ9=Zr-{^>%uo59~nKhnt`ep58!)91qV- zD9=?D;33^Zp^!`EOgR&{jz0_@7!9ZeMkDj*V0brB2kwegLy1C14@w)-Zmq1bv#I9* z2mr-Gpt07&Fc;&Rquv~m2ET!rScl(mB3h*~f?K_TNTVQ1CZGTd<(`;Yhm1&!T2!gX=sF2t8Ut~4<1HaXa1PFeb&Vr7^qeX|+nBLo z+xm2XBl7CQ>A#}`RHviET9AgVH7yfEg*e)djK>iHTOo7OEHA5!du!%1J|+-yhZro# zgDB(Mz+W8hDB}sK-YN6=ij=hDD^g<{oP>dvsgO~Bn0CZ?9f}4*lx$=UgQ+cquvR+C zY8^^kEp18W+QHPs_LnZE08Lo96?|!U9A4vj3L2L}lKOy;CxozeTJtKEQ+GJ!@z0?3 z$0Bvm4#23r70HUp;POS@boj#(09U0zy1Ex$5F&bkbG5D)G)G$!Mc>;M`oIFPF*gA= zGKo5k-x1Q(b)iK_)PoL%$@*AC;F(T^7*5J%|xVPYMAVlb-H-Nr*q&F(mn z6YP$yuQRga^J=97)z8js0 zMV;6-N;6|jfTwDBQ0Nly;5=LhPa~TKZpHu@%-RqbVq6eY4FbdEYJlklS@nR4!l+}F zih>@dhAXM!xHu}_RgwzG9gEL2(uv9O<}-vG4)D=JNLEA0f)D|rEd=Tybg>~d{-xJ5 zfE0@~gwzkx2rnp%O;P4@Aa$)ifuTwC+-^i=iPFY1WnE8@aZN8#88s3$>2 zHF#_Y5#UiEPzRo~&96MK0c@DRA#8*?r^O;peQJ^hK~_C14#%i{mCB0n=yqae3Q`kb z$$@m!Q7Rsq3phxOfKBF<79|@L;!9FfjYpE@^E`zLYg#2 z88KXvI1*sStPNqtYIS0t!}>Mhl|-g0l|_$CaAp>!K_2R-WFr*8IFb+sjR*#h1Kx0F zKf%v`A%cZ0t(u0q0|%A1!B|Nh_v7r3@);3JpajG!-5w%!{cLLcYkzmpT`Wb250sGL zNbdNi5!95hVWX%qzyJxz2Wco4WROiQo=`)b;Oe*o zamROKm2q&$5Zg!`-k=raTM%2m@JB~FOe09=0D-#pkaYE&@yGWTo#75J174ghq=zEP-xE z1OIAx7sz2~c2uf^m== z(d%s-H9;p&kQ-4x>2nV;7b5qtL@aMMODj(kF$) ztvYxJJEG1-Cg2YiVyMmcK!~Dr#-WJg1&s&Hf{PaQ)No=_Ks8*w zkb^>zSoHySWI#bgxE_5GshUR6BE-R{wg_?Qp*O^cA&E;5l!Gb@SxN>q5$E?E0G~TN z#VNH9{B42da7sn4!Uv48DqcVMiv!c>{tuwWQFw~2VT!A@Jqh9_V(_G?453-slS~NZ znAb~%4rL(sJILK%lbdYR7h=KMvSy7)5H|>+SvDdWGZ`E9t~j-LOAKo;HM78<~G0e1q;ApA+$X7VM9jNYWE;M z)T&rCCf3153QYJC@%3bZ_n<4~_x>KO*te0ui}i@ z1jeZls1K5!zhM9gGyW1JVlrXDI^XYLN`jI!bASmd1eo$5s%{&VWTI`9s`cBJ)wwo? zwlU)`+eRYuV4?1JP3zDB^=Z(d9s|R*O=J6YO`|}m??f3|$GpU7u&q*=!&548OEOd^ zh6nm1q94W)Bo>?Nt+R{O-Pb8d#H3G*2z*cQn>l|i)T9O!WfFlS6smQAHnjxL59uk< zN(nejR)TGvs&?HB;9>~^++S$9#F*7nG1><8JWd0sn6)8YC6Go~V=RG4kFYp>=<#_95!Lb36o|q&#TiyT zPLc4saf%cm#wkv-#Qm0FKqaOC1rbghtjX|KJ6P58xe(`b#JOIhOpIDzQkjBC_J*ZT znCd!X1u(i19;}SG-?JqI>N;+1sq?E1UB-+Ab*!pXCR&>D+d-;6Cw0R(!AYp3Y1ax+ z-spit%mK(r0v^CR3m&QokP0D!063%8!GQ|`KfCk>kT5?%1)D0BS)Ka$)4P@dkWUAc zKr4XKF||Io0435ORZR(ej+7wtkgre$C-XAkSFNg{6t;ygAx|?QU;|&8?Ln1!kK^kT zGKVRnGl5Kwm`E&svT@L~fvBGHhIp`tuU2^*4Ph){^c>bi>)8r8GZU792u*fWYl!83 zF5g?g^oFZ0!S5~56m5?B76ma(uzfBQFHI!|h|MmQSzKatA|ojw`f)8k8w*+NRFT2v zgqwGXC4ay}79^{CIu=4iPXQ|4IEWBECGM3a-nBYl1w2f~l`bm8ucUqVY<&Q(GCGpd6uuwN522 z*kcX)>V`MQ8@^8>bj7-fotXWJ`H5JKL_MbdCE&!%o`A6E%&-)__WrIpzIJ8xx6Kh+ zr@A?~6teDuZUcZoHwn60;ysR<8?PIikZgN^bGNhrO}DYrL_wUu^gHf_aotj(0%IC9 z=w7P#hD6s!roXr)(o}a#BwB?HZiz%)MsK=Bqer8`;69b*5N&XQw;?3yxIf)Xv8oYK;rwT>(+GJ%S1x zp@X1A(ZTC#X;!zJ#Kr8_7fy132w0p@PxOosLajz+mkk?YbgwgUB?RW5T0X{53z}KisWgXC?&j9_J z2|)D#CvdF=oU7H+!x6MPOcKhXdfXu3)8VNax+V}JpfiTR-$RGDLt+sEx_@xfJn`-V zR%XDXf<^-jh0=O}C1aE@9}q4ixMrgYu8=o{C;=Qwq`wD_1;Aku0=U2SPoTAGbYKNT zIX$rAFscI!tz|X3(1su&GKIk3L&O7!um}NB(<+sNA~7yA4E$tJ!n<1&05yt91 zh*14c?>@3V>)sDrIDB$($3s(l$ZMsex8s~5Z5P@PRs&N*gJR)zaY}4@Y5@Eh9tti^ zho>bbg=)66P&=n5M2DrshJ`lRwxMrq{N=O6@L^DCczX0-E$DlhJXuS`A8*hTqVV)Mu4|bB_lEp#}|B5ElJdlMCd<1|F2-ckPs?V5@|e6 zb3Ng2{hky1+`&us&*_-2L1su%=a2d65so4lgJcqEMn^-^RFp58&r~BWgo41!^$_@# z!?ylDq%NdDQV)oCfnNoL@pF)j-tn*=bzR!O{=`!dTzXG5NhBGO76ksjQ=pz$!V7p8 z@brx?zVSmNO7(@OVUU_icm_{{e2EZKf3}ie!PtTmJft+ph5p2&e^JwEA`g?K{l^7Y z-Z+aiCGa7I`r_fA5=y5*E9#HC-m@g4{Y>aBx-m!9QT+*m#W4e2dop;E3ZBamjwGn5 z4o(@gFr1XGYvU2*iY0vj40a<`LYYyd*O0%L!4MKo6C{AmOt0P`s5b?2)zyd2$eFq? zQpW}IBj(bGya@njoF25lYoFSneJZrifEq@^7eAdrb2R|J=1RaS)`*x&B4rXij3&iE zYan}nN~4n2gS4ZP*Z?DbNhD9GMZX?3MI)hJ^unG3xY1&rL>f%=B~a4_QWRU(atFrL z6!=&B)PtZ|PpCf;e9NZ;CDQaTMFO7uuhEK2(5ilY4Jp=;UP7Xb7U5nGb@Wr$E-W>kF@og|RZ*$B%HSkT zLRxHEW<3DVH>5l9#>Lk?AX8lDJDLF(qPzR3Ye-8;PfhER5S2*%XDzeUEkoO>%82w7 zXp^Xi3ZD)s%H(wDkTMdsRE&s?Q^MPoe^@I=TPsnI8=X$=CzetJG#H|4Jhx$&^*&vq zsF{iB)Qqr%G-_HRH6kVq-se!$Vw6;k??oyqBUEujL}EH*(HxPW#(^~-M@>;C!CI<1 zdxLs)-2e?BA|20`bSH`=fQvY4Mr>LP6;Uj^EclrVi;Epa_?cr+>$lTe8J{=;=?3rZwH3w^oRC5VzSjCj zCx8INq^fh)uagSP)YNcTN{5T{BU9_w4`Zy(7bFl>%W!nMj?wj5y+IcV=K81P?ck%s zRNaWtw9>(+-uUX^qZ_D@0io(p5756KXZ5n{BnZ@_hcsOeJKzu$Q()Ock`u{^VrJpE{(Vb=zi)-ZV{wGxqA)ryQUt9;g-6nb z%Ky{e)wH$^1X1Yk=t216q;&NySt@QJkc66&V(LJ9U1?Xfs4W@GCe6Rko7Jv95{l@h z5PDRK= z9?Kw^(qenldb|Sv=9@2KmblVmp&z6yjk1g-fpCjhxPmXH^my*Hnnb$Af_py8iY$QB zWWwOWh=oZZBA0s+PhU7~=?nm^LSpF{?5GK`CISHlYgGxr4PZC%pm5u<5U_r|UNKG+ zIu!U7POF+eOR=886{tl-WRD%D5nqamj|QA1tFgP+*Pu5bSkWYU^3RoMA6|T4-(C*M zu(6c-QFM&W617D}RT36-+7O)e;bfInukse(??GD6v$$@KUWya(zWw#)9)G}$X`Cvi zLpyGr(h7kz#TJcJ16SW$&9*-82I`RgY6NW?vGbdX(u0mfrS>z@()FRF_Wp1516in? z)A>p_q|ZT-at?EeJxY}g?7Xgu^5-CjbQgEWf2mCy@7E4JAq@P#wbYi`)<#N;<_I?* z97oi7V|UdUWbd7avJ&+}L&v~(D3_HrrV9Tq_vbyMr%D*xmHSfflg=Z=BxK8wey2%X z6@Oi^wA9)+tq+=>z6IQ*Ag7DEXOob}*RZ);(aht>(atvFW}nEROUDT7#gmuTaMIuE z@Zvw|7)jKMmd3lrAhrH7Iy+WX+}+}aAb@%7D$(o9BL3gk6%Orqa}|!54UA5N#=0;k z{aCAYbh*gmrQw%uvxLM9Y1G=esd|@Y<#eTorT1PkmA)y?JLn;ooE{JI;|%*3__N_U z^+%yvFEPZb!C)U-n}zw4WINL}Y%_XKcheD5#gCeQC=e->ip%x+E6M@fpimpB3!$DtR7d0u#;7@fRBnSI8Pp|KECv;r>LM`Mrl>)LmE*RY+v Z + + + Debug + AnyCPU + {0D82F19D-DF81-45F3-9BF3-6CE2E79267E6} + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{F184B08F-C81C-45F6-A57F-5ABD9991F28F} + WinExe + Dokumentáció_Készítő_3 + Dokumentáció Készítő 3 + v4.7.2 + Windows + true + true + + + false + C:\Users\Admin\Documents\published\ + true + Disk + false + Foreground + 7 + Days + false + false + true + true + 3 + 1.0.0.%2a + false + true + true + + + AnyCPU + true + full + true + true + true + bin\Debug\ + Dokumentáció Készítő 3.xml + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314 + + + AnyCPU + pdbonly + false + false + true + false + true + bin\Release\ + Dokumentáció Készítő 3.xml + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314 + + + On + + + Binary + + + Off + + + On + + + 024F35D361F27EBEF684574865E464602A8FD568 + + + Dokumentáció Készítő 3_TemporaryKey.pfx + + + true + + + true + + + + ..\packages\Common.Logging.3.4.1\lib\net40\Common.Logging.dll + + + ..\packages\Common.Logging.Core.3.4.1\lib\net40\Common.Logging.Core.dll + + + ..\packages\iTextSharp.5.5.13.1\lib\itextsharp.dll + + + ..\packages\MaterialDesignColors.1.2.7\lib\net45\MaterialDesignColors.dll + + + ..\packages\MaterialDesignExtensions.3.3.0\lib\net45\MaterialDesignExtensions.dll + + + ..\packages\MaterialDesignThemes.3.2.0\lib\net45\MaterialDesignThemes.Wpf.dll + + + + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll + + + ..\packages\Ookii.Dialogs.1.0\lib\net35\Ookii.Dialogs.Wpf.dll + + + + + + + + + + 4.0 + + + + + + + + + MSBuild:Compile + Designer + + + Form2.xaml + + + form3.xaml + + + Window1.xaml + + + Designer + + + MSBuild:Compile + Designer + Always + + + Application.xaml + Code + + + MainWindow.xaml + Code + Always + + + Designer + + + Designer + MSBuild:Compile + + + + + + + + + + + + + + + + + + + + + + + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + + + + SettingsSingleFileGenerator + Settings.Designer.vb + + + + + + + + + {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52} + 2 + 8 + 0 + primary + False + True + + + {00020813-0000-0000-C000-000000000046} + 1 + 9 + 0 + primary + False + True + + + {176453F2-6934-4304-8C9D-126D98C1700E} + 1 + 0 + 0 + tlbimp + False + True + + + {0002E157-0000-0000-C000-000000000046} + 5 + 3 + 0 + primary + False + True + + + + + + + + Always + + + + + Always + + + + + False + Microsoft .NET Framework 4.7.2 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 + false + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + \ No newline at end of file diff --git a/Dokumentáció Készítő 3/Form2.xaml b/Dokumentáció Készítő 3/Form2.xaml new file mode 100644 index 0000000..a9631d1 --- /dev/null +++ b/Dokumentáció Készítő 3/Form2.xaml @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/Dokumentáció Készítő 3/MainWindow.xaml.vb b/Dokumentáció Készítő 3/MainWindow.xaml.vb new file mode 100644 index 0000000..5b4664e --- /dev/null +++ b/Dokumentáció Készítő 3/MainWindow.xaml.vb @@ -0,0 +1,2634 @@ + +Option Explicit On + +Imports pfcls +Imports System.IO +Imports Ookii +Imports iTextSharp.text.pdf +Imports Excel = Microsoft.Office.Interop.Excel +Imports System.Runtime.InteropServices +Imports Newtonsoft.Json +Imports Newtonsoft.Json.Linq +Imports System.Net +Imports System.Text +Imports System.Runtime.Serialization.Formatters.Binary +Imports System.Runtime.Serialization +Imports Microsoft.Win32 +Imports System.ComponentModel + + +Public Class MainWindow + + Dim NewWindow As New Form2 + + Public Shared ParamValueD As String = "" + Public Shared ParamNameD As String = "" + Public Shared HibakSzama As Integer = 0 + Public str1 As String + Public str2 As String + Public Shared sresult As String + Public Shared ddas As Boolean = True + Dim FilesList As New List(Of String) + Dim drw_names As New List(Of String) + Dim drw_paths As New List(Of String) + Dim FileNames As New List(Of String) + Dim row_count As Single + Dim strFilePath As String + Dim table As IpfcTable = Nothing + Dim i As Single + Dim pdfFiles As New List(Of String) + Dim PathToPurge As String + Dim NameList As New List(Of String) + Dim models As New List(Of IpfcModel) + 'table + Dim SHMNum As String + Dim NameT As String + Dim MachineName As String + Dim SHMDate As String + Dim SubMachineName As String + Dim AudiNum As String + Dim excelPrintNeeded As Boolean + + + Dim NeedPdf As Boolean + Dim NeedPdfOssze As Boolean + Dim NeedDxf As Boolean + Dim NeedDWG As Boolean + + Dim NeedTiff As Boolean + Dim NeedParams As Boolean + Dim NeedXls As Boolean + Dim NeedStroke As Boolean + Dim NeedSheetNumbers As Boolean + Dim xlApp As Excel.Application + Dim xlWorkBook As Excel.Workbook + Dim xlWorkSheet As Excel.Worksheet + Dim ProgressTextstr As String + + Dim LoadingPoints As String + Dim LoadingPointsCount As Integer = 0 + Dim FileNameModTimer As String + Dim q As Integer = 0 + + 'FilesCreated + Dim xlsCreated As New List(Of String) + Dim dxfCreated As New List(Of String) + Dim tiffCreated As New List(Of String) + Dim DWGCreated As New List(Of String) + + Dim pdfCreated As New List(Of String) + Dim params As New List(Of String) + Public Shared workDir As String + + Dim SheetNumber As Integer + Dim SheetPartList As New List(Of String) + Dim folderpicked As String + Dim WithEvents BackgroundWorker1 As New BackgroundWorker() + Dim WithEvents BackgroundWorker2 As New BackgroundWorker() + Dim WithEvents BackgroundWorker3 As New BackgroundWorker() + + Public Shared dict As New Dictionary(Of String, String)(System.StringComparer.Ordinal) + + Dim isSeperateDrawing As Boolean + Dim isEllNeeded As Boolean + Dim sheetParamNeeded As Boolean + Dim printNeeded As Boolean + Dim autofolder As Boolean + Dim namingsyntax As String + Dim xlstype As String = "" + + + + 'Buttons + Private Sub MyWindow_Loaded(ByVal sender As Object, ByVal e As EventArgs) Handles MainWindow.Loaded + BackgroundWorker2.WorkerReportsProgress = True + BackgroundWorker2.WorkerSupportsCancellation = True + BackgroundWorker1.WorkerReportsProgress = True + + For Each param As String In Environment.GetCommandLineArgs + params.Add(param) + ' MsgBox(param) + Next param + + + PDFCheckBox.IsChecked = True + DXFCheckBox.IsChecked = True + DWGCheckBox.IsChecked = True + XLSCheckbox.IsChecked = True + NamingSyntaxStefani.IsChecked = True + namingsyntax = "stefani" + AktualisRajzRadioButton.IsChecked = True + MainWindow.MinHeight = 270 + MainWindow.MaxHeight = 270 + + + + If params.Contains("-arg") Then + Try + For Each P As Process In System.Diagnostics.Process.GetProcessesByName("cmd") + P.Kill() + Next + Catch ex As Exception + + End Try + Me.Opacity = 0 + PDFCheckBox.IsChecked = False + DXFCheckBox.IsChecked = False + DWGCheckBox.IsChecked = False + XLSCheckbox.IsChecked = False + + + If params.Contains("-lapszam") Then + SheetCheckBox.IsChecked = True + + End If + + If params.Contains("-pdf") Then + PDFCheckBox.IsChecked = True + End If + + If params.Contains("-dxf") Then + DXFCheckBox.IsChecked = True + End If + + If params.Contains("-DWG") Then + DWGCheckBox.IsChecked = True + End If + + If params.Contains("-xls") Then + XLSCheckbox.IsChecked = True + End If + + If params.Contains("-tiff") Then + TIFFCheckbox.IsChecked = True + End If + + If params.Contains("-auto_folder") Then + AutomaticFolderSelect.IsChecked = True + End If + + If params.Contains("-audi") Then + NamingSyntaxAudi.IsChecked = True + NamingSyntaxStefani.IsChecked = False + End If + + If params.Contains("-hanondoksi") Then + PDFCheckBox.IsChecked = True + DXFCheckBox.IsChecked = True + DWGCheckBox.IsChecked = True + + XLSCheckbox.IsChecked = True + NamingSyntaxHanon.IsChecked = True + NamingSyntaxStefani.IsChecked = False + + + End If + + If params.Contains("-ell") Then + isEllNeeded = True + End If + + CreateDocument.RaiseEvent(New RoutedEventArgs(Button.ClickEvent)) + + End If + + End Sub + + Private Sub Destenation_Browse_Click(sender As Object, e As EventArgs) + 'Jelenleg nem használt!!! + Dim mydig As New Dialogs.Wpf.VistaFolderBrowserDialog + mydig.SelectedPath = folderpicked + mydig.ShowDialog() + + If Not Strings.Right(mydig.SelectedPath, 1) = "\" Then + folderpicked = mydig.SelectedPath() + "\" + End If + End Sub + Private Sub Files_Browse_Click(sender As Object, e As EventArgs) Handles Files_Browse.Click + + 'Dialogbox megmutatása + ListBox1.Items.Clear() + FilesList.Clear() + + Dim b As New OpenFileDialog + b.Multiselect = True 'Több file kijelölhetősége + b.Filter = "DRW|*drw.1|All version drw|*.drw*" 'Alap formátum kiválasztáas + b.InitialDirectory = "C:\" + + + ' b.AutoUpgradedimEnabled = True + 'ez biztos rossz lesz!!!!!!!!!!!! + ' Dim bul As Boolean + ' bul = b.ShowDialog + + If b.ShowDialog() = True Then + + Dim names As String() = b.FileNames + + For Each name As String In names + ListBox1.Items.Add(Path.GetFileNameWithoutExtension(name)) + FilesList.Add(name) + Next + + End If + + End Sub + + Private Sub CreateDocument_Click(sender As Object, e As RoutedEventArgs) Handles CreateDocument.Click + + Try + Process.GetProcessesByName("pfclscom")(0).Kill() + Catch ex As Exception + End Try + + Dim session As IpfcBaseSession = Nothing + Dim conn As IpfcAsyncConnection = Nothing + + Try + Connect(session, conn) + Catch ex As Exception + If ex.Message = "pfcExceptions::XToolkitAmbiguous" Then + MsgBox("Egynél több Creo fut, kérlezk zárd be az egyiket.") + End If + Exit Sub + End Try + + + + workDir = session.GetCurrentDirectory + ' MsgBox(workDir) + If PDFCheckBox.IsChecked = True Or + DXFCheckBox.IsChecked = True Or + DWGCheckBox.IsChecked = True Or + TIFFCheckbox.IsChecked = True Or + XLSCheckbox.IsChecked = True Then + + + ' MsgBox(session.ConnectionId) + + If autofolder = True Then + Dim FileExtPos As Integer + workDir = Path.GetDirectoryName(workDir) + Try + FileExtPos = Path.GetFullPath(workDir).LastIndexOf("02 - Modellek") + workDir = workDir.Substring(0, FileExtPos) + Catch ex As Exception + + End Try + + 'workDir = Path.GetDirectoryName(workDir) + ' workDir = Path.GetDirectoryName(workDir) + + Dim model1 As IpfcModel = Nothing + + model1 = session.CurrentModel + ' Dim tempstr As String = "" + ' ReadParam(model1, "OA_MEGNEVEZES_2", tempstr) + ' MsgBox(namingsyntax) + If namingsyntax = "stefani" Then + ' Dim tempstr As String = "" + ' ReadParam(model1, "OA_MEGNEVEZES_2", tempstr) + Dim temp_model As IpfcModel + temp_model = session.CurrentModel + Dim OA_MEGNEVEZES_2 As String = "" + ReadParam(temp_model, "OA_MEGNEVEZES_2", OA_MEGNEVEZES_2) + workDir = workDir + "\03 - Gyártási dokumentáció\" + model1.FullName + " - " + OA_MEGNEVEZES_2 + "\" + + Else + Dim tempstr As String = "" + ReadParam(model1, "AUDI_RAJZSZAM", tempstr) + tempstr = tempstr.Substring(0, 3) + "000-" + tempstr.Substring(3, 3) + "-" + tempstr.Substring(7, 6) + "-001" + workDir = workDir + "04 - Leadási dokumentáció\INV-____\Zeichnungsdokumentation_2D-Daten\" + tempstr + "\" + End If + + System.IO.Directory.CreateDirectory(workDir) + End If + ' MsgBox(workDir) + conn.Disconnect(1) + If autofolder = False Then + Dim mydig As New Dialogs.Wpf.VistaFolderBrowserDialog + mydig.SelectedPath = workDir + mydig.ShowDialog() + If Not Strings.Right(mydig.SelectedPath, 1) = "\" Then + folderpicked = mydig.SelectedPath() + "\" + End If + Else + folderpicked = "aaas" + + End If + + Else + + folderpicked = "casddasdasdawindows" + End If + + 'Figyelmeztetés hogy túl hosszú az elérési út + '--- + '' Dim asn As DialogResult + + ' asn = MessageBox.Show(, + ' "Hajjaj..", + '' MessageBoxButtons.YesNo, + ' MessageBoxIcon.Warning, + ' MessageBoxDefaultButton.Button1) + ' End If + ' If asn = DialogResult.No Then + + + If NamingSyntaxStefani.IsChecked Then + namingsyntax = "stefani" + xlstype = "" + ElseIf NamingSyntaxAudi.IsChecked Then + namingsyntax = "audi" + xlstype = "" + ElseIf NamingSyntaxHanon.IsChecked Then + namingsyntax = "stefani" + xlstype = "hanon" + End If + + + + '\-- + If folderpicked.Length > 196 Then + Dim result As MessageBoxResult = MessageBox.Show("A kiválasztotte elérésiút túl hosszű, szeretnéd folytatni?", "Hajjaj..", MessageBoxButton.YesNo, MessageBoxImage.Warning) + If result = MessageBoxResult.Yes Then + Exit Sub + End If + + End If + If folderpicked.Length > 1 Then + + ' Dim ctrl As Control + + ' MainWindomForm.IsEnabled = False + ' For Each ctrl In + ' Console.WriteLine(ctrl.Name) + ' If Not ctrl.Name = "MaterialLabel9" Then + ' ctrl.Enabled = False + + + 'End If + + ' Next + + MainGrid.IsEnabled = False + BackgroundWorker2.RunWorkerAsync() + BackgroundWorker1.RunWorkerAsync() + + End If + ' Close() + End Sub + Private Sub AutomateFolderPick_Cick(sender As Object, e As EventArgs) + + Dim session As IpfcBaseSession = Nothing + Dim conn As IpfcAsyncConnection = Nothing + Connect(session, conn) + + AutomatedFolderPick(session) + + conn.Disconnect(1) + + End Sub + Private Sub PurgeBongeszesButton_Click(sender As Object, e As EventArgs) Handles PurgeBongeszesButton.Click + + Dim mydig As New Ookii.Dialogs.Wpf.VistaFolderBrowserDialog + mydig.ShowDialog() + + Dim PurgeSelectedPath = mydig.SelectedPath() + "\" + + Try + My.Computer.FileSystem.DeleteFile(Path.GetTempPath() + "FilesDeletedRenamed.txt") + Catch ex As Exception + + End Try + + + Dim TempTxtFile As String = Path.GetTempPath() + "FilesDeletedRenamed.txt" + Dim fs As FileStream = File.Create(TempTxtFile) + fs.Close() + Dim allDirectories = System.IO.Directory.EnumerateDirectories(PurgeSelectedPath, "*", System.IO.SearchOption.AllDirectories) + 'Dim allDirectoriesList As String() + + + For Each DirD In allDirectories + ' MsgBox(DirD) + + If PRTCheckBox.IsChecked = True Then + Purge.Purge(DirD, 1, ".prt", True, False, TempTxtFile) + End If + If ASMCheckBox.IsChecked = True Then + Purge.Purge(DirD, 1, ".asm", True, False, TempTxtFile) + End If + If DRWCheckBox.IsChecked = True Then + Purge.Purge(DirD, 1, ".drw", True, False, TempTxtFile) + End If + + Next + + Process.Start(Path.GetTempPath() + "FilesDeletedRenamed.txt") + End Sub + + + Private Sub drwSplitButton_Click_1(sender As Object, e As EventArgs) Handles drwSplitButton.Click + + TakeAway() + + End Sub + 'Radio Buttons + Private Sub MaterialRadioButton4_CheckedChanged(sender As Object, e As EventArgs) + + ListBox1.IsEnabled = True + Files_Browse.IsEnabled = True + PDFOsszeCheckBox.IsEnabled = True + SheetCheckBox.IsEnabled = False + SheetCheckBox.IsChecked = False + + End Sub + Private Sub MaterialRadioButton3_CheckedChanged(sender As Object, e As EventArgs) + + ListBox1.IsEnabled = False + Files_Browse.IsEnabled = False + PDFOsszeCheckBox.IsEnabled = False + PDFOsszeCheckBox.IsChecked = False + 'XLSCheckBox.Enabled = True + ' XLSCheckBox.Checked = True + SheetCheckBox.IsEnabled = True + ListBox1.Items.Clear() + FilesList.Clear() + + End Sub + + 'Check boxes + Private Sub DxfCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles DXFCheckBox.Checked, DXFCheckBox.Unchecked + + If DXFCheckBox.IsChecked = True Then + NeedDxf = True + Else + NeedDxf = False + End If + + End Sub + Private Sub DWGCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles DWGCheckBox.Checked, DWGCheckBox.Unchecked + + If DWGCheckBox.IsChecked = True Then + NeedDWG = True + Else + NeedDWG = False + End If + + End Sub + + Private Sub XLSCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles XLSCheckbox.Checked, XLSCheckbox.Unchecked + + If XLSCheckbox.IsChecked = True Then + NeedXls = True + + Else + NeedXls = False + End If + + End Sub + + Private Sub TiffCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles TIFFCheckbox.Checked, TIFFCheckbox.Unchecked + + If TIFFCheckbox.IsChecked = True Then + NeedTiff = True + Else + NeedTiff = False + End If + + End Sub + Private Sub PdfTypeStroke_CheckedChanged(sender As Object, e As EventArgs) + + If NeedPdfStroke.IsChecked = True Then + NeedStroke = True + Else + NeedStroke = False + End If + + End Sub + Private Sub PDFOsszeCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles PDFCheckBox.Checked, PDFCheckBox.Unchecked + + If PDFOsszeCheckBox.IsChecked = True Then + NeedPdfOssze = True + Else + NeedPdfOssze = False + End If + + + End Sub + Private Sub PdfCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles PDFCheckBox.Checked, PDFCheckBox.Unchecked + + If PDFCheckBox.IsChecked = True Then + NeedPdf = True + NeedPdfStroke.IsEnabled = True + Else + NeedPdf = False + NeedPdfStroke.IsEnabled = False + NeedPdfStroke.IsChecked = False + End If + + If KulonAloRajzok.IsChecked = True Then + If PDFCheckBox.IsChecked = True Then + PDFOsszeCheckBox.IsEnabled = True + PDFOsszeCheckBox.IsChecked = True + Else + PDFOsszeCheckBox.IsEnabled = False + PDFOsszeCheckBox.IsChecked = False + End If + End If + + End Sub + + Private Sub SheetCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles SheetCheckBox.Checked, SheetCheckBox.Unchecked + + If SheetCheckBox.IsChecked = True Then + NeedSheetNumbers = True + Else + NeedSheetNumbers = False + End If + + End Sub + 'Document creation subs + Private Sub CreateDocuments() + xlsCreated.Clear() + dxfCreated.Clear() + tiffCreated.Clear() + DWGCreated.Clear() + + pdfCreated.Clear() + HibakSzama = 0 + + + + If isSeperateDrawing = True Then + + + ' Dim filenames As New List(Of String) + Dim FileExtPos As Single + Dim FileExtPos_names As Single + + For Each item As String In FilesList + FileExtPos = Path.GetFullPath(item).LastIndexOf("\") + FileExtPos_names = Path.GetFileNameWithoutExtension(item).LastIndexOf(".") + drw_names.Add(Path.GetFileNameWithoutExtension(item).Substring(0, FileExtPos_names)) + drw_paths.Add(Path.GetFullPath(item).Substring(0, FileExtPos + 1)) + FileNames.Add(Path.GetFileNameWithoutExtension(item)) + Next + + row_count = drw_paths.Count + + End If + + + Dim session As IpfcBaseSession = Nothing + Dim conn As IpfcAsyncConnection = Nothing + Dim y As Single + + SheetNumber = 1 + ProgressTextstr = "Csatlakozás..." + BackgroundWorker1.ReportProgress(0) + + Connect(session, conn) + + ' Threading.Thread.Sleep(2500) + + Dim model1 As IpfcModel = session.CurrentModel + + ' + HandlePage(session, y) + If namingsyntax = "stefani" Then + HideShowTables(session, model1, 0) + End If + + + conn.Disconnect(1) + q = 0 + i = 0 + ' table.Display() + NameList.Clear() + drw_names.Clear() + drw_paths.Clear() + FileNames.Clear() + pdfFiles.Clear() + folderpicked = "" + End Sub + Private Sub HandlePage(session As IpfcBaseSession, y As Single) + + Dim model1 As IpfcModel = Nothing + Dim options As IpfcRetrieveModelOptions = Nothing + Dim oModelDescriptor As IpfcModelDescriptor = Nothing + Dim oModelDescriptorCreate As New CCpfcModelDescriptor + Dim sheetowner As IpfcSheetOwner = Nothing + Dim Drawing As IpfcDrawing = Nothing + Dim oWindow As IpfcWindow + + + + + + If isSeperateDrawing = False Then + + row_count = 1 + drw_names.Add(session.CurrentModel.FileName) + FileNames.Add(session.CurrentModel.FileName) + + End If + + For y = 0 To row_count - 1 + + oModelDescriptor = oModelDescriptorCreate.Create(EpfcModelType.EpfcMDL_DRAWING, drw_names(y), "") + + If isSeperateDrawing = True Then + + options = (New CCpfcRetrieveModelOptions).Create + options.AskUserAboutReps = False + oModelDescriptor.Path = drw_paths(y) + + + Console.WriteLine("Cél könyvtár:" + drw_paths(y)) + Console.WriteLine("File Name:" + drw_names(y)) + Try + model1 = session.RetrieveModelWithOpts(oModelDescriptor, options) + Catch ex As Exception + MsgBox("Nem lehet megnyitni a rajzot! (Nincs a modell a mappában?)") + End Try + + + Else + Try + model1 = session.CurrentModel + Catch ex As Exception + + MsgBox("Active window not drw? " & ex.Message) + Exit Sub + End Try + End If + + If isSeperateDrawing = True Then + oWindow = session.OpenFile(oModelDescriptor) + oWindow.Activate() + Else + oWindow = session.CurrentWindow + oWindow.Activate() + End If + ' + + Dim iTableOwner As IpfcTableOwner + iTableOwner = model1 + iTableOwner.UpdateTables() + + + 'Count Number of sheets + Dim LapokSzama As Integer + sheetowner = model1 + LapokSzama = sheetowner.NumberOfSheets + Drawing = CType(model1, IpfcDrawing) + + 'Write parameters if needed + ' If NeedParams = True Then + 'WriteParam(model1, FocsoportTextLine.Text, "oa_megnevezes_1") + 'WriteParam(model1, AlcsoportTextLine.Text, "oa_megnevezes_2") + ' WriteParam(model1, AudiRajzszamParam.Text, "AUDI_RAJZSZAM") + ' End If + + 'Handles sheets on drw + + + ParamaterChecker(model1) + + ' ChangeSheets(model1, session, Drawing) + + + + HandleSheet(session, sheetowner, model1, Drawing, LapokSzama, y) + 'Create PDF if needed + If NeedPdf = True Then + + Dim FileNameMod As String + ' MsgBox(FileNames(y)) + FileNameMod = FileNames(y) + HandleNames(FileNameMod, y, 0, ".PDF", model1) + CreatePdf(session, model1, FileNameMod) + + End If + Dim iWindows As IpfcWindows + iWindows = session.ListWindows + + ' MsgBox(WindowCount) + 'Close active window + If isSeperateDrawing = True Then + oWindow.Close() + End If + + + Next + + 'Merge PDF if needed + If NeedPdfOssze = True Then + + MergePdfFiles(pdfFiles, folderpicked + "/Oszefuzott.pdf") + + End If + + End Sub + Private Sub HandleSheet(Session As IpfcBaseSession, SheetOwner As IpfcSheetOwner, Model1 As IpfcModel, Drawing As IpfcDrawing, LapokSzama As Single, y As Single) + + Dim FileNameMod As String + Drawing.CurrentSheetnumber = 1 + FileNameMod = FileNames(y) + If NeedXls = True Then + + If isSeperateDrawing = True Then + + If y = 0 Then + + HandleNames(FileNameMod, y, i, ".xls", Model1) + CreateExcel(Session, FileNameMod) + End If + + Else + HandleNames(FileNameMod, y, i, ".xls", Model1) + CreateExcel(Session, FileNameMod) + End If + + End If + + ' If NeedDxf = True Then + HideShowTables(Session, Model1, 1) + ' End If + + If NeedDxf = False And NeedDWG = False And NeedTiff = False And sheetParamNeeded = False And printNeeded = False Then + LapokSzama = 1 + End If + + + + For i = 1 To LapokSzama + + SheetOwner = Model1 + Drawing.currentsheetnumber = i + 'Lapszámok beírása + + + WriteSheetNum(Model1) + '----- + 'DXF Készítése ha szükséges + If NeedDxf = True Then + + HandleNames(FileNameMod, y, i, ".DXF", Model1) + CreateDXF(Model1, FileNameMod) + + End If + + If NeedDWG = True Then + + HandleNames(FileNameMod, y, i, ".DWG", Model1) + CreateDWG(Model1, FileNameMod, Session) + + End If + 'Create Tiff if needed + If NeedTiff = True Then + + HandleNames(FileNameMod, y, i, ".Tif", Model1) + + CreateTiff(Session, Drawing, i, i, FileNameMod, Model1) + + End If + + '--------------------- Calculate sheetsize for print + Try + Dim iFormatDrawing As IpfcModelDescriptor + iFormatDrawing = SheetOwner.GetSheetFormatDescr(i) + Dim NameOfSheet As String = iFormatDrawing.InstanceName(iFormatDrawing.InstanceName.Length - 4) + Dim A01234 As String = iFormatDrawing.InstanceName.IndexOf("A?") + Dim regex As New RegularExpressions.Regex("A\d") + Dim FormatString As String = regex.Match(iFormatDrawing.InstanceName).Value + + NameOfSheet = FormatString.Substring(1, 1) + + Dim e_int As Integer + e_int = 2 ^ CInt(NameOfSheet) + + Dim model2d As IpfcModel2D + Dim view2d As IpfcView2D + Dim dview As CpfcView2Ds + Dim model2 As IpfcModel + Dim ListOfViewSheets As New List(Of Integer) + Dim SheetNumberIndex As New List(Of Integer) + Dim ViewCount As Single + Dim IndexOfCurrentSheetFirstView As Integer + + model2d = Model1 + dview = model2d.List2DViews() + ViewCount = dview.Count + + For z = 0 To ViewCount - 1 + view2d = (dview(z)) + ListOfViewSheets.Add(view2d.GetSheetNumber) + Next + + If i = 0 Then + i = 1 + IndexOfCurrentSheetFirstView = ListOfViewSheets.IndexOf(i) + i = 0 + Else + IndexOfCurrentSheetFirstView = ListOfViewSheets.IndexOf(i) + End If + + view2d = dview(IndexOfCurrentSheetFirstView) + model2 = view2d.GetModel + + Dim SheetScale As Double = SheetOwner.GetSheetScale(i, model2) + + Dim Print_value As Double = e_int * 10 * SheetScale + '--------------------- Calculate sheetsize for print END + + + + If printNeeded = True Then + HandleNames(FileNameMod, y, i, ".Tif", Model1) + Printtoprinter(Session, Drawing, i, i, FileNameMod, Model1, Print_value) + End If + + + + Catch ex As Exception + MsgBox(ex.Message) + End Try + + + Next i + ' MsgBox(workDir) + 'Log fileok törlése + If NeedDxf = True Or NeedDWG = True Then + If My.Computer.FileSystem.GetFiles(workDir, FileIO.SearchOption.SearchTopLevelOnly, "*.log.*").Count > 0 Then 'ha nem sikerült dxf-t csinálni, akkor ne csináljon semmit + Dim logpath As String + If autofolder = True Then + logpath = workDir + Else + logpath = folderpicked + End If + Kill(logpath & "\*log*") + End If + End If + + + If excelPrintNeeded = True Then + + + folderpicked = Path.GetTempPath + HandleNames(FileNameMod, 0, 0, ".xls", Model1) + CreateExcel(Session, FileNameMod) + PrintExcel(FileNameMod) + + End If + + + End Sub + 'Handles all the nameing sintax for every file XLS,DXF,PDF and TIFF + Private Sub HandleNames(ByRef FileNameMod As String, y As Single, i As Single, Ext As String, model1 As IpfcModel) + + Dim model2d As IpfcModel2D + Dim view2d As IpfcView2D + Dim dview As CpfcView2Ds + Dim model2 As IpfcModel + Dim ListOfViewSheets As New List(Of Integer) + Dim SheetNumberIndex As New List(Of Integer) + Dim ViewCount As Single + Dim FilePathMod As String + Dim FileNamesWOExtention As String + ' Dim FileNameOnlyBatchNumber As String + ' Dim sResult As String + Dim IndexOfCurrentSheetFirstView As Integer + + model2d = model1 + dview = model2d.List2DViews() + ViewCount = dview.Count + + For z = 0 To ViewCount - 1 + view2d = (dview(z)) + ListOfViewSheets.Add(view2d.GetSheetNumber) + Next + + If i = 0 Then + i = 1 + IndexOfCurrentSheetFirstView = ListOfViewSheets.IndexOf(i) + i = 0 + Else + IndexOfCurrentSheetFirstView = ListOfViewSheets.IndexOf(i) + End If + + Console.WriteLine(ListOfViewSheets.IndexOf(i)) + If IndexOfCurrentSheetFirstView >= 0 Then + + view2d = dview(IndexOfCurrentSheetFirstView) + model2 = view2d.GetModel + sresult = model2.FullName + + FileNamesWOExtention = (FileNames(y).Substring(0, FileNames(y).Length - 4)) + FileNamesWOExtention = sresult + + Else + FileNamesWOExtention = "NO_VIEW_ON_SHEET" + End If + + + + FilePathMod = folderpicked + + + If autofolder = True Then + + FilePathMod = workDir + Else + workDir = FilePathMod + + End If + + + NameList.Add(FilePathMod + FileNamesWOExtention + Ext) + + Dim SameModellNumber As Integer = NameList.Where(Function(value) value = (FilePathMod + FileNamesWOExtention + Ext)).Count + Dim SamemodelnumberStr As String + + If SameModellNumber <> 1 Then + SamemodelnumberStr = "_" + CStr(SameModellNumber) + Else + SamemodelnumberStr = "" + End If + + Dim FirstCharacter As Integer = FileNamesWOExtention.IndexOf("<") + Console.WriteLine(FirstCharacter) + If FirstCharacter > 0 Then + FileNamesWOExtention = Strings.Left(FileNamesWOExtention, FirstCharacter) + End If + Console.WriteLine(FileNameMod) + + If namingsyntax = "stefani" = True Then + + FileNameMod = FilePathMod + FileNamesWOExtention + SamemodelnumberStr + Ext ' " _" + CStr(i) + + + Else + + Dim AudiRajzSzamStr As String = "" + ReadParam(model1, "AUDI_RAJZSZAM", AudiRajzSzamStr) + Try + AudiRajzSzamStr = AudiRajzSzamStr.Substring(0, 3) + "000-" + AudiRajzSzamStr.Substring(3, 3) + "-" + AudiRajzSzamStr.Substring(7, 6) + "-001" + + Catch ex As Exception + MsgBox("Az audi szám nem megfelelő formátum.") + Environment.Exit(0) + End + End Try + + If Ext = ".xls" Then + FileNameMod = FilePathMod + AudiRajzSzamStr + "_" + "stl" + Ext + Else + FileNameMod = FilePathMod + AudiRajzSzamStr + "_" + i.ToString("000") + Ext + End If + + + FileNameMod = FileNameMod.ToUpper + + End If + ProgressTextstr = Path.GetFileName(FileNameMod) + BackgroundWorker1.ReportProgress(0, Nothing) + FileNameModTimer = FileNameMod + + End Sub + Public Sub HandleTable(session As IpfcBaseSession, ByRef TableContent(,) As String) + + Dim selection As IpfcSelection = Nothing + Dim selections As New CpfcSelections + Dim selectionOptions As IpfcSelectionOptions + Dim TableCell As IpfcTableCell + Dim NonBaseSession As IpfcSession + Dim iTableOwner As IpfcTableOwner + NonBaseSession = session + iTableOwner = session.CurrentModel + Dim row As Integer + Dim col As Integer + Dim TableRowCount As Integer + Dim TableCoulomnCount As Integer + Dim Cstringseq As New Cstringseq + Dim CellValues As String + ' str1 = " Creo segéd program" + 'str2 = "" + Dim MoreThanOneTable As Boolean = False + + ChooseTable(session, session.CurrentModel, MoreThanOneTable, table) + + + If MoreThanOneTable = True Then + + HandleWindow.FocusWindowM("In", "fo") + ProgressTextstr = "Válassz táblázatot!" + BackgroundWorker1.ReportProgress(0) + ' Dim UISO As IpfcMessageDialogOptions + ' UISO = (New CCpfcMessageDialogOptions) + ' UISO.DialogLabel = "Válassz táblázatot!" + NonBaseSession.UIShowMessageDialog("Válassz táblázatot!", Nothing) + + selectionOptions = (New CCpfcSelectionOptions).Create("dwg_table") + selectionOptions.MaxNumSels = 1 + + Try + selections = session.Select(selectionOptions, Nothing) + selection = selections.Item(0) + Catch ex As Exception + MsgBox(ex.Message) + Exit Sub + End Try + ' Dim name1 As String = "Creo Parametric" + ' Dim name2 As String = "(Active)" + ' HandleWindow.FocusWindowM(name2, name1) + table = selection.SelItem + End If + + + HandleWindow.FocusWindowM("Dokumentáció", "készítő") + + + + ' table = iTableOwner.GetTable(2) + + TableCoulomnCount = table.GetColumnCount() + TableRowCount = table.GetRowCount() + ReDim TableContent(TableRowCount - 5, TableCoulomnCount) + + For col = 1 To TableCoulomnCount + + For row = 6 To TableRowCount + + TableCell = (New CCpfcTableCell).Create(row, col) + + Try + Cstringseq = table.GetText(TableCell, 0) + CellValues = Cstringseq.Item(0) + + If col = 7 Then + If Cstringseq.Item(0).Substring(0, 2) = "  " Then + CellValues = Cstringseq.Item(0).Substring(2, Cstringseq.Item(0).Length - 2) + End If + + If Cstringseq.Item(0).Substring(0, 1) = " " Then + CellValues = Cstringseq.Item(0).Substring(1, Cstringseq.Item(0).Length - 1) + End If + End If + + If col = 10 Then + If Cstringseq.Item(0) = "-" Then + CellValues = "" + End If + End If + + If namingsyntax = "audi" = False Then + If Cstringseq.Item(0).Length > 8 Then + If Cstringseq.Item(0).Substring(0, 6) = "26-000" Then + CellValues = "" + End If + + If Cstringseq.Item(0).Substring(0, 5) = " Pos." Then + CellValues = "" + End If + End If + End If + + TableContent(row - 5, col) = CellValues + + Catch ex As Exception + TableContent(row - 5, col) = "" + End Try + Next + Next + + + + + + SHMNum = CellToString(table, 1, 5) + MachineName = CellToString(table, 3, 7) + SHMDate = CellToString(table, 4, 7) + SubMachineName = CellToString(table, 2, 7) + AudiNum = CellToString(table, 1, 7) + NameT = CellToString(table, 3, 5) + + + + + 'table.Erase() + End Sub + Private Sub HandleExcel(model1 As IpfcModel, FilnameMod As String, TableContent(,) As String) + + xlApp = New Excel.Application + xlWorkBook = xlApp.Workbooks.Open(FilnameMod) + xlWorkSheet = xlWorkBook.Worksheets("AUDI-Bemi-Stückliste") + xlApp.DisplayAlerts = False + + Dim RowCount As Integer = TableContent.GetLength(0) - 1 + Dim ColCount As Integer = TableContent.GetLength(1) - 1 + 'Fill V-numbers...I think + + For row = 1 To RowCount + + Console.WriteLine(TableContent(row, 7)) + If TableContent(row, 7).Length < 2 Then + TableContent(row, 7) = " " + End If + 'Ha "V-"-vel kezdődik a string akkor kitölti a + ' If TableContent(row, 7).Substring(0, 2) <> "V-" Then + For col = 1 To ColCount + xlWorkSheet.Cells(row + 5, col) = TableContent(row, col) + Next + ' Else + + ' xlWorkSheet.Cells(row + 5, 7) = TableContent(row, 7) + ' xlWorkSheet.Cells(row + 5, 3) = TableContent(row, 3) + ' xlWorkSheet.Cells(row + 5, 4) = TableContent(row, 4) + ' End If + ' + Next + + 'Do I really need this ?! + SHMNum = CellToString(table, 1, 5) + NameT = CellToString(table, 3, 5) + MachineName = CellToString(table, 3, 7) + SHMDate = CellToString(table, 4, 7) + SubMachineName = CellToString(table, 2, 7) + AudiNum = CellToString(table, 1, 7) + + 'A fejléc kitöltése + xlWorkSheet.Cells(1, 5) = SHMNum + ' xlWorkSheet.Cells(4, 10) = SHMNum + xlWorkSheet.Cells(3, 5) = NameT + xlWorkSheet.Cells(4, 5) = NameT + xlWorkSheet.Cells(3, 7) = MachineName + xlWorkSheet.Cells(4, 7) = SHMDate + xlWorkSheet.Cells(4, 9) = SHMDate + xlWorkSheet.Cells(2, 7) = SubMachineName + + If namingsyntax = "stefani" Then + xlWorkSheet.Cells(1, 7) = "" + ElseIf namingsyntax = "audi" Then + xlWorkSheet.Cells(1, 7) = AudiNum + Else + + Try + Dim tempparam As String = "" + ReadParam(model1, "BESTELLER", tempparam) + xlWorkSheet.Cells(1, 7) = tempparam + + Catch ex As Exception + xlWorkSheet.Cells(1, 7) = " " + End Try + + + End If + + 'Delete useless cells + xlWorkSheet.Range(xlWorkSheet.Cells(RowCount + 6, 1), xlWorkSheet.Cells(3000, 10)).Clear() + + If namingsyntax = "audi" = True Then + + xlApp.Run("Atalakitas_doksihoz") + 'Check for hianyzik in "Herstellaradressen + xlWorkSheet = xlWorkBook.Worksheets("Herstelleradressen") + + ddas = IsNothing(xlWorkSheet.Range(xlWorkSheet.Cells(1, 1), xlWorkSheet.Cells(100, 10)).Find("#HIÁNYZIK")) + ' If ddas = False Then + 'End If + + End If + + + If xlstype = "hanon" Then + xlApp.Run("Atalakitas_doksihoz_hanon") + End If + + 'Save and close, set display alerts back to true + xlWorkBook.Save() + xlWorkBook.Close() : xlApp.Quit() + xlApp.DisplayAlerts = True + 'Clear shit + System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp) : xlApp = Nothing + System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkBook) : xlWorkBook = Nothing + System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkSheet) : xlWorkSheet = Nothing + + End Sub + 'Create tiff,dxf and pdf + Private Sub CreateDXF(model1 As IpfcModel, FileNameMod As String) + + Try + 'Create a DXF export instruction + Dim myDXFInstr = (New CCpfcDXFExportInstructions).Create + 'Export the drawing to dxf + model1.Export(FileNameMod, myDXFInstr) + FileSystem.Rename(FileNameMod.ToLower, FileNameMod.ToUpper) 'Átnevezés mert imre szólt hogy a "c" nagy betüvel legyen... + + dxfCreated.Add(Path.GetFileName(FileNameMod) & " elkészült.") + + 'Hiba esetén a felugró ablakba beírni a mgefelelő adatokat + Catch ex As Exception + Dim TryError As String + If ex.Message = "pfcExceptions::XStringTooLong; argument: FileName string: " & FileNameMod & " maximum length: 216" Then + TryError = "Az elérési út túl hosszú!" + Else + TryError = ex.Message + End If + ' Console.WriteLine(ex.Message) + ' Console.WriteLine("pfcExceptions::XStringTooLong; argument: FileName string: " & FileNameMod & " maximum lenght: 216") + + dxfCreated.Add(Path.GetFileName(FileNameMod) & " nem készült el, a következő hiba üzenettel: " & TryError) + HibakSzama = HibakSzama + 1 + End Try + + End Sub + Private Sub CreateDWG(model1 As IpfcModel, FileNameMod As String, session As IpfcBaseSession) + Dim OldWorkDir = session.GetCurrentDirectory + ' MsgBox(Path.GetFileNameWithoutExtension(FileNameMod)) + ' MsgBox(Path.GetDirectoryName(FileNameMod)) + session.ChangeDirectory(Path.GetDirectoryName(FileNameMod)) + + Dim macroStrings As String + macroStrings = "~ Select `main_dlg_cur` `appl_casc`;\" + macroStrings = macroStrings & "~ Select `main_dlg_cur` `appl_menu.left_pane.saveas_casc`;\" + macroStrings = macroStrings & "~ Close `main_dlg_cur` `appl_menu.left_pane.saveas_casc`;\" + macroStrings = macroStrings & "~ Close `main_dlg_cur` `appl_casc`;\" + macroStrings = macroStrings & "~ Activate `main_dlg_cur` `appl_menu.left_pane.save_a_copy_button`;\" + macroStrings = macroStrings & "~ Open `file_saveas` `type_option`;~ Close `file_saveas` `type_option`;\" + macroStrings = macroStrings & "~ Select `file_saveas` `type_option` 1 `db_560`;\" + macroStrings = macroStrings & "~ Update `file_saveas` `Inputname` `" + Path.GetFileNameWithoutExtension(FileNameMod) + "`;\" + macroStrings = macroStrings & "~ Activate `file_saveas` `OK`;~ Activate `export_2d_dlg` `OK_Button`;" + macroStrings = macroStrings & "mapkey(continued) ~ Activate `UI Message Dialog` `ok`;" + session.RunMacro(macroStrings) + session.ChangeDirectory(Path.GetDirectoryName(FileNameMod)) + + + + End Sub + Private Sub CreatePdf(session As IpfcBaseSession, model1 As IpfcModel, Filename As String) + + Try + + Dim PDFExportInstrCreate As New CCpfcPDFExportInstructions + Dim PDFExportInstr As IpfcPDFExportInstructions + PDFExportInstr = PDFExportInstrCreate.Create + Dim PDF_Options As New pfcls.CpfcPDFOptions + + 'Set Stroke All Fonts PDF Option + If NeedStroke = True Then + + Dim PDFOptionCreate_SAF As New CCpfcPDFOption + Dim PDFOption_SAF As IpfcPDFOption + PDFOption_SAF = PDFOptionCreate_SAF.Create + PDFOption_SAF.OptionType = EpfcPDFOptionType.EpfcPDFOPT_FONT_STROKE + Dim newArg_SAF As New CMpfcArgument + PDFOption_SAF.OptionValue = newArg_SAF.CreateIntArgValue(EpfcPDFFontStrokeMode.EpfcPDF_STROKE_ALL_FONTS) + Call PDF_Options.Append(PDFOption_SAF) + + End If + + ' Set COLOR_DEPTH value (Set EpfcPDF_CD_MONO to have Black & White output) + Dim PDFOptionCreate_CD As New CCpfcPDFOption + Dim PDFOption_CD As IpfcPDFOption + PDFOption_CD = PDFOptionCreate_CD.Create + PDFOption_CD.OptionType = EpfcPDFOptionType.EpfcPDFOPT_COLOR_DEPTH + Dim newArg_CD As New CMpfcArgument + PDFOption_CD.OptionValue = newArg_CD.CreateIntArgValue(EpfcPDFColorDepth.EpfcPDF_CD_MONO) + Call PDF_Options.Append(PDFOption_CD) + + ' Set PDF EpfcPDFOPT_LAUNCH_VIEWER(Set FALSE Not to Launch Adobe reader) + Dim PDFOptionCreate_LV As New CCpfcPDFOption + Dim PDFOption_LV As IpfcPDFOption + PDFOption_LV = PDFOptionCreate_LV.Create + PDFOption_LV.OptionType = EpfcPDFOptionType.EpfcPDFOPT_LAUNCH_VIEWER + Dim newArg_LV As New CMpfcArgument + PDFOption_LV.OptionValue = newArg_LV.CreateBoolArgValue(False) + Call PDF_Options.Append(PDFOption_LV) + + 'Set Output PDF File Name + Dim TempPath As String = Path.GetTempPath() & Path.GetFileName(Filename) + PDFExportInstr.FilePath = Filename + PDFExportInstr.Options = PDF_Options + Try + Dim fOpen As IO.FileStream = IO.File.Open("your file name", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None) + fOpen.Close() + fOpen.Dispose() + fOpen = Nothing + Catch e1 As IO.IOException + 'File Open by some one else.. + Catch e2 As Exception + End Try + + + If System.IO.File.Exists(Filename) Then + File.Delete(Filename) + End If + model1.Export(PDFExportInstr.FilePath, PDFExportInstr) + ' File.Move(TempPath, Filename) + + pdfFiles.Add(Filename) + pdfCreated.Add(Path.GetFileName(Filename) & " elkészült.") + ' pdfCreated = pdfCreated + 1 + + Catch ex As Exception + Dim TryError As String + If ex.Message = "pfcExceptions::XStringTooLong; argument: FileName string: " & Filename & " maximum length: 216" Then + TryError = "Az elérési út túl hosszú!" + Else + TryError = ex.Message + End If + pdfCreated.Add(Path.GetFileName(Filename) & " nem készült el, a következő hiba üzenettel: " & TryError) + HibakSzama = HibakSzama + 1 + + End Try + + End Sub + Private Sub CreateTiff(ByRef session As IpfcBaseSession, ByRef Drawing As IpfcDrawing, ByVal StartSheet As Integer, ByVal EndSheet As Integer, Filename As String, model1 As IpfcModel) + + Try + + session.SetConfigOption("display_planes", "no") + session.SetConfigOption("display_axes", "no") + session.SetConfigOption("datum_point_display", "no") + session.SetConfigOption("display_coord_sys", "no") + ' Place your company standard plot configuration files (*.pcf) in a directory and + ' set it's full path as value to Creo configuration option pro_plot_config_dir. + ' Example: pro_plot_config_dir C:\Engineering_Standards\Creo_Standards\Plot_configs\ + ' Creo will find any *.pcf file just by its file name if it exists in one of the below mentioned locations + ' 1. In Current Working Directory + ' 2. In Directory set by configuration option pro_plot_config_dir + ' 2. In \text\plot_config Directory + + Dim pcfOptions As IpfcPrinterPCFOptions + + Dim printerOptions As IpfcPrinterInstructions + 'pfcFileName length should be max 32 chars excluding file extension. + 'If exceeds 32 chars, results in exception xToolkitNotFound / xToolkitStringTooLong + Dim model2d As IpfcModel2D + model2d = model1 + pcfOptions = session.GetPrintPCFOptions("ms_print_mgr_2.pcf", model2d) + + printerOptions = (New CCpfcPrinterInstructions).Create() + printerOptions.ModelOption = pcfOptions.ModelOption + printerOptions.PlacementOption = pcfOptions.PlacementOption + printerOptions.PrinterOption = pcfOptions.PrinterOption + printerOptions.WindowId = session.GetModelWindow(Drawing).GetId() + + printerOptions.ModelOption.Sheets = EpfcPrintSheets.EpfcPRINT_SELECTED_SHEETS + printerOptions.ModelOption.FirstPage = StartSheet + printerOptions.ModelOption.LastPage = EndSheet + + ' Set required output print paper size. + ' Do this only if you want any sheet size to be plot to single paper size. + + Dim iPlotPaperSize As New CCpfcPlotPaperSize + + Dim printSize As IpfcPrintSize + printSize = (New CCpfcPrintSize).Create() + printSize.Height = 841 + printSize.Width = 1189 + printSize.PaperSize = iPlotPaperSize.A0SIZEPLOT + + printerOptions.PrinterOption.PaperSize = printSize + + 'printerOptions.PrinterOption.PaperSize + printerOptions.ModelOption.Mdl = model2d + 'printerOptions.PrinterOption.FileName = model2d.InstanceName + + Dim ExportInstr As IpfcExportInstructions + ExportInstr = CType(printerOptions, IpfcExportInstructions) + + model1.Export(Filename, ExportInstr) + + FileSystem.Rename(Filename.ToLower, Filename.ToUpper) + tiffCreated.Add(Path.GetFileName(Filename) + " elkészült.") + Catch ex As Exception + + Dim TryError As String + If ex.Message = "pfcExceptions::XStringTooLong; argument: FileName string: " & Filename & " maximum length: 216" Then + TryError = "Az elérési út túl hosszú!" + Else + TryError = ex.Message + End If + tiffCreated.Add(Path.GetFileName(Filename) & " nem készült el, a következő hiba üzenettel: " & TryError) + HibakSzama = HibakSzama + 1 + End Try + End Sub + Private Sub CreateExcel(session As IpfcBaseSession, FilnameMod As String) + + Try + + Dim TableContent(,) As String = Nothing + HandleTable(session, TableContent) + + 'Copies XLS to destenation folder + If namingsyntax = "audi" Then + File.Copy("U:\proe_beallitasok\Creo4\Utilities\Stuckliste_alap.xls", FilnameMod.ToUpper(), 1) 'English + Else + File.Copy("U:\proe_beallitasok\Creo4\Utilities\Stuckliste_alap_hu.xls", FilnameMod.ToUpper(), 1) 'Hungarian + End If + ' MsgBox(FilnameMod) + + 'Writes Creo table content to XLS + HandleExcel(session.CurrentModel, FilnameMod, TableContent) + + If ddas = True Then + xlsCreated.Add(Path.GetFileName(FilnameMod) & " elkészült.") + Else + xlsCreated.Add(Path.GetFileName(FilnameMod) & " elkészült." & " - Cég információk hiányoznak!") + HibakSzama = HibakSzama + 1 + End If + + + + Catch ex As Exception + xlsCreated.Add(Path.GetFileName(FilnameMod) & " nem készült el, a következő hiba üzenettel: " & ex.Message) + HibakSzama = HibakSzama + 1 + End Try + + End Sub + 'Printing each file to printer + Private Const BM_CLICK As Integer = &HF5 + Private Const WM_SETFOCUS As Integer = &H7 + + + Private Shared Function FindWindowExW(ByVal hWndParent As IntPtr, ByVal hWndChildAfter As IntPtr, ByVal lpszClass As String, ByVal lpszWindow As String) As IntPtr + End Function + + Private Shared Function SendMessageW(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer + End Function + Private Sub Printtoprinter(ByRef session As IpfcBaseSession, ByRef Drawing As IpfcDrawing, ByVal StartSheet As Integer, ByVal EndSheet As Integer, Filename As String, model1 As IpfcModel, Print_Value As Double) + + 'Dim the used variables + Dim pcfOptions As IpfcPrinterPCFOptions + Dim printerOptions As IpfcPrinterInstructions + Dim ExportInstr As IpfcExportInstructions + + + 'Turning off displayed planes,axes,points and coordiante systems + session.SetConfigOption("display_planes", "no") + session.SetConfigOption("display_axes", "no") + session.SetConfigOption("datum_point_display", "no") + session.SetConfigOption("display_coord_sys", "no") + + 'Choosing and using the PCF file" + If Print_Value > 15 Then 'a4 + pcfOptions = session.GetPrintPCFOptions("CDC5520_A4.pcf", model1) + ElseIf Print_Value > 3 Then 'A3 + pcfOptions = session.GetPrintPCFOptions("CDC5520_A3.pcf", model1) + ElseIf Print_Value > 1 Then 'A2 + pcfOptions = session.GetPrintPCFOptions("CDC5520_A2.pcf", model1) + ElseIf Print_Value > 0 Then 'A1 + pcfOptions = session.GetPrintPCFOptions("CDC5520_A1.pcf", model1) + Else 'A0 + pcfOptions = session.GetPrintPCFOptions("CDC5520_A0.pcf", model1) + End If + + printerOptions = (New CCpfcPrinterInstructions).Create() + printerOptions.ModelOption = pcfOptions.ModelOption + printerOptions.PlacementOption = pcfOptions.PlacementOption + printerOptions.PrinterOption = pcfOptions.PrinterOption + printerOptions.WindowId = session.GetModelWindow(Drawing).GetId() + + 'Choosing the sheets to print, the reason why it is printed one by one is to use the right naming syntax + printerOptions.ModelOption.Sheets = EpfcPrintSheets.EpfcPRINT_SELECTED_SHEETS + printerOptions.ModelOption.FirstPage = StartSheet + printerOptions.ModelOption.LastPage = EndSheet + + 'Choosing the model to print + printerOptions.ModelOption.Mdl = model1 + printerOptions.PrinterOption.FileName = model1.InstanceName + + 'Printing the document (Don't mind that it is called export, for some fucking reason) + ExportInstr = CType(printerOptions, IpfcExportInstructions) + + If Print_Value > 3 Then 'A3 + + + ' EZ VALAMI OKNÁL FOGVA BACKGROUND WOERKERBEN VOLT ???? + BackgroundWorker3.RunWorkerAsync() + Else + MsgBox("Kérlek válaszd ki a nyomtató beállításokat, javasolt a Canon plotter használata.") + End If + + model1.Export(Filename, ExportInstr) + + End Sub + 'Write parameters and sheetnumber + + Private Sub WriteParam(iFeature As IpfcModel, iParamValueStr As String, iParamName As String) + + Dim iParamOwner As IpfcParameterOwner + Dim iParam As IpfcParameter + Dim iBaseParam As IpfcBaseParameter = Nothing + Dim iParamValue As IpfcParamValue + Dim MItem As New CMpfcModelItem + 'Paraméter string érték paraméter value értékké alakítása + iParamValue = MItem.CreateStringParamValue(iParamValueStr) + 'Paraméter tulajdonos beállítása (mi tartalmazza a praméteret(Feature,Modell stb.) + iParamOwner = iFeature + + If iParamOwner.GetParam(iParamName) Is Nothing Then + iParamOwner.CreateParam(iParamName, iParamValue) + Else + Try + iParam = iParamOwner.GetParam(iParamName) + iBaseParam = iParam + iBaseParam.Value = iParamValue + Catch ex As Exception + Console.WriteLine("Paraméterek beírása nem történt meg. (Zárt..)") + End Try + End If + + End Sub + Private Sub ReadParam(iFeature As IpfcModel, IparamName As String, ByRef iParamValueStr As String) + Dim iParamOwner As IpfcParameterOwner + Dim iParam As IpfcParameter + Dim iBaseParam As IpfcBaseParameter = Nothing + Dim iParamValue As IpfcParamValue + Dim MItem As New CMpfcModelItem + ' MsgBox(iFeature.FileName) + iParamOwner = iFeature + ' MsgBox(IparamName) + iParam = iParamOwner.GetParam(IparamName) + iBaseParam = iParam + Console.WriteLine("param name: " + IparamName) + + iParamValue = iBaseParam.Value + Console.WriteLine("value: " + iParamValue.StringValue) + iParamValueStr = iParamValue.StringValue + End Sub + 'drw Split sub + Private Sub TakeAway() + Dim session As IpfcBaseSession = Nothing + Dim conn As IpfcAsyncConnection = Nothing + Connect(session, conn) + Dim model1 As IpfcModel + Dim sheetowner As IpfcSheetOwner = Nothing + Dim Drawing As IpfcDrawing = Nothing + Dim model2d As IpfcModel2D + Dim cmodels As CpfcModels + Dim oModelDescriptor As IpfcModelDescriptor = Nothing + Dim oModelDescriptorCreate As New CCpfcModelDescriptor + Dim options As IpfcRetrieveModelOptions = Nothing + Dim NewWorkingDir As String + Dim OldWorkDir As String + Dim model2 As IpfcModel = Nothing + + ' Dim copyins As New CopyInstructions + model1 = session.CurrentModel + Dim model1name As String = model1.FileName + sheetowner = model1 + Dim numberorsheets As Integer = sheetowner.NumberOfSheets + Dim oPath As String = Path.GetDirectoryName(model1.Origin) + + Dim mydig As New Ookii.Dialogs.Wpf.VistaFolderBrowserDialog + mydig.ShowDialog() + NewWorkingDir = mydig.SelectedPath() + "\" + + OldWorkDir = session.GetCurrentDirectory + session.ChangeDirectory(NewWorkingDir) + + For k = 1 To numberorsheets + sheetowner = model1 + If Not AktualisRajzRadioButton.IsChecked = True Then + sheetowner.CurrentSheetNumber = k + Else + + End If + + + Dim h As Integer = 1 + Dim numberofsheetsforloop As Integer + If k = 1 And AktualisRajzRadioButton.IsChecked = False Then + numberofsheetsforloop = numberorsheets + Else + numberofsheetsforloop = numberorsheets - 1 + End If + + For j = 1 To numberofsheetsforloop + If Not sheetowner.CurrentSheetNumber = h Then + sheetowner.DeleteSheet(h) + End If + If Not h = sheetowner.CurrentSheetNumber Then + h = h - 1 + End If + h = h + 1 + Next + + model2d = model1 + + cmodels = model2d.ListModels() + For i = 0 To cmodels.Count - 1 + Try + model2d.DeleteModel(cmodels.Item(i)) + Catch ex As Exception + + End Try + Next + + Dim FileNameMod As String + namingsyntax = "stefani" + + FileNameMod = model1.FileName + + FileNames.Add(FileNameMod) + HandleNames(FileNameMod, 0, 0, ".DRW", model1) + Console.WriteLine(FileNameMod) + + Dim savedName As String = Strings.Left(Path.GetFileName(FileNameMod), Path.GetFileName(FileNameMod).Length - 4) + Dim fname As String = "r_" + Strings.Left(Path.GetFileName(FileNameMod), Path.GetFileName(FileNameMod).Length - 4) + + Try + model1.Copy(savedName, Nothing) + Catch ex As Exception + model1.Copy(fname, Nothing) + End Try + + + options = (New CCpfcRetrieveModelOptions).Create + options.AskUserAboutReps = False + + MsgBox(FileNameMod) + + Dim oModelDescriptor2 As IpfcModelDescriptor + + oModelDescriptor2 = oModelDescriptorCreate.Create(EpfcModelType.EpfcMDL_PART, FileNameMod, "") + oModelDescriptor2.Path = oPath + model2 = session.RetrieveModelWithOpts(oModelDescriptor2, options) + + oModelDescriptor = oModelDescriptorCreate.Create(EpfcModelType.EpfcMDL_PART, NewWorkingDir, "") + model2.Backup(oModelDescriptor) + + + Dim iWindow As IpfcWindow + iWindow = session.CurrentWindow + iWindow.Close() + model1name = model1.FileName + + model1.Erase() + options = (New CCpfcRetrieveModelOptions).Create + options.AskUserAboutReps = False + oModelDescriptor = oModelDescriptorCreate.Create(EpfcModelType.EpfcMDL_DRAWING, Strings.Left(model1name, model1name.Length - 4), "") + oModelDescriptor.Path = oPath + Try + model1 = session.RetrieveModelWithOpts(oModelDescriptor, options) + Catch ex As Exception + MsgBox("Nem megefelelő munkakönyvtár?") + Exit Sub + End Try + + + model1 = session.RetrieveModelWithOpts(oModelDescriptor, options) + iWindow = session.OpenFile(oModelDescriptor) + iWindow.Activate() + + + + + If AktualisRajzRadioButton.IsChecked = True Then + Exit For + End If + Next + + + Dim iWindows As IpfcWindows + iWindows = session.ListWindows + + For Each iWindow As IpfcWindow In iWindows + iWindow.Close() + Next + + Dim model3 As IpfcModel + Dim model4 As IpfcModel + + + Dim modelToRetrive As String = model2.InstanceName + oModelDescriptor = oModelDescriptorCreate.Create(EpfcModelType.EpfcMDL_DRAWING, modelToRetrive, "") + + session.EraseUndisplayedModels() + model3 = session.RetrieveModel(oModelDescriptor) + + Dim newModelName As String + newModelName = InputBox("Eneter new model name", "New model name", "") + model3.Rename(newModelName, False) + oModelDescriptor = oModelDescriptorCreate.Create(EpfcModelType.EpfcMDL_PART, modelToRetrive, "") + + model4 = session.RetrieveModel(oModelDescriptor) + model4.Rename(newModelName, False) + model3.Save() + session.EraseUndisplayedModels() + + + + session.ChangeDirectory(OldWorkDir) + conn.Disconnect(1) + FileNames.Clear() + + + End Sub + 'Don't know wtf this is atm + Private Sub AutomatedFolderPick(ByVal session As IpfcBaseSession) + 'WTF is this? + Dim WorkingDir As String + WorkingDir = session.GetCurrentDirectory() + ' Dim whateverthefuck As String = + Dim WorkingDirPerIndex As Single + WorkingDirPerIndex = GetNthIndex(WorkingDir, "\", 4) + folderpicked = WorkingDir + + End Sub + 'Functions + Private Function MergePdfFiles(ByVal pdfFiles As List(Of String), ByVal outputPath As String) As Boolean + + Dim result As Boolean = False + Dim pdfCount As Integer = 0 'total input pdf file count + Dim f As Integer = 0 'pointer to current input pdf file + Dim fileNamePdf As String + Dim reader As iTextSharp.text.pdf.PdfReader = Nothing + Dim pageCount As Integer = 0 + Dim pdfDoc As iTextSharp.text.Document = Nothing 'the output pdf document + Dim writer As PdfWriter = Nothing + Dim cb As PdfContentByte = Nothing + + Dim page As PdfImportedPage = Nothing + Dim rotation As Integer = 0 + + Try + pdfCount = pdfFiles.Count + If pdfCount > 0 Then + 'Open the 1st item in the array PDFFiles + fileNamePdf = pdfFiles(f) + + reader = New iTextSharp.text.pdf.PdfReader(fileNamePdf) + 'Get page count + pageCount = reader.NumberOfPages + + pdfDoc = New iTextSharp.text.Document(reader.GetPageSizeWithRotation(1), 18, 18, 18, 18) + + writer = PdfWriter.GetInstance(pdfDoc, New FileStream(outputPath, FileMode.OpenOrCreate)) + + + With pdfDoc + .Open() + End With + 'Instantiate a PdfContentByte object + cb = writer.DirectContent + 'Now loop thru the input pdfs + While f < pdfCount + 'Declare a page counter variable + Dim i As Integer = 0 + 'Loop thru the current input pdf's pages starting at page 1 + While i < pageCount + i += 1 + 'Get the input page size + pdfDoc.SetPageSize(reader.GetPageSizeWithRotation(i)) + 'Create a new page on the output document + pdfDoc.NewPage() + 'If it is the 1st page, we add bookmarks to the page + 'Now we get the imported page + page = writer.GetImportedPage(reader, i) + 'Read the imported page's rotation + rotation = reader.GetPageRotation(i) + 'Then add the imported page to the PdfContentByte object as a template based on the page's rotation + If rotation = 90 Then + cb.AddTemplate(page, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(i).Height) + ElseIf rotation = 270 Then + cb.AddTemplate(page, 0, 1.0F, -1.0F, 0, reader.GetPageSizeWithRotation(i).Width + 60, -30) + Else + cb.AddTemplate(page, 1.0F, 0, 0, 1.0F, 0, 0) + End If + End While + 'Increment f and read the next input pdf file + f += 1 + If f < pdfCount Then + fileNamePdf = pdfFiles(f) + reader = New iTextSharp.text.pdf.PdfReader(fileNamePdf) + pageCount = reader.NumberOfPages + End If + End While + 'When all done, we close the document so that the pdfwriter object can write it to the output file + pdfDoc.Close() + result = True + End If + ' Print() + reader.Close() + Catch ex As Exception + Return False + End Try + Return result + + End Function + Private Function GetNthIndex(searchString As String, charToFind As Char, n As Integer) As Integer + Dim charIndexPair = searchString.Select(Function(c, i) New With {.Character = c, .Index = i}) _ + .Where(Function(x) x.Character = charToFind) _ + .ElementAtOrDefault(n - 1) + Return If(charIndexPair IsNot Nothing, charIndexPair.Index, -1) + End Function + Private Sub Connect(ByRef session As IpfcBaseSession, ByRef conn As IpfcAsyncConnection) + + Dim cac As New CCpfcAsyncConnection + 'Kapcsolódás creo-hoz + ' Dim iAsyncConnection As IpfcAsyncConnection = Nothing + ' Dim iConnection As IpfcConnectionId = iAsyncConnection.GetConnectionId + + conn = cac.Connect("", "", ".", 5) + session = conn.Session + + + End Sub + Private Function CellToString(table As IpfcTable, row As Integer, col As Integer) + + Dim TableCell As IpfcTableCell + TableCell = (New CCpfcTableCell).Create(row, col) + Dim Cstringseq As New Cstringseq + Dim strg As String + + Try + Cstringseq = table.GetText(TableCell, 0) + strg = Cstringseq.Item(0) + Catch ex As Exception + strg = "" + End Try + + Return strg + + End Function + 'Background worker so I can show names while creating the files + Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork + ' Private Sub Backgroundworker1_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) + 'Run the whole whole create document sub + + CreateDocuments() + sresult = String.Join(Environment.NewLine, pdfCreated.ToArray()) & Environment.NewLine _ + & String.Join(Environment.NewLine, dxfCreated.ToArray()) & Environment.NewLine _ + & String.Join(Environment.NewLine, DWGCreated.ToArray()) & Environment.NewLine _ + & String.Join(Environment.NewLine, tiffCreated.ToArray()) & Environment.NewLine _ + & String.Join(Environment.NewLine, xlsCreated.ToArray()) + + End Sub + Private Sub Backgroundworker2_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) Handles BackgroundWorker2.ProgressChanged + Progressbar.Value = e.ProgressPercentage + + End Sub + Private Sub Backgroundworker1_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged + ProgressText.Content = ProgressTextstr + End Sub + Private Sub Backgroundworker2_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles BackgroundWorker2.DoWork + + For pbs = 0 To 100 + + BackgroundWorker2.ReportProgress(pbs, Nothing) + If pbs = 99 Then + pbs = 0 + End If + + + If BackgroundWorker1.IsBusy = False Then + + + pbs = 100 + BackgroundWorker2.ReportProgress(0, Nothing) + End If + + + Threading.Thread.Sleep(50) + Next + + End Sub + + + Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted + ProgressText.Content = "" + + MainGrid.IsEnabled = True + + Dim window2 As New Form3 + ' MsgBox(sresult) + window2.ShowDialog() + + If params.Contains("-arg") Then + Environment.Exit(0) + End + End If + + End Sub + Private Sub WriteSheetNum(model1 As IpfcModel) + 'Cauction! I only undestand half of it...if you manage to undestand, it you are the first one to! It was a trial and error process for 2 hours + If NeedSheetNumbers = True Then + + If i <> 1 Then + + Dim model2 As IpfcModel + model2 = Nothing + Dim SheetNumberIndex As New List(Of Integer) + Dim tol As Integer = 0 + Dim ig As String = 0 + GetDrawingModel(model1, model2) + + tol = SheetNumber + Dim u As Integer = i - 2 + If u > 0 Then + If models(u - 1).FileName.Length > 13 Then + 'MsgBox(Strings.Left(models(u).FileName, 16) + Strings.Left(models(u - 1).FileName, 16)) + If Strings.Left(models(u).FileName, 16) = Strings.Left(models(u - 1).FileName, 16) Then + ig = SheetNumber + 1 + q = q + 1 + Console.WriteLine(q) + tol = tol - q + Console.WriteLine(tol) + Else + ig = 0 + q = 0 + End If + Console.WriteLine("Tol:" & tol & "Ig:" & ig) + End If + End If + Dim SheetNumberStr As String + SheetPartList.Add(model2.FileName) + If ig = 0 Then + SheetNumberStr = CStr(tol + 1) + Else + SheetNumberStr = CStr(tol + 1) & "-" & CStr(ig) + End If + ' MsgBox(models(u - j).FileName) + WriteParam(models(u - q), SheetNumberStr, "lap") + SheetNumber = SheetNumber + 1 + + End If + End If + End Sub + + Private Sub GetDrawingModel(model1 As IpfcModel, ByRef model2 As IpfcModel) + Dim view2d As IpfcView2D + Dim dview As CpfcView2Ds + Dim model2d As IpfcModel2D + Dim IndexOfCurrentSheetFirstView As Integer + Dim ViewCount As Single + Dim ListOfViewSheets As New List(Of Integer) + model2d = model1 + dview = model2d.List2DViews() + ViewCount = dview.Count + + For z = 0 To ViewCount - 1 + view2d = (dview(z)) + ListOfViewSheets.Add(view2d.GetSheetNumber) + Next + If i = 0 Then + i = 1 + IndexOfCurrentSheetFirstView = ListOfViewSheets.IndexOf(i) + i = 0 + Else + IndexOfCurrentSheetFirstView = ListOfViewSheets.IndexOf(i) + End If + + view2d = dview(IndexOfCurrentSheetFirstView) + model2 = view2d.GetModel + models.Add(model2) + End Sub + Private Sub ChooseTable(session As IpfcBaseSession, model1 As IpfcModel, ByRef MoreThanOne As Boolean, ByRef iTableRef As IpfcTable) + + Dim iTables As IpfcTables + Dim iTableOnwer As IpfcTableOwner + iTableOnwer = model1 + iTables = iTableOnwer.ListTables + Dim iTCells As IpfcTableCell + iTCells = (New CCpfcTableCell).Create(5, 7) + Dim Cstringseq As New Cstringseq + Dim a As Integer = 0 + + For Each iTablea As IpfcTable In iTables + Try + Cstringseq = iTablea.GetText(iTCells, 0) + + If Cstringseq.Item(0) = "Stefani" Then + a = a + 1 + iTableRef = iTablea + End If + Catch ex As Exception + End Try + Next + ' MsgBox(a) + If a = 1 Then + MoreThanOne = False + + + Else + MoreThanOne = True + End If + ' MsgBox(iTableRef.GetRowCount) + ' iLayer. + End Sub + Private Sub HideShowTables(session As IpfcBaseSession, model1 As IpfcModel, HideShow As Boolean) + + Dim iTables As IpfcTables + Dim iTableOnwer As IpfcTableOwner + iTableOnwer = model1 + iTables = iTableOnwer.ListTables + Dim iTCells As IpfcTableCell + iTCells = (New CCpfcTableCell).Create(5, 7) + Dim Cstringseq As New Cstringseq + Dim iModelItems As IpfcModelItems + Dim iLayer As IpfcLayer = Nothing + iModelItems = CType(model1, IpfcModelItemOwner).ListItems(EpfcModelItemType.EpfcITEM_LAYER) + Dim CheckLayers As Integer = 0 + + For Each iModelItem In iModelItems + If iModelItem.GetName.ToString = "HIDETABLE" Then + iLayer = iModelItem + CheckLayers = 1 + + End If + Next + + If CheckLayers = 0 Then + iLayer = model1.CreateLayer("HideTable") + End If + + iLayer.Status = 2 + + For Each iTablea As IpfcTable In iTables + ' iTablea. + Try + + Cstringseq = iTablea.GetText(iTCells, 0) + + If Cstringseq.Item(0) = "Stefani" Then + If HideShow = True Then + iLayer.AddItem(iTablea) + Else + iLayer.RemoveItem(iTablea) + End If + + + End If + ' MsgBox(Cstringseq.Item(0)) + Catch ex As Exception + + End Try + + Next + ' iLayer. + End Sub + + Public Shared Function gtranslate(ByVal inputtext As String, ByVal fromlangid As String, ByVal tolangid As String) As String + + inputtext = System.Web.HttpUtility.HtmlAttributeEncode(inputtext) + Dim step1 As New WebClient + step1.Encoding = Encoding.UTF8 + Dim step2 As String = step1.DownloadString("https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=" & tolangid & "&hl=" & fromlangid & "&dt=t&dt=bd&dj=1&source=icon&q=" & inputtext) + Dim step3 As Newtonsoft.Json.Linq.JObject = JObject.Parse(step2) + Dim step4 As String = step3.SelectToken("sentences[0]").SelectToken("trans").ToString() + + Return step4 + End Function + + + Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click + + Dim session As IpfcBaseSession = Nothing + Dim conn As IpfcAsyncConnection = Nothing + + Dim fs As New FileStream("Serialized.ser", FileMode.Open) + Dim MyFormatter As New BinaryFormatter() + + dict = MyFormatter.Deserialize(fs) + fs.Close() + + + + Try + Connect(session, conn) + Catch ex As Exception + If ex.Message = "pfcExceptions::XToolkitAmbiguous" Then + MsgBox("Egynél több Creo fut, kérlezk zárd be az egyiket.") + End If + Exit Sub + End Try + + Dim WorkingDir As String + WorkingDir = session.GetCurrentDirectory() + Dim strFileSize As String = "" + Dim di As New IO.DirectoryInfo(WorkingDir) + Dim aryFi As IO.FileInfo() = di.GetFiles("SHM-*.prt*") + Dim options As IpfcRetrieveModelOptions = Nothing + Dim model1 As IpfcModel = Nothing + Dim oWindow As IpfcWindow + + For Each fi In aryFi + strFileSize = (Math.Round(fi.Length / 1024)).ToString() + Console.WriteLine("File Name: {0}", fi.FullName) + Next + + 'Clean up list + Dim PrtList As New List(Of String) 'prt list with duplicates + + 'remove version number from + For Each fi In aryFi + PrtList.Add(Path.GetFileNameWithoutExtension(Path.GetFileNameWithoutExtension(fi.Name))) + Next + + Dim result As List(Of String) = PrtList.Distinct().ToList 'prtlist without duplicates + + Dim MyFile As New FileStream("Serialized.ser", FileMode.Create, FileAccess.Write, FileShare.None) + Try + + + For Each Strss In result + Dim oModelDescriptor As IpfcModelDescriptor = Nothing + Dim oModelDescriptorCreate As New CCpfcModelDescriptor + Dim PrtNaneWE As String = Strss + + + oModelDescriptor = oModelDescriptorCreate.Create(EpfcModelType.EpfcMDL_PART, PrtNaneWE, "") + + options = (New CCpfcRetrieveModelOptions).Create + options.AskUserAboutReps = False + oModelDescriptor.Path = WorkingDir + + model1 = session.RetrieveModelWithOpts(oModelDescriptor, options) + + oWindow = session.OpenFile(oModelDescriptor) + oWindow.Activate() + Dim ParamValueR As String = "" + + Try + ReadParam(model1, "MEGNEVEZES_1", ParamValueR) + Catch ex As Exception + ParamValueR = "Nem létezik a paraméter" + End Try + + Dim form5window As New Form5 + + form5window.NemetMegnevezes.Text = ParamValueR + Dim ParamValueW As String = "" + + If dict.TryGetValue(ParamValueR, ParamValueW) = True Then + form5window.MaterialLabel4.Background = Brushes.Green + form5window.MaterialLabel4.Content = "Megtaláható a szótárban!" + Else + 'form5window.MaterialLabel4.Background = SystemColors.ButtonFace + form5window.MaterialLabel4.Content = "" + ParamValueW = gtranslate(ParamValueR, "de", "hu") + End If + + form5window.MagyarMegnevezes.Text = ParamValueW + + + + If Not PromtTranslateCBOX.IsChecked = True And dict.TryGetValue(ParamValueR, ParamValueW) = True Then + form5window.WWClicked = "OK" + Else + form5window.ShowDialog() + + End If + + + + ParamValueW = form5window.MagyarMegnevezes.Text + + If form5window.WWClicked = "OK" Then + WriteParam(model1, ParamValueW, "Megnevezes_1") + + If ParamValueR = form5window.NemetMegnevezes.Text Then + Else + ' WriteParam(model1, Form5.NemetMegnevezes.Text, "Megnevezes_1") + End If + + + Dim TestForChange As String = "" + If dict.TryGetValue(ParamValueR, TestForChange) = True Then + If Not TestForChange = ParamValueW Then + dict(ParamValueR) = ParamValueW + End If + Else + + dict.Add(ParamValueR, ParamValueW) + End If + + + ElseIf form5window.WWClicked = "FB" Then + + MyFormatter.Serialize(MyFile, dict) + MyFile.Close() + conn.Disconnect(1) + Exit Sub + End If + + + + + + oWindow.Close() + Next + Catch ex As Exception + + End Try + MyFormatter.Serialize(MyFile, dict) + MyFile.Close() + + conn.Disconnect(1) + + End Sub + + + + + Private Sub Button3_Click(sender As Object, e As EventArgs) + + Dim dict As New Dictionary(Of String, String)() + Dim fs As New FileStream("Serialized.ser", FileMode.Open) + Dim MyFormatter As New BinaryFormatter() + + dict = MyFormatter.Deserialize(fs) + fs.Close() + + dict.Remove(InputBox("dsad")) + Dim MyFile As New FileStream("Serialized.ser", FileMode.Create, FileAccess.Write, FileShare.None) + MyFormatter.Serialize(MyFile, dict) + MyFile.Close() + + End Sub + + Private Sub TranslateNotes(model1 As IpfcModel, session As IpfcSession) + + Dim iModelIOwner As IpfcModelItemOwner = model1 + Dim iModelItems As IpfcModelItems + Dim IDNI As IpfcDetailNoteItem + Dim DTLs As IpfcDetailTextLines + Dim DTL As IpfcDetailTextLine + Dim DTs As IpfcDetailTexts + Dim DT As IpfcDetailText + iModelItems = iModelIOwner.ListItems(EpfcModelItemType.EpfcITEM_DTL_NOTE) + Dim countnote As Integer = 1 + ' Dim reversedDictionary = dictionary.ToDictionary(Function(x) x.Value, Function(x) x.Key) + + ProgressTextstr = "Megjegyzések listázása" + BackgroundWorker1.ReportProgress(0) + + For Each IMI As IpfcModelItem In iModelItems + + + IDNI = IMI + + DTLs = IDNI.GetTextLines(0) + DTL = DTLs.Item(0) + DTs = DTL.Texts + DT = DTs.Item(0) + + Dim dict As Dictionary(Of String, String) + Dim MyFormatter As New BinaryFormatter() + Dim fs As New FileStream("Serialized2.ser", FileMode.Open) + dict = MyFormatter.Deserialize(fs) + fs.Close() + + Dim sb As New System.Text.StringBuilder() + + + Dim TranslatedText As String = "" + Dim NewLine As String = "" + + Dim ReadFirst As Boolean = False + + + If namingsyntax = "stefani" Then + + + ElseIf namingsyntax = "audi" Then + dict = dict.ToDictionary(Function(x) x.Value, Function(x) x.Key) + + End If + + If Not IDNI.GetAttachment.GetNoteAttachment.GetType = 2 Then + For Each DLI As IpfcDetailTextLine In DTLs + Console.WriteLine(DLI.Texts.Item(0).Text.Substring(0, DLI.Texts.Item(0).Text.Length - 1)) + If dict.TryGetValue(DLI.Texts.Item(0).Text, NewLine) = True Then + + If ReadFirst = False Then + + TranslatedText = TranslatedText & NewLine + Else + TranslatedText = TranslatedText & Environment.NewLine & NewLine + End If + ' MsgBox(TranslatedText) + + Try + IDNI.SetTextLines(StrstoTextlines(TranslatedText)) + Catch ex As Exception + + End Try + ElseIf dict.TryGetValue(DLI.Texts.Item(0).Text.Substring(0, DLI.Texts.Item(0).Text.Length - 1), NewLine) = True Then + If ReadFirst = False Then + + TranslatedText = TranslatedText & NewLine + Else + TranslatedText = TranslatedText & Environment.NewLine & NewLine + End If + MsgBox(TranslatedText) + + Try + IDNI.SetTextLines(StrstoTextlines(TranslatedText)) + Catch ex As Exception + + End Try + + Else + + Exit For + End If + ReadFirst = True + Next + End If + Next + + ' MsgBox("Fordítás kész!") + + + End Sub + + Private Function StrstoTextlines(ByVal Texts As String) As CpfcDetailTextLines + Dim detailText As IpfcDetailText + Dim detailTexts As CpfcDetailTexts + Dim textLine As IpfcDetailTextLine + Dim i As Integer + Dim Strs() As String + + StrstoTextlines = New CpfcDetailTextLines + Strs = Split(Texts, Chr(10)) + + For i = 0 To Strs.Length - 1 + detailText = (New CCpfcDetailText).Create(Strs(Strs.Length - i - 1)) + detailTexts = New CpfcDetailTexts + detailTexts.Insert(0, detailText) + textLine = (New CCpfcDetailTextLine).Create(detailTexts) + StrstoTextlines.Insert(0, textLine) + Next + End Function + + + + Private Sub ChangeSheets(model1 As IpfcModel, session As IpfcSession, drawing As IpfcDrawing) + + ' ' Dim session As IpfcBaseSession = Nothing + ' Dim conn As IpfcAsyncConnection = Nothing + ' Dim model1 As IpfcModel + ' Connect(session, conn) + ' model1 = session.CurrentModel + + + Dim sheetowner As IpfcSheetOwner = model1 + Dim iFormatDrawing As IpfcModelDescriptor + Dim DrawingFormat As IpfcDrawingFormat + Dim numberofsheets As Integer = sheetowner.NumberOfSheets + Dim options As IpfcRetrieveModelOptions = Nothing + Dim oModelDescriptor As IpfcModelDescriptor = Nothing + Dim oModelDescriptorCreate As New CCpfcModelDescriptor + + Dim itableowner As IpfcTableOwner = model1 + Dim itables As IpfcTables + + + + Dim model2d As IpfcModel2D = model1 + Dim model2 As IpfcModel = Nothing + + + + + For v = 1 To numberofsheets + ' If TiffCheckBox.Checked = True Then + iFormatDrawing = sheetowner.GetSheetFormatDescr(v) + Dim oFormat As String = iFormatDrawing.GetFileName + + Dim sheetname As String = "" + + Dim regexvalue As String = "" + Dim regexvalue2 As String = "" + + Dim sheetfolder As String = "U:\proe_beallitasok\Creo4\rajzlap\stefani_magyar" + + regexvalue = "^_ALK_A" + regexvalue2 = "^_OA_A" + sheetname = sheetowner.GetSheetFormatDescr(v).GetFullName + sheetfolder = "U:\proe_beallitasok\Creo4\rajzlap\stefani_magyar" + + Dim regex As New RegularExpressions.Regex(regexvalue) + Dim regex2 As New RegularExpressions.Regex(regexvalue2) + ' MsgBox(regexvalue) + ' MsgBox(regex.IsMatch(sheetowner.GetSheetFormatDescr(i).GetFullName) & sheetowner.GetSheetFormatDescr(i).GetFullName) + + + drawing.currentsheetnumber = v + + + Dim result As MessageBoxResult = MessageBox.Show("A(z) " & v & " lapszámú rajzlap nem megfelelő formátomú, szeretnéd lecserélni?", "", MessageBoxButton.YesNo, MessageBoxImage.Warning) + If result = MessageBoxResult.Yes Then + + For Each model2view As IpfcView2D In model2d.List2DViews + If model2view.GetSheetNumber = v Then + model2 = model2view.GetModel + Exit For + End If + + Next + + + 'i = 2 + + iFormatDrawing = sheetowner.GetSheetFormatDescr(v) + + itables = itableowner.ListTables() + For Each itable As IpfcTable In itables + + If (itable.GetSegmentSheet(0) = v) Then + If itable.CheckIfIsFromFormat(v) = True Then + itableowner.DeleteTable(itable, Nothing) + End If + Else + ' MsgBox("sdad") + End If + Next + + + + ' MsgBox(sheetname & sheetfolder) + oModelDescriptor = oModelDescriptorCreate.Create(EpfcModelType.EpfcMDL_DWG_FORMAT, sheetname, "") + options = (New CCpfcRetrieveModelOptions).Create + options.AskUserAboutReps = False + oModelDescriptor.Path = sheetfolder + DrawingFormat = session.RetrieveModelWithOpts(oModelDescriptor, options) + sheetowner.SetSheetFormat(i, DrawingFormat, Nothing, model2) + MsgBox("Kérlek igazítsd meg a rajzot, majd kattints az OK-ra") + End If + + ' End If + Next + + End Sub + + Private Sub Button1_Click_1(sender As Object, e As RoutedEventArgs) Handles Button1.Click + + End Sub + + Private Sub KulonAloRajzok_Checked(sender As Object, e As RoutedEventArgs) Handles KulonAloRajzok.Checked + If KulonAloRajzok.IsChecked = True Then + isSeperateDrawing = True + Else + isSeperateDrawing = False + End If + End Sub + + Private Sub EllenorzesCheckBox_Checked(sender As Object, e As RoutedEventArgs) Handles EllenorzesCheckBox.Checked + If EllenorzesCheckBox.IsChecked = True Then + isEllNeeded = True + Else + isEllNeeded = False + End If + + End Sub + + Private Sub Label_MouseDown(sender As Object, e As MouseButtonEventArgs) + If e.ChangedButton = MouseButton.Left Then + Me.DragMove() + End If + End Sub + + Private Sub Button_Click(sender As Object, e As RoutedEventArgs) + Environment.Exit(0) + End Sub + + Private Sub SheetCheckBox_Checked(sender As Object, e As RoutedEventArgs) Handles SheetCheckBox.Checked + If SheetCheckBox.IsChecked = True Then + sheetParamNeeded = True + Else + sheetParamNeeded = False + + End If + End Sub + + Private Sub PrintCheckBox_Checked(sender As Object, e As RoutedEventArgs) Handles PrintCheckBox.Checked + If PrintCheckBox.IsChecked = True Then + printNeeded = True + Else + printNeeded = False + End If + End Sub + + Private Sub AutomaticFolderSelect_Checked(sender As Object, e As RoutedEventArgs) Handles AutomaticFolderSelect.Checked + If AutomaticFolderSelect.IsChecked = True Then + + autofolder = True + Else + autofolder = False + End If + End Sub + + Private Sub NeedPdfStroke_Checked(sender As Object, e As RoutedEventArgs) Handles NeedPdfStroke.Checked + + End Sub + + + Private Sub Subdirctories_Checked(sender As Object, e As RoutedEventArgs) Handles subdirctories.Checked + + End Sub + + + + Private Sub ParamaterChecker(model1 As IpfcModel) + Dim ParamValueDef As String + ParamNameD = "OA_MEGNEVEZES_1" + ParamValueDef = "Focsoport" + ReadParam(model1, ParamNameD, ParamValueD) + + + If ParamValueD = ParamValueDef Then + ' MsgBox(sresult) + NewWindow.ShowDialog() + End If + If Form2.ans = "ok" Then + WriteParam(model1, Form2.NewParamValue, ParamNameD) + End If + + + End Sub + + + Private Sub BackgroundWorker3_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker3.DoWork + + Threading.Thread.Sleep(1000) + Dim hWndAbout As IntPtr = FindWindowExW(IntPtr.Zero, IntPtr.Zero, Nothing, "Nyomtatás") 'use the dialog window's text in second parameter + Dim hWndOkButton As IntPtr = FindWindowExW(hWndAbout, IntPtr.Zero, "Button", "Ok") + SendMessageW(hWndOkButton, BM_CLICK, IntPtr.Zero, IntPtr.Zero) + SendMessageW(hWndOkButton, BM_CLICK, IntPtr.Zero, IntPtr.Zero) 'some buttons seem to need to receive the message a second time, not sure why??? + + + End Sub + + Private Sub Progressbar_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs) Handles Progressbar.MouseDoubleClick + MainWindow.MinHeight = 370 + MainWindow.MaxHeight = 370 + + End Sub + + Private Sub CreateDocument_XLS_Click(sender As Object, e As RoutedEventArgs) Handles CreateDocument_XLS.Click + Dim session As IpfcBaseSession = Nothing + Dim conn As IpfcAsyncConnection = Nothing + Dim model1 As IpfcModel + Dim FileNameMod As String + Connect(session, conn) + + model1 = session.CurrentModel + folderpicked = Path.GetTempPath + FileNameMod = model1.FileName + FileNames.Add(FileNameMod) + conn.Disconnect(1) + + End Sub + + Private Sub PrintExcel(FileNameMod As String) + xlApp = New Excel.Application + + + xlWorkBook = xlApp.Workbooks.Open(FileNameMod) + xlWorkSheet = xlWorkBook.Worksheets("AUDI-Bemi-Stückliste") + xlApp.DisplayAlerts = False + + xlWorkSheet.PrintOutEx( + , + , + Copies:=1, + Preview:=False, + Collate:=True, + IgnorePrintAreas:=True) + + + End Sub + + Private Sub PrintExcelCheckBox_Checked(sender As Object, e As RoutedEventArgs) Handles PrintExcelCheckBox.Checked + + If PrintExcelCheckBox.IsChecked = True Then + excelPrintNeeded = True + Else + excelPrintNeeded = False + End If + End Sub + + Private Sub Test_Click(sender As Object, e As RoutedEventArgs) Handles test.Click + Dim session As IpfcBaseSession = Nothing + Dim conn As IpfcAsyncConnection = Nothing + Connect(session, conn) + + Dim iWindows As IpfcWindows + iWindows = session.ListWindows + + For Each iWindow As IpfcWindow In iWindows + iWindow.Close() + Next + + session.EraseUndisplayedModels() + conn.Disconnect(1) + End Sub + +End Class \ No newline at end of file diff --git a/Dokumentáció Készítő 3/Module1.vb b/Dokumentáció Készítő 3/Module1.vb new file mode 100644 index 0000000..624aaa7 --- /dev/null +++ b/Dokumentáció Készítő 3/Module1.vb @@ -0,0 +1,143 @@ +Imports System.IO + +Module Purge + + Public Sub Purge(PathToPurge As String, FilesToKeepNum As Integer, FileType As String, subdir As Boolean, copyonly As Boolean, TempTxtFile As String) + Console.WriteLine(".........") + Console.WriteLine("Folder: " + PathToPurge) + My.Computer.FileSystem.WriteAllText(TempTxtFile, Environment.NewLine + ".........", True) + + My.Computer.FileSystem.WriteAllText(TempTxtFile, Environment.NewLine + "Folder: " + PathToPurge, True) + + + Dim files() As String + Dim pathss As String = PathToPurge + ' Dim FileType As String = ".prt" + + + files = Directory.GetFiles(pathss, "*" & FileType & "*", SearchOption.TopDirectoryOnly) + Dim NumberOfFilesDeleted As String = 0 + Dim FirstCharacter As Integer + Dim FirstCharacter_2 As Integer + Dim SameFiles As New List(Of String) + Dim SameFileExtentensions As New List(Of Integer) + Dim FileExtention As New List(Of String) + Dim FilesToKeep As New List(Of String) + Dim FilesToRename As New List(Of String) + Dim FilesToDelete As New List(Of String) + + 'Fileok megszámolása + Dim FileCount As Integer = files.Count + + + + For i = 0 To FileCount - 1 + + + ' Console.WriteLine(FileType) + FirstCharacter = files(i).ToLower.IndexOf(FileType) + ' FirstCharacter_2 = files(i - 1).ToLower.IndexOf(FileType) + If i <> 0 Then + FirstCharacter_2 = files(i - 1).ToLower.IndexOf(FileType) + ' Console.WriteLine(files(i)) + ' Console.WriteLine(FirstCharacter) + ' Console.WriteLine(Strings.Left(files(i), FirstCharacter)) + + ' Console.WriteLine(Strings.Left(files(i - 1), FirstCharacter)) + ' Console.WriteLine(i) + + + If Strings.Left(files(i), FirstCharacter) <> Strings.Left(files(i - 1), FirstCharacter_2) Then + ' Console.WriteLine(files(i)) + SameFiles.Add(files(i)) + + Else + 'IDE AZT HA + + + End If + + Else + SameFiles.Add(files(i)) + End If + + Next + + ' Console.WriteLine(SameFiles.Count) + Dim EachSamefiles() As String + For Each SameFile As String In SameFiles + + Dim samefilesname As String = Path.GetFileNameWithoutExtension(SameFile) + Console.WriteLine(samefilesname) + EachSamefiles = Directory.GetFiles(pathss, samefilesname & "*.*", SearchOption.TopDirectoryOnly) + FirstCharacter = SameFile.LastIndexOf(FileType) + ' If Left(SameFile, 108) = Left("Z:\Projekt-Rajzok\SHM-8001...SHM-8100\SHM-8020 - Umbau für G25 Interim\02 - Modellek\shm-9999-010-222-222-01", 108) Then + Try + For Each EachSameFile As String In EachSamefiles + + SameFileExtentensions.Add(CInt(Mid(EachSameFile, FirstCharacter + 6))) + + Next + Catch ex As Exception + + End Try + + + SameFileExtentensions.Sort() + SameFileExtentensions.Reverse() + + + For i = 0 To SameFileExtentensions.Count - 1 + + If i < FilesToKeepNum Then + + FilesToRename.Add(Strings.Left(SameFile, FirstCharacter) & FileType & "." & CStr(SameFileExtentensions(i))) + + Else + FilesToDelete.Add(Strings.Left(SameFile, FirstCharacter) & FileType & "." & CStr(SameFileExtentensions(i))) + + End If + + Next + + + FilesToRename.Reverse() + + + For Each asd In FilesToDelete + My.Computer.FileSystem.DeleteFile(asd) + NumberOfFilesDeleted = NumberOfFilesDeleted + 1 + + My.Computer.FileSystem.WriteAllText(TempTxtFile, Environment.NewLine + "File deleted:" + asd, True) + Console.WriteLine("File deleted: " + asd) + ' Console.WriteLine(asd) + Next + + + For Each asd In FilesToRename + + FirstCharacter = asd.ToLower.IndexOf(FileType) + 'Console.WriteLine(asd) + My.Computer.FileSystem.WriteAllText(TempTxtFile, Environment.NewLine + "File renamed: " + asd + "to: " + Strings.Left(asd, FirstCharacter + 5) & FilesToRename.IndexOf(asd) + 1, True) + Console.WriteLine("File renamed: " + asd + "to: " + Strings.Left(asd, FirstCharacter + 5) & FilesToRename.IndexOf(asd) + 1) + 'Console.WriteLine(Strings.Left(asd, FirstCharacter + 5) & FilesToRename.IndexOf(asd) + 1) + If asd <> Strings.Left(asd, FirstCharacter + 5) & FilesToRename.IndexOf(asd) + 1 Then + + My.Computer.FileSystem.RenameFile(asd, Path.GetFileName(Strings.Left(asd, FirstCharacter + 5) & FilesToRename.IndexOf(asd) + 1)) + + End If + + + Next + + FilesToRename.Clear() + FilesToDelete.Clear() + SameFileExtentensions.Clear() + + Next + + SameFiles.Clear() + Console.WriteLine("...") + End Sub + +End Module diff --git a/Dokumentáció Készítő 3/My Project/AssemblyInfo.vb b/Dokumentáció Készítő 3/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..fbd043b --- /dev/null +++ b/Dokumentáció Készítő 3/My Project/AssemblyInfo.vb @@ -0,0 +1,59 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices +Imports System.Globalization +Imports System.Resources +Imports System.Windows + +' General Information about an assembly is controlled through the following +' set of attributes. Change these attribute values to modify the information +' associated with an assembly. + +' Review the values of the assembly attributes + + + + + + + + + +'In order to begin building localizable applications, set +'CultureYouAreCodingWith in your .vbproj file +'inside a . For example, if you are using US english +'in your source files, set the to "en-US". Then uncomment the +'NeutralResourceLanguage attribute below. Update the "en-US" in the line +'below to match the UICulture setting in the project file. + +' + + +'The ThemeInfo attribute describes where any theme specific and generic resource dictionaries can be found. +'1st parameter: where theme specific resource dictionaries are located +'(used if a resource is not found in the page, +' or application resource dictionaries) + +'2nd parameter: where the generic resource dictionary is located +'(used if a resource is not found in the page, +'app, and any theme specific resource dictionaries) + + + + +'The following GUID is for the ID of the typelib if this project is exposed to COM + + +' Version information for an assembly consists of the following four values: +' +' Major Version +' Minor Version +' Build Number +' Revision +' +' You can specify all the values or you can default the Build and Revision Numbers +' by using the '*' as shown below: +' + + + diff --git a/Dokumentáció Készítő 3/My Project/Resources.Designer.vb b/Dokumentáció Készítő 3/My Project/Resources.Designer.vb new file mode 100644 index 0000000..e7ecddc --- /dev/null +++ b/Dokumentáció Készítő 3/My Project/Resources.Designer.vb @@ -0,0 +1,62 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:$clrversion$ +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My.Resources + + 'This class was auto-generated by the StronglyTypedResourceBuilder + 'class via a tool like ResGen or Visual Studio. + 'To add or remove a member, edit your .ResX file then rerun ResGen + 'with the /str option, or rebuild your VS project. + ''' + ''' A strongly-typed resource class, for looking up localized strings, etc. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Returns the cached ResourceManager instance used by this class. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("$safeprojectname$.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Overrides the current thread's CurrentUICulture property for all + ''' resource lookups using this strongly typed resource class. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set(ByVal value As Global.System.Globalization.CultureInfo) + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/Dokumentáció Készítő 3/My Project/Resources.resx b/Dokumentáció Készítő 3/My Project/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Dokumentáció Készítő 3/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Dokumentáció Készítő 3/My Project/Settings.Designer.vb b/Dokumentáció Készítő 3/My Project/Settings.Designer.vb new file mode 100644 index 0000000..9588aa9 --- /dev/null +++ b/Dokumentáció Készítő 3/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) + +#Region "My.Settings Auto-Save Functionality" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.Dokumentáció_Készítő_3.My.MySettings + Get + Return Global.Dokumentáció_Készítő_3.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/Dokumentáció Készítő 3/My Project/Settings.settings b/Dokumentáció Készítő 3/My Project/Settings.settings new file mode 100644 index 0000000..40ed9fd --- /dev/null +++ b/Dokumentáció Készítő 3/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Dokumentáció Készítő 3/Serialized2.ser b/Dokumentáció Készítő 3/Serialized2.ser new file mode 100644 index 0000000000000000000000000000000000000000..1670e5b88ebdd817edbe54bf91cbd7b12475e0e8 GIT binary patch literal 3760 zcmd^C|7#m%7|*TUtz~m=x^-Xb#yh%oo#wJj(tKI8%G$GUE>XrY0l0_zRPnmg%-Qo3dET<VKt zDy331QBEYI7vhslPhVIGKTPtKL9BC65aiH|-CU)d@u3`b>II|A9z$5m)NHXOYH%ks z5E>YI`$3x$Y)TV27EK%=9$*%L3Rby6$ z{PR-Ac0mfGstR;UBbOkqPS<6wOR6nSUAwW9lcec6$CN*?%VMY1A+Q{nrxUApXrad?`08nFlM2}2rdL&I;gH_eX0X?0qblWVm9nmayar28R&Mi&hnI9P(V zSa*pYj%j*0PI7IM(slJP024l-;;n(j$pjW0Pus%kIVnF&-Xm~3fdirDZOBDObzRq@ zFKFzb|h5~f3iF5}Gf)*TCRld5-@!~1*bO#m6~4>+0DwNzY&dkTQ#i$SvR}71yq_xGCX|A@chD+?a#YoXM8K+j4S~Xf?8TD!SoS>xS zt#u7&75i7WyQFP6UEAvT<(yHzmi%F0pOF>UvMOX+b}1nx!y$^bD-lkJ=JT5@s%mgR zgZ4_%k=;qK1)KLhAEFs3@!;w?D__ZJ&x7ThG;aI$HcE`&KWR+W0grEk_1^~bRT;V( zd+lHTgfZnyIbjS8$AWcMIWrs=T}5UuEs|7HyQs!tJ~0i+K_Q_nNKl}$N74U55fh6BT+viA8dZ}3jLkE2l+_^uiBt|KP5 zVw4-`AE;p*TB0XVG3o`_Pv*UKm(|+TK|eT9fPRefnIwA_;QLB8j%H2hdTv>L4#oq4 zC~b}^p7ebl=EDdCqT}E-*D$M45~Bv$R$qW=ILB&2mm!>=NSBKkKPp`;8Z3a&skn%I z8rCDrltaU}A`gtp$C6_fsFA`dwJgl!i2R`6Yo@nRch#(5cu}Ng!*qpiA~$XzGs<1b zFbCB50(Bg=Q&04=7)_>$R@KxTuoJ~kZ*x(!LO&XyHiQClA+JHs1GMsyoZ=<8J=HHN z`Q}tI4qZv;WMPS_^FVB>iV(qmyYiu=S^zLy?5vUss(opBmZ0={*~j`bWG0(0W(x%} zJ6j|ZvzKSi5p@wBX9cpv+BQ^xxZbVRmP2;}E4Sr5OYkB&|E%(->YpZ#k|3ywmw`g@ z_jnt>GFO3hg*oD^O_VhQyX&ic5XQ%ShGR;N&u1M`+1${cwp8T{%Lniqpia5>v}? k3>Se$jj}FtP2nuwgc{x*EMry3I%;68ZJR<1?8e@|0oLajcK`qY literal 0 HcmV?d00001 diff --git a/Dokumentáció Készítő 3/Window1.xaml b/Dokumentáció Készítő 3/Window1.xaml new file mode 100644 index 0000000..9634382 --- /dev/null +++ b/Dokumentáció Készítő 3/Window1.xaml @@ -0,0 +1,31 @@ + + + + + +