From 25e8038aa6d1ed0bc60d4ef04376a66a258f942d Mon Sep 17 00:00:00 2001 From: Riccardo Elitropi Date: Fri, 20 Feb 2026 16:57:00 +0100 Subject: [PATCH] Trimming 3.1a7 : - aggiunte funzioni di interpolazione per le curve di sincronizzazione - priva versione di "settings" per colori. --- EndEditSyncLines.lua | 64 -------------------- Images/InterpolateSyncLines.png | Bin 0 -> 1738 bytes Images/Settings.png | Bin 0 -> 2381 bytes InterpolateSyncLines.lua | 85 +++++++++++++++++++++++++++ Settings.lua | 63 ++++++++++++++++++++ Trimming.ini | 42 +++++++------ TrimmingLib.lua | 101 +++++++++++++++++++++++++++++++- Version.lua | 4 +- 8 files changed, 275 insertions(+), 84 deletions(-) delete mode 100644 EndEditSyncLines.lua create mode 100644 Images/InterpolateSyncLines.png create mode 100644 Images/Settings.png create mode 100644 InterpolateSyncLines.lua create mode 100644 Settings.lua diff --git a/EndEditSyncLines.lua b/EndEditSyncLines.lua deleted file mode 100644 index bd72015..0000000 --- a/EndEditSyncLines.lua +++ /dev/null @@ -1,64 +0,0 @@ --- EndEditSyncLines.lua by Egalware s.r.l. 2026/01/05 - -require( 'EgtBase') -_ENV = EgtProtectGlobal() -EgtEnableDebug( false) - --- Carico le costanti di Trimming -EgtAddToPackagePath( EgtGetSourceDir() .. '?.lua') -local GlobVar = require( 'TrimmingLib') --- Costante di Errore -local ERROR_EDIT_SYNC_CURVES = 'Error in Edit Sync Curves : ' - --- Recupero il Part e Layer di Trimming corrente ( o di riferimento) -local nCurrPartId = EgtGetCurrPart() -local nCurrLayerId = GlobVar.GetTrimmingLayerRefId( EgtGetCurrLayer()) -if not GlobVar.IsTrimmingLayer( nCurrLayerId) then - EgtOutBox( ERROR_EDIT_SYNC_CURVES .. 'Not a valid Trimming Layer', 'Error', 'ERROR', 'OK') - return -end - --- Recupero il Layer di Edit delle curve di Sincronizzazione, se non esiste, errore -local nLayerEditSyncId = GlobVar.GetCurrentEditSyncCurvesLayer( nCurrPartId) -if not nLayerEditSyncId or nLayerEditSyncId == GDB_ID.NULL then - EgtOutBox( ERROR_EDIT_SYNC_CURVES .. 'No Edit Layer created', 'Error', 'ERROR', 'OK') - return -end - --- Se il Layer di Salvataggio non esiste lo Creo, altrimenti lo Svuoto -local nLayerStoredSyncId = GlobVar.GetCurrentStoredCurvesLayer( nCurrPartId) -if not nLayerStoredSyncId or nLayerStoredSyncId == GDB_ID.NULL then - nLayerStoredSyncId = GlobVar.CreateSyncStoredCurvesLayer( nCurrPartId, nCurrLayerId) - if not nLayerStoredSyncId or nLayerStoredSyncId == GDB_ID.NULL then - EgtOutBox( ERROR_EDIT_SYNC_CURVES .. 'Defining Part failed', 'Error', 'ERROR', 'OK') - return - end -else EgtEmptyGroup( nLayerStoredSyncId) end - --- Rialloco le Curve del Layer di Edit in quest'ultimo -local vIdToRelocate = {} -local nId = EgtGetFirstInGroup( nLayerEditSyncId) -while nId do - -- Verifico che sia una curva prima di inserirla - local nType = EgtGetType( nId) - if nType == GDB_TY.CRV_COMPO or nType == GDB_TY.CRV_BEZ or nType == GDB_TY.CRV_ARC or nType == GDB_TY.CRV_LINE then table.insert( vIdToRelocate, nId) end - nId = EgtGetNext( nId) -end -for i = 1, #vIdToRelocate do EgtRelocateGlob( vIdToRelocate[i], nLayerStoredSyncId) end - --- Cancello il Layer di Edit, metto il Focus sul Layer di Selezione ( Cancellando eventuali Superfici Ruled) e rendo Visibile il Layer di Salvataggio -EgtErase( nLayerEditSyncId) -EgtSetCurrPartLayer( nCurrPartId, nCurrLayerId) -local vIdToErase = {} -nId = EgtGetFirstNameInGroup( nCurrLayerId, RULED_BZ_NAME) -while nId do - table.insert( vIdToErase, nId) - nId = EgtGetNextName( nId, RULED_BZ_NAME) -end -EgtErase( vIdToErase) -EgtSetStatus( nCurrLayerId, GDB_ST.ON) -EgtSetStatus( nLayerStoredSyncId, GDB_ST.ON) -EgtOutBox( 'Sync Curves correctly saved', 'Edit Sync', 'INFO', 'OK') - --- Aggiorno la Grafica -EgtDraw() diff --git a/Images/InterpolateSyncLines.png b/Images/InterpolateSyncLines.png new file mode 100644 index 0000000000000000000000000000000000000000..470c89b43e9d0a73d419ca76ff893fb3b00915f2 GIT binary patch literal 1738 zcmV;*1~vJKP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D246`;K~z{r?U-#) zROcCnulHRRbU_6~mqmoYE`->^7;8vXjM@$$Q>PeGg_rowN{MGWwa#nQwyDfDk80ivBivLi72QQul?Wgi}!aQQQkUHvgme6L6+z3bw!P_x_Zt{LqgHxwhmR2i5yNVcCH4&&Vm(h6!nn)xMmMtyAT8;#9o zvxJ6P-tnydNor^M_L2I=hkwLFVWm`Uh-IkHw5Ykc`Jzt?I8#0(g+~RZCkBE?jU~uilKplfjOb-ct{R;kzGcM51Y+qu~;nYfVD!1uY1F+3vVpjN!Q{>K?J@b zvp@JV^G^Kyl-uoIJ-R+|sPZ-^N@U<2SV2+z4WkU;a5zGgQoDd3%)fsqvNdKK9&0xJ z3)4|D$Y{TVt`T=I7qh2%tK03a9xVmF1c366wJ5e=(l?D4C^@UJN^c}0};kH0KytiV67?ck?1R$o0~r{>JmVw{D7j& zJW}m^Bo|Z^n)d8yvya5Y#5gHsttYc2;`+*B5W^3Trkkm(ucD(XiKlb2u!MB_^$Bf= z$bbA1>(TFb3#Dxc6o@;wPt8+sXe5|W`Cuwz$AVse`>-m6sJgl2yYspp++x(wm5Iue z)pXoUqBtiLOYn7quQn2K&Pm*XEFw-ncV3_#cDY=CH}?7v0E)xGiq0c|clYL`$988v z(2m)(l>B*@j13NlW0QAw%#oIY6DadcqdY=zcPp7UvS_K(=)0y}6GFTNRJ&ZRW5AeQ ze>5XAbvxKAr|yr6U-QiJ2nwU){H?>-?e=q?>|dsLEq>G}4Wo3z8!CxB^PE?D2VPQ2 zz2J7c&jJ4LTN5zy^a=6?1>u`cCCzO`sQ3JB!#ErcJLZ|`w-&88N^pB-qF*m&?#bU? zlHP%Im&^5-+wDF(l|UG`1VP^5FE*wWAWerx*L^6Z*7V0NK@YYVB>?8v{fy9y$KUaK zy~|uK*ZW5OZW+5z4*&>nKT-9+L({aPrluy3U&kk4N}+@hCI4-hu_j3G&wes1 zx5u|)v;Olsvis`!%aX($m;kfJn3MOMpx6jD)D-u6^_3^o=z5y*bIM`*>KPi51d{ZSgHMO&~v3G$G;%H-I gg3pNm14Ii(6dW@Qp#T5?07*qoM6N<$f>c&SV*mgE literal 0 HcmV?d00001 diff --git a/Images/Settings.png b/Images/Settings.png new file mode 100644 index 0000000000000000000000000000000000000000..6fb84bbce86dc5c047a597e9952657f3c421f940 GIT binary patch literal 2381 zcmV-T39|NyP)&q+D$gs9HtAs6hl&;z7WQ1yqQNQK@Hyh(w|h1L7GaDu;+7U=%|{Eq{2R6{FC2 zQ=nQEY)k2}yY=_TmJGwp?96nhTar%lGCQ4l-+S+S-|_pt?=>T%@9MkyuHJNw9#!n~ z`vV0Pb1E~FeVgU;4`W#FX^N&_rWs}m`Z&(og=6wAm)l)N(aa`?)7gR6>2gy$c|pk2 z>Jtcta-A;s5%O(U1C8GqmR-j4Lg87(0A3I;b-G+X%NNtt+!XbRRzJ6!TC3KFG|+2= zloXyV65zmuk83T4G>#X>D*F`|k7KawNA>&hPg$8$W=}H#`aGupgpUYOL>_}|X6LM0&9 zhxNqTN(0S5*-|XMiAj##@;j7WOBQWVw+sh7TVNUNDQ$r`fz0p}yJp)+T$Q0SwbC z7Tntx{(zKYb}S&oiC{#F+3_HilWb!^c1~WTD;P4`D2jfyJ3AAU!g-)mXOijf*(n7R zO{&0gh&J8baS=FOAhSV98-lcrwlN_uFaLT|Qb03RsTvy#TW4_Gm>`N1ZDRtgdWi`s z_{}QJ)d{zPD>+I}2ss}65!i0D%7S&5K*&%#7?>f?=4iL}#b!uk>m-oE@-z@man=5WDh-o~y+BJ*gZs5Re9&K#bM422oht zZBT=wMkd1x!n72s-ZC?2RTMp=Y+(R=u^W>)W&$<-iXG|pxH&m_IiU5g872TZ7TU#x zklC;n(lEbU$;$IaxnT=-nT#T9Y*PiIX9$h=n9T{oSgpWfOve#`!u_zIYO{<7nw?{- zQN#dKtkn&uPvA`?FSRj|o1#a;Xnn58-7k>k_xxDYKMEIAJGgL&SI4jW@XbmKMU`YWr6ClG z2zE%ob7~b}NW^RSy$$VC4KUI_N#bRw9g@KD{31It$g?ff5%wCOyW9>YxZTvxMh<|P z$|pp^+1qeyH$xO&zy+1LNY9AI3zKKVjKo)vyJ(ha=fy3W_Jp2RhjPGb4!zc#S1`jJ)RRYa{aS=T^)o_Twr@27$Qs z2*7p&+7>4p2cEeI^eRK)NNGwvfsUTWJsz*2oM55|Qmr8gwUu)hxH5Y4gAmtrKnf~M#u3E&H_B<~<{)T# z2~^<_bp50;6h%(~o=*_u$#VSIv@imb-h5g<&f~q@bR;Q?wMLkLMamPTe-IQZ&l-b4 zi)~-8sxNjrTTlDQ;qaKuFlDs0wRuj@1_%3VRH^>Pcz-1x`=MP4AXOx*DhWkJW8Cv@ zyTjjOQV)k=z4R;dMn; zsM>ZWfctOg9DQ43kdYUX)Rq<} zu;{PgEvAw}OP4#uB8J0mJgdS0Qu|w<*!6bUf$0jEe$pPmXwKAu@=qoTxI6Om2Y7mf z5zv29M%zt}#6o`;EC1(6)>;tc{D%AAS|}3>n01o56E5caSdxVTid+eGDoGm?Frnv@6*|<;0vLeT!a3&* z^5NUvIyr*R;V#o3bg3Pbg!oRDbuf*{V%`(lP6-w9p*)b00000NkvXXu0mjfsKS2a literal 0 HcmV?d00001 diff --git a/InterpolateSyncLines.lua b/InterpolateSyncLines.lua new file mode 100644 index 0000000..decbccb --- /dev/null +++ b/InterpolateSyncLines.lua @@ -0,0 +1,85 @@ +-- InterpolateSyncLines.lua by Egalware s.r.l. 2026/02/18 + +require( 'EgtBase') +_ENV = EgtProtectGlobal() +EgtEnableDebug( false) + +-- Carico le costanti di Trimming +EgtAddToPackagePath( EgtGetSourceDir() .. '?.lua') +local GlobVar = require( 'TrimmingLib') +-- Costante di Errore +local ERROR_EDIT_SYNC_CURVES = 'Error in Edit Sync Curves : ' + +-- Recupero il Part e Layer di Trimming corrente ( o di riferimento) +local nCurrPartId = EgtGetCurrPart() +local nCurrLayerId = GlobVar.GetTrimmingLayerRefId( EgtGetCurrLayer()) +if not GlobVar.IsTrimmingLayer( nCurrLayerId) then + EgtOutBox( ERROR_EDIT_SYNC_CURVES .. 'Not a valid Trimming Layer', 'Error', 'ERROR', 'OK') + return +end + +-- Recupero il Layer di Edit +local nLayerEditId = GlobVar.GetCurrentEditSyncCurvesLayer( nCurrPartId, nCurrLayerId) +if ( not nLayerEditId or nLayerEditId == GDB_ID.NULL) then + EgtOutBox( ERROR_EDIT_SYNC_CURVES .. 'Not a valid Edit mode created', 'Error', 'ERROR', 'OK') + return +end + +-- Recupero le Info +local dEdgeLinTol = EgtGetInfo( nCurrLayerId, KEY_LIN_TOL_EDGES, 'd') +local dEdgeAngTol = EgtGetInfo( nCurrLayerId, KEY_ANG_TOL_EDGES, 'd') +local bOk = ( dEdgeLinTol ~= nil and dEdgeAngTol ~= nil) +if not bOk then + EgtOutBox( ERROR_EDIT_SYNC_CURVES .. 'No Trimming Machining created', 'Error', 'ERROR', 'OK') + return +end + +-- Recupero le due curve linee di sincronizzazione +local nFirstSync = EgtGetFirstSelectedObj() +local nSecondSync = EgtGetNextSelectedObj() +if not nFirstSync or not nSecondSync or nFirstSync == GDB_ID.NULL or nSecondSync == GDB_ID.NULL then + EgtOutBox( ERROR_EDIT_SYNC_CURVES .. 'Not two Sync Lines Selected', 'Error', 'ERROR', 'OK') + return +end +local nFirstType = EgtGetType( nFirstSync) +local nSecondType = EgtGetType( nSecondSync) +if nFirstType ~= GDB_TY.CRV_LINE and nFirstSync ~= GDB_TY.CRV_COMPO and nSecondType ~= GDB_TY.CRV_LINE and nSecondType ~= GDB_TY.CRV_COMPO then + EgtOutBox( ERROR_EDIT_SYNC_CURVES .. 'Not two Sync Lines Selected', 'Error', 'ERROR', 'OK') + return +end + +-- Recupero le Curve di Bordo presenti nel Layer di Trimming corrente +local nId = EgtGetFirstInGroup( nCurrLayerId) +local vnBzCrvId = {} +while nId do + local sName = EgtGetName( nId) + if sName == EDGES_NAME then table.insert( vnBzCrvId, nId) end + nId = EgtGetNext( nId) +end +if #vnBzCrvId ~= 2 then + EgtOutBox( ERROR_EDIT_SYNC_CURVES .. 'No Borders found', 'Error', 'ERROR', 'OK') + return +end + +-- Inserisco le linee di Sincronizzazione Interpolate +local nFirstId = GDB_ID.NULL +local nCount = 0 +bOk, nFirstId, nCount = EgtTrimmingInterpolateSyncLines( nLayerEditId, nFirstSync, nSecondSync, vnBzCrvId[1], vnBzCrvId[2], dEdgeLinTol, dEdgeAngTol) +if not bOk or nFirstId == GDB_ID.NULL or nCount == 0 then + EgtOutBox( ERROR_EDIT_SYNC_CURVES .. 'Invalid Interpolation', 'Error', 'ERROR', 'OK') + return +end + +-- Cambio il colore alle due Linee di Sincronizzaione selezionate e alle nuove calcolate +EgtSetColor( nFirstSync, SYNC_LINE_INTERP_COLOR) +EgtSetColor( nSecondSync, SYNC_LINE_INTERP_COLOR) +for i = 0, nCount do + EgtSetColor( nFirstId + i, SYNC_LINE_INTERP_COLOR) + EgtSetName( nFirstId + i, SYNC_LINE_NAME) +end + +-- Metto il Focus sul Layer di Sincronizzazione delle curve +EgtSetCurrPartLayer( nCurrPartId, nLayerEditId) + +-- Aggiorno la Grafica +EgtDraw() \ No newline at end of file diff --git a/Settings.lua b/Settings.lua new file mode 100644 index 0000000..b56c9a7 --- /dev/null +++ b/Settings.lua @@ -0,0 +1,63 @@ +-- NewTrimming.lua by Egalware s.r.l. 2026/01/05 + +require( 'EgtBase') +_ENV = EgtProtectGlobal() +EgtEnableDebug( false) + +-- Carico le costanti di Trimming +EgtAddToPackagePath( EgtGetSourceDir() .. '?.lua') +local GlobVar = require( 'TrimmingLib') + +-- Costante di Errore +local ERROR_SETTINGS = 'Error in Surf Selection : ' + +-- Recupero il File Ini +local sFileIni = EgtGetIniFile() +if not sFileIni then + EgtOutBox( ERROR_SETTINGS .. '.ini File not Found', 'Error', 'ERROR', 'OK') + return +end + +-- Recupero i Colori in Hex come stringhe +local sHexSurfSelColor = GlobVar.GetColorFromRGBToHex( SELECTION_SURF_COLOR) +local sHexEdgeColor = GlobVar.GetColorFromRGBToHex( EDGES_COLOR) +local sHexSyncLinesColor = GlobVar.GetColorFromRGBToHex( SYNC_LINE_COLOR) +local sHexSyncInterpLinesColor = GlobVar.GetColorFromRGBToHex( SYNC_LINE_INTERP_COLOR) +local sHexRuledBzColor = GlobVar.GetColorFromRGBToHex( RULED_BZ_COLOR) +if not sHexSurfSelColor or not sHexEdgeColor or not sHexSyncLinesColor or not sHexSyncInterpLinesColor or not sHexRuledBzColor then + EgtOutBox( ERROR_SETTINGS .. 'Error in Converting Colors', 'Error', 'ERROR', 'OK') + return +end + +-- Apro la finestra di Dialogo per impostazione dei parametri di Default +local vsVal = EgtDialogBox( 'Settings', { 'Surf Selection','CP:'.. sHexSurfSelColor}, + { 'Edges', 'CP:'.. sHexEdgeColor}, + { 'SyncLines', 'CP:'.. sHexSyncLinesColor}, + { 'SyncLines Interpolation', 'CP:'.. sHexSyncInterpLinesColor}, + { 'Surf Ruled Bezier', 'CP:'.. sHexRuledBzColor}) +if not vsVal or #vsVal ~= 5 then return end + +-- Memorizzo i nuovi colori per le variabili +local SelSurfCol = GlobVar.GetColorFromHexToRGB( vsVal[1]) +local EdgeColor = GlobVar.GetColorFromHexToRGB( vsVal[2]) +local SyncLineColor = GlobVar.GetColorFromHexToRGB( vsVal[3]) +local SyncInterpLinesColor = GlobVar.GetColorFromHexToRGB( vsVal[4]) +local RuledBZColor = GlobVar.GetColorFromHexToRGB( vsVal[5]) +if not SelSurfCol or not EdgeColor or not SyncLineColor or not SyncInterpLinesColor or not RuledBZColor then + EgtOutBox( ERROR_SETTINGS .. 'Error in Converting Colors', 'Error', 'ERROR', 'OK') + return +end + +-- Le nuove variabili di colore vengono aggiornate +SELECTION_SURF_COLOR = GlobVar.SetColorSurfSelection( SelSurfCol) +EDGES_COLOR = GlobVar.SetColorEdges( EdgeColor) +SYNC_LINE_COLOR = GlobVar.SetColorSyncLines( SyncLineColor) +SYNC_LINE_INTERP_COLOR = GlobVar.SetColorSyncInterpLines( SyncInterpLinesColor) +RULED_BZ_COLOR = GlobVar.SetColorRuledBz( RuledBZColor) + +-- Aggiorno i Valori Memorizzati all'interno del File .ini +EgtWriteStringToIni( KEY_SECTION_NAME, KEY_INI_SELECTION_SURF_COLOR, GlobVar.GetColorForIniFile( SELECTION_SURF_COLOR), sFileIni) +EgtWriteStringToIni( KEY_SECTION_NAME, KEY_INI_EDGES_COLOR, GlobVar.GetColorForIniFile( EDGES_COLOR), sFileIni) +EgtWriteStringToIni( KEY_SECTION_NAME, KEY_INI_SYNC_LINE_COLOR, GlobVar.GetColorForIniFile( SYNC_LINE_COLOR), sFileIni) +EgtWriteStringToIni( KEY_SECTION_NAME, KEY_INI_SYNC_INTERP_COLOR, GlobVar.GetColorForIniFile( SYNC_LINE_INTERP_COLOR), sFileIni) +EgtWriteStringToIni( KEY_SECTION_NAME, KEY_INI_RULED_BZ_COLOR, GlobVar.GetColorForIniFile( RULED_BZ_COLOR), sFileIni) diff --git a/Trimming.ini b/Trimming.ini index 7098194..42c7cac 100644 --- a/Trimming.ini +++ b/Trimming.ini @@ -1,20 +1,28 @@ [Trimming] TrimEnable=1 +SurfSelectionColor=255,255,185 +EdgesColor=0,128,255 +SyncLineColor=0,255,0 +SyncLineInterpColor=255,165,0 +RuledBzColor=37,37,37 BaseDir=C:\EgtData\Trimming -Button1=NewTrimming.lua,Images\NewTrimming.png,New Trimming -Button2=DeleteTrimming.lua,Images\DeleteTrimming.png, Delete Trimming -Button3=Separator -Button4=Select.lua,Images\Select.png,Select -Button5=SelectHoles.lua,Images\SelectHoles.png,Select Holes -Button6=ResetSelect.lua,Images\ResetSelect.png, <-- Undo, -Button7=Separator -Button8=CalcBezierEdges.lua,Images\BezierEdges.png,Get Borders -Button9=EditBezierBorders.lua,Images\EditBezierEdges.png,Edit Curves -Button10=ResetEditBezierBorders.lua,Images\ResetEditBezierEdges.png,<-- Undo -Button11=EndEditBezierBorders.lua,Images\EndEditBezierEdges.png,Ok -Button12=Separator -Button13=EditSyncLines.lua,Images\EditSyncLines.png,Edit SyncLines -Button14=ResetSyncLines.lua,Images\ResetSyncLines.png,Reset SyncLines -Button15=Separator -Button16=CalcBezier.lua,Images\BezierSurf.png,Get Surf -Button17=ResetBezierSurf.lua,Images\ResetBezierSurf.png,<-- Undo \ No newline at end of file +Button1=Settings.lua,Images\Settings.png,Settings +Button2=Separator +Button3=NewTrimming.lua,Images\NewTrimming.png,New Trimming +Button4=DeleteTrimming.lua,Images\DeleteTrimming.png, Delete Trimming +Button5=Separator +Button6=Select.lua,Images\Select.png,Select +Button7=SelectHoles.lua,Images\SelectHoles.png,Select Holes +Button8=ResetSelect.lua,Images\ResetSelect.png, <-- Undo, +Button9=Separator +Button10=CalcBezierEdges.lua,Images\BezierEdges.png,Get Borders +Button11=EditBezierBorders.lua,Images\EditBezierEdges.png,Edit Curves +Button12=ResetEditBezierBorders.lua,Images\ResetEditBezierEdges.png,<-- Undo +Button13=EndEditBezierBorders.lua,Images\EndEditBezierEdges.png,Ok +Button14=Separator +Button15=EditSyncLines.lua,Images\EditSyncLines.png,Edit SyncLines +Button16=InterpolateSyncLines.lua,Images\InterpolateSyncLines.png,Interpolate SyncLines +Button17=ResetSyncLines.lua,Images\ResetSyncLines.png,Reset SyncLines +Button18=Separator +Button19=CalcBezier.lua,Images\BezierSurf.png,Get Surf +Button20=ResetBezierSurf.lua,Images\ResetBezierSurf.png,<-- Undo \ No newline at end of file diff --git a/TrimmingLib.lua b/TrimmingLib.lua index 281823f..f3d4dd2 100644 --- a/TrimmingLib.lua +++ b/TrimmingLib.lua @@ -2,7 +2,8 @@ -- Modulo per Definizione di Costanti, Variabili e Funzioni di Trimming local TrimmingVar = { - nCounter = 0 + nCounter = 0, + bInit = false } -- *** ============================== COSTANTI ============================== *** @@ -73,11 +74,45 @@ EDGES_EDIT_TYPE = { -- Creazione dei tratti di sincronizzazione SYNC_LINE_NAME = 'SyncLines' SYNC_LINE_COLOR = Color3d( 0, 255, 0) +SYNC_LINE_INTERP_COLOR = Color3d( 255, 165, 0) -- Creazione della Superficie Ruled di Bezier RULED_BZ_NAME = 'SurfBz' RULED_BZ_COLOR = Color3d( 37, 37, 37) +-- ***========================== FILE INI ==================================*** +KEY_SECTION_NAME = "Trimming" + +KEY_INI_SELECTION_SURF_COLOR = "SurfSelectionColor" +function TrimmingVar.SetColorSurfSelection( myColor) + if not myColor then return end + SELECTION_SURF_COLOR = myColor +end + +KEY_INI_EDGES_COLOR = "EdgesColor" +function TrimmingVar.SetColorEdges( myColor) + if not myColor then return end + EDGES_COLOR = myColor +end + +KEY_INI_SYNC_LINE_COLOR = "SyncLineColor" +function TrimmingVar.SetColorSyncLines( myColor) + if not myColor then return end + SYNC_LINE_COLOR = myColor +end + +KEY_INI_SYNC_INTERP_COLOR = "SyncLineInterpColor" +function TrimmingVar.SetColorSyncInterpLines( myColor) + if not myColor then return end + SYNC_LINE_INTERP_COLOR = myColor +end + +KEY_INI_RULED_BZ_COLOR = "RuledBzColor" +function TrimmingVar.SetColorRuledBz( myColor) + if not myColor then return end + RULED_BZ_COLOR = myColor +end + -- ***============================== FUNZIONI ==============================*** --======================== Contatore Incrementale ======================= @@ -265,4 +300,68 @@ function TrimmingVar.GetGlobBox( vIds) return BBox3dGlob end +------------------------------------------------------------------------------- +-- Funzione che recupera il colore da una stringa "nR,nG,nB" [0-255],[0-255],[0-255] +function TrimmingVar.GetColorFromString( sColor) + local sVal = EgtSplitString( sColor) + if not sVal then return nil end + if #sVal ~= 3 then return nil end + local nRed = tonumber( sVal[1]) + local nGreen = tonumber( sVal[2]) + local nBlue = tonumber( sVal[3]) + if not nRed or not nGreen or not nBlue then return nil end + if 0 <= nRed and nRed <= 255 and 0 <= nGreen and nGreen <= 255 and 0 <= nBlue and nBlue <= 255 then + return Color3d( nRed, nGreen, nBlue) + end + return nil +end + +-- Conversione Colori da Hex -> Color3d +function TrimmingVar.GetColorFromHexToRGB( sHex) + if not sHex then return nil end + -- Rimozione eventuale "#" iniziale + sHex = sHex:gsub( "#", "") + -- Estraggo le Coppie + local nR, nG, nB = sHex:match( "(%x%x)(%x%x)(%x%x)") + -- Restituisco il risultato + return Color3d( tonumber( nR, 16), tonumber( nG, 16), tonumber( nB, 16)) +end + +-- Conversione Colori da classe Color3d a Hex +function TrimmingVar.GetColorFromRGBToHex( myColor) + if not myColor then return nil end + return ( string.format("%02X", myColor:getRed()) .. + string.format("%02X", myColor:getGreen()) .. + string.format("%02X", myColor:getBlue())) +end + +-- Conversione Colori da Classe3d a stringa per File.ini +function TrimmingVar.GetColorForIniFile( myColor) + if not myColor then return nil end + return ( myColor:getRed().. ",".. myColor:getGreen().. ",".. myColor:getBlue()) +end + +-- Inizializzazione per lettura delle variabili +if not TrimmingVar.bInit then + local sFileIni = EgtGetIniFile() + if sFileIni then + -- Colore Selezione della Superficie + local sColorSurfSelection = EgtGetStringFromIni( KEY_SECTION_NAME, KEY_INI_SELECTION_SURF_COLOR, "", sFileIni) + if sColorSurfSelection then TrimmingVar.SetColorSurfSelection( TrimmingVar.GetColorFromString( sColorSurfSelection)) end + -- Colore Edges + local sColorEdges = EgtGetStringFromIni( KEY_SECTION_NAME, KEY_INI_EDGES_COLOR, "", sFileIni) + if sColorEdges then TrimmingVar.SetColorEdges( TrimmingVar.GetColorFromString( sColorEdges)) end + -- Colore Linee di Sincronizzazione + local sSyncLineColor = EgtGetStringFromIni( KEY_SECTION_NAME, KEY_INI_SYNC_LINE_COLOR, "", sFileIni) + if sSyncLineColor then TrimmingVar.SetColorSyncLines( TrimmingVar.GetColorFromString( sSyncLineColor)) end + -- Colore Linee di Sincronizzazione mediante Interpolazione + local sSyncInterpLineColor = EgtGetStringFromIni( KEY_SECTION_NAME, KEY_INI_SYNC_INTERP_COLOR, "", sFileIni) + if sSyncInterpLineColor then TrimmingVar.SetColorSyncInterpLines( TrimmingVar.GetColorFromString( sSyncInterpLineColor)) end + -- Colore Superficie Ruled di Bezier + local sRuledBzColor = EgtGetStringFromIni( KEY_SECTION_NAME, KEY_INI_RULED_BZ_COLOR, "", sFileIni) + if sRuledBzColor then TrimmingVar.SetColorRuledBz( TrimmingVar.GetColorFromString( sRuledBzColor)) end + end + TrimmingVar.bInit = false +end + return TrimmingVar \ No newline at end of file diff --git a/Version.lua b/Version.lua index ee74c51..6e9b97e 100644 --- a/Version.lua +++ b/Version.lua @@ -2,5 +2,5 @@ -- Gestione della versione di Trimming dei Termoformati NAME = 'Trimming' -VERSION = '3.1a6' -MIN_EXE = '3.1a6' +VERSION = '3.1a7' +MIN_EXE = '3.1a7'