Trimming 3.1a5 :

- aggiunte tolleranze a livello interfaccia per le curve di bordo.
This commit is contained in:
Riccardo Elitropi
2026-01-23 17:59:39 +01:00
parent dfa187838b
commit e44363de3d
5 changed files with 36 additions and 26 deletions
+10
View File
@@ -36,6 +36,16 @@ while nId do
end end
EgtErase( vIdToErase) EgtErase( vIdToErase)
-- Recupero la Tolleranza Lineare ed Angolare con cui sono stati approssimati gli Edges
local dEdgeLinTol = EgtGetInfo( nCurrLayerId, KEY_LIN_TOL_EDGES, 'd')
local dEdgeAngTol = EgtGetInfo( nCurrLayerId, KEY_ANG_TOL_EDGES, 'd')
if dEdgeLinTol == nil or dEdgeAngTol == nil then
EgtOutBox( ERROR_BEZIER_CREATION .. 'Edge Approx tollerance not found', 'Error', 'ERROR', 'OK')
return
end
dLinTol = dEdgeLinTol
dAngTol = dEdgeAngTol
-- Recupero gli Edges per la creazione della Superficie di Bezier Ruled -- Recupero gli Edges per la creazione della Superficie di Bezier Ruled
-- ( ed eventuali Punti di Sincronizzazione se presenti nel Layer di Salvataggio ) -- ( ed eventuali Punti di Sincronizzazione se presenti nel Layer di Salvataggio )
local vIdEdges = {} local vIdEdges = {}
+22 -17
View File
@@ -28,17 +28,24 @@ if not bOk then
return return
end end
local dEdgeLinTol = EgtGetInfo( nCurrLayerId, KEY_LIN_TOL_EDGES, 'd') local dEdgeLinTol = EgtGetInfo( nCurrLayerId, KEY_LIN_TOL_EDGES, 'd')
local dEdgeAngTol = EgtGetInfo( nCurrLayerId, KEY_ANG_TOL_EDGES, 'd')
local dEdgeThick = EgtGetInfo( nCurrLayerId, KEY_THICK_EDGES, 'd') local dEdgeThick = EgtGetInfo( nCurrLayerId, KEY_THICK_EDGES, 'd')
-- Determino il Tipo di Estrazione degli Edges -- Determino il Tipo di Estrazione degli Edges
local dLinTolForEdges = dLinTol local dLinTolForEdges = dLinTol
local dThickForEdges = 5.0 local dAngTolForEdges = dAngTol
local dThickForEdges = EDGE_THICK
if dEdgeLinTol then dLinTolForEdges = dEdgeLinTol end if dEdgeLinTol then dLinTolForEdges = dEdgeLinTol end
if dEdgeAngTol then dAngTolForEdges = dEdgeAngTol end
if dEdgeThick then dThickForEdges = dEdgeThick end if dEdgeThick then dThickForEdges = dEdgeThick end
local vsVal = EgtDialogBox( 'Edge Extraction', { 'Type', 'CB:*Extract Edges,Edges from Normals'}, local vsVal = EgtDialogBox( 'Edge Extraction', { 'Type', 'CB:*Extract Edges,Edges from Normals'},
{ 'Linear Tolerance', tostring( dLinTolForEdges)}, { 'Linear Tolerance', tostring( dLinTolForEdges)},
{ 'Angular Tolerance', tostring( dAngTolForEdges)},
{ 'Thickness', tostring( dThickForEdges)}) { 'Thickness', tostring( dThickForEdges)})
if not vsVal or #vsVal ~= 3 then return end if not vsVal or #vsVal ~= 4 then return end
dEdgeLinTol = tonumber( vsVal[2])
dEdgeAngTol = tonumber( vsVal[3])
dEdgeThick = tonumber( vsVal[4])
-- Rendo invisibili gli altri Layer di Trimmatura e tutti i Layer Temporanei -- Rendo invisibili gli altri Layer di Trimmatura e tutti i Layer Temporanei
-- NB. Il focus va sul Layer corrente -- NB. Il focus va sul Layer corrente
@@ -84,12 +91,8 @@ end
local nFirstId, nCount local nFirstId, nCount
--------------------------------- Estrazione degli Edges --------------------------------- --------------------------------- Estrazione degli Edges ---------------------------------
if vsVal[1] == 'Extract Edges' then if vsVal[1] == 'Extract Edges' then
-- Recupero la tolleranza lineare per l'estrazione degli Edges
dEdgeLinTol = tonumber( vsVal[2])
-- La memorizzo come Info per recuperla successivamente
EgtSetInfo( nCurrLayerId, KEY_LIN_TOL_EDGES, dEdgeLinTol)
-- Recupero i Bordi -- Recupero i Bordi
bOk, nFirstId, nCount = EgtTrimmingGetBorders( nCurrLayerId, vSel, dEdgeLinTol, dAngTol) bOk, nFirstId, nCount = EgtTrimmingGetBorders( nCurrLayerId, vSel, dEdgeLinTol, dEdgeAngTol)
if not bOk then if not bOk then
EgtOutBox( ERROR_EDGE_CREATION .. 'Error in Computing Edges', 'Error', 'ERROR', 'OK') EgtOutBox( ERROR_EDGE_CREATION .. 'Error in Computing Edges', 'Error', 'ERROR', 'OK')
return return
@@ -105,14 +108,8 @@ if vsVal[1] == 'Extract Edges' then
end end
--------------------------------- Calcolo Edges per normali --------------------------------- --------------------------------- Calcolo Edges per normali ---------------------------------
else else
-- Recupero la tolleranza lineare per l'estrazione degli Edges e la Thickness
dEdgeLinTol = tonumber( vsVal[2])
local dThickness = tonumber( vsVal[3])
-- Le Memorizzo per recuperale successivamente
EgtSetInfo( nCurrLayerId, KEY_LIN_TOL_EDGES, dEdgeLinTol)
EgtSetInfo( nCurrLayerId, KEY_THICK_EDGES, dEdgeThick)
-- Calcolo i Bordi -- Calcolo i Bordi
bOk, nFirstId, nCount = EgtTrimmingGetBordersByNormals( nCurrLayerId, vSel, dEdgeLinTol, dAngTol, dThickness) bOk, nFirstId, nCount = EgtTrimmingGetBordersByNormals( nCurrLayerId, vSel, dEdgeLinTol, dEdgeAngTol, dEdgeThick)
if not bOk then if not bOk then
EgtOutBox( ERROR_EDGE_CREATION .. 'Error in Computing Edges', 'Error', 'ERROR', 'OK') EgtOutBox( ERROR_EDGE_CREATION .. 'Error in Computing Edges', 'Error', 'ERROR', 'OK')
return return
@@ -128,22 +125,30 @@ for i = 0, nCount - 1 do
return return
end end
end end
-- Salvo le Tolleranze nel Layer di Trimming
EgtSetInfo( nCurrLayerId, KEY_LIN_TOL_EDGES, dEdgeLinTol)
EgtSetInfo( nCurrLayerId, KEY_ANG_TOL_EDGES, dEdgeAngTol)
EgtSetInfo( nCurrLayerId, KEY_THICK_EDGES, dEdgeThick)
-- Se più di due curve, definisco dei nuovi Layer di Trimming -- Se più di due curve, definisco dei nuovi Layer di Trimming
if nCount > 2 then if nCount > 2 then
for i = 2, nCount - 1, 2 do for i = 2, nCount - 1, 2 do
-- Definisco un nuovo Layer di trimming -- Definisco un nuovo Layer di trimming
local nNewTrimmingLayer = GlobVar.CreateTrimmingLayer( nCurrPartId) local nNewTrimmingLayer = GlobVar.CreateTrimmingLayer( nCurrPartId)
if nCurrLayerId == GDB_ID.NULL then if nCurrLayerId == GDB_ID.NULL then
EgtOutBox( ERROR_CREATING_NEW_TRIMMING .. 'Defining Layer failed', 'Error', 'ERROR', 'OK') EgtOutBox( ERROR_EDGE_CREATION .. 'Defining Layer failed', 'Error', 'ERROR', 'OK')
return return
end end
-- Copio proprietà -- Copio proprietà
bOk = EgtSetInfo( nNewTrimmingLayer, KEY_LIN_TOL, dLinTol) and bOk = EgtSetInfo( nNewTrimmingLayer, KEY_LIN_TOL, dLinTol) and
EgtSetInfo( nNewTrimmingLayer, KEY_ANG_TOL, dAngTol) and EgtSetInfo( nNewTrimmingLayer, KEY_ANG_TOL, dAngTol) and
EgtSetInfo( nNewTrimmingLayer, KEY_SURF_ANG_TOL, dAngFaceTol) and EgtSetInfo( nNewTrimmingLayer, KEY_SURF_ANG_TOL, dAngFaceTol) and
EgtSetInfo( nNewTrimmingLayer, KEY_LIN_TOL_EDGES, dEdgeLinTol) EgtSetInfo( nNewTrimmingLayer, KEY_LIN_TOL_EDGES, dEdgeLinTol) and
EgtSetInfo( nNewTrimmingLayer, KEY_ANG_TOL_EDGES, dEdgeAngTol) and
EgtSetInfo( nNewTrimmingLayer, KEY_THICK_EDGES, dEdgeThick)
if not bOk then if not bOk then
EgtOutBox( ERROR_CREATING_NEW_TRIMMING .. 'Saving Tolerances failed', 'Error', 'ERROR', 'OK') EgtOutBox( ERROR_EDGE_CREATION .. 'Saving Tolerances failed', 'Error', 'ERROR', 'OK')
EgtErase( nNewTrimmingLayer) EgtErase( nNewTrimmingLayer)
return return
end end
-7
View File
@@ -44,13 +44,6 @@ if not nLayerEditSyncId or nLayerEditSyncId == GDB_ID.NULL then
return return
end end
-- Rendo Invisibili gli altri Layer di Trimming
nId = EgtGetFirstInGroup( nCurrPartId)
while nId do
if GlobVar.IsTrimmingLayer( nId) and nId ~= nCurrLayerId then EgtSetStatus( nId, GDB_ST.OFF) end
nId = EgtGetNext( nId)
end
local vIdEdges = {} local vIdEdges = {}
nId = EgtGetFirstInGroup( nCurrLayerId) nId = EgtGetFirstInGroup( nCurrLayerId)
while nId do while nId do
+2
View File
@@ -10,6 +10,7 @@ local TrimmingVar = {
-- Chiavi Info Part/Layers -- Chiavi Info Part/Layers
KEY_LIN_TOL = 'LinTol' KEY_LIN_TOL = 'LinTol'
KEY_LIN_TOL_EDGES = 'LinTolEdges' -- Edges Extraction (modify) KEY_LIN_TOL_EDGES = 'LinTolEdges' -- Edges Extraction (modify)
KEY_ANG_TOL_EDGES = 'AngTolEdges' -- Edges Extraction (modify)
KEY_THICK_EDGES = 'ThickEdges' -- Edges Extraction (modify) KEY_THICK_EDGES = 'ThickEdges' -- Edges Extraction (modify)
KEY_ANG_TOL = 'AngTol' KEY_ANG_TOL = 'AngTol'
KEY_SURF_ANG_TOL = 'SurfAngTol' KEY_SURF_ANG_TOL = 'SurfAngTol'
@@ -40,6 +41,7 @@ LAYER_NAME_SYNC_STORED_CURVES = 'SyncStoredCurves'
ANG_FACE_TOL = 30. ANG_FACE_TOL = 30.
ANG_TOL = 15. ANG_TOL = 15.
LIN_TOL = 0.2 LIN_TOL = 0.2
EDGE_THICK = 5.0
SYNC_LINES_NUMBER = 0 SYNC_LINES_NUMBER = 0
SYNC_LINES_ANG_TOL = 15.0 SYNC_LINES_ANG_TOL = 15.0
+2 -2
View File
@@ -2,5 +2,5 @@
-- Gestione della versione di Trimming dei Termoformati -- Gestione della versione di Trimming dei Termoformati
NAME = 'Trimming' NAME = 'Trimming'
VERSION = '3.1a4' VERSION = '3.1a5'
MIN_EXE = '3.1a4' MIN_EXE = '3.1a5'