cc55202ec5
- primo commit con versione corrente.
494 lines
18 KiB
Lua
494 lines
18 KiB
Lua
--
|
|
-- EEEEEEEEEE GGGGGG wwww wwww
|
|
-- EEEEEEEEEE GGGGGGGGGG wwww wwww
|
|
-- EEEE GGGG GGGG wwww wwww wwww
|
|
-- EEEE GGGG wwww wwww wwww
|
|
-- EEEEEEE GGGG GGGGGGG wwww wwwwww wwww
|
|
-- EEEEEEE GGGG GGGGGGG wwww wwwwww wwww
|
|
-- EEEE GGGG GGGG wwww wwwwwwww wwww
|
|
-- EEEE GGGG GGGG wwww wwww wwww wwww
|
|
-- EEEEEEEEEE GGGGGGGGGG wwwwwwww wwwwwwww
|
|
-- EEEEEEEEEE GGGGGG wwwwwww wwwwwww
|
|
--
|
|
-- MailSlot.lua by EgalWare s.r.l. 2016.07.05
|
|
-- Autore: Filippo Monchi
|
|
-- Mail SLot dati i valori 'L' e 'T' e con nome attributo e dati dei fori
|
|
|
|
-- 2016.07.05 V1.000 FM First version
|
|
-- 2019.10.02 V1.001 FM Manage steel option (disable generation of some geometries)
|
|
-- 2019.10.17 V1.002 FM Manage cut by saw and steel option (for this component it doesn't anything)
|
|
-- 2019.10.18 V2.000 FM Manage use Materials
|
|
-- 2020.04.29 V2.001 FM Update for aluminum material
|
|
-- 2022.07.27 V2.002 FM Modification to use compiled code
|
|
|
|
-- Tavola per definizione modulo (serve ma non usata)
|
|
local MailSlot = {}
|
|
|
|
-- Intestazioni
|
|
require( 'EgtBase')
|
|
EgtEnableDebug( false)
|
|
|
|
-- per messaggi
|
|
-- EgtAddToPackagePath( EgtGetSourceDir() .. '?.lua')
|
|
EgtAddToPackagePath( DGD.BASEDIR .. '?.lua')
|
|
|
|
-- Valori limite
|
|
local DimMin = 4. -- valore minimo lato
|
|
|
|
local function GetMachToolErrorMessage( nErrorId, sGeomName, dIdMach, dOriDiamTool, nIdLogErr, sMchngName)
|
|
|
|
local EgtDoorsMsg = require( 'EgtDoorsMsg')
|
|
local sMessage = ''
|
|
|
|
if dOriDiamTool then
|
|
if nErrorId == -1 then -- lavorazione non presente in tabella
|
|
sMessage = string.format(EgtDoorsMsg[466], nIdLogErr, dIdMach, sGeomName, EgtToUiUnits( dOriDiamTool))
|
|
elseif nErrorId == -2 then -- errore nel settare la lavorazione, lavorazione non presente in libreria
|
|
sMessage = string.format(EgtDoorsMsg[467], nIdLogErr, sMchngName, dIdMach, sGeomName, EgtToUiUnits( dOriDiamTool))
|
|
elseif nErrorId == -3 then -- errore nell'acquisire parametri lavorazione
|
|
sMessage = string.format(EgtDoorsMsg[468], nIdLogErr, sMchngName, dIdMach, sGeomName, EgtToUiUnits( dOriDiamTool))
|
|
elseif nErrorId == -4 then -- errore nell'acquisire parametri lavorazione
|
|
sMessage = string.format(EgtDoorsMsg[469], nIdLogErr, sMchngName, dIdMach, sGeomName, EgtToUiUnits( dOriDiamTool))
|
|
elseif nErrorId == -5 then -- diametro utensile non trovato
|
|
sMessage = string.format(EgtDoorsMsg[470], nIdLogErr, sMchngName, dIdMach, sGeomName, EgtToUiUnits( dOriDiamTool))
|
|
elseif nErrorId == -6 then -- nome geometria non presente in tabella
|
|
sMessage = string.format(EgtDoorsMsg[471], nIdLogErr, sGeomName, EgtToUiUnits( dOriDiamTool))
|
|
elseif nErrorId == -7 then -- altezza massima utensile non trovata
|
|
sMessage = string.format(EgtDoorsMsg[472], nIdLogErr, sMchngName, dIdMach, sGeomName, EgtToUiUnits( dOriDiamTool))
|
|
elseif nErrorId == -8 then -- tabella non presente nelle note
|
|
sMessage = string.format(EgtDoorsMsg[509], nIdLogErr)
|
|
end
|
|
elseif nErrorId == -1 then -- lavorazione non presente in tabella
|
|
sMessage = string.format(EgtDoorsMsg[504], nIdLogErr, dIdMach, sGeomName)
|
|
elseif nErrorId == -2 then -- errore nel settare la lavorazione
|
|
sMessage = string.format(EgtDoorsMsg[505], nIdLogErr, sMchngName, dIdMach, sGeomName)
|
|
elseif nErrorId == -3 then -- errore nell'acquisire parametri lavorazione
|
|
sMessage = string.format(EgtDoorsMsg[506], nIdLogErr, sMchngName, dIdMach, sGeomName)
|
|
elseif nErrorId == -4 then -- errore nell'acquisire parametri lavorazione
|
|
sMessage = string.format(EgtDoorsMsg[507], nIdLogErr, sMchngName, dIdMach, sGeomName)
|
|
elseif nErrorId == -5 then -- diametro utensile non trovato
|
|
sMessage = string.format(EgtDoorsMsg[508], nIdLogErr, sMchngName, dIdMach, sGeomName)
|
|
elseif nErrorId == -6 then -- nome geometria non presente in tabella
|
|
sMessage = string.format(EgtDoorsMsg[503], nIdLogErr, sGeomName)
|
|
elseif nErrorId == -7 then -- altezza massima utensile non trovata
|
|
sMessage = string.format(EgtDoorsMsg[473], nIdLogErr, sMchngName, dIdMach, sGeomName)
|
|
elseif nErrorId == -8 then -- tabella non presente nelle note
|
|
sMessage = string.format(EgtDoorsMsg[509], nIdLogErr)
|
|
end
|
|
|
|
return sMessage
|
|
end
|
|
|
|
local function DrawAddLineDrawCircle( pInitial, pFinal, nGroup, idTable, bPrev, nGroupCirc, nRad, bDrawFirst, bDrawLast, cColor1, cColor2)
|
|
|
|
local nLine = EgtLine(nGroup, pInitial, pFinal, GDB_RT.LOC)
|
|
|
|
if idTable then
|
|
table.insert( idTable, nLine)
|
|
end
|
|
|
|
if bPrev then
|
|
if bDrawFirst then
|
|
local nCircle1 = EgtCircle( nGroupCirc, pInitial, nRad , GDB_RT.LOC)
|
|
EgtSetColor(nCircle1, cColor1)
|
|
end
|
|
|
|
if bDrawLast then
|
|
local nCircle2 = EgtCircle( nGroupCirc, pFinal, nRad , GDB_RT.LOC)
|
|
EgtSetColor(nCircle2, cColor2)
|
|
end
|
|
end
|
|
|
|
return nLine
|
|
end
|
|
|
|
-- Funzione di sistemazione parametri
|
|
function MailSlot.AdjustParams( tMhPar)
|
|
|
|
local EgtDoorsMsg = require( 'EgtDoorsMsg')
|
|
local dMaxMat0
|
|
local dNumMessage
|
|
local dNumLog = 0
|
|
local sMessToOut = ''
|
|
local nTempT0
|
|
local sMchngName0
|
|
local nThBl0
|
|
|
|
-- Assegno parametri da ddf
|
|
if DGD.LENGTH then
|
|
tMhPar.L = DGD.LENGTH
|
|
end
|
|
tMhPar.T = DGD.dT
|
|
|
|
if tMhPar.IL then
|
|
tMhPar.IL = tMhPar.IL + DGD.LENGTH
|
|
end
|
|
|
|
if tMhPar.DD then
|
|
if tMhPar.DD == -0.5 then
|
|
tMhPar.DD = DGD.dT / 2
|
|
elseif tMhPar.DD == -1 then
|
|
tMhPar.DD = DGD.dT
|
|
end
|
|
end
|
|
|
|
-- disattivo la lama se la cava è più profonda di una certa quota
|
|
if tMhPar.MaxBd and tMhPar.T and tMhPar.T > tMhPar.MaxBd then
|
|
tMhPar.bl = false
|
|
dNumLog = -1394
|
|
dNumMessage = 674
|
|
sMessToOut = sMessToOut .. '\n'.. string.format(EgtDoorsMsg[dNumMessage], dNumLog, tMhPar.Nome, EgtToUiUnits(tMhPar.T), EgtToUiUnits(tMhPar.MaxBd))
|
|
end
|
|
|
|
-- Assegno parametri da dati utensili in macchina
|
|
local MB = require( 'MachiningBase')
|
|
local sLBM
|
|
local nLBMi = 1
|
|
local dMaxCutBladeLen = 0
|
|
|
|
-- se porta steel o aluminum
|
|
if FindMaterial( DGD.Material, 'steel') or FindMaterial( DGD.Material, 'aluminum') then
|
|
tMhPar.est = true
|
|
else
|
|
tMhPar.est = nil
|
|
end
|
|
|
|
if tMhPar.LBM then -- geometria con lama
|
|
sLBM = tMhPar.LBM
|
|
end
|
|
|
|
-- se devo disegnare le geometrie di lavorazione
|
|
if DGD.MachEn > 0 then
|
|
|
|
if sLBM and tMhPar.bl and tMhPar.d3 then
|
|
nTempT0, dMaxMat0, sMchngName0, nThBl0 = MB.GetToolDataFromAttrib( sLBM, nLBMi)
|
|
end
|
|
|
|
if tMhPar.d3 and nTempT0 and nTempT0 <= 0 then -- lama
|
|
if DGD.bProoduce and tMhPar.bl then -- se utilizzo la lama
|
|
dNumLog = -1399
|
|
sMessToOut = sMessToOut .. '\n'.. GetMachToolErrorMessage( nTempT0, sLBM, nLBMi, tMhPar.d3, dNumLog, sMchngName0)
|
|
end
|
|
elseif nTempT0 then
|
|
tMhPar.d3 = nTempT0
|
|
if nThBl0 and nThBl0 > 0 then tMhPar.thb = nThBl0 end
|
|
end
|
|
|
|
-- se lo spessore porta è maggiore della capacità lama disabilito la lama ed emetto un warning
|
|
if tMhPar.bl and tMhPar.T and dMaxMat0 and tMhPar.T >= dMaxMat0 then
|
|
tMhPar.bl = false
|
|
tMhPar.LBM = nil
|
|
dNumLog = -1397
|
|
dNumMessage = 672
|
|
sMessToOut = sMessToOut .. '\n'.. string.format(EgtDoorsMsg[dNumMessage], dNumLog, tMhPar.Nome, sMchngName0, EgtToUiUnits(tMhPar.T), EgtToUiUnits(dMaxMat0))
|
|
end
|
|
|
|
-- se il blade è attivo calcolo se passa la lama nella sfinestratura
|
|
if tMhPar.bl and tMhPar.d3 and tMhPar.L and tMhPar.W then
|
|
|
|
-- calcolo la massima impronta lama
|
|
local dBladeRadius = tMhPar.d3 / 2
|
|
dMaxCutBladeLen = sqrt( (dBladeRadius * dBladeRadius) - ( ( dBladeRadius - tMhPar.T) * ( dBladeRadius - tMhPar.T)))
|
|
|
|
-- se l'impronta lama è maggiore della lunghezza o larghezza escludo la lama e do messaggio di warning
|
|
if (2*dMaxCutBladeLen) >= tMhPar.L or (2*dMaxCutBladeLen) >= tMhPar.W then
|
|
tMhPar.bl = false
|
|
tMhPar.LBM = nil
|
|
dNumLog = -1395
|
|
dNumMessage = 673
|
|
sMessToOut = sMessToOut .. '\n'.. string.format(EgtDoorsMsg[dNumMessage], dNumLog, tMhPar.Nome, sMchngName0)
|
|
end
|
|
end
|
|
|
|
-- se il blade è attivo e utensile lama e c'è il clean corner, lo ricalcolo in funzione del raggio lama
|
|
if tMhPar.bl and tMhPar.thb and tMhPar.thb > 0 and tMhPar.clc and tMhPar.clc > 0 then
|
|
if dMaxCutBladeLen > tMhPar.clc then
|
|
tMhPar.clc = dMaxCutBladeLen
|
|
end
|
|
end
|
|
|
|
if tMhPar.CL and tMhPar.clc and tMhPar.clc > 0 and ( tMhPar.clc >= tMhPar.W or tMhPar.clc >= tMhPar.L) then
|
|
tMhPar.clc = nil
|
|
elseif not tMhPar.CL then
|
|
tMhPar.clc = nil
|
|
end
|
|
end
|
|
|
|
if dNumLog ~= 0 then
|
|
return tMhPar, dNumLog, sMessToOut
|
|
end
|
|
|
|
return tMhPar, 0, ''
|
|
end
|
|
|
|
-- Funzione di disegno
|
|
function MailSlot.Draw( tMlSlPar, bPreview, bRunByCompo, nDrawMach)
|
|
|
|
-- Assegno le dimensioni
|
|
local L = tMlSlPar.L
|
|
local W = tMlSlPar.W
|
|
local T = tMlSlPar.T
|
|
local clc = tMlSlPar.clc
|
|
local ccr = tMlSlPar.ccr
|
|
local bl = tMlSlPar.bl
|
|
local d3 = tMlSlPar.d3 -- blade diameter
|
|
local est = tMlSlPar.est
|
|
-- Assegno parametri fori
|
|
local ms = tMlSlPar.ms
|
|
local DS = tMlSlPar.DS
|
|
local DD = tMlSlPar.DD
|
|
local IL = tMlSlPar.IL
|
|
local IW = tMlSlPar.IW
|
|
-- Assegno i nomi
|
|
local LG = tMlSlPar.LG
|
|
local LM = tMlSlPar.LM
|
|
local SCU = tMlSlPar.SCU
|
|
local CL = tMlSlPar.CL
|
|
local LBM = tMlSlPar.LBM -- nome lavorazione con lama
|
|
-- variabili per messaggi e settaggi vari
|
|
local sCompoName = tMlSlPar.Nome
|
|
local nCompoNPar = tMlSlPar.Npar
|
|
local sCompoPath = tMlSlPar.Path
|
|
-- eventuale messaggio errore rilevato nell'adjust
|
|
local nCodAdj = tMlSlPar.nCod
|
|
local sCodAdj = tMlSlPar.sCod
|
|
-- variabili per messaggi e settaggi vari
|
|
local sNamePar1 = tMlSlPar.N1 or 'L'
|
|
local sNamePar2 = tMlSlPar.N2 or 'H'
|
|
local sNamePar3 = tMlSlPar.N3 or 'T'
|
|
local sNamePar4 = tMlSlPar.N4 or 'clc'
|
|
local sNamePar5 = tMlSlPar.N5 or 'ccr'
|
|
-- RunByComponentInterface
|
|
local RC = true
|
|
-- Messaggi codice errori
|
|
local EM = ' '
|
|
local EC = 0
|
|
local ErrorBase = 1300
|
|
|
|
if not bRunByCompo then -- controllo se lanciato da componente
|
|
RC = false
|
|
end
|
|
|
|
-- 0 solo geom esterna, 1 solo geom mach, 2 entrambe
|
|
if not nDrawMach then -- se non definita la setto per non creare geometria di lavorazione
|
|
nDrawMach = 0
|
|
end
|
|
|
|
local EgtDoorsMsg = require( 'EgtDoorsMsg')
|
|
|
|
-- Verifica delle dimensioni, le condizioni vengono verificate in base a quale geometria deve essere creata
|
|
if L < DimMin then
|
|
EC = 1
|
|
EM = string.format(EgtDoorsMsg[401],sNamePar1,EgtToUiUnits(DimMin), sCompoPath) -- il parametro 'L' deve essere > DimMin
|
|
D = DimMin
|
|
elseif W < DimMin then
|
|
EC = 2
|
|
EM = string.format(EgtDoorsMsg[401],sNamePar2,EgtToUiUnits(DimMin), sCompoPath) -- il parametro 'H' deve essere > DimMin
|
|
W = DimMin
|
|
elseif CL and clc and ccr and clc > 0 and ccr > 0 and (2*(ccr*sin(45))) >= clc then
|
|
EC = 3
|
|
EM = string.format(EgtDoorsMsg[407],sNamePar4,EgtToUiUnits(clc),'',EgtToUiUnits(2*(ccr*sin(45))), sCompoPath) -- il parametro 'clc' deve essere > 'crc'
|
|
clc = (2*(ccr*sin(45)))+0.2
|
|
end
|
|
|
|
if not bPreview and EC ~= 0 then
|
|
return (ErrorBase+EC), EM
|
|
end
|
|
|
|
-- Se Preview cancello tutto
|
|
if bPreview then
|
|
EgtNewFile()
|
|
EgtSetDefaultMaterial( BLACK())
|
|
end
|
|
|
|
-- Pezzo e Layer
|
|
local Pz
|
|
|
|
if bPreview then
|
|
Pz = EgtGroup(GDB_ID.ROOT,GDB_RT.LOC) -- nuovo pezzo
|
|
else
|
|
if not RC then
|
|
Pz = EgtGetCurrPart() -- pezzo corrente
|
|
end
|
|
if not Pz then
|
|
Pz = EgtGroup(GDB_ID.ROOT,GDB_RT.LOC) -- nuovo pezzo
|
|
end
|
|
end
|
|
|
|
local Lg
|
|
|
|
Lg = EgtGroup(Pz,GDB_RT.LOC) -- layer della figura principale
|
|
EgtSetName(Lg,sCompoName)
|
|
|
|
local GId, MId, hint_1, hint_2, hint_3, hint_4
|
|
local bSingleMode = true
|
|
|
|
-- Costruzione della geometria
|
|
GId = EgtRectangle2P( Lg, Point3d( -(W/2), 0, T), Point3d( (W/2), L, T), GDB_RT.GLOB)
|
|
EgtModifyCurveThickness( GId, -T)
|
|
EgtInvertCurve( GId)
|
|
EgtSetName( GId, LG)
|
|
EgtSetInfo( GId,'SideDoor','Keyway') -- setto una nota per indicare su che lato della porta deve essere spostato
|
|
-- creo estrusi e superfici piane delle geometrie passanti
|
|
AddSurfTmByExtrusion( Lg, GId, bSingleMode)
|
|
|
|
if ms then -- se devo fare le viti
|
|
|
|
if DS and DD and IL and IW then
|
|
|
|
-- se dimensioni foro vite idonee
|
|
if DS > 0 and DD ~= 0 then
|
|
|
|
if not Lg then
|
|
Lg = EgtGroup(Pz,GDB_RT.LOC)
|
|
EgtSetName(Lg,sCompoName)
|
|
end
|
|
|
|
hint_1 = EgtCircle( Lg, Point3d( -(IW/2),-((IL-L)/2),T), DS/2 , GDB_RT.LOC)
|
|
hint_2 = EgtCircle( Lg, Point3d( -(IW/2),(L+((IL-L)/2)),T), DS/2 , GDB_RT.LOC)
|
|
hint_3 = EgtCircle( Lg, Point3d( (IW/2),(L+((IL-L)/2)),T), DS/2 , GDB_RT.LOC)
|
|
hint_4 = EgtCircle( Lg, Point3d( (IW/2),-((IL-L)/2),T), DS/2 , GDB_RT.LOC)
|
|
EgtModifyCurveThickness(hint_1, -DD)
|
|
EgtModifyCurveThickness(hint_2, -DD)
|
|
EgtModifyCurveThickness(hint_3, -DD)
|
|
EgtModifyCurveThickness(hint_4, -DD)
|
|
EgtSetName(hint_1,SCU)
|
|
EgtSetName(hint_2,SCU)
|
|
EgtSetName(hint_3,SCU)
|
|
EgtSetName(hint_4,SCU)
|
|
EgtSetInfo(hint_1,'SideDoor','Keyway') -- setto una nota per indicare su che lato della porta deve essere spostato
|
|
EgtSetInfo(hint_2,'SideDoor','Keyway') -- setto una nota per indicare su che lato della porta deve essere spostato
|
|
EgtSetInfo(hint_3,'SideDoor','Keyway') -- setto una nota per indicare su che lato della porta deve essere spostato
|
|
EgtSetInfo(hint_4,'SideDoor','Keyway') -- setto una nota per indicare su che lato della porta deve essere spostato
|
|
-- creo estrusi e superfici piane delle geometrie passanti
|
|
AddSurfTmByExtrusion( Lg, hint_1, bSingleMode)
|
|
AddSurfTmByExtrusion( Lg, hint_2, bSingleMode)
|
|
AddSurfTmByExtrusion( Lg, hint_3, bSingleMode)
|
|
AddSurfTmByExtrusion( Lg, hint_4, bSingleMode)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Costruzione della geometria clean corner
|
|
if nDrawMach >= 0 then -- se abilitata geometria
|
|
-- se ci sono i parametri per i percorsi clean corner
|
|
if CL and clc and clc > 0 and clc < W and clc < L then
|
|
-- angolo x-y+
|
|
local CLC1 = MakeClcPath( clc, ccr, CL, Lg, -T)
|
|
EgtMove( CLC1, Point3d(-(W/2),L,T) - ORIG())
|
|
-- angolo x+y+
|
|
local CLC2 = EgtCopyGlob( CLC1, Lg)
|
|
EgtRotate( CLC2, Point3d(-(W/2),L,0), Z_AX(), -90)
|
|
EgtMove( CLC2, Point3d(W,0,0) - ORIG())
|
|
-- angolo x+y-
|
|
CLC2 = EgtCopyGlob( CLC1, Lg)
|
|
EgtRotate( CLC2, Point3d(-(W/2),L,0), Z_AX(), 180)
|
|
EgtMove( CLC2, Point3d(W,-L,0) - ORIG())
|
|
-- angolo x-y-
|
|
CLC2 = EgtCopyGlob( CLC1, Lg)
|
|
EgtRotate( CLC2, Point3d(-(W/2),L,0), Z_AX(), 90)
|
|
EgtMove( CLC2, Point3d(0,-L,0) - ORIG())
|
|
end
|
|
end
|
|
|
|
-- Costruzione della geometria di lavorazione
|
|
if nDrawMach > 0 then -- se abilitata geometria lavorazione
|
|
-- Costruzione della geometria
|
|
MId = EgtRectangle2P( Lg, Point3d( -(W/2), 0, T), Point3d( (W/2), L, T), GDB_RT.GLOB)
|
|
EgtChangeClosedCurveStartPoint( MId, Point3d( 0, 0, T), GDB_RT.GLOB)
|
|
EgtModifyCurveThickness( MId, -T)
|
|
EgtInvertCurve( MId)
|
|
if bl then
|
|
EgtSetName( MId, LBM)
|
|
EgtSetInfo( MId, 'ByBlade', bl)
|
|
else
|
|
EgtSetName( MId, LM)
|
|
end
|
|
EgtSetInfo( MId,'SideDoor','Keyway') -- setto una nota per indicare su che lato della porta deve essere spostato
|
|
end
|
|
|
|
-- cambio colore alla geometria
|
|
if bPreview then
|
|
if EC == 0 then
|
|
if GId then
|
|
EgtSetColor( GId or GDB_ID.NULL, AQUA())
|
|
end
|
|
if MId then
|
|
EgtSetColor( MId or GDB_ID.NULL, AQUA())
|
|
end
|
|
if hint_1 then
|
|
EgtSetColor( hint_1 or GDB_ID.NULL, AQUA())
|
|
end
|
|
if hint_2 then
|
|
EgtSetColor( hint_2 or GDB_ID.NULL, AQUA())
|
|
end
|
|
if hint_3 then
|
|
EgtSetColor( hint_3 or GDB_ID.NULL, AQUA())
|
|
end
|
|
if hint_4 then
|
|
EgtSetColor( hint_4 or GDB_ID.NULL, AQUA())
|
|
end
|
|
else
|
|
if GId then
|
|
EgtSetColor( GId or GDB_ID.NULL, ORANGE())
|
|
end
|
|
if MId then
|
|
EgtSetColor( MId or GDB_ID.NULL, ORANGE())
|
|
end
|
|
if hint_1 then
|
|
EgtSetColor( hint_1 or GDB_ID.NULL, ORANGE())
|
|
end
|
|
if hint_2 then
|
|
EgtSetColor( hint_2 or GDB_ID.NULL, ORANGE())
|
|
end
|
|
if hint_3 then
|
|
EgtSetColor( hint_3 or GDB_ID.NULL, ORANGE())
|
|
end
|
|
if hint_4 then
|
|
EgtSetColor( hint_4 or GDB_ID.NULL, ORANGE())
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Se non Preview
|
|
-- (NOTA : se ci sono errori il componente non viene eseguito dal programma di gestione dei componenti)
|
|
if not bPreview then
|
|
|
|
if bRunByCompo then
|
|
-- scrivo i parametri nelle info del pezzo
|
|
WriteCompoDataToPart(Pz,sCompoName,nCompoNPar)
|
|
end
|
|
|
|
-- scrivo note nel layer della cerniera
|
|
EgtSetInfo(Lg,'Type' ,'MailSlot')
|
|
EgtSetInfo(Lg,'L' ,L)
|
|
EgtSetInfo(Lg,'H' ,H)
|
|
EgtSetInfo(Lg,'T' ,T)
|
|
EgtSetInfo(Lg,'ms' ,ms)
|
|
EgtSetInfo(Lg,'clc' ,clc)
|
|
EgtSetInfo(Lg,'ccr' ,ccr)
|
|
EgtSetInfo(Lg,'bl' ,bl)
|
|
EgtSetInfo(Lg,'d3' ,d3)
|
|
EgtSetInfo(Lg,'est' ,est)
|
|
EgtSetInfo(Lg,'DS' ,DS)
|
|
EgtSetInfo(Lg,'DD' ,DD)
|
|
EgtSetInfo(Lg,'IL' ,IL)
|
|
EgtSetInfo(Lg,'IW' ,IW)
|
|
EgtSetInfo(Lg,'LG' ,LG)
|
|
EgtSetInfo(Lg,'LM' ,LM)
|
|
EgtSetInfo(Lg,'SCU' ,SCU)
|
|
EgtSetInfo(Lg,'LBM' ,LBM)
|
|
EgtSetInfo(Lg,'Path' ,sCompoPath)
|
|
end
|
|
|
|
if EC == 0 and nCodAdj and nCodAdj < 0 then
|
|
EC = nCodAdj
|
|
EM = sCodAdj
|
|
end
|
|
|
|
return EC, EM, Lg
|
|
end
|
|
|
|
|
|
return MailSlot
|