corretti i bug noti.
This commit is contained in:
+57
-46
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user