corretti i bug noti.

This commit is contained in:
Daniele Bariletti
2024-12-13 15:18:19 +01:00
parent 6b2b5eed0f
commit 098efa7a66
+57 -46
View File
@@ -56,6 +56,10 @@ local sPath = ""
sPath = EgtGetStringFromIni( "Vein3D", "Vein3D_Dir", "", EgtGetIniFile())
EgtOutLog(''..sPath)
-- definzione delle variabile per le classi di paretine
local dAngAlzatina = 90
local dAngFrontalino = -90
-- Carico i dati letti da file .dat
local tbOrigVal={}
local function OrigData()
@@ -496,11 +500,11 @@ function ImportOutLoop( tbLayer, sNameFileNGE)
local tbIdLoop = ExplodeAndNameEdges( IdLoop)
EgtSetInfo(tbIdLoop[1],'AF',1)
EgtSetInfo(tbIdLoop[2],'AF',1)
EgtSetInfo(tbIdLoop[3],'AF',1)
EgtSetInfo(tbIdLoop[4],'AF',1)
EgtSetInfo(tbIdLoop[5],'AF',1)
EgtSetInfo(tbIdLoop[6],'AF',1)
EgtSetInfo(tbIdLoop[2],'AF',2)
EgtSetInfo(tbIdLoop[3],'AF',2)
EgtSetInfo(tbIdLoop[4],'AF',2)
EgtSetInfo(tbIdLoop[5],'AF',2)
EgtSetInfo(tbIdLoop[6],'AF',2)
EgtSetInfo(tbIdLoop[7],'AF',1)
--SaveMePlease()
-- definizione SideAng
@@ -805,76 +809,86 @@ function CMP_Draw(bPreview)
-- PIANO POLLO
local Pz_Top = CreatePartLayer( 'TopChicken')
-- Creo il contorno esterno
-- Creo il contorno esterno (id degli edge esterni)
local tbIdLoopTC = ImportOutLoop( FindLayers( Pz_Top), sPath .. 'TopChicken.nge')
-- Creo il pezzo dato il contorno
local dTh_TC = CMP.ST
CreatePart( FindLayers( Pz_Top), 'TopChicken', tbIdLoopTC, dTh_TC, false)
--INIZIO CREAZIONE PARETINE
-- tabella che contiene le tabelle con le info dei vari part
local tbPartsInfo = {}
local dThCurr = 20
local dHCurr = 100
local nPrev = 0
local nNext = 0
local nFirst = 0
for i=1, #tbIdLoopTC do
local tbInfo = {}
tbInfo.nPrev = nPrev
local sNamePz = 'PartA'.. tostring(i)
local Pz_A = CreatePartLayer(sNamePz)
if nPrev ~= 0 then tbPartsInfo[nPrev].nNext = Pz_A end
if i == 1 then nFirst = Pz_A end
tbInfo.nId = Pz_A
tbInfo.sName = sNamePz
local nType = EgtGetInfo(tbIdLoopTC[i], 'AF', 'i') or 0
local dPairAng = 0
if nType == 1 then
dPairAng = dAngAlzatina
elseif nType == 2 then
dPairAng = dAngFrontalino
end
EgtSetInfo(Pz_A, 'PairAng', dPairAng)
EgtSetInfo(Pz_A, 'dTh', dThCurr)
EgtSetInfo(Pz_A, 'dH', dHCurr)
nPrev = Pz_A
tbPartsInfo[tbInfo.nId] = tbInfo
end
tbPartsInfo[nFirst].nPrev = nPrev
tbPartsInfo[nPrev].nNext = nFirst
--local nJunctionType -- 1 TrimStart, 2 TrimEnd, 3Ang
local vtDirCurr = EgtSV( tbIdLoopTC[1], GDB_RT.GLOB)
local nPrev = #tbIdLoopTC
nPrev = #tbIdLoopTC
local vtDirPrev = EgtEV( tbIdLoopTC[nPrev], GDB_RT.GLOB)
local nNext = 2
nNext = 2
local vtDirNext = EgtSV( tbIdLoopTC[nNext], GDB_RT.GLOB)
-- local nTypePrev = EgtGetInfo(tbIdLoopTC[nPrev], 'AF', 'i') or 0
-- local nTypeNext = EgtGetInfo(tbIdLoopTC[nNext], 'AF', 'i') or 0
local dPairAngPrev = 0
local dPairAngNext = 0
local dPairAng = 0
local dLen = EgtCurveLength(tbIdLoopTC[1])
local dLenPrev = EgtCurveLength(tbIdLoopTC[#tbIdLoopTC])
local dLenNext = EgtCurveLength(tbIdLoopTC[nNext])
local tbPartsInfo = {}
local bOnLoop = false
local bOnLoop = false -- bool che indica se la faccia buona del part sta sull'edge del piano cucina o no
local nJunctionType = 1
for i=1, #tbIdLoopTC do
local tbInfo = {}
local sNamePz = 'PartA'.. tostring(i)
local Pz_A = CreatePartLayer(sNamePz)
tbInfo.nId = Pz_A
tbInfo.sName = sNamePz
local nType = EgtGetInfo(tbIdLoopTC[i], 'AF', 'i') or 0
local dPairAng = 0
if nType == 1 then
dPairAng = 90
elseif nType == 2 then
dPairAng = -90
end
EgtSetInfo(Pz_A, 'PairAng', dPairAng)
tbPartsInfo[tbInfo.nId] = tbInfo
end
for i=1,#tbIdLoopTC do
local sPartName = sUNICode..'PartA'..tostring(i)
local nPart = EgtGetFirstNameInGroup(GDB_ID.ROOT,sPartName)
local tbInfo = tbPartsInfo[nPart]
dPairAngPrev = EgtGetInfo(nPart, 'PairAng', 'd') or 0
dPairAngNext = EgtGetInfo(nPart, 'PairAng', 'd') or 0
dPairAngPrev = EgtGetInfo(tbInfo.nPrev, 'PairAng', 'd') or 0
dPairAngNext = EgtGetInfo(tbInfo.nNext, 'PairAng', 'd') or 0
dPairAng = EgtGetInfo(nPart, 'PairAng', 'd') or 0
local nType = EgtGetInfo(tbIdLoopTC[i], 'AF', 'i') or 0
vtDirNext = EgtSV( tbIdLoopTC[nNext])
local dH = 100
local dH = EgtGetInfo(nPart, 'dH', 'd')
tbInfo.dH = dH
local dTh = 20
local dTh = EgtGetInfo(nPart, 'dTh', 'd')
if nType == 1 then
----- caratteristiche alzatina
--dPairAng = 60
tbInfo.dPairAng = dPairAng
tbInfo.dSideAngT = dPairAng - 90
dTh = 20
tbInfo.dTh = dTh
tbInfo.dYOffset = dTh * tan(tbInfo.dSideAngT)
--nJunctionType = 2 -- trim end
--nJunctionType = 1 -- trim start
nJunctionType = 3 -- angle junction
nJunctionType = 1 -- angle junction
bOnLoop = false
----- caratteristiche alzatina
elseif nType == 2 then
----- caratteristiche frontalino
--dPairAng = -90
tbInfo.dPairAng = dPairAng
tbInfo.dSideAngT = -( -dPairAng - 90)
dTh = 20
tbInfo.dTh = dTh
tbInfo.dYOffset = dTh * tan(tbInfo.dSideAngT)
nJunctionType = 3 -- angle junction
@@ -885,6 +899,7 @@ function CMP_Draw(bPreview)
local PAng, NAng = GetPrevNextAng(tbIdLoopTC[i])
-- calcolo l'angolo di sformo con il pezzo precedente
local dXOffset = 0
-- se i due pezzi hanno angoli di accoppiamento discordi allora uno sta sotto e uno sta sopra
local bSameSide = dPairAng * dPairAngPrev > 0
if bSameSide then
if nJunctionType == 3 then
@@ -961,6 +976,7 @@ function CMP_Draw(bPreview)
tbInfo.sDestRefOff = '0,0,-x'
tbInfo.sRefOff = '0,'..tostring(tbInfo.dYOffset)..',0'
end
-- passo al prossimo curr
dLenPrev = EgtCurveLength(tbIdLoopTC[i])
dLen = EgtCurveLength(tbIdLoopTC[nNext])
nPrev = i
@@ -968,15 +984,10 @@ function CMP_Draw(bPreview)
vtDirPrev = vtDirCurr
vtDirCurr = vtDirNext
vtDirNext = EgtSV(nNext, GDB_RT.GLOB)
--dLenPrev = dLen
--dLen = dLenNext
dLenNext = EgtCurveLength(tbIdLoopTC[nNext])
-- nTypePrev = nType
-- nType = nTypeNext
-- nTypeNext = EgtGetInfo(tbIdLoopTC[nNext], 'AF', 'i') or 0
dPairAngPrev = dPairAng
dPairAng = dPairAngNext
dPairAngNext = EgtGetInfo( tbIdLoopTC[nNext], 'PairAng', 'd') or 0
--dPairAngPrev = dPairAng
--dPairAng = dPairAngNext
--dPairAngNext = EgtGetInfo( tbIdLoopTC[nNext], 'PairAng', 'd') or 0
end
for nPart, tbPart in pairs( tbPartsInfo) do