DataDoors 2.7c1 :
- primo commit con versione corrente.
This commit is contained in:
@@ -0,0 +1,201 @@
|
||||
--
|
||||
-- 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
|
||||
--
|
||||
-- ImportNgeFile.lua by EgalWare s.r.l. 2016.06.14
|
||||
-- Autore: Filippo Monchi
|
||||
-- importazione file .nge
|
||||
|
||||
-- 2017.06.16 V1.011 FM Check bore thickness when its color is not green or red
|
||||
-- 2019.04.19 V1.012 FM Fix import hinges as nge file; fix on import DeltaPos note from geometry and let it to a new layer
|
||||
-- 2019.10.18 V2.000 FM Manage use Materials
|
||||
-- 2021.04.23 V2.001 FM Manage info about hatching
|
||||
-- 2021.11.24 V2.002 FM Manage side probe option if variable DGC.Pms > 2
|
||||
-- 2022.07.27 V2.003 FM Modification to use compiled code
|
||||
-- 2023.05.08 V2.004 FM Manage scale factor if length and width are <= than 10 (max scale factor)
|
||||
|
||||
-- Tavola per definizione modulo (serve ma non usata)
|
||||
local ImportNgeFile = {}
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EgtBase')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
-- per messaggi
|
||||
-- EgtAddToPackagePath( EgtGetSourceDir() .. '?.lua')
|
||||
EgtAddToPackagePath( DGD.BASEDIR .. '?.lua')
|
||||
|
||||
|
||||
-- Funzione di disegno
|
||||
function ImportNgeFile.Draw( CustGeomPath, CustGeomFile )
|
||||
|
||||
-- Messaggi codice errori
|
||||
local EM = ' '
|
||||
local EC = 0
|
||||
local ErrorBase = 1050
|
||||
|
||||
local EgtDoorsMsg = require( 'EgtDoorsMsg')
|
||||
|
||||
-- Pezzo e Layer
|
||||
local Pz = EgtGetCurrPart() -- pezzo corrente
|
||||
local Lg
|
||||
|
||||
-- Gestione file custom
|
||||
local MakeFaceGeom = true
|
||||
local sCompoName
|
||||
-- nota presenza hatching
|
||||
local bHatch
|
||||
|
||||
-- caricamento del file custom
|
||||
if CustGeomFile and string.find( string.lower(CustGeomFile), '.nge') then
|
||||
|
||||
-- sostituisco il carattere '\' con '_' nel nome file
|
||||
CustGeomFile = string.gsub(CustGeomFile, '\\', '_')
|
||||
CustGeomFile = string.gsub(CustGeomFile, '/', '_')
|
||||
_,sCompoName,_ = EgtSplitPath( CustGeomFile)
|
||||
|
||||
-- concateno il file alla path
|
||||
local sCustomPathFile = CustGeomPath..CustGeomFile
|
||||
local nNewPart
|
||||
local nNewLayer
|
||||
local nNewEnt
|
||||
local nTypeEnt
|
||||
local sTypeInfo
|
||||
local cColor
|
||||
local sDeltaPos
|
||||
|
||||
-- provo ad inserire
|
||||
MakeFaceGeom = not EgtInsertFile( sCustomPathFile)
|
||||
|
||||
-- se fallito inserimento file do un messaggio di errore
|
||||
if MakeFaceGeom then
|
||||
EC = 1
|
||||
EM = string.format( EgtDoorsMsg[412], sCustomPathFile)
|
||||
return (ErrorBase+EC), EM
|
||||
end
|
||||
|
||||
Lg = EgtGroup(Pz,GDB_RT.LOC) -- layer principale
|
||||
EgtSetName(Lg,sCompoName)
|
||||
|
||||
nNewPart = EgtGetNext(Pz) -- nome nuovo pezzo
|
||||
nNewLayer = EgtGetFirstInGroup( nNewPart) -- ottengo nuovo layer
|
||||
|
||||
-- applico la scala
|
||||
if nNewLayer then
|
||||
-- se è in mm
|
||||
local dCompare = 1
|
||||
if DGD.bMM then
|
||||
dCompare = 1
|
||||
else
|
||||
dCompare = 25.4
|
||||
end
|
||||
-- se ha la nota che permette di scalare
|
||||
local bScale = EgtGetInfo( nNewPart, 'AllowScale', 'b') or false
|
||||
|
||||
-- se inferiore ai 10"
|
||||
if bScale and abs(DGD.LENGTH)/dCompare <= 10 and abs(DGD.WIDTH)/dCompare <= 10 then
|
||||
local dLength = EgtIf( DGD.bMM, abs(DGD.LENGTH), abs(DGD.LENGTH)/dCompare)
|
||||
local dWidth = EgtIf( DGD.bMM, abs(DGD.WIDTH), abs(DGD.WIDTH)/dCompare)
|
||||
EgtScale(nNewPart,{{0,0,0},{1,0,0},{0,1,0},{0,0,1}}, dWidth, dLength, 1, GDB_RT.GLOB)
|
||||
end
|
||||
end
|
||||
|
||||
-- riloco tutti i nuovi layer dal nuovo pezzo al pezzo corrente
|
||||
while nNewLayer do
|
||||
-- verifico se esiste la nota hatch
|
||||
bHatch = EgtGetInfo( nNewLayer, 'hatch', 'b')
|
||||
nNewEnt = EgtGetFirstInGroup( nNewLayer) -- ottengo nuova entità
|
||||
|
||||
while nNewEnt do
|
||||
|
||||
-- controllo se ha dei colori e le note giuste per cambiare lo spessore
|
||||
nTypeEnt = EgtGetType( nNewEnt)
|
||||
sTypeInfo = EgtGetInfo( nNewEnt, 'SideDoor')
|
||||
if not sDeltaPos then
|
||||
sDeltaPos = EgtGetInfo( nNewEnt, 'DeltaPos')
|
||||
end
|
||||
cColor = EgtGetCalcColor( nNewEnt)
|
||||
local sNoteKeepBs = EgtGetInfo( nNewEnt, 'KeepBackSet')
|
||||
local sNoteProbes = EgtGetInfo( nNewEnt, 'ProbeSide')
|
||||
|
||||
if sTypeInfo and cColor and DGD.dT then
|
||||
if string.lower(sTypeInfo) == 'keyway' or string.lower(sTypeInfo) == 'secure' then
|
||||
if AreSameColor(cColor,RED(),30) then -- se colore rosso allora spessore completo
|
||||
EgtModifyCurveThickness( nNewEnt, -DGD.dT)
|
||||
elseif AreSameColor(cColor,LIME(),30) then -- se colore verde allora metà spessore
|
||||
EgtModifyCurveThickness( nNewEnt, -(DGD.dT/2))
|
||||
if sNoteKeepBs then -- se ho assegnato la nota la ritrascrivo modificata
|
||||
EgtSetInfo( nNewEnt, 'KeepBackSet', 'x') -- setto 'x' provvisoriamente
|
||||
end
|
||||
if sNoteProbes then
|
||||
EgtSetInfo( nNewEnt, 'ProbeSide', '1')
|
||||
end
|
||||
else -- altrimenti controllo che lo spessore non supera quello della porta, se lo supera lo setto = spessore porta
|
||||
local dTh = EgtCurveThickness( nNewEnt)
|
||||
if abs(dTh) > DGD.dT then
|
||||
EgtModifyCurveThickness( nNewEnt, EgtIf( dTh > 0, DGD.dT, -DGD.dT))
|
||||
elseif abs(dTh) < DGD.dT then
|
||||
if sNoteKeepBs then -- se ho assegnato la nota la ritrascrivo modificata
|
||||
EgtSetInfo( nNewEnt, 'KeepBackSet', 'x') -- setto 'x' provvisoriamente
|
||||
end
|
||||
if sNoteProbes then
|
||||
EgtSetInfo( nNewEnt, 'ProbeSide', '1')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif sTypeInfo and ( string.lower(sTypeInfo) == 'keyway' or string.lower(sTypeInfo) == 'secure') then
|
||||
-- controllo che lo spessore non supera quello della porta, se lo supera lo setto = spessore porta
|
||||
local dTh = EgtCurveThickness( nNewEnt)
|
||||
if abs(dTh) > DGD.dT then
|
||||
EgtModifyCurveThickness( nNewEnt, EgtIf( dTh > 0, DGD.dT, -DGD.dT))
|
||||
elseif abs(dTh) < DGD.dT then
|
||||
if sNoteKeepBs then -- se ho assegnato la nota la ritrascrivo modificata
|
||||
EgtSetInfo( nNewEnt, 'KeepBackSet', 'x') -- setto 'x' provvisoriamente
|
||||
end
|
||||
if sNoteProbes then
|
||||
EgtSetInfo( nNewEnt, 'ProbeSide', '1')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
EgtRelocateGlob( nNewEnt, Lg) -- riloco nel layer corrente
|
||||
nNewEnt = EgtGetFirstInGroup(nNewLayer)
|
||||
end
|
||||
nNewLayer = EgtGetNext(nNewLayer)
|
||||
end
|
||||
|
||||
-- cancello il nuovo pezzo
|
||||
EgtErase(nNewPart)
|
||||
-- assegno la nota sulla posizione locale
|
||||
if sDeltaPos then
|
||||
EgtSetInfo( Lg, 'DeltaPos', sDeltaPos)
|
||||
end
|
||||
else
|
||||
EC = ErrorBase + 2
|
||||
EM = string.format( EgtDoorsMsg[411], CustGeomFile, DGD.FILE)
|
||||
end
|
||||
|
||||
-- se non ho caricato il file geom esco
|
||||
if not MakeFaceGeom then
|
||||
|
||||
-- (NOTA : se ci sono errori il componente non viene eseguito dal programma di gestione dei componenti)
|
||||
-- scrivo note nel layer
|
||||
EgtSetInfo( Lg, 'Type' , 'ImportNgeFile')
|
||||
EgtSetInfo( Lg, 'CustGeomFile' ,CustGeomFile)
|
||||
EgtSetInfo( Lg, 'CustGeomPath' ,CustGeomPath)
|
||||
EgtSetInfo( Lg, 'hatch' ,bHatch)
|
||||
end
|
||||
|
||||
return EC, EM, Lg
|
||||
end
|
||||
|
||||
return ImportNgeFile
|
||||
Reference in New Issue
Block a user