Trimming 3.1d1 :
- aggiunte le funzioni per la regolarizzazione locale della superficie.
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
-- ConfirmSurfChange.lua by Egalware s.r.l. 2026/04/22
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
-- Carico le costanti di Trimming
|
||||
EgtAddToPackagePath( EgtGetSourceDir() .. '?.lua')
|
||||
local GlobVar = require( 'TrimmingLib')
|
||||
-- Costante di Errore
|
||||
local ERROR_CONFIRM_SURF_CHANGE = 'Error in Confirm Surf Change : '
|
||||
|
||||
-- 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_CONFIRM_SURF_CHANGE .. 'Not a valid Trimming Layer', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
|
||||
-- Recupero le Info
|
||||
local dLinTol = EgtGetInfo( nCurrLayerId, KEY_LIN_TOL, 'd')
|
||||
|
||||
-- verifico che esista il layer temporaneo con la nuova superficie e i nuovi bordi
|
||||
local nEditSurfLayer = GlobVar.GetCurrentEditSurfLayer( nCurrPartId, nCurrLayerId)
|
||||
if nEditSurfLayer == nil or nEditSurfLayer == GDB_ID.NULL then
|
||||
EgtOutBox( ERROR_CONFIRM_SURF_CHANGE .. 'No Temp Surface Regolarized to confirm', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
|
||||
-- cerco i nuovi bordi e la nuova superficie
|
||||
-- verifico ci sia la superficie
|
||||
local nNewSurf = GDB_ID.NULL
|
||||
local nId = EgtGetFirstInGroup(nEditSurfLayer)
|
||||
while nId do
|
||||
if EgtGetName(nId) == EDIT_SURF_NEWSURF_NAME then nNewSurf = nId end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
|
||||
if nNewSurf == GDB_ID.NULL then
|
||||
EgtOutBox( ERROR_CONFIRM_SURF_CHANGE .. 'No Temp Surface Regolarized to confirm', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
|
||||
-- cerco i nuovi bordi
|
||||
local vNewBorder = {}
|
||||
nId = EgtGetFirstInGroup(nEditSurfLayer)
|
||||
while nId do
|
||||
if EgtGetName(nId) == EDIT_SURF_NEWBORDER_NAME then
|
||||
table.insert(vNewBorder, nId)
|
||||
end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
|
||||
if #vNewBorder ~= 2 then
|
||||
EgtOutBox( ERROR_CONFIRM_SURF_CHANGE .. 'No New Borders to confirm', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
-- li ricavo dalla superficie
|
||||
end
|
||||
|
||||
EgtDeselectAll()
|
||||
|
||||
local vIdEdges = {}
|
||||
nId = EgtGetFirstInGroup( nCurrLayerId)
|
||||
while nId do
|
||||
-- verifico che sia una Curva e che sia di Bordo
|
||||
if EgtGetName( nId) == EDGES_NAME then
|
||||
table.insert( vIdEdges, nId)
|
||||
end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
|
||||
-- Se nel gruppo di trim ho due curve di bordo le cancello
|
||||
if #vIdEdges == 2 then
|
||||
EgtErase( vIdEdges)
|
||||
end
|
||||
|
||||
|
||||
-- verifico ci sia la superficie
|
||||
local nSurf = GDB_ID.NULL
|
||||
nId = EgtGetFirstInGroup(nCurrLayerId)
|
||||
while nId do
|
||||
if EgtGetType(nId) == GDB_TY.SRF_BEZ then nSurf = nId end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
|
||||
if nSurf ~= GDB_ID.NULL then
|
||||
EgtErase( nSurf)
|
||||
end
|
||||
|
||||
-- Verifico che esista il Layer di Edit per le curve di Sincronizzazione
|
||||
local nLayerEditSyncId = GlobVar.GetCurrentEditSyncCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
if nLayerEditSyncId == nil or nLayerEditSyncId == GDB_ID.NULL then
|
||||
-- EgtOutBox( ERROR_CONFIRM_SURF_CHANGE .. 'Click Edit SyncLines before trying to reduce twist', 'Error', 'ERROR', 'OK')
|
||||
-- return
|
||||
end
|
||||
|
||||
-- recupero le linee di Sync selezionate e le riporto al colore standard
|
||||
local vSyncSel = EgtGetInfo(nCurrLayerId, KEY_SYNC_LINES_REGOLARIZATION, "vs")
|
||||
|
||||
-- verifico che siano selezionate due curve nel layer delle Sync Lines
|
||||
if #vSyncSel == 2 then
|
||||
for i,nId in pairs( vSyncSel) do
|
||||
if EgtGetName(nId) == SYNC_LINE_NAME then
|
||||
EgtSetColor(nId, SYNC_LINE_COLOR)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- cancello l'info nel layer di trimming
|
||||
EgtRemoveInfo(nCurrLayerId, KEY_SYNC_LINES_REGOLARIZATION)
|
||||
|
||||
-- sposto i nuovi bordi e superficie e cambio colori e nomi
|
||||
EgtRelocate(nNewSurf, nCurrLayerId)
|
||||
EgtRelocate(vNewBorder[1], nCurrLayerId)
|
||||
EgtRelocate(vNewBorder[2], nCurrLayerId)
|
||||
|
||||
EgtSetColor( nNewSurf, RULED_BZ_COLOR)
|
||||
EgtSetColor(vNewBorder[1],EDGES_COLOR)
|
||||
EgtSetColor(vNewBorder[2],EDGES_COLOR)
|
||||
|
||||
EgtSetName(nNewSurf, RULED_BZ_NAME)
|
||||
EgtSetName(vNewBorder[1],EDGES_NAME)
|
||||
EgtSetName(vNewBorder[2],EDGES_NAME)
|
||||
|
||||
-- scorro le curve di edit e guardo a che parametro corrispondono
|
||||
-- richiedo a quel parametro l'isocurva sulla superficie nuova
|
||||
if nLayerEditSyncId ~= nil and nLayerEditSyncId ~= GDB_ID.NULL then
|
||||
nId = EgtGetFirstInGroup(nLayerEditSyncId)
|
||||
while nId do
|
||||
local ptStart = EgtSP(nId)
|
||||
local dU = EgtCurveParamAtPoint( vNewBorder[1], ptStart, dLinTol)
|
||||
if dU == nil or dU < 0 then
|
||||
EgtOutBox( ERROR_CONFIRM_SURF_CHANGE .. 'Error creating the new sync lines', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
local ptStart = EgtSurfBezierGetPoint(nNewSurf, dU, 0.)
|
||||
local ptEnd = EgtSurfBezierGetPoint(nNewSurf, dU, 1.)
|
||||
local nNewIso = EgtLine( nEditSurfLayer, ptStart, ptEnd)
|
||||
EgtSetName(nNewIso, SYNC_LINE_NAME)
|
||||
nId = EgtGetNext(nId)
|
||||
end
|
||||
EgtEmptyGroup( nLayerEditSyncId)
|
||||
end
|
||||
|
||||
-- sostituisco le vecchie con le nuove
|
||||
nId = EgtGetFirstInGroup(nEditSurfLayer)
|
||||
while nId do
|
||||
local nNext = EgtGetNext(nId)
|
||||
EgtRelocate(nId, nLayerEditSyncId)
|
||||
nId = nNext
|
||||
end
|
||||
|
||||
EgtErase(nEditSurfLayer)
|
||||
|
||||
EgtDraw()
|
||||
+126
@@ -0,0 +1,126 @@
|
||||
-- ReduceTwist.lua by Egalware s.r.l. 2026/04/21
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
-- Carico le costanti di Trimming
|
||||
EgtAddToPackagePath( EgtGetSourceDir() .. '?.lua')
|
||||
local GlobVar = require( 'TrimmingLib')
|
||||
-- Costante di Errore
|
||||
local ERROR_REDUCE_TWIST = 'Error in Reduce Surf Twist : '
|
||||
|
||||
-- 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 le Info
|
||||
local dLinTol = EgtGetInfo( nCurrLayerId, KEY_LIN_TOL, 'd')
|
||||
local dAngTol = EgtGetInfo( nCurrLayerId, KEY_ANG_TOL, 'd')
|
||||
local dAngFaceTol = EgtGetInfo( nCurrLayerId, KEY_SURF_ANG_TOL, 'd')
|
||||
local bOk = ( dLinTol ~= nil and dAngTol ~= nil and dAngFaceTol ~= nil)
|
||||
if not bOk then
|
||||
EgtOutBox( ERROR_REDUCE_TWIST .. 'No Trimming Machining created', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
|
||||
local vIdEdges = {}
|
||||
local 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
|
||||
local nType = EgtGetType( nId)
|
||||
if nType ~= GDB_TY.CRV_LINE and nType ~= GDB_TY.CRV_ARC and nType ~= GDB_TY.CRV_BEZ and nType ~= GDB_TY.CRV_COMPO then
|
||||
EgtOutBox( ERROR_REDUCE_TWIST .. 'Invalid Border', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
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
|
||||
EgtOutBox( ERROR_REDUCE_TWIST .. 'Not 2 Border Curves', 'Error', 'ERROR', 'OK')
|
||||
EgtSetStatus( nCurrLayerId, GDB_ST.ON)
|
||||
EgtErase( nLayerEditSyncId)
|
||||
return
|
||||
end
|
||||
|
||||
-- verifico ci sia la superficie
|
||||
local nSurf = GDB_ID.NULL
|
||||
nId = EgtGetFirstInGroup(nCurrLayerId)
|
||||
while nId do
|
||||
if EgtGetType(nId) == GDB_TY.SRF_BEZ then nSurf = nId end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
|
||||
if nSurf == GDB_ID.NULL then
|
||||
EgtOutBox( ERROR_REDUCE_TWIST .. 'No surface to regolarize', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
|
||||
-- Verifico che esista il Layer di Edit per le curve di Sincronizzazione
|
||||
local nLayerEditSyncId = GlobVar.GetCurrentEditSyncCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
if nLayerEditSyncId == nil or nLayerEditSyncId == GDB_ID.NULL then
|
||||
EgtOutBox( ERROR_REDUCE_TWIST .. 'Click Edit SyncLines before trying to reduce twist', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
|
||||
-- verifico che siano selezionate due curve nel layer delle SynLines
|
||||
local nSel = EgtGetFirstSelectedObj()
|
||||
local vSyncSel = {}
|
||||
while nSel do
|
||||
-- verifico che sia una curva e che sia nel layer delle SyncLines
|
||||
if EgtGetName( nSel) == SYNC_LINE_NAME then
|
||||
table.insert(vSyncSel, nSel)
|
||||
else
|
||||
EgtOutBox( ERROR_REDUCE_TWIST .. 'Invalid Curve Selected', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
nSel = EgtGetNextSelectedObj()
|
||||
end
|
||||
|
||||
-- verifico che siano selezionate solo due curve
|
||||
if #vSyncSel ~= 2 then
|
||||
EgtOutBox( ERROR_REDUCE_TWIST .. 'Two SyncLines selected needed', 'Error', 'ERROR', 'OK')
|
||||
EgtSetStatus( nCurrLayerId, GDB_ST.ON)
|
||||
return
|
||||
end
|
||||
|
||||
-- creo il layer e setto le info e colori
|
||||
local nEditSurfLayer = GlobVar.CreateEditSurfLayer( nCurrPartId, nCurrLayerId)
|
||||
local sInfoVal = EgtNumToString(vSyncSel[1])..","..EgtNumToString(vSyncSel[2])
|
||||
EgtSetInfo(nCurrLayerId, KEY_SYNC_LINES_REGOLARIZATION, sInfoVal)
|
||||
EgtSetColor(vSyncSel[1], EDIT_SURF_SYNC_COLOR)
|
||||
EgtSetColor(vSyncSel[2], EDIT_SURF_SYNC_COLOR)
|
||||
|
||||
|
||||
local nNewSurfId = EgtRegolarizeSurfaceLocally( nEditSurfLayer, nSurf,vSyncSel[1],vSyncSel[2],dLinTol)
|
||||
|
||||
if nNewSurfId == nil or nNewSurfId == GDB_ID.NULL then
|
||||
EgtOutBox( ERROR_REDUCE_TWIST .. 'Failed Reduction of twist', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
EgtSetName(nNewSurfId,EDIT_SURF_NEWSURF_NAME)
|
||||
|
||||
---- richiedo i bordi alla nuova superficie e li metto nel layer temporaneo della modifica alla superficie
|
||||
local nCrv1 = EgtSurfBezierGetCurveU( nNewSurfId, 0., nEditSurfLayer)
|
||||
local nCrv2 = EgtSurfBezierGetCurveU( nNewSurfId, 1., nEditSurfLayer)
|
||||
local vIdNewEdges = {nCrv1, nCrv2}
|
||||
|
||||
EgtSetColor( vIdNewEdges[1], EDIT_SURF_BORDER_COLOR)
|
||||
EgtSetColor( vIdNewEdges[2], EDIT_SURF_BORDER_COLOR)
|
||||
EgtSetName( vIdNewEdges[1], EDIT_SURF_NEWBORDER_NAME)
|
||||
EgtSetName( vIdNewEdges[2], EDIT_SURF_NEWBORDER_NAME)
|
||||
|
||||
-- nascondo i bordi e la superficie originale
|
||||
EgtSetStatus( nSurf, GDB_ST.OFF)
|
||||
EgtSetStatus( vIdEdges[1], GDB_ST.OFF)
|
||||
EgtSetStatus( vIdEdges[2], GDB_ST.OFF)
|
||||
|
||||
EgtDraw()
|
||||
@@ -0,0 +1,84 @@
|
||||
-- ResetSurfChange.lua by Egalware s.r.l. 2026/04/22
|
||||
|
||||
require( 'EgtBase')
|
||||
_ENV = EgtProtectGlobal()
|
||||
EgtEnableDebug( false)
|
||||
|
||||
-- Carico le costanti di Trimming
|
||||
EgtAddToPackagePath( EgtGetSourceDir() .. '?.lua')
|
||||
local GlobVar = require( 'TrimmingLib')
|
||||
-- Costante di Errore
|
||||
local ERROR_REST_SURF_CHANGE = 'Error in Reset Surf Change : '
|
||||
|
||||
-- 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_REST_SURF_CHANGE .. 'Not a valid Trimming Layer', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
|
||||
-- verifico che esista il layer temporaneo con la nuova superficie e i nuovi bordi
|
||||
local nEditSurfLayer = GlobVar.GetCurrentEditSurfLayer( nCurrPartId, nCurrLayerId)
|
||||
if nEditSurfLayer == nil or nEditSurfLayer == GDB_ID.NULL then
|
||||
EgtOutBox( ERROR_REST_SURF_CHANGE .. 'No Temp Surface Regolarized to delete', 'Error', 'ERROR', 'OK')
|
||||
return
|
||||
end
|
||||
|
||||
EgtDeselectAll()
|
||||
|
||||
-- cancello tutto quello che c'è in quel layer e ripristino la visibilità dei bordi e della superficie originale
|
||||
EgtErase(nEditSurfLayer)
|
||||
|
||||
local vIdEdges = {}
|
||||
local nId = EgtGetFirstInGroup( nCurrLayerId)
|
||||
while nId do
|
||||
-- verifico che sia una Curva e che sia di Bordo
|
||||
if EgtGetName( nId) == EDGES_NAME then
|
||||
table.insert( vIdEdges, nId)
|
||||
end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
|
||||
-- Se nel gruppo di trim ho esattamente 2 curve di bordo le rendo visibili
|
||||
if #vIdEdges == 2 then
|
||||
EgtSetStatus( vIdEdges[1], GDB_ST.ON)
|
||||
EgtSetStatus( vIdEdges[2], GDB_ST.ON)
|
||||
end
|
||||
|
||||
|
||||
-- verifico ci sia la superficie
|
||||
local nSurf = GDB_ID.NULL
|
||||
nId = EgtGetFirstInGroup(nCurrLayerId)
|
||||
while nId do
|
||||
if EgtGetType(nId) == GDB_TY.SRF_BEZ then nSurf = nId end
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
|
||||
if nSurf ~= GDB_ID.NULL then
|
||||
EgtSetStatus( nSurf, GDB_ST.ON)
|
||||
end
|
||||
|
||||
-- Verifico che esista il Layer di Edit per le curve di Sincronizzazione
|
||||
local nLayerEditSyncId = GlobVar.GetCurrentEditSyncCurvesLayer( nCurrPartId, nCurrLayerId)
|
||||
if nLayerEditSyncId == nil or nLayerEditSyncId == GDB_ID.NULL then
|
||||
-- EgtOutBox( ERROR_REST_SURF_CHANGE .. 'Click Edit SyncLines before trying to reduce twist', 'Error', 'ERROR', 'OK')
|
||||
-- return
|
||||
end
|
||||
|
||||
-- recupero le linee di Sync selezionate e le riporto al colore standard
|
||||
local vSyncSel = EgtGetInfo(nCurrLayerId, KEY_SYNC_LINES_REGOLARIZATION, "vs")
|
||||
|
||||
-- verifico che siano selezionate due curve nel layer delle Sync Lines
|
||||
if #vSyncSel == 2 then
|
||||
for i,nId in pairs( vSyncSel) do
|
||||
if EgtGetName(nId) == SYNC_LINE_NAME then
|
||||
EgtSetColor(nId, SYNC_LINE_COLOR)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- cancello l'info nel layer di trimming
|
||||
EgtRemoveInfo(nCurrLayerId, KEY_SYNC_LINES_REGOLARIZATION)
|
||||
|
||||
EgtDraw()
|
||||
+59
-2
@@ -26,6 +26,7 @@ KEY_SYNC_LINES_NUMBER = 'SkimmingFactor' -- Skimming Sync Lines
|
||||
KEY_SYNC_LINES_SHOW_ON_CORNERS = 'SyncLineShowOnCorners' -- Skimming Sync Lines Show on Corners
|
||||
KEY_SYNC_LINES_NUMBER_ANG_TOL = 'SkimmingFactorAngTol' -- Skimming Sync Lines Tol
|
||||
KEY_SYNC_LINES_INTERPOLATION_IDS = 'SyncLineInterIds' -- Skinning Sync Lines Interpolation Ids
|
||||
KEY_SYNC_LINES_REGOLARIZATION = "SyncCuvesRef" -- curve di inizio e fine della zona da regolarizzare
|
||||
|
||||
-- Chive per Tipologia di Layer
|
||||
KEY_LAYER_TYPE = 'Trimming_Layer_Type'
|
||||
@@ -34,6 +35,7 @@ KEY_LAYER_SELECTION_HOLES = 'Trimming_Selection_Holes_Layer'
|
||||
KEY_LAYER_EDIT_CURVES = 'Trimming_EditCurves_Layer'
|
||||
KEY_LAYER_SYNC_CURVES = 'Trimming_SyncCurves_Layer'
|
||||
KEY_LAYER_SYNC_STORE_CURVES = 'Trimming_SyncStoredCurves_Layer'
|
||||
KEY_LAYER_EDIT_SURF = "Trimming_EditSurf_Layer"
|
||||
|
||||
-- Generali
|
||||
PART_NAME = 'Trimming'
|
||||
@@ -42,6 +44,7 @@ LAYER_NAME_SELECTION_HOLES = 'TrimmingHoles'
|
||||
LAYER_NAME_EDIT_CURVES = 'EditCurves'
|
||||
LAYER_NAME_SYNC_CURVES = 'SyncCurves'
|
||||
LAYER_NAME_SYNC_STORED_CURVES = 'SyncStoredCurves'
|
||||
LAYER_NAME_EDIT_SURF = "EditSurf"
|
||||
ANG_FACE_TOL = 30.
|
||||
ANG_TOL = 15.
|
||||
LIN_TOL = 0.2
|
||||
@@ -81,6 +84,14 @@ SYNC_LINE_INTERP_COLOR = Color3d( 255, 165, 0)
|
||||
RULED_BZ_NAME = 'SurfBz'
|
||||
RULED_BZ_COLOR = Color3d( 37, 37, 37)
|
||||
|
||||
-- Edit della superficie di Bezier
|
||||
EDIT_SURF_NEWSURF_NAME = 'NewSurf'
|
||||
EDIT_SURF_NEWBORDER_NAME = 'NewBorder'
|
||||
EDIT_SURF_COLOR = Color3d( 0,128,0)
|
||||
EDIT_SURF_SYNC_COLOR = Color3d(255,0,128)
|
||||
EDIT_SURF_BORDER_COLOR = Color3d(128,128,255)
|
||||
|
||||
|
||||
-- ***========================== FILE INI ==================================***
|
||||
KEY_SECTION_NAME = "Trimming"
|
||||
|
||||
@@ -171,7 +182,7 @@ 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
|
||||
if TrimmingVar.IsEditCurvesLayer( nId) or TrimmingVar.IsEditSyncCurvesLayer( nId) or TrimmingVar.IsEditSurfLayer( nId)then
|
||||
local nTrimmingLayerRef = EgtGetInfo( nId, KEY_REF_TRIMMING_LAYER, 'i')
|
||||
if nTrimmingLayerRef ~= nil and TrimmingVar.IsTrimmingLayer( nTrimmingLayerRef) then return nTrimmingLayerRef end
|
||||
end
|
||||
@@ -252,7 +263,6 @@ end
|
||||
-- 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
|
||||
@@ -266,6 +276,53 @@ function TrimmingVar.GetCurrentEditSyncCurvesLayer( nPartId, nTrimmingLayerId)
|
||||
return GDB_ID.NULL
|
||||
end
|
||||
|
||||
|
||||
--======================== Layer Edit Surf =======================
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Funzione per creare un Layer di Edit delle curve di Sincornizzazione
|
||||
function TrimmingVar.CreateEditSurfLayer( nCurrPartId, nCurrLayerId)
|
||||
local nEditSurfLayerId = EgtGroup( nCurrPartId)
|
||||
local bOk = ( nEditSurfLayerId ~= nil)
|
||||
if bOk then
|
||||
bOk = ( EgtSetName( nEditSurfLayerId, LAYER_NAME_EDIT_SURF) and
|
||||
EgtSetInfo( nEditSurfLayerId, KEY_LAYER_TYPE, KEY_LAYER_EDIT_SURF) and
|
||||
EgtSetInfo( nEditSurfLayerId, KEY_REF_TRIMMING_LAYER, nCurrLayerId) and
|
||||
EgtSetColor( nEditSurfLayerId, EDIT_SURF_COLOR))
|
||||
end
|
||||
if not bOk then
|
||||
EgtErase( nEditSurfLayerId)
|
||||
return GDB_ID.NULL
|
||||
end
|
||||
return nEditSurfLayerId
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Funzione per verificare se un Layer è un Layer di Edit delle curve di Sincronizzazione
|
||||
function TrimmingVar.IsEditSurfLayer( 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_EDIT_SURF)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Funzione che ritorna il Layer di Edit della superficie riferito al Layer di Trimming
|
||||
function TrimmingVar.GetCurrentEditSurfLayer( nPartId, nTrimmingLayerId)
|
||||
if nPartId == nil or nPartId == GDB_ID.NULL then return GDB_ID.NULL end
|
||||
local nLayerId = EgtGetFirstInGroup( nPartId)
|
||||
while nLayerId do
|
||||
if TrimmingVar.IsEditSurfLayer( nLayerId) then
|
||||
local nRefTrimmingLayer = TrimmingVar.GetTrimmingLayerRefId( nLayerId)
|
||||
if nRefTrimmingLayer ~= nil and nRefTrimmingLayer ~= GDB_ID.NULL and nRefTrimmingLayer == nTrimmingLayerId then
|
||||
return nLayerId
|
||||
end
|
||||
end
|
||||
nLayerId = EgtGetNext( nLayerId)
|
||||
end
|
||||
return GDB_ID.NULL
|
||||
end
|
||||
|
||||
--======================== Colori ========================
|
||||
|
||||
-- Funzione che recupera il colore da una stringa "nR,nG,nB" [0-255],[0-255],[0-255]
|
||||
|
||||
Reference in New Issue
Block a user