Trimming 3.1a4 :
- aggiunta memorizzazione dell'ulltimo tipo selezionato nella modalità selezione - se le superfici di selezione generano più di 2 curve di bordo allora vengono definiti degli altri layer di trimming - semplificazione gestione dei layer di sincronizzazione delle curve - aggiunta funzionalità di rimozione delle superfici di Bezier in un layer di trimmatura - miglioramento nella selezione delle curve di sincronizzazione nel caso di curve di bordo chiuse o aperte.
This commit is contained in:
+2
-1
@@ -40,7 +40,7 @@ EgtErase( vIdToErase)
|
||||
-- ( ed eventuali Punti di Sincronizzazione se presenti nel Layer di Salvataggio )
|
||||
local vIdEdges = {}
|
||||
local vIdSyncLines = {}
|
||||
local nLayerStoredSyncId = GlobVar.GetCurrentStoredCurvesLayer( nCurrPartId)
|
||||
local nLayerStoredSyncId = GlobVar.GetCurrentEditSyncCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
if nLayerStoredSyncId and nLayerStoredSyncId ~= GDB_ID.NULL then
|
||||
-- Recupero gli Id delle Linee di sincronizzazione
|
||||
nId = EgtGetFirstInGroup( nLayerStoredSyncId)
|
||||
@@ -107,4 +107,5 @@ end
|
||||
EgtSetCurrPartLayer( nCurrPartId, nCurrLayerId)
|
||||
EgtSetStatus( nCurrLayerId, GDB_ST.ON)
|
||||
|
||||
-- Aggiorno la Grafica
|
||||
EgtDraw()
|
||||
|
||||
+10
-14
@@ -46,12 +46,12 @@ EgtSetStatus( nCurrLayerId, GDB_ST.ON)
|
||||
nId = EgtGetFirstInGroup( nCurrPartId)
|
||||
while nId do
|
||||
if nId ~= nCurrLayerId and
|
||||
( GlobVar.IsTrimmingLayer( nId) or GlobVar.IsEditOrStoredLayer( nId)) then EgtSetStatus( nId, GDB_ST.OFF) end
|
||||
( GlobVar.IsTrimmingLayer( nId) or GlobVar.IsEditSyncCurvesLayer( nId)) then EgtSetStatus( nId, GDB_ST.OFF) end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
|
||||
-- Rimuovo Tutte le Entità ad Eccezione delle Superfici Selezionate ( nel caso Le rendo Visibili)
|
||||
-- [NB. La Selezione cancella tutti i risutati fatti fino ad adesso]
|
||||
-- [NB. La Creazione deli Edges cancella tutti i risutati fatti fino ad adesso]
|
||||
local vIdToErase = {}
|
||||
local nId = EgtGetFirstInGroup( nCurrLayerId)
|
||||
while nId do
|
||||
@@ -62,10 +62,6 @@ while nId do
|
||||
end
|
||||
EgtErase( vIdToErase)
|
||||
|
||||
-- Se Esiste un Layer di Edit o di Stored, lo Rimuovo
|
||||
local vEditOrStoredLayerIds = GlobVar.GetAllEditOrStoredLayer( nCurrPartId, nCurrLayerId)
|
||||
if vEditOrStoredLayerIds ~= nil and #vEditOrStoredLayerIds ~= 0 then EgtErase( nLayerEditId) end
|
||||
|
||||
-- Scorro le superfici di Selezione presenti e recupero il vettore di Selezione {nSurf, nFace}
|
||||
local vSel = {}
|
||||
local nSelSurfId = EgtGetFirstNameInGroup( nCurrLayerId, SELECTION_SURF_NAME)
|
||||
@@ -84,8 +80,8 @@ if #vSel == 0 then
|
||||
EgtOutBox( ERROR_RAW_EDGE_CREATION .. 'No Selected Surf', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
local nFirstId, nCount
|
||||
|
||||
local nFirstId, nCount
|
||||
--------------------------------- Estrazione degli Edges ---------------------------------
|
||||
if vsVal[1] == 'Extract Edges' then
|
||||
-- Recupero la tolleranza lineare per l'estrazione degli Edges
|
||||
@@ -107,7 +103,6 @@ if vsVal[1] == 'Extract Edges' then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------- Calcolo Edges per normali ---------------------------------
|
||||
else
|
||||
-- Recupero la tolleranza lineare per l'estrazione degli Edges e la Thickness
|
||||
@@ -122,17 +117,19 @@ else
|
||||
EgtOutBox( ERROR_EDGE_CREATION .. 'Error in Computing Edges', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
-- Assegno Colore e Name
|
||||
for i = 0, nCount - 1 do
|
||||
end
|
||||
|
||||
-- Assegno Colore e Name
|
||||
for i = 0, nCount - 1 do
|
||||
bOk = EgtSetColor( nFirstId + i, EDGES_COLOR) and
|
||||
EgtSetName( nFirstId + i, EDGES_NAME)
|
||||
if not bOk then
|
||||
EgtOutBox( ERROR_EDGE_CREATION .. 'Assign Raw Edges Properties failed', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
end
|
||||
-- Se più di due curve, definisco dei nuovi Layer di Trimming
|
||||
if nCount > 2 then
|
||||
end
|
||||
-- Se più di due curve, definisco dei nuovi Layer di Trimming
|
||||
if nCount > 2 then
|
||||
for i = 2, nCount - 1, 2 do
|
||||
-- Definisco un nuovo Layer di trimming
|
||||
local nNewTrimmingLayer = GlobVar.CreateTrimmingLayer( nCurrPartId)
|
||||
@@ -162,7 +159,6 @@ else
|
||||
EgtRelocate( nFirstId + i, nNewTrimmingLayer)
|
||||
EgtRelocate( nFirstId + i + 1, nNewTrimmingLayer)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Aggiorno la Grafica
|
||||
|
||||
+6
-8
@@ -10,10 +10,6 @@ local GlobVar = require( 'TrimmingLib')
|
||||
-- Costante di Errore
|
||||
local ERROR_DELETING_TRIMMING = 'Error in Deleting New Trimming : '
|
||||
|
||||
-- Chiedo all'Utente la conferma per eliminare il Layer di Trimming corrente ed eventuali gruppi temporanei
|
||||
local bDelete = EgtOutBox( 'Do you want to delete the current Trimming machining ?', 'Deleting', 'QUESTION', 'YESNO')
|
||||
if not bDelete then return end
|
||||
|
||||
-- Recupero il Part e il Layer corrente di Trimming
|
||||
local nCurrPartId = EgtGetCurrPart()
|
||||
local nCurrLayerId = EgtGetCurrLayer()
|
||||
@@ -28,12 +24,14 @@ if nTrimmingLayerId == nil or nTrimmingLayerId == GDB_ID.NULL then
|
||||
return
|
||||
end
|
||||
|
||||
-- Recupero tutti i layer di Edit e di Stored associati a tale Layer di Trimmatura
|
||||
local vLayerIdToErase = GlobVar.GetAllEditOrStoredLayer( nCurrPartId, nTrimmingLayerId)
|
||||
-- Chiedo all'Utente la conferma per eliminare il Layer di Trimming corrente ed eventuali gruppi temporanei
|
||||
local bDelete = EgtOutBox( 'Do you want to delete the current Trimming machining ?', 'Deleting', 'QUESTION', 'YESNO')
|
||||
if not bDelete then return end
|
||||
|
||||
-- Elimino tutti i Layer ricavati
|
||||
-- Recupero ed eventualmente elimino il Layer delle curve di Sincronizzazione associato
|
||||
local nLayerSynEditId = GlobVar.GetCurrentEditSyncCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
if nLayerSynEditId ~= nil and nLayerSynEditId ~= GDB_ID.NULL then EgtErase( nLayerSynEditId) end
|
||||
EgtErase( nTrimmingLayerId)
|
||||
EgtErase( vLayerIdToErase)
|
||||
|
||||
-- Aggiorno la Grafica
|
||||
EgtDraw()
|
||||
|
||||
@@ -83,7 +83,6 @@ if #vnBzCrvId == 0 then
|
||||
EgtErase( nLayerEditId)
|
||||
return
|
||||
end
|
||||
-- ??? EgtSetStatus( nCurrLayerId, GDB_ST.OFF)
|
||||
|
||||
-- Imposto come Layer corrente quello di Edit
|
||||
EgtSetCurrPartLayer( nCurrPartId, nLayerEditId)
|
||||
|
||||
+40
-54
@@ -27,20 +27,18 @@ if not bOk then
|
||||
return
|
||||
end
|
||||
|
||||
-- Creo un Layer di Edit per le curve di Sincronizzazione ( o recupero quello corrente)
|
||||
local nLayerEditSyncId = GlobVar.GetCurrentEditSyncCurvesLayer( nCurrPartId)
|
||||
if not nLayerEditSyncId or nLayerEditSyncId == GDB_ID.NULL then
|
||||
nLayerEditSyncId = GlobVar.CreateEditSyncCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
else
|
||||
-- Creo/Recupero il Layer di Edit per le curve di Sincronizzazione
|
||||
local nLayerEditSyncId = GlobVar.GetCurrentEditSyncCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
if nLayerEditSyncId ~= nil and nLayerEditSyncId ~= GDB_ID.NULL then
|
||||
local bClear = EgtOutBox( 'Do you want to delete the edit Layer ?', 'Edit', 'QUESTION', 'YESNO')
|
||||
if bClear then
|
||||
EgtErase( nLayerEditSyncId)
|
||||
EgtSetCurrPartLayer( nCurrPartId, nCurrLayerId)
|
||||
EgtSetStatus( nCurrLayerId, GDB_ST.ON)
|
||||
if bClear then EgtErase( nLayerEditSyncId)
|
||||
else
|
||||
EgtSetCurrPartLayer( nCurrPartId, nLayerEditSyncId)
|
||||
EgtDraw()
|
||||
end
|
||||
return
|
||||
end
|
||||
end
|
||||
nLayerEditSyncId = GlobVar.CreateEditSyncCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
if not nLayerEditSyncId or nLayerEditSyncId == GDB_ID.NULL then
|
||||
EgtOutBox( ERROR_EDIT_SYNC_CURVES .. 'Error in creating Edit Layer', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
@@ -53,20 +51,9 @@ while nId do
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
|
||||
-- Se Esiste il Layer di Sistema con le Curve di Sincronizzazione già salvate, allora le rialloco
|
||||
local nLayerSaveSyncId = GlobVar.GetCurrentStoredCurvesLayer( nCurrPartId)
|
||||
if nLayerSaveSyncId and nLayerSaveSyncId ~= GDB_ID.NULL then
|
||||
local nId = EgtGetFirstInGroup( nLayerSaveSyncId)
|
||||
while nId do
|
||||
EgtRelocateGlob( nId, nLayerEditSyncId)
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
-- In Caso contrario Le Calcolo
|
||||
else
|
||||
-- Recupero le Curve di Bordo correnti e da esse estraggo quelle di Sincronizzazione
|
||||
local vIdEdges = {}
|
||||
nId = EgtGetFirstInGroup( nCurrLayerId)
|
||||
while nId do
|
||||
local vIdEdges = {}
|
||||
nId = EgtGetFirstInGroup( nCurrLayerId)
|
||||
while nId do
|
||||
-- verifico che sia una Curva e che sia di Bordo
|
||||
if EgtGetName( nId) == EDGES_NAME then
|
||||
-- Verifico che sia una Curva
|
||||
@@ -78,57 +65,56 @@ else
|
||||
table.insert( vIdEdges, nId)
|
||||
end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
-- Se nel gruppo di Edit delle curve non ne ho esattamente 2 di bordo, errore
|
||||
if #vIdEdges ~= 2 then
|
||||
end
|
||||
-- Se nel gruppo di Edit delle curve non ne ho esattamente 2 di bordo, errore
|
||||
if #vIdEdges ~= 2 then
|
||||
EgtOutBox( ERROR_EDIT_SYNC_CURVES .. 'Not 2 Border Curves detected', 'Error', 'ERROR', 'OK')
|
||||
EgtSetStatus( nCurrLayerId, GDB_ST.ON)
|
||||
EgtErase( nLayerEditSyncId)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
-- Chiedo i Parametri all'Utente
|
||||
local nSyncLinesNumber = EgtGetInfo( nCurrLayerId, KEY_SYNC_LINES_NUMBER, 'i')
|
||||
local bShowOnCorners = EgtGetInfo( nCurrLayerId, KEY_SYNC_LINES_SHOW_ON_CORNERS, 'b')
|
||||
local dSyncLinesAngTol = EgtGetInfo( nCurrLayerId, KEY_SYNC_LINES_NUMBER_ANG_TOL, 'd')
|
||||
if not nSyncLinesNumber or nSyncLinesNumber < 0. then nSyncLinesNumber = SYNC_LINES_NUMBER end
|
||||
if bShowOnCorners == nil then bShowOnCorners = true end
|
||||
if bShowAllLines == nil then bShowAllLines = false end
|
||||
if not dSyncLinesAngTol or dSyncLinesAngTol < 0. then dSyncLinesAngTol = SYNC_LINES_ANG_TOL end
|
||||
local vsVal = EgtDialogBox( 'Seletion', { 'Show on Corners', 'CK:' .. ( bShowOnCorners and '1' or '0')},
|
||||
-- Chiedo i Parametri all'Utente
|
||||
local nSyncLinesNumber = EgtGetInfo( nCurrLayerId, KEY_SYNC_LINES_NUMBER, 'i')
|
||||
local bShowOnCorners = EgtGetInfo( nCurrLayerId, KEY_SYNC_LINES_SHOW_ON_CORNERS, 'b')
|
||||
local dSyncLinesAngTol = EgtGetInfo( nCurrLayerId, KEY_SYNC_LINES_NUMBER_ANG_TOL, 'd')
|
||||
if not nSyncLinesNumber or nSyncLinesNumber < 0. then nSyncLinesNumber = SYNC_LINES_NUMBER end
|
||||
if bShowOnCorners == nil then bShowOnCorners = true end
|
||||
if bShowAllLines == nil then bShowAllLines = false end
|
||||
if not dSyncLinesAngTol or dSyncLinesAngTol < 0. then dSyncLinesAngTol = SYNC_LINES_ANG_TOL end
|
||||
local vsVal = EgtDialogBox( 'Seletion', { 'Show on Corners', 'CK:' .. ( bShowOnCorners and '1' or '0')},
|
||||
{ 'Angular Tolerance', tostring( dSyncLinesAngTol)},
|
||||
{ 'Line Number', tostring( nSyncLinesNumber)})
|
||||
if not vsVal or #vsVal ~= 3 then
|
||||
if not vsVal or #vsVal ~= 3 then
|
||||
EgtErase( nLayerEditSyncId)
|
||||
EgtSetCurrPartLayer( nCurrPartId, nCurrLayerId)
|
||||
return
|
||||
end
|
||||
bShowOnCorners = ( vsVal[1] == '1')
|
||||
dSyncLinesAngTol = tonumber( vsVal[2])
|
||||
nSyncLinesNumber = tonumber( vsVal[3])
|
||||
EgtSetInfo( nCurrLayerId, KEY_SYNC_LINES_NUMBER, nSyncLinesNumber)
|
||||
EgtSetInfo( nCurrLayerId, KEY_SYNC_LINES_SHOW_ON_CORNERS, bShowOnCorners)
|
||||
EgtSetInfo( nCurrLayerId, KEY_SYNC_LINES_NUMBER_ANG_TOL, dSyncLinesAngTol)
|
||||
end
|
||||
bShowOnCorners = ( vsVal[1] == '1')
|
||||
dSyncLinesAngTol = tonumber( vsVal[2])
|
||||
nSyncLinesNumber = tonumber( vsVal[3])
|
||||
EgtSetInfo( nCurrLayerId, KEY_SYNC_LINES_NUMBER, nSyncLinesNumber)
|
||||
EgtSetInfo( nCurrLayerId, KEY_SYNC_LINES_SHOW_ON_CORNERS, bShowOnCorners)
|
||||
EgtSetInfo( nCurrLayerId, KEY_SYNC_LINES_NUMBER_ANG_TOL, dSyncLinesAngTol)
|
||||
|
||||
-- Recupero le Curve di Sincronizzazione
|
||||
local nFirstId, nCount
|
||||
bOk, nFirstId, nCount = EgtTrimmingGetSurfBzSyncPoints( nLayerEditSyncId, vIdEdges[1], vIdEdges[2], dLinTol, dSyncLinesAngTol, nSyncLinesNumber, bShowOnCorners)
|
||||
if not bOk then
|
||||
-- Recupero le Curve di Sincronizzazione
|
||||
local nFirstId, nCount
|
||||
bOk, nFirstId, nCount = EgtTrimmingGetSurfBzSyncPoints( nLayerEditSyncId, vIdEdges[1], vIdEdges[2], dLinTol, dSyncLinesAngTol, nSyncLinesNumber, bShowOnCorners)
|
||||
if not bOk then
|
||||
EgtOutBox( ERROR_EDIT_SYNC_CURVES .. 'Error in Computing Sync Lines', 'Error', 'ERROR', 'OK')
|
||||
EgtErase( nLayerEditSyncId)
|
||||
EgtSetCurrPartLayer( nCurrPartId, nCurrLayerId)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
-- Assegno Colore e Name
|
||||
nId = EgtGetFirstInGroup( nLayerEditSyncId)
|
||||
while nId do
|
||||
-- Assegno Colore e Name
|
||||
nId = EgtGetFirstInGroup( nLayerEditSyncId)
|
||||
while nId do
|
||||
if nId >= nFirstId then
|
||||
EgtSetColor( nId, SYNC_LINE_COLOR)
|
||||
EgtSetName( nId, SYNC_LINE_NAME)
|
||||
end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
end
|
||||
|
||||
-- Imposto il gruppo di Edit Corrente
|
||||
|
||||
@@ -53,7 +53,10 @@ while nId do
|
||||
table.insert( vIdToRelocate, nId)
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
for i = 1, #vIdToRelocate do EgtRelocate( vIdToRelocate[i], nCurrLayerId) end
|
||||
for i = 1, #vIdToRelocate do
|
||||
EgtRelocate( vIdToRelocate[i], nCurrLayerId)
|
||||
EgtSetStatus( vIdToRelocate[i], GDB_ST.ON)
|
||||
end
|
||||
|
||||
-- Cancello il Layer di Edit e rendo quello di Trimming come corrente
|
||||
EgtErase( nLayerEditId)
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 62 KiB |
+3
-7
@@ -18,9 +18,9 @@ if nCurrPartId == nil then
|
||||
end
|
||||
|
||||
-- Chiedo all'utente le Tolleranze e le Salvo come Info nel Layer di Trimming
|
||||
local vsVal = EgtDialogBox( 'New Trimming', { 'Linear Tolerance', '0.05'},
|
||||
{ 'Angular Tolerance', '15.0'},
|
||||
{ 'Surface Angular Tolerance', '30.0'})
|
||||
local vsVal = EgtDialogBox( 'New Trimming', { 'Linear Tolerance', tostring( LIN_TOL)},
|
||||
{ 'Angular Tolerance', tostring( ANG_TOL)},
|
||||
{ 'Surface Angular Tolerance', tostring( ANG_FACE_TOL)})
|
||||
if not vsVal or #vsVal ~= 3 then return end
|
||||
|
||||
-- Creo il Layer di Trimming all'interno del Part corrente e lo rendo corrente
|
||||
@@ -46,9 +46,5 @@ if not bOk then
|
||||
return
|
||||
end
|
||||
|
||||
-- Cancello tutti i Layer Temporanei ( Quindi di Stored o di Edit)
|
||||
local vIdToErase = GlobVar.GetAllEditOrStoredLayer( nCurrPartId, nCurrLayerId)
|
||||
if vIdToErase ~= nil and #vIdToErase ~= 1 then EgtErase( vIdToErase) end
|
||||
|
||||
-- Aggiorno la Grafica
|
||||
EgtDraw()
|
||||
@@ -0,0 +1,36 @@
|
||||
-- CalcBezier.lua by Egalware s.r.l. 2026/01/22
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
-- Carico le costanti di Trimming
|
||||
EgtAddToPackagePath( EgtGetSourceDir() .. '?.lua')
|
||||
local GlobVar = require( 'TrimmingLib')
|
||||
-- Costante di Errore
|
||||
local ERROR_BEZIER_CREATION = 'Error in Ruled Bezier Creation : '
|
||||
|
||||
-- Recupero il Part e il Layer di Trimming con le relative Info
|
||||
local nCurrPartId = EgtGetCurrPart()
|
||||
local nCurrLayerId = GlobVar.GetTrimmingLayerRefId( EgtGetCurrLayer())
|
||||
if not GlobVar.IsTrimmingLayer( nCurrLayerId) then
|
||||
EgtOutBox( ERROR_BEZIER_CREATION .. 'Not a valid Trimming Layer', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
|
||||
-- Chiedo Conferma dell'Operazione
|
||||
local bDelete = EgtOutBox( 'Do you want erase the Bezier Surface ?', 'Confirm', 'QUESTION', 'YESNO')
|
||||
if not bDelete then EgtSetCurrPartLayer( nCurrPartId, nCurrLayerId) return end
|
||||
|
||||
-- Rimuovo tutte le entità che sono Superfici di Bezier Ruled nel Layer corrente
|
||||
local vIdToErase = {}
|
||||
local nId = EgtGetFirstInGroup( nCurrLayerId)
|
||||
while nId do
|
||||
local sName = EgtGetName( nId)
|
||||
if sName == RULED_BZ_NAME then table.insert( vIdToErase, nId) end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
EgtErase( vIdToErase)
|
||||
|
||||
-- Aggiorno la Grafica
|
||||
EgtDraw()
|
||||
@@ -41,5 +41,12 @@ EgtErase( nLayerEditId)
|
||||
EgtSetCurrPartLayer( nCurrPartId, nCurrLayerId)
|
||||
EgtSetStatus( nCurrLayerId, GDB_ST.ON)
|
||||
|
||||
-- Imposto le Curve di Bordo come visibili
|
||||
local nId = EgtGetFirstInGroup( nCurrLayerId)
|
||||
while nId do
|
||||
if EgtGetName( nId) == EDGES_NAME then EgtSetStatus( nId, GDB_ST.ON) end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
|
||||
-- Aggiorno la Grafica
|
||||
EgtDraw()
|
||||
|
||||
+4
-3
@@ -43,9 +43,10 @@ while nId do
|
||||
end
|
||||
EgtErase( vIdToErase)
|
||||
|
||||
-- Se Esiste un Layer di Edit o di Store, lo Rimuovo
|
||||
local vEditOrStoreLayerIds = GlobVar.GetAllEditOrStoredLayer( nTrimmingLayer)
|
||||
if vEditOrStoreLayerIds ~= nil and #vEditOrStoreLayerIds ~= 0 then EgtErase( vEditOrStoreLayerIds) end
|
||||
-- Se Esiste un Layer di Edit o di Stored, lo Rimuovo
|
||||
-- [NB. La DeSelezione cancella tutti i risultati fatti fino ad adesso]
|
||||
local nLayerSynEditId = GlobVar.GetCurrentEditSyncCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
if nLayerSynEditId ~= nil and nLayerSynEditId ~= GDB_ID.NULL then EgtErase( nLayerEditId) end
|
||||
|
||||
-- Recupero l'ultima(le ultime) Supercicie(i) aggiunta(e) e la(e) elimino
|
||||
local vLastSurfIds = EgtGetInfo( nTrimmingLayer, KEY_SELECTION_LAST_IDS, 'vi')
|
||||
|
||||
+3
-5
@@ -18,10 +18,9 @@ if not GlobVar.IsTrimmingLayer( nCurrLayerId) then
|
||||
return
|
||||
end
|
||||
|
||||
-- Recupero il Layer di Edit e di Store delle Curve di Sync
|
||||
local nLayerEditId = GlobVar.GetCurrentEditSyncCurvesLayer( nCurrPartId)
|
||||
local nLayerStoreId = GlobVar.GetCurrentStoredCurvesLayer( nCurrPartId)
|
||||
if ( not nLayerEditId or nLayerEditId == GDB_ID.NULL) and ( not nLayerStoreId or nLayerStoreId == GDB_ID.NULL) then
|
||||
-- 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
|
||||
@@ -32,7 +31,6 @@ if not bDelete then EgtSetCurrPartLayer( nCurrPartId, nLayerEditId) return end
|
||||
|
||||
-- Cancello ( se esistono) i rispettivi Gruppi
|
||||
if nLayerEditId then EgtErase( nLayerEditId) end
|
||||
if nLayerStoreId then EgtErase( nLayerStoreId) end
|
||||
|
||||
-- Metto il Focus sul Layer di Trimming
|
||||
EgtSetStatus( nCurrLayerId, GDB_ST.ON)
|
||||
|
||||
+20
-4
@@ -37,7 +37,20 @@ if dStoredSize ~= nil then dSize = dStoredSize end
|
||||
local dSizeTol = 0.75
|
||||
local dStoredSizeTol = EgtGetInfo( nCurrLayerId, KEY_SURF_BORDER_SIZE_TOL, 'd')
|
||||
if dStoredSizeTol ~= nil then dSizeTol = dStoredSizeTol end
|
||||
local vsVal = EgtDialogBox( 'Seletion', { 'Type', 'CB:*Insert Surface,Face Search,Surf Search'},
|
||||
local nLastSelType = EgtGetInfo( nCurrLayerId, KEY_SELECTION_LAST_SELECTION_TYPE, 'i')
|
||||
local sLabels = { 'Insert Surface', 'Face Search', 'Surf Search'}
|
||||
local sTypeDBSel
|
||||
if nLastSelType ~= nil then
|
||||
local sParts = {}
|
||||
for i, sLabel in ipairs( sLabels) do
|
||||
if i == nLastSelType then sParts[i] = '*' .. sLabel
|
||||
else sParts[i] = sLabel end
|
||||
end
|
||||
sTypeDBSel = 'CB:' .. table.concat( sParts, ',')
|
||||
else
|
||||
sTypeDBSel = 'CB:' .. table.concat( sLabels, ',')
|
||||
end
|
||||
local vsVal = EgtDialogBox( 'Seletion', { 'Type', sTypeDBSel},
|
||||
{ 'Size', tostring( dSize)},
|
||||
{ 'Size Tolerance', tostring( dSizeTol)})
|
||||
if not vsVal or #vsVal ~= 3 then return end
|
||||
@@ -45,6 +58,9 @@ dSize = tonumber( vsVal[2])
|
||||
dSizeTol = tonumber( vsVal[3])
|
||||
EgtSetInfo( nCurrLayerId, KEY_SURF_BORDER_SIZE, dSize)
|
||||
EgtSetInfo( nCurrLayerId, KEY_SURF_BORDER_SIZE_TOL, dSizeTol)
|
||||
for i, sLabel in ipairs( sLabels) do
|
||||
if sLabel == vsVal[1] then EgtSetInfo( nCurrLayerId, KEY_SELECTION_LAST_SELECTION_TYPE, i) break end
|
||||
end
|
||||
|
||||
-- Recupero le tolleranze impostate alla creazione del Layer di Trimming corrente
|
||||
local dLinTol = EgtGetInfo( nCurrLayerId, KEY_LIN_TOL, 'd')
|
||||
@@ -62,7 +78,7 @@ EgtSetStatus( nCurrLayerId, GDB_ST.ON)
|
||||
nId = EgtGetFirstInGroup( nCurrPartId)
|
||||
while nId do
|
||||
if nId ~= nCurrLayerId and
|
||||
( GlobVar.IsTrimmingLayer( nId) or GlobVar.IsEditOrStoredLayer( nId)) then EgtSetStatus( nId, GDB_ST.OFF) end
|
||||
( GlobVar.IsTrimmingLayer( nId) or GlobVar.IsEditSyncCurvesLayer( nId)) then EgtSetStatus( nId, GDB_ST.OFF) end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
|
||||
@@ -80,8 +96,8 @@ EgtErase( vIdToErase)
|
||||
|
||||
-- Se Esiste un Layer di Edit o di Stored, lo Rimuovo
|
||||
-- [NB. La Selezione cancella tutti i risultati fatti fino ad adesso]
|
||||
local vEditOrStoredLayerIds = GlobVar.GetAllEditOrStoredLayer( nCurrPartId, nCurrLayerId)
|
||||
if vEditOrStoredLayerIds ~= nil and #vEditOrStoredLayerIds ~= 0 then EgtErase( nLayerEditId) end
|
||||
local nLayerSynEditId = GlobVar.GetCurrentEditSyncCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
if nLayerSynEditId ~= nil and nLayerSynEditId ~= GDB_ID.NULL then EgtErase( nLayerEditId) end
|
||||
|
||||
--------------------------------- Inserimento della Superficie ---------------------------------
|
||||
-- [Nessuna Tolleranza]
|
||||
|
||||
+6
-6
@@ -1,4 +1,3 @@
|
||||
|
||||
[Trimming]
|
||||
TrimEnable=1
|
||||
BaseDir=C:\EgtData\Trimming
|
||||
@@ -14,8 +13,9 @@ 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=CalcBezier.lua,Images\BezierSurf.png,Get Surf
|
||||
Button14=EditSyncLines.lua,Images\EditSyncLines.png,Edit SyncLines
|
||||
Button15=ResetSyncLines.lua,Images\ResetSyncLines.png,Reset SyncLines
|
||||
Button16=EndEditSyncLines.lua,Images\EndSyncLines.png,Ok
|
||||
|
||||
Button13=EditSyncLines.lua,Images\EditSyncLines.png,Edit SyncLines
|
||||
Button14=ResetSyncLines.lua,Images\ResetSyncLines.png,Reset SyncLines
|
||||
;Button15=EndEditSyncLines.lua,Images\EndSyncLines.png,Ok
|
||||
Button15=Separator
|
||||
Button16=CalcBezier.lua,Images\BezierSurf.png,Get Surf
|
||||
Button17=ResetBezierSurf.lua,Images\ResetBezierSurf.png,<-- Undo
|
||||
|
||||
+27
-79
@@ -16,6 +16,7 @@ KEY_SURF_ANG_TOL = 'SurfAngTol'
|
||||
KEY_SURF_BORDER_SIZE = 'BorderSize' -- Selection
|
||||
KEY_SURF_BORDER_SIZE_TOL = 'BorderSizeTol' -- Selection
|
||||
KEY_SELECTION_REF_SURF = 'nRefSurf' -- Selection
|
||||
KEY_SELECTION_LAST_SELECTION_TYPE = 'LastSelType' -- Selection (type)
|
||||
KEY_SELECTION_LAST_IDS = 'vSelLastIds' -- Undo Selection
|
||||
KEY_REF_TRIMMING_LAYER = 'nRefTrimmingLayer' -- Trimming Layer Ref
|
||||
KEY_AUTO_TRIMMING = 'AutoTrim' -- AutoTrimming
|
||||
@@ -38,7 +39,7 @@ LAYER_NAME_SYNC_CURVES = 'SyncCurves'
|
||||
LAYER_NAME_SYNC_STORED_CURVES = 'SyncStoredCurves'
|
||||
ANG_FACE_TOL = 30.
|
||||
ANG_TOL = 15.
|
||||
LIN_TOL = 0.05
|
||||
LIN_TOL = 0.2
|
||||
SYNC_LINES_NUMBER = 0
|
||||
SYNC_LINES_ANG_TOL = 15.0
|
||||
|
||||
@@ -70,7 +71,6 @@ SYNC_LINE_COLOR = Color3d( 0, 255, 0)
|
||||
RULED_BZ_NAME = 'SurfBz'
|
||||
RULED_BZ_COLOR = Color3d( 37, 37, 37)
|
||||
|
||||
|
||||
-- ***============================== FUNZIONI ==============================***
|
||||
|
||||
--======================== Contatore Incrementale =======================
|
||||
@@ -108,8 +108,22 @@ function TrimmingVar.IsTrimmingLayer( nId)
|
||||
return ( sLayerType ~= nil and sLayerType == KEY_LAYER_SELECTION)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Funzione per ottenere il Layer di Trimmatura di riferimento dato un generico Layer
|
||||
function TrimmingVar.GetTrimmingLayerRefId( nId)
|
||||
if nId == nil or nId == GDB_ID.NULL then return GDB_ID.NULL end
|
||||
-- Se Layer di Trimmatura allora è lui stesso
|
||||
if TrimmingVar.IsTrimmingLayer( nId) then return nId end
|
||||
if TrimmingVar.IsEditCurvesLayer( nId) or TrimmingVar.IsEditSyncCurvesLayer( nId) then
|
||||
local nTrimmingLayerRef = EgtGetInfo( nId, KEY_REF_TRIMMING_LAYER, 'i')
|
||||
if nTrimmingLayerRef ~= nil and TrimmingVar.IsTrimmingLayer( nTrimmingLayerRef) then return nTrimmingLayerRef end
|
||||
end
|
||||
return GDB_ID.NULL
|
||||
end
|
||||
|
||||
--============================ Layer Edit Bordi ===========================
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Funzione per creare un Layer di Edit dei bordi
|
||||
function TrimmingVar.CreateEditCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
local nEditLayerId = EgtGroup( nCurrPartId)
|
||||
@@ -126,6 +140,7 @@ function TrimmingVar.CreateEditCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
return nEditLayerId
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Funzione per verificare se un Layer è un Layer di Edit dei bordi
|
||||
function TrimmingVar.IsEditCurvesLayer( nId)
|
||||
if nId == nil or nId == GDB_ID.NULL then return false end
|
||||
@@ -134,6 +149,7 @@ function TrimmingVar.IsEditCurvesLayer( nId)
|
||||
return ( sLayerType ~= nil and sLayerType == KEY_LAYER_EDIT_CURVES)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Funzione per ottenere il Layer di Edit dei bordi corrente
|
||||
function TrimmingVar.GetCurrentEditLayer( nPartId)
|
||||
if nPartId == nil or nPartId == GDB_ID.NULL then return false end
|
||||
@@ -148,6 +164,7 @@ end
|
||||
|
||||
--======================== Layer Edit Sync Curve =======================
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Funzione per creare un Layer di Edit delle curve di Sincornizzazione
|
||||
function TrimmingVar.CreateEditSyncCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
local nEditSyncLayerId = EgtGroup( nCurrPartId)
|
||||
@@ -165,6 +182,7 @@ function TrimmingVar.CreateEditSyncCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
return nEditSyncLayerId
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Funzione per verificare se un Layer è un Layer di Edit delle curve di Sincronizzazione
|
||||
function TrimmingVar.IsEditSyncCurvesLayer( nId)
|
||||
if nId == nil or nId == GDB_ID.NULL then return false end
|
||||
@@ -173,53 +191,19 @@ function TrimmingVar.IsEditSyncCurvesLayer( nId)
|
||||
return ( sLayerType ~= nil and sLayerType == KEY_LAYER_SYNC_CURVES)
|
||||
end
|
||||
|
||||
-- Funzione che ritorna il Layer di Stored delle curve di sincronizzazione corrente
|
||||
function TrimmingVar.GetCurrentEditSyncCurvesLayer( nPartId)
|
||||
---------------------------------------------------------------------------
|
||||
-- Funzione che ritorna il Layer di Edit delle curve di sincronizzazione riferito al Layer di Trimming
|
||||
function TrimmingVar.GetCurrentEditSyncCurvesLayer( nPartId, nTrimmingLayerId)
|
||||
if nPartId == nil or nPartId == GDB_ID.NULL then return false end
|
||||
local nEditSyncLayerId
|
||||
local nLayerId = EgtGetFirstInGroup( nPartId)
|
||||
while nLayerId do
|
||||
if TrimmingVar.IsEditSyncCurvesLayer( nLayerId) then return nLayerId end
|
||||
nLayerId = EgtGetNext( nLayerId)
|
||||
if TrimmingVar.IsEditSyncCurvesLayer( nLayerId) then
|
||||
local nRefTrimmingLayer = TrimmingVar.GetTrimmingLayerRefId( nLayerId)
|
||||
if nRefTrimmingLayer ~= nil and nRefTrimmingLayer ~= GDB_ID.NULL and nRefTrimmingLayer == nTrimmingLayerId then
|
||||
return nLayerId
|
||||
end
|
||||
return GDB_ID.NULL
|
||||
end
|
||||
|
||||
--======================== Layer Store Sync Curve =======================
|
||||
|
||||
-- Funzione per creare un Layer di Stored delle curve di Sincronizzazione
|
||||
function TrimmingVar.CreateSyncStoredCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
local nEditSyncStoredLayerId = EgtGroup( nCurrPartId)
|
||||
local bOk = ( nEditSyncStoredLayerId ~= nil)
|
||||
if bOk then
|
||||
bOk = ( EgtSetName( nEditSyncStoredLayerId, LAYER_NAME_SYNC_STORED_CURVES) and
|
||||
EgtSetInfo( nEditSyncStoredLayerId, KEY_LAYER_TYPE, KEY_LAYER_SYNC_STORE_CURVES) and
|
||||
EgtSetInfo( nEditSyncStoredLayerId, KEY_REF_TRIMMING_LAYER, nCurrLayerId) and
|
||||
EgtSetColor( nEditSyncStoredLayerId, SYNC_LINE_COLOR) and
|
||||
EgtSetLevel( nEditSyncStoredLayerId, GDB_LV.SYSTEM))
|
||||
end
|
||||
if not bOk then
|
||||
EgtErase( nEditSyncStoredLayerId)
|
||||
return GDB_ID.NULL
|
||||
end
|
||||
return nEditSyncStoredLayerId
|
||||
end
|
||||
|
||||
-- Funzione per verificare se un Layer è un Layer di Stored delle curve di Sincronizzazione
|
||||
function TrimmingVar.IsSyncStoredCurvesLayer( nId)
|
||||
if nId == nil or nId == GDB_ID.NULL then return false end
|
||||
-- Verifico che la chiave del gruppo sia coerente
|
||||
local sLayerType = EgtGetInfo( nId, KEY_LAYER_TYPE, 's')
|
||||
return ( sLayerType ~= nil and sLayerType == KEY_LAYER_SYNC_STORE_CURVES)
|
||||
end
|
||||
|
||||
-- Funzione che ritorna il Layer di Stored delle curve di sincronizzazione corrente
|
||||
function TrimmingVar.GetCurrentStoredCurvesLayer( nPartId)
|
||||
if nPartId == nil or nPartId == GDB_ID.NULL then return false end
|
||||
local nStoredEditLayerId
|
||||
local nLayerId = EgtGetFirstInGroup( nPartId)
|
||||
while nLayerId do
|
||||
if TrimmingVar.IsSyncStoredCurvesLayer( nLayerId) then return nLayerId end
|
||||
nLayerId = EgtGetNext( nLayerId)
|
||||
end
|
||||
return GDB_ID.NULL
|
||||
@@ -227,40 +211,4 @@ end
|
||||
|
||||
--======================== Utility =======================
|
||||
|
||||
-- Funzione per verificare se un Layer è un Layer di Edit o di Stored
|
||||
function TrimmingVar.IsEditOrStoredLayer( nId)
|
||||
if nId == nil or nId == GDB_ID.NULL then return false end
|
||||
return ( TrimmingVar.IsEditCurvesLayer( nId) or
|
||||
TrimmingVar.IsEditSyncCurvesLayer( nId) or
|
||||
TrimmingVar.IsSyncStoredCurvesLayer( nId))
|
||||
end
|
||||
|
||||
-- Funzione per ottenere il Layer di Trimmatura di riferimento dato un generico Layer
|
||||
function TrimmingVar.GetTrimmingLayerRefId( nId)
|
||||
if nId == nil or nId == GDB_ID.NULL then return GDB_ID.NULL end
|
||||
-- Se Layer di Trimmatura allora è lui stesso
|
||||
if TrimmingVar.IsTrimmingLayer( nId) then return nId end
|
||||
if TrimmingVar.IsEditOrStoredLayer( nId) then
|
||||
local nTrimmingLayerRef = EgtGetInfo( nId, KEY_REF_TRIMMING_LAYER, 'i')
|
||||
if nTrimmingLayerRef ~= nil and TrimmingVar.IsTrimmingLayer( nTrimmingLayerRef) then return nTrimmingLayerRef end
|
||||
end
|
||||
return GDB_ID.NULL
|
||||
end
|
||||
|
||||
-- Funzione che dato un Layer di Trimmatura, ritorna tutti i Layer di Edit o Store associati
|
||||
function TrimmingVar.GetAllEditOrStoredLayer( nPartId, nLayerId)
|
||||
local vLayerIds = {}
|
||||
if nLayerId == nil or nLayerId == GDB_ID.NULL then return vLayerIds end
|
||||
if not TrimmingVar.IsTrimmingLayer( nLayerId) then return vLayerIds end
|
||||
local nId = EgtGetFirstGroupInGroup( nPartId)
|
||||
while nId ~= nil do
|
||||
if TrimmingVar.IsEditOrStoredLayer( nId) then
|
||||
local nLayerRefId = TrimmingVar.GetTrimmingLayerRefId( nId)
|
||||
if nLayerRefId ~= nil and nLayerRefId ~= GDB_ID.NULL and nLayerRefId ~= nLayerId then table.insert( vLayerIds, nId) end
|
||||
end
|
||||
nId = EgtGetNextGroup( nId)
|
||||
end
|
||||
return vLayerIds
|
||||
end
|
||||
|
||||
return TrimmingVar
|
||||
+2
-2
@@ -2,5 +2,5 @@
|
||||
-- Gestione della versione di Trimming dei Termoformati
|
||||
|
||||
NAME = 'Trimming'
|
||||
VERSION = '3.1a3'
|
||||
MIN_EXE = '3.1a3'
|
||||
VERSION = '3.1a4'
|
||||
MIN_EXE = '3.1a4'
|
||||
|
||||
Reference in New Issue
Block a user