From 02c399eaa0df00f638cb35c82e249b62ff731e2a Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Thu, 9 Apr 2020 08:00:11 +0000 Subject: [PATCH] DataBeam : - scorporato in Beam e BeamWall. --- Beam.ini | 13 +--- ClearProcess.lua | 57 --------------- DisableFeatures.lua | 48 ------------ EnableFeatures.lua | 48 ------------ HideAll.lua | 40 ---------- Images/ClearProcess.png | Bin 1132 -> 0 bytes Images/DisableFeatures.png | Bin 303 -> 0 bytes Images/EnableFeatures.png | Bin 303 -> 0 bytes Images/HideAll.png | Bin 775 -> 0 bytes Images/Process.png | Bin 901 -> 1061 bytes Images/ShowAll.png | Bin 604 -> 0 bytes Images/ShowBuilding.png | Bin 785 -> 0 bytes Images/ShowSolid.png | Bin 1172 -> 0 bytes LuaLibs/ProcessLapJoint.lua | 141 ++++++++++++++++++++++++++++-------- ShowAll.lua | 18 ----- ShowBuilding.lua | 63 ---------------- ShowSolid.lua | 117 ------------------------------ 17 files changed, 115 insertions(+), 430 deletions(-) delete mode 100644 ClearProcess.lua delete mode 100644 DisableFeatures.lua delete mode 100644 EnableFeatures.lua delete mode 100644 HideAll.lua delete mode 100644 Images/ClearProcess.png delete mode 100644 Images/DisableFeatures.png delete mode 100644 Images/EnableFeatures.png delete mode 100644 Images/HideAll.png delete mode 100644 Images/ShowAll.png delete mode 100644 Images/ShowBuilding.png delete mode 100644 Images/ShowSolid.png delete mode 100644 ShowAll.lua delete mode 100644 ShowBuilding.lua delete mode 100644 ShowSolid.lua diff --git a/Beam.ini b/Beam.ini index f296cf4..bdd7342 100644 --- a/Beam.ini +++ b/Beam.ini @@ -3,13 +3,6 @@ BtlEnable=1 BaseDir=C:\EgtData\Beam BtlExec=BatchProcess.lua Button1=Process.lua,Images\Process.png,Lavora Travi -Button2=ClearProcess.lua,Images\ClearProcess.png,Cancella Lavorazione Trave -Button3=Swap.lua,Images\Swap.png,Scambia estremi trave -Button4=Rotate.lua,Images\Rotate.png,Ruota trave -Button5=DisableFeatures.lua,Images\DisableFeatures.png,Disabilita lavorazioni -Button6=EnableFeatures.lua,Images\EnableFeatures.png,Abilita lavorazioni -Button7=BeamMachinings,Images\BeamMachinings.png,Lista lavorazioni -Button8=HideAll.lua,Images\HideAll.png,Nascondi tutte le travi non selezionate -Button9=ShowAll.lua,Images\ShowAll.png,Visualizza tutte le travi -Button10=ShowSolid.lua,Images\ShowSolid.png,Visualizza/Nascondi solido -Button11=ShowBuilding.lua,Images\ShowBuilding.png,Visualizza struttura/Visualizza pezzi +Button2=Swap.lua,Images\Swap.png,Scambia estremi trave +Button3=Rotate.lua,Images\Rotate.png,Ruota trave +Button4=BeamMachinings,Images\BeamMachinings.png,Lista lavorazioni diff --git a/ClearProcess.lua b/ClearProcess.lua deleted file mode 100644 index 63072cc..0000000 --- a/ClearProcess.lua +++ /dev/null @@ -1,57 +0,0 @@ --- ClearProcess.lua by Egaltech s.r.l. 2020/03/30 --- Se la trave non è parte di un gruppo di lavoro, cancello geometrie aggiunte - --- Intestazioni -require( 'EgtBase') -_ENV = EgtProtectGlobal() -EgtEnableDebug( false) - --- Recupero la prima trave selezionata -local ObjId = EgtGetFirstSelectedObj() -local PartId = EgtGetParent( EgtGetParent( ObjId or GDB_ID.NULL) or GDB_ID.NULL) -if not PartId then return end - --- Recupero appartenenza a gruppi di lavoro -local vMGrps = {} -local sLst = EgtGetInfo( PartId, GDB_SI.LIST) -if sLst then - vLst = EgtSplitString( sLst) - if vLst then - for i = 1, #vLst do - local MGrpId = EgtGetParent( EgtGetParent( EgtGetParent( vLst[i]) or GDB_ID.NULL) or GDB_ID.NULL) - if MGrpId then - table.insert( vMGrps, EgtGetName( MGrpId)) - end - end - end -end - --- Chiedo conferma della cancellazione -if #vMGrps > 0 then - local sOut = 'I seguenti gruppi di lavoro verranno cancellati :\n ' .. table.concat( vMGrps, ',') .. '.\nConfermi ?' - if not EgtOutBox( sOut, 'Cancella Lavorazioni', 'QUESTION') then - return - end -end - --- Cancello i gruppi di lavoro e le geometrie aggiuntive relative -for i = 1, #vMGrps do - EgtRemoveMachGroup( EgtGetMachGroupId( vMGrps[i]) or GDB_ID.NULL) - EgtErase( EgtGetFirstNameInGroup( PartId, vMGrps[i]) or GDB_ID.NULL) -end - --- Cancello eventuali altre geometrie aggiuntive per gruppi di lavoro -local LayId = EgtGetFirstLayer( PartId) -while LayId do - local NextLayId = EgtGetNextLayer( LayId) - if EgtGetInfo( LayId, GDB_SI.MGRPONLY) then - EgtErase( LayId) - end - LayId = NextLayId -end - --- Aggiorno interfaccia grafica -EgtDeselectPartObjs( PartId) -EgtDraw() - --- end \ No newline at end of file diff --git a/DisableFeatures.lua b/DisableFeatures.lua deleted file mode 100644 index d6d781e..0000000 --- a/DisableFeatures.lua +++ /dev/null @@ -1,48 +0,0 @@ --- DisableFeatures.lua by Egaltech s.r.l. 2019/11/22 --- Gestione disabilitazione delle feature selezionate - --- Intestazioni -require( 'EgtBase') -_ENV = EgtProtectGlobal() -EgtEnableDebug( false) - -if EgtGetSelectedObjCount() == 0 then - EgtOutBox( 'Nessuna lavorazione selezionata', 'Disabilita lavorazioni', 'ERROR') -end - --- Elenco dei pezzi interessati -local vParts = {} - --- Disabilito features selezionate -local nId = EgtGetFirstSelectedObj() -while nId do - -- verifico sia una feature - local nParentId = EgtGetParent( nId) - if EgtIsLayer( nParentId or GDB_ID.NULL) and EgtGetName( nParentId) == 'Processings' and - EgtGetInfo( nId, 'GRP', 'i') and EgtGetInfo( nId, 'PRC', 'i') then - EgtSetInfo( nId, 'DO', 0) - EgtSetColor( nId, Color3d( 160, 160, 160)) - local nAuxId = EgtGetInfo( nId, 'AUXID', 'i') - if nAuxId then - EgtSetColor( nId + nAuxId, Color3d( 160, 160, 160)) - end - table.insert( vParts, EgtGetParent( nParentId)) - end - nId = EgtGetNextSelectedObj() -end - --- Cancello eventuale solido dei pezzi interessati -table.sort( vParts) -local PrevPartId = GDB_ID.NULL -for i = 1, #vParts do - if vParts[i] ~= PrevPartId then - local SolidLy = EgtGetFirstNameInGroup( vParts[i], 'Solid') - EgtErase( SolidLy or GDB_ID.NULL) - PrevPartId = vParts[i] - end -end - -EgtDeselectAll() -EgtZoom( SCE_ZM.ALL) - --- end \ No newline at end of file diff --git a/EnableFeatures.lua b/EnableFeatures.lua deleted file mode 100644 index 517c5d3..0000000 --- a/EnableFeatures.lua +++ /dev/null @@ -1,48 +0,0 @@ --- DisableFeatures.lua by Egaltech s.r.l. 2019/11/22 --- Gestione abilitazione delle feature selezionate - --- Intestazioni -require( 'EgtBase') -_ENV = EgtProtectGlobal() -EgtEnableDebug( false) - -if EgtGetSelectedObjCount() == 0 then - EgtOutBox( 'Nessuna lavorazione selezionata', 'Abilita lavorazioni', 'ERROR') -end - --- Elenco dei pezzi interessati -local vParts = {} - --- Abilito features selezionate -local nId = EgtGetFirstSelectedObj() -while nId do - -- verifico sia una feature - local nParentId = EgtGetParent( nId) - if EgtIsLayer( nParentId or GDB_ID.NULL) and EgtGetName( nParentId) == 'Processings' and - EgtGetInfo( nId, 'GRP', 'i') and EgtGetInfo( nId, 'PRC', 'i') then - EgtRemoveInfo( nId, 'DO') - EgtResetColor( nId) - local nAuxId = EgtGetInfo( nId, 'AUXID', 'i') - if nAuxId then - EgtResetColor( nId + nAuxId) - end - table.insert( vParts, EgtGetParent( nParentId)) - end - nId = EgtGetNextSelectedObj() -end - --- Cancello eventuale solido dei pezzi interessati -table.sort( vParts) -local PrevPartId = GDB_ID.NULL -for i = 1, #vParts do - if vParts[i] ~= PrevPartId then - local SolidLy = EgtGetFirstNameInGroup( vParts[i], 'Solid') - EgtErase( SolidLy or GDB_ID.NULL) - PrevPartId = vParts[i] - end -end - -EgtDeselectAll() -EgtZoom( SCE_ZM.ALL) - --- end \ No newline at end of file diff --git a/HideAll.lua b/HideAll.lua deleted file mode 100644 index d8c7e8a..0000000 --- a/HideAll.lua +++ /dev/null @@ -1,40 +0,0 @@ --- HideAll.lua by Egaltech s.r.l. 2019/03/16 --- Gestione nascondimento di tutte le Travi non selezionate - --- Intestazioni -require( 'EgtBase') -_ENV = EgtProtectGlobal() -EgtEnableDebug( false) - --- se non ci sono pezzi selezionati, esco -if not EgtGetFirstSelectedObj() then return end - --- nascondo tutti i pezzi non selezionati -local bCurrPL = false -local nPartId = EgtGetFirstPart() -while nPartId do - local nStat = GDB_ST.ON - local nLayId = EgtGetFirstLayer( nPartId) - while nLayId do - local nEntId = EgtGetFirstInGroup( nLayId) - if nEntId then - nStat = EgtGetCalcStatus( nEntId) - break - else - nLayId = EgtGetNextLayer( nLayId) - end - end - if nStat ~= GDB_ST.SEL then - EgtSetMode( nPartId, GDB_MD.HIDDEN) - else - EgtDeselectPartObjs( nPartId) - if not bCurrPL then - bCurrPL = EgtSetCurrPartLayer( nPartId, EgtGetFirstLayer( nPartId)) - end - end - nPartId = EgtGetNextPart( nPartId) -end - -EgtZoom( SCE_ZM.ALL) - --- end \ No newline at end of file diff --git a/Images/ClearProcess.png b/Images/ClearProcess.png deleted file mode 100644 index d627bcc884bd41a13847d00280f3a0add0274bd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmV-y1e5!TP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf00v@9M??Vs0RI60 zpuMM)00007bV*G`2jK!34>dBM8=9N|00Z1fL_t(oN4=IyXcIvgfd5U@s0G3L>cLu5 z3SzNPp`{>5HB}2z@PUeFZ+h`&1wB?!iwC{byMo|B>)Wc;h^JUFMbr2SOBz$?s#m|h6SwLH?5G9!M+T?|=> z*ux%G2*;Bh9F;O7e&;^hIy@Mv8f++V2z}|x<6%y2 zdl)xQ7ka9cNzL^DWfmj#W8nAu+2d@$l5^_C4P4wnnLx-0R#so4%)<5QbECC3L7Bz! z3rnGg6;dbkd~XU8{p@bAK&CMXsR7SZ1P$Ve)5Of zCUs-GTCvItarhK}M|(sjm6}V)&i9WA_&Fl-ZFPr5!YHbbQf84lzm;!iwl?yujM3K7 z|cU&l4*bV^tq!=rosD>;NwZ{9Phs1?hv+fkYXL#+blG& zKN%d?-X>kCjXI%cFZj7^2k%#ck5A`$r8e%`DbCpFVn4)lxeDxG20iecsFXxkYnc6# y9nW#_ab(zWWkuIE%ptn*jOgc{Ial=m55QkCGHLdw85(f_0000E|;>5`+)j**=o-U3d5r>oi{Qqx%IDy%Rr&(ab zgUKmR?iN3&?^(?fcJk$aQ@0Qg-ghsOfno_JOWb5lU#$pq=Y3Z6>VLX8d(PD}3s(Q` zVC?CRKQvqNfAUdD_Si3q))NXpp8kKLW>u?*ir4?iZw$Pgdmc?V^o*g%xntEu_qAJG zzM8oDwr>ouZseD8pZJ8)&29F7NuJ^lrW+&MN@qzKT|9o`M27J#FNxACD;5K-oN;>P s|NsBx6_>w}>a|;x-E{Gxs}dsv-#c@~53^L+f&O6dboFyt=akR{0AG%H$p8QV diff --git a/Images/EnableFeatures.png b/Images/EnableFeatures.png deleted file mode 100644 index 1753231062b8ea4643c696682be309fa62f6fe1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^svyk41|*NpQ(y*CY)RhkE)4%caKYZ?lYt_f1s;*b z3=DinK$vl=HlH+5kiEpy*OmPdi=>E|nUKT6JwTy7o-U3d5r>oi{Qqx%IDy%Rr&(ab zgUKl=DO-NdKWMH=`N`elge_AIUabgp@3qP@ um>&G!ez(Ph;Idvf`HQ9pUwlxS$iPrwW>9}J$ZelF{r5}E*Dka~*% diff --git a/Images/HideAll.png b/Images/HideAll.png deleted file mode 100644 index 3ed46afec1cf4f6c1311b307887267fc1465c131..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 775 zcmV+i1Ni)jP)C=RACgxe`l`qp)=}?4hj|q8bxkg)c?>TNP=)zP|HA9L4QJvmeMX-v}ut= zZK8IyGH4}KVnk+O;i%xp=;(YsEqX891~X=w@fLXC<#NA;^KJ43x4R2n9-k@_7y@=`ywvN>53e2adU{q<{_}4rC6S3(z`EQ@0yBp#gkOG4(q~`?=yq9Jk@Usg&Nv{ytSJYcaQ)bteab~1IN^?~VF+PA zs3`CqC;**d2w^{{EU@Ju27*E`vkSlq5OXUIbW3{SKeu?#&a@{v4zRn*(%^(XG`xA% z*v;fm4o%fu9|A^!JqHy9-uiu)e{Pd8F=`ct0c3n#FYu&qTu=WR>cAJw&I3I_63u7wguLrDFDQh;9>yd#fHJ}WQ<3%RCb|9r zF131e@r95J3ZcBlj@Q919wm&5%Cu2rz{-pk^YtmSk@8)3LMQ`iNss+|g=t%kM0rDr znD*#YiBzS^aO%1`>luye&XlBS;50B21Oiz6$W^U#wz5UPw&~R#*`;rc)$0h>?5~-% zDSMWPa1NtVgx8rHx>E0G)Yfb>?TWBOk&BjOJ04}e5l3h`)a{qdoa`r8H8y8+EZn(P zzauoge3l*>CplQ4N}2pZN?VJM0wSq(goJa1hb@Hy@XRKFYDKzRk0Z1csu4#B`@3&n zNBGl}(CYZzXcTIuvOuwRGzzt+4jPR@g*y7zKW2c-y*B!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000ie z000ie0hKEb8vpSp(L$&e5d0;!5!6;38*83Wkcw|rto>7%r=Z9G2|I+$oo1Qe+H%C=7&(!#Kl zf{7LPD9|`&e1C!2;Pqrmih>nB-4#tlcW87`yrD_qyEvr9f|?R}`nXJD^;Oohv^8dA zDn{_ApsXd5G5Rd8r*Ovsg<+>rBt8OKG3C16<4pSZ@VbwO}|D5~3Sv9e-#4D$3@FABaiHh~tl*KzlPL zx++tZBSb-xam}e2Y8}T%1$Zz^ot3*QowQBiFfHZzHU?+kcCt2;BlLoVDueYH@Z*!h zQ`oVu+Ht|t%}0ZXg3_Hc1xlJV09h;MATxcQcZbLIc@oxS%<}&L(lI%8U4k5kY7k`r zGb4SuxqrQM!{H7*TS76E;_cY@IlvnL))atsIabKY&4oh`@9|!M`jjmYNK@Mx&aF^# z^hK1STPS8)s;I~TlRh8V($YYdWsoEZWDI)OChYBXgOp-{{nzK?lET^WHJ->Rz!w#p z&4yj{rw*Y}P>3LL#Xrv$6hnk=MkD5PN`$gNDu3!+_@bMX%#0R}6?0NNTh>&pa+1;c z5SRl@8g*g*P<=7dEL-*bx%F-V(7O^#Ps$_JX>sPZ2=~v zT9I5JK<8yBk%S1-QW`(L_w$yjLkm*KxCivD)bPG}a8etKMnY1QttmW5+4oPEB|Wb{ z@_#M1r21GR4Eh?A^XxXD$hHiyFa_N_hM0v{J#LuBhs5v{jAm>sKf=315Q|=Vc4>X+ z?ZtuL>w?J4@?6_`v+lm>i5in8^9mM;fc0pbg4L?tx|47Ha173g9cwk&XP+J zG^be5M67Eqij+vaYa~^Q(2JR!JLyu%AmL}*G{C*DIfp<00{s| KMNUMnLSTY-G3jdn delta 859 zcmV-h1El<=2!#ibBo78+OGiWi{{a60|De66laW3be*gz`Nliru;shBL1v8g}S~LIv z0}@F@K~z}7?U&C_6G0TmKeKIZfg%k^0Od!3o)ixd5)U3QQ4 z=3t}c;@U&sXd%aHn@_HC%4%~m_PTg?k)sWteSRHYjwuzxTT`$|ZJ>@qF(IXNKDhDC zBmjw)5u<0YDwU)h6nm~S`-s&_(+%8}ExX|Ie_&4FA|)rj22gf({{F;lF_;}-#HIx8 z4YV()%{a{$pH55_hqGKQG(djb5o_xm#iT>`a+3()j;k^nlYcIYzOJ`Z%Ypq^@E$s^E& ze?WeCMqB?`>hyq_kW7mJDeD|25Wv`Td3~2s`#HLe0piIt>Fo@<5Jr9Jyuo4``1OZg z0DdzZmy82k2-9E%Dqp7rxbdWq1&dM{0n&VoAYWkG8*>qmg^hoVRt9ohJj-V=Qixp3 zaI+te2i>}e;$pF?piH%vw&(;TqLj6`e@DwO;OgDyGJ1J0IxT<@hElrC3!>FeuX!`c zg*)#x4PPp!mdJ~fmq-}p08WSac_6ohO18dDx7pS$@mo&NKEGCY=1B5dK&5;vq_QAD znksE(IJvMvcS5F- zbWn4@=^gMlFonYlNxp_;RH6VKA$L4}AFRdc-AEe%I~E`Sp%C{5c&|$%ESejrYAvG@ zO=SsZwE~QJ0{eP+WsXa$)PI}joTforh_43<1<=$=loi6usogN91$?B2`}t%o8KV#7 z&FXHRFNFkH+F&cX$XYUsYBwygLCzUXr7qaI8^~%VR5>8m*I`GN+r;>+J)AE0209q1 l!}!EHhB}5ihWekN{sK+1-QlMPJ!1d>002ovPDHLkV1g#zg{%Mo diff --git a/Images/ShowAll.png b/Images/ShowAll.png deleted file mode 100644 index 37a0de81cbc9815383357241a2f7d18c75c18aba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 zcmV-i0;BzjP)q39+TZwRi7ZA3+^Fa#v>gf|aPE!JjsjAZGerNXl5QNFe zAqaI=f_cduf^7cwtv-;K`#mlpBoVwhd{eLdfiQi9C#hjggcv}fA|?3pf!ot}^kZR% z=RuEdIigwd8E;hiAi0|2!)Psrx2Wu q?_Us{g#y?Pg40l=zb>Otw(BPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D00(qQO+^Rd1Q`_r zFj&y62mk;88FWQhbW?9;ba!ELWdLwtX>N2bZe?^JG%heMGBNQWX_Wu~0&Yn}K~z{r z)tA3+6fqFS51s%)krzpbI5SvD3bP{fS3!zEZAPC4ij2 z`AK8juI3L<0p^;;5}o5eB%19&xVE4`PW#F+ue!5sCTOR{m z)AKYS5;vny#xItDEe_#xLI}>!3s4f?3cpzOll`D){W&y6yOB<)-c1I!8+bVSPyjlg z|B4oDUa|qUTOJhN%wN1&*>0_e!WMfPn^%?OX-+Ye+&(=Qs`N(sIbI$PbbPiTc#=~A zwM^#nd1=rIP|Q<2AByF{{#YGIbBdt~&s5;x;DQ+Y zJEdm|H84Vx&Qy}vo6n#yuR(qe#kX%T=ZT^8=g)HPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D00(qQO+^Rd1Q`_p zEeYVFQvd(}8FWQhbW?9;ba!ELWdLwtX>N2bZe?^JG%heMGBNQWX_Wu~1Mx{jK~z{r z#h1x$6fqEnduFoCgb)Rkut#D^0tgO4f&(XRIr1FC@&dd~-+2ylXbFi6`z?eJh?HGf zNG8Mo+vOhH?e3lhL`h%TU3ORfUAEhqsNHU7D784LNUM8`lPO-hith_@9*UD8X>}}4 zs?tg=_-x4HWI|dUi<6qPI%WrS0!#9CGx}s`HKWhCE`y!+tC_a)hn_96@QXI2rOgkT z29}3a;-zR?H~=lMrS2`kndgfvP;JNTV4ek|9Qd&8pEE7?OV9iPF3$p1~m@!+BAB6WO&B_-fdJ|0S`)rJOFQ#L8 zYs(g7@D0J=;{MEFZuU*aRDr z&NUOo2f}_H_}{0CV61px7DoAE@zxfPaJ3MAS53h2|yk4%)NeKA<>GErpF>s(+w=GZb`C zQp4gtM3NOGtb$?1vuG8*b+qRJ#oPo{^{^gy4gGxXuU1X}5kv4j2>Fg=tP0msMcuP% zOVL9x0a(de8iZ5K4T7qv7{)&UorVd>x7KT_23U=n2-`*b5zsqQ3#9PNU{1ztnRtT` zbRsx^+i@x{Nz%GZ%>9tAOjSj(&b~PBSrkAm~(RVLX#ok&J7Mi@YII z#UB!j;EM9;s<-{G-U6J~hOD)g6R(7zGl&+(Zx??ho6iC(vZ#dV zjqnsu5I2I^3>3S7ey+*oOxyrLXCYb~cPAIOt{T_T%V-0B9#h=CHuUjj^i+0HwV<;U zEsO^=4{)xvd*A`?c>-`l@Oa|6$tmRGHydFHW441aErQOj(c(6d>xh-&*Z&-tOz%0Jp%@lHXJ6>5aSc%**AQXb m{KIJeZz??}gU)eq diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 8c1a175..11907c3 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -1,4 +1,4 @@ --- ProcessLapJoint.lua by Egaltech s.r.l. 2020/03/31 +-- ProcessLapJoint.lua by Egaltech s.r.l. 2020/04/06 -- Gestione calcolo mezzo-legno per Travi -- 2019/10/08 Agg. gestione OpenPocket. @@ -43,6 +43,7 @@ function ProcessLapJoint.Identify( Proc) return ( (( Proc.Grp == 3 or Proc.Grp == 4) and Proc.Prc == 16) or (( Proc.Grp == 3 or Proc.Grp == 4) and Proc.Prc == 17) or (( Proc.Grp == 3 or Proc.Grp == 4) and Proc.Prc == 20) or + (( Proc.Grp == 3 or Proc.Grp == 4) and Proc.Prc == 25) or (( Proc.Grp == 3 or Proc.Grp == 4) and Proc.Prc == 30) or (( Proc.Grp == 3 or Proc.Grp == 4) and Proc.Prc == 32) or (( Proc.Grp == 3 or Proc.Grp == 4) and Proc.Prc == 33) or @@ -83,6 +84,8 @@ local function AssignQValues( Proc) sUseRoughToolWithBAxis90 = 'Q04' -- i sUseRoughToolWithBAxis0 = 'Q05' -- i sInsertBoreOnCorner = 'Q06' -- i + elseif ( Proc.Grp == 3 or Proc.Grp == 4) and Proc.Prc == 25 then + sInsertBoreOnCorner = 'Q01' -- i elseif ( Proc.Grp == 3 or Proc.Grp == 4) and Proc.Prc == 30 then sMakeContourWithSmallTool = 'Q01' -- i sMakeOnlyContourOrFullPocket = 'Q02' -- i @@ -440,6 +443,7 @@ function ProcessLapJoint.Classify( Proc) -- se più di 2 facce else local bClosedOrthoFaces + local nDeletedface -- recupero la faccia con il maggior numero di adiacenze e minor elevazione local nPartId = EgtGetParent( EgtGetParent( Proc.Id) or GDB_ID.NULL) local nFacInd, dElev, nFacInd2, dElev2 = BL.GetFaceWithMostAdj( Proc.Id, nPartId) @@ -450,6 +454,46 @@ function ProcessLapJoint.Classify( Proc) return false end end + -- se è una feature scanalatura (con 5 facce) e non è stata riconosciuta come fessura, eseguo altre verifiche + if Proc.Prc == 16 and Proc.Fct == 5 and not bClosedOrthoFaces then + -- recupero gruppo per geometria addizionale + local nAddGrpId = BL.GetAddGroup( nPartId) + if not nAddGrpId then + return false + end + -- dalla copia della superfice, ciclo eliminando una faccia per volta per verificare se trova fessura + for i = 1, Proc.Fct do + local nNewProc = EgtCopyGlob( Proc.Id, nAddGrpId) or GDB_ID.NULL + -- elimino una faccia + nDeletedface = i-1 + if EgtSurfTmRemoveFacet( nNewProc, nDeletedface) then + -- recupero la faccia con il maggior numero di adiacenze e l'elevazione relativa + nFacInd, dElev, nFacInd2, dElev2 = BL.GetFaceWithMostAdj( nNewProc, nPartId) + if not nFacInd or nFacInd < 0 then + if nFacInd == -1 then + bClosedOrthoFaces = nFacInd2 + EgtErase( nNewProc) + break + else + EgtErase( nNewProc) + return false + end + end + -- altrimenti esco + else + EgtErase( nNewProc) + break + end + end + -- se riconosciuta fessura ricalcolo l'elevazione dalla faccia di fondo + if bClosedOrthoFaces then + nFacInd = nDeletedface + -- rendo nulla la faccia opzionale perchè si tratta di una fessura + nFacInd2 = nil + dElev = BL.GetFaceElevation( Proc.Id, nFacInd) + bClosedOrthoFaces = false -- non lo setto come tunnel + end + end -- se facce formano un tunnel e sono ortogonali if bClosedOrthoFaces then -- ottengo le dimensioni del tunnel @@ -1402,7 +1446,7 @@ local function MakeDrillOnCorner( Proc, nPhase, nRawId, nPartId, b3Raw, nFacInd, end --------------------------------------------------------------------- -local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, dH, dV, dElev, bForceUseBlade, dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, bOrthoFaces) +local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, dH, dV, dElev, bForceUseBlade, dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, bOrthoFaces, nBottomFace) local sWarn -- Recupero le facce adiacenti alla principale local vAdj = EgtSurfTmFacetAdjacencies( Proc.Id, nFacInd)[1] @@ -1439,22 +1483,25 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, -- Determino se estremi aperti o chiusi local bOpenStart = false local bOpenEnd = false - local vAdj2 = EgtSurfTmFacetAdjacencies( Proc.Id, nFacAdj)[1] - EgtOutLog( 'Adj2=' .. table.concat( vAdj2, ' ,'), 3) - for j = 1, #vAdj2 do - if vAdj2[j] == nFacInd then - -- Se non esiste faccia adiacente a lato precedente -> inizio aperto - local i = EgtIf( j > 1, j - 1, #vAdj2) - while vAdj2[i] == nFacInd do - i = EgtIf( i > 1, i - 1, #vAdj2) + -- se non ho la faccia di fondo ( che comporta essere una fessura) verifico se ho lati aperti + if not nBottomFace then + local vAdj2 = EgtSurfTmFacetAdjacencies( Proc.Id, nFacAdj)[1] + EgtOutLog( 'Adj2=' .. table.concat( vAdj2, ' ,'), 3) + for j = 1, #vAdj2 do + if vAdj2[j] == nFacInd then + -- Se non esiste faccia adiacente a lato precedente -> inizio aperto + local i = EgtIf( j > 1, j - 1, #vAdj2) + while vAdj2[i] == nFacInd do + i = EgtIf( i > 1, i - 1, #vAdj2) + end + bOpenStart = ( vAdj2[i] < 0) + -- Se non esiste faccia adiacente a lato successivo -> fine aperto + local k = EgtIf( j < #vAdj2, j + 1, 1) + while vAdj2[k] == nFacInd do + k = EgtIf( k < #vAdj2, k + 1, 1) + end + bOpenEnd = ( vAdj2[k] < 0) end - bOpenStart = ( vAdj2[i] < 0) - -- Se non esiste faccia adiacente a lato successivo -> fine aperto - local k = EgtIf( j < #vAdj2, j + 1, 1) - while vAdj2[k] == nFacInd do - k = EgtIf( k < #vAdj2, k + 1, 1) - end - bOpenEnd = ( vAdj2[k] < 0) end end -- Recupero il massimo affondamento possibile con la lama @@ -1534,10 +1581,9 @@ local function MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, return false, sErr end local bGoFromHead = true - -- verifico se la lunghezza utensile riesce ad arrivare sul fondo procedo nella modalità precedente - -- altrimenti se feature ha il flag come semitunnel allora provo a lavorarla come le fessure + -- se la lunghezza utensile non riesce ad arrivare sul fondo assegno la possibilità di lavorare di testa o di fianco if dElev > dMaxDepth + 10 * GEO.EPS_SMALL then - -- se ho il flag che indica che ha forma di semitunnel lavoro dal fianco + -- lavora di testa se è un tunnel, lavora di fianco se non è un tunnel bGoFromHead = not bOrthoFaces end -- se continuo a lavorare di testa @@ -2682,11 +2728,18 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, bSingle_part) EgtOutLog( sErr) return false, sErr end + -- recupero gruppo per geometria addizionale + local nAddGrpId = BL.GetAddGroup( nPartId) + if not nAddGrpId then + local sErr = 'Error on process ' .. tostring( Proc.Id) .. ' missing AddGroup' + EgtOutLog( sErr) + return false, sErr + end local bClosedOrthoFaces local nFacInd, dFacElev, nFacInd2, dFacElev2 + local nBottomFace -- recupero la faccia con il maggior numero di adiacenze e l'elevazione relativa nFacInd, dFacElev, nFacInd2, dFacElev2 = BL.GetFaceWithMostAdj( Proc.Id, nPartId) - if not nFacInd or nFacInd < 0 then if nFacInd == -1 then bClosedOrthoFaces = nFacInd2 @@ -2696,12 +2749,42 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, bSingle_part) return false, sErr end end - -- recupero gruppo per geometria addizionale - local nAddGrpId = BL.GetAddGroup( nPartId) - if not nAddGrpId then - local sErr = 'Error on process ' .. tostring( Proc.Id) .. ' missing AddGroup' - EgtOutLog( sErr) - return false, sErr + -- se è una feature scanalatura (con 5 facce) e non è stata riconosciuta come fessura, eseguo altre verifiche + if Proc.Prc == 16 and Proc.Fct == 5 and not bClosedOrthoFaces then + -- dalla copia della superfice, ciclo eliminando una faccia per volta per verificare se trova fessura + for i = 1, Proc.Fct do + local nNewProc = EgtCopyGlob( Proc.Id, nAddGrpId) or GDB_ID.NULL + -- elimino una faccia + nBottomFace = i-1 + if EgtSurfTmRemoveFacet( nNewProc, nBottomFace) then + -- recupero la faccia con il maggior numero di adiacenze e l'elevazione relativa + nFacInd, dFacElev, nFacInd2, dFacElev2 = BL.GetFaceWithMostAdj( nNewProc, nPartId) + if not nFacInd or nFacInd < 0 then + if nFacInd == -1 then + bClosedOrthoFaces = nFacInd2 + EgtErase( nNewProc) + break + else + EgtErase( nNewProc) + local sErr = 'Error on process ' .. tostring( Proc.Id) .. ' MakeMoreFaces could not find reference face' + EgtOutLog( sErr) + return false, sErr + end + end + -- altrimenti esco + else + EgtErase( nNewProc) + break + end + end + -- se riconosciuta fessura ricalcolo l'elevazione dalla faccia di fondo + if bClosedOrthoFaces then + nFacInd = nBottomFace + -- rendo nulla la faccia opzionale perchè si tratta di una fessura + nFacInd2 = nil + dFacElev = BL.GetFaceElevation( Proc.Id, nFacInd) + bClosedOrthoFaces = false -- non setto come tunnel + end end -- verifico se sono presenti i parametri Q per la profondità smusso e -- per eseguire in esclusiva solo lo smusso @@ -2711,7 +2794,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, bSingle_part) if nChamfer < 0 then return false, sErrCham end - -- se è un tunnel provo a vedere se è possibile lavorarlo di con la svuotatura o con la sega catena + -- se è un tunnel provo a vedere se è possibile lavorarlo con la svuotatura o con la sega catena if bClosedOrthoFaces then local bTryWithBlades = true -- lavoro fessura con svuotature (singola o doppia contrapposta) @@ -3062,7 +3145,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, bSingle_part) end -- Se la svuotatura precedente non è stata fatta e smusso non è esclusivo, provo con le lame if bTryWithBlades and nChamfer < 2 then - bOk, sWarn, sStat = MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, dH, dV, dFacElev, bForceUseBlade, dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, bOrthoFaces) + bOk, sWarn, sStat = MakeByChainOrSaw( Proc, nPhase, nRawId, nPartId, nFacInd, rfFac, dH, dV, dFacElev, bForceUseBlade, dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, bOrthoFaces, nBottomFace) if not bOk and sStat == 'MNF' then sPocketing = ML.FindPocketing( sMchFind, dDiam) if not sPocketing then diff --git a/ShowAll.lua b/ShowAll.lua deleted file mode 100644 index 76100ee..0000000 --- a/ShowAll.lua +++ /dev/null @@ -1,18 +0,0 @@ --- ClearAll.lua by Egaltech s.r.l. 2017/11/16 --- Gestione visualizzazione di tutte le Travi - --- Intestazioni -require( 'EgtBase') -_ENV = EgtProtectGlobal() -EgtEnableDebug( false) - -local nId = EgtGetFirstPart() -while nId do - EgtSetMode( nId, GDB_MD.STD) - -- EgtSetStatus( nId, GDB_ST.ON) - nId = EgtGetNextPart( nId) -end - -EgtZoom( SCE_ZM.ALL) - --- end \ No newline at end of file diff --git a/ShowBuilding.lua b/ShowBuilding.lua deleted file mode 100644 index 1f372f7..0000000 --- a/ShowBuilding.lua +++ /dev/null @@ -1,63 +0,0 @@ --- ShowBuilding.lua by Egaltech s.r.l. 2018/11/21 --- Gestione visualizzazione travi come struttura - --- Intestazioni -require( 'EgtBase') -_ENV = EgtProtectGlobal() -EgtEnableDebug( false) - --- recupero il gruppo di assemblaggio -local AsseBaseId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'AsseBase') -if not AsseBaseId then return end - --- recupero il primo oggetto nel gruppo e verifico se devo assemblare o disassemblare -local AsseId = EgtGetFirstInGroup( AsseBaseId) -if not AsseId then return end -local bMake = ( EgtGetGroupObjs( AsseId) == 0) - --- ciclo sul gruppo di assemblaggio -while AsseId do - -- salvo il successivo nel gruppo dell'assemblato - local NextId = EgtGetNext( AsseId) - -- costruisco l'assemblato - if bMake then - -- recupero il pezzo sorgente - local SouId = EgtGetInfo( AsseId, GDB_SI.SOURCE, 'i') - if SouId then - EgtSetMode( SouId, GDB_MD.STD) - EgtSetStatus( SouId, GDB_ST.ON) - -- se già utilizzato, ne faccio una copia - if not EgtIsPart( SouId) then - local CopyId = EgtCopy( SouId, GDB_ID.ROOT) - if CopyId then - EgtRemoveInfo( CopyId, GDB_SI.BASE) - EgtRemoveInfo( CopyId, GDB_SI.LIST) - EgtSetInfo( CopyId, GDB_SI.COPY, SouId) - SouId = CopyId - EgtSetInfo( AsseId, GDB_SI.SOURCE, SouId) - end - end - EgtSetStatus( EgtGetFirstNameInGroup( SouId, 'Box') or GDB_ID.NULL, GDB_ST.OFF) - EgtGroupSwap( SouId, AsseId, true, true) - end - -- ritorno ai pezzi - else - local BasId = EgtGetInfo( AsseId, GDB_SI.BASE, 'i') - if BasId then - EgtGroupSwap( AsseId, BasId, true, true) - local CopId = EgtGetInfo( AsseId, GDB_SI.COPY, 'i') - if CopId then - EgtErase( AsseId) - EgtSetInfo( BasId, GDB_SI.SOURCE, CopId) - else - EgtSetStatus( EgtGetFirstNameInGroup( AsseId, 'Box') or GDB_ID.NULL, GDB_ST.ON) - end - end - end - -- passo al successivo - AsseId = NextId -end - -EgtZoom( SCE_ZM.ALL) - --- end \ No newline at end of file diff --git a/ShowSolid.lua b/ShowSolid.lua deleted file mode 100644 index 3a549b3..0000000 --- a/ShowSolid.lua +++ /dev/null @@ -1,117 +0,0 @@ --- ShowSolid.lua by Egaltech s.r.l. 2020/01/03 --- Gestione calcolo solido di una Trave - -require( 'EgtBase') -_ENV = EgtProtectGlobal() -EgtEnableDebug( false) - --- Funzione per visualizzazione del solido o standard -local function Show( PartId, bSolid) - local BoxLy = EgtGetFirstNameInGroup( PartId, 'Box') - EgtSetStatus( BoxLy or GDB_ID.NULL, EgtIf( bSolid, GDB_ST.OFF, GDB_ST.ON)) - local OutlineLy = EgtGetFirstNameInGroup( PartId, 'Outline') - EgtSetStatus( OutlineLy or GDB_ID.NULL, EgtIf( bSolid, GDB_ST.OFF, GDB_ST.ON)) - local ProcessingsLy = EgtGetFirstNameInGroup( PartId, 'Processings') - EgtSetStatus( ProcessingsLy or GDB_ID.NULL, EgtIf( bSolid, GDB_ST.OFF, GDB_ST.ON)) - local SolidLy = EgtGetFirstNameInGroup( PartId, 'Solid') - EgtSetStatus( SolidLy or GDB_ID.NULL, EgtIf( bSolid, GDB_ST.ON, GDB_ST.OFF)) -end - --- Funzione per regolarizzare, se necessario, la superficie della feature -local function RegularizeTriMesh( SurfId, DestGrpId, dStep) - -- solo per superfici trimesh con poche facce (max4) - local nFacetCnt = EgtSurfTmFacetCount( SurfId) - if nFacetCnt > 4 then - return SurfId - end - -- box della superficie - local b3Surf = EgtGetBBox( SurfId, GDB_BB.STANDARD) - if not b3Surf or b3Surf:isEmpty() or b3Surf:getDimX() < 2 * dStep then - return SurfId - end - -- recupero le facce e le divido in X - local dXmin = b3Surf:getMin():getX() - 1 - local dXmax = b3Surf:getMax():getX() + 1 - local nStep = floor( ( dXmax - dXmin) / dStep + 0.9) - dStep = ( dXmax - dXmin) / nStep - local NewSurfId - for nF = 0, nFacetCnt - 1 do - local FacId = EgtCopySurfTmFacet( SurfId, nF, DestGrpId) - local b3Fac = EgtGetBBox( FacId, GDB_BB.STANDARD) - local dX2 = dXmin - for nI = 1, nStep do - local dX1 = dX2 - dX2 = dX2 + dStep - if b3Fac:getMin():getX() < dX2 and b3Fac:getMax():getX() > dX1 then - EgtCutSurfTmPlane( FacId, Point3d( dX1, 0, 0), -X_AX(), true) - EgtCutSurfTmPlane( FacId, Point3d( dX2, 0, 0), X_AX(), false) - local LoopId = EgtExtractSurfTmFacetLoops( FacId, 0, DestGrpId) - EgtMergeCurvesInCurveCompo( LoopId, 0.001) - local TmpSurfId = EgtSurfTmByFlatContour( DestGrpId, LoopId, 0.01) - EgtErase( LoopId) - if NewSurfId then - NewSurfId = EgtSurfTmBySewing( DestGrpId, {NewSurfId, TmpSurfId}) - else - NewSurfId = TmpSurfId - end - EgtErase( FacId) - FacId = EgtCopySurfTmFacet( SurfId, nF, DestGrpId) - end - end - EgtErase( FacId) - end - return NewSurfId -end - --- Recupero il pezzo del primo oggetto selezionato -local ObjId = EgtGetFirstSelectedObj() -local PartId = EgtGetParent( EgtGetParent( ObjId or GDB_ID.NULL) or GDB_ID.NULL) -if not PartId or not EgtIsPart( PartId) then - EgtOutBox( 'Nessuna trave selezionata', 'Show Solid', 'ERROR') - return -end -EgtDeselectAll() - --- Recupero il Box -local BoxLy = EgtGetFirstNameInGroup( PartId, 'Box') -local BoxId = EgtGetFirstNameInGroup( BoxLy or GDB_ID.NULL, 'Box') -if not BoxId then - EgtOutBox( 'Trave senza Box', 'Show Solid', 'ERROR') - return -end - --- Verifico esistenza del solido -local SolidLy = EgtGetFirstNameInGroup( PartId, 'Solid') -if not SolidLy then - SolidLy = EgtGroup( PartId) - EgtSetName( SolidLy, 'Solid') -end -local SolidId = EgtGetFirstNameInGroup( SolidLy, 'Solid') -if not SolidId then - SolidId = EgtSurfTmBBox( SolidLy, EgtGetBBoxGlob( BoxId, GDB_BB.STANDARD), true, GDB_RT.GLOB) - EgtSetName( SolidId, 'Solid') - EgtSetColor( SolidId, Color3d( 228, 196, 64)) - Show( PartId, true) -else - Show( PartId, ( EgtGetStatus( SolidLy) == GDB_ST.OFF)) - EgtDraw() - return -end -local b3Solid = EgtGetBBox( SolidId, GDB_BB.STANDARD) -local dStep = 1.23 * min( max( b3Solid:getDimY(), b3Solid:getDimZ()), 2 * min( b3Solid:getDimY(), b3Solid:getDimZ())) - --- Ciclo sulle features -local ProcLy = EgtGetFirstNameInGroup( PartId, 'Processings') -local ProcId = EgtGetFirstInGroup( ProcLy) -while ProcId do - if EgtGetInfo( ProcId, 'DO', 'i') ~= 0 and EgtGetInfo( ProcId, 'TRIM', 'i') ~= 0 and EgtGetType( ProcId) == GDB_TY.SRF_MESH then - local NewSurfId = RegularizeTriMesh( ProcId, SolidLy, dStep) - EgtSurfTmIntersect( SolidId, NewSurfId) - if NewSurfId ~= ProcId then - EgtErase( NewSurfId) - end - end - ProcId = EgtGetNext( ProcId) -end - -EgtDraw()