-- 2015/10/__ -- PIANO CUCINA A 'L' AD ANGOLO RETTO CON SMUSSO o RACCORDO -- Intestazioni require('EgtBase') _ENV = EgtProtectGlobal() EgtEnableDebug( false) EgtAddToPackagePath(EgtGetSourceDir() .. 'LuaLibs\\?.lua') require( 'EgtCompo') local Nome = 'PCucinaA23' -- Valori limite local LgMin = 10 -- lati --local AlfaMin = 60 --local AlfaMax = 150 local RMin = 10 -- Parametri : dichiarazione e valori standard --.T (tipo) : 0=null, 1=bool, 2=int, 3=len, 4=num, 5=string local CMP = {} CMP.N1 = 'A' -- lato lungo muro 'obliquo' CMP.T1 = 3 CMP.V1 = 1800 CMP.N2 = 'B' -- lato lungo muro 'orizzontale' CMP.T2 = 3 CMP.V2 = 2000 CMP.N3 = 'C' -- profondità lato 'obliquo' CMP.T3 = 3 CMP.V3 = 600 CMP.N4 = 'D' -- profondità lato 'orizzontale' CMP.T4 = 3 CMP.V4 = 500 CMP.N5 = '\\(' --'Ch/Fill' -- opzione smusso interno a 45° / raccordo (true = raccordo) CMP.T5 = 1 CMP.V5 = false CMP.N6 = 'G/R' -- lunghezza 'smusso' interno a 45° o raggio di raccordo CMP.T6 = 3 CMP.V6 = 100 CMP.N7 = '←→' -- Simmetria dx/sx (true = svuotamento a dx) CMP.T7 = 1 CMP.V7 = false CMP.N8 = '↑↓' -- Simmetria su/giù ('ribaltamento') (true = 'L' capovolta) CMP.T8 = 1 CMP.V8 = false CMP.Npar = 8 CMP.Nome = Nome CMP.WithInt = true _G.CMP = CMP -- Aggiorno con ultimi valori salvati (se presenti) CMP.DATA = EgtGetSourceDir() .. CMP.Nome ..'.dat' LoadCompoData() local function CMP_DrawA2(bPreview) -- Carico i messaggi local Msg = require('EgtCompoMsg') -- Assegnazioni local L1 = CMP.V1 local L2 = CMP.V2 local L3 = CMP.V3 local L4 = CMP.V4 local Alfa = 90 local L6 = CMP.V6 local Simm = CMP.V7 local Rib = CMP.V8 CMP.N6='G' -- smusso local L5label = 'E' -- lato 'obliquo' interno local L7label = 'F' -- lato 'orizzontale' interno local D1label = 'd' -- diagonale CMP.ERR = 0 CMP.MSG = '' --Verifica di compatibilità dei dati di input if L1 < LgMin then L1 = LgMin CMP.ERR = 1 CMP.MSG = Msg[2]..GetLenLimit(LgMin) --Le dimensioni dei lati devono essere > = a ... end if L2 < LgMin then L2 = LgMin if CMP.ERR == 0 then CMP.ERR = 2 CMP.MSG = Msg[2]..GetLenLimit(LgMin) --Le dimensioni dei lati devono essere > = a... end end if L3 < LgMin then L3 = LgMin if CMP.ERR == 0 then CMP.ERR = 3 CMP.MSG = Msg[2]..GetLenLimit(LgMin) --Le dimensioni dei lati devono essere > = a... end end if L4 < LgMin then L4 = LgMin if CMP.ERR == 0 then CMP.ERR = 4 CMP.MSG = Msg[2]..GetLenLimit(LgMin) --Le dimensioni dei lati devono essere > = a... end end --[[if Alfa < AlfaMin then Alfa = AlfaMin if CMP.ERR == 0 then CMP.ERR = 5 CMP.MSG = Msg[220]..AlfaMin..' e '..AlfaMax -- L'angolo Alfa deve essere compreso tra ... e ... end end if Alfa > AlfaMax then Alfa = AlfaMax if CMP.ERR == 0 then CMP.ERR = 6 CMP.MSG = Msg[220]..AlfaMin..' e '..AlfaMax -- L'angolo Alfa deve essere compreso tra ... e ... end end --]] if L6 < LgMin then L6 = LgMin if CMP.ERR == 0 then CMP.ERR = 7 CMP.MSG = Msg[2]..GetLenLimit(LgMin) --Le dimensioni dei lati devono essere > = a... end end -- Se Preview cancello tutto if bPreview then EgtNewFile() EgtSetDefaultMaterial( BLACK()) end -- Pezzo e Layer local Pz = EgtGroup(GDB_ID.ROOT,GDB_RT.LOC) -- pezzo local Ly = EgtGroup(Pz,GDB_RT.LOC) -- layer della figura principale EgtSetName(Ly,'OutLoop') local Lr = EgtGroup(Pz,GDB_RT.LOC) -- layer regione EgtSetName(Lr,'Region') local Lc = EgtGroup(Pz,GDB_RT.LOC) -- layer di costruzione local La = EgtGroup(Pz,GDB_RT.LOC) -- layer ausiliario (diagonali e relative etichette, assi) EgtSetName(La,"LayAux") local Le = EgtGroup(Pz,GDB_RT.LOC) -- layer delle etichette pezzo EgtSetName(Le,"Etichette") local Lq = EgtGroup(Pz,GDB_RT.LOC) -- layer delle linee di quotatura EgtSetName(Lq,"Quotature") EgtSetCurrPartLayer(Pz,Ly) -- Costruzione della figura local vAlfa = Vector3d (cos(Alfa),sin(Alfa),0) local l1 = EgtLinePVL(Ly,ORIG(),vAlfa,L1) EgtInvertCurve(l1) EgtSetName(l1,"A7") local l2 = EgtLinePDL(Ly,ORIG(),0,L2) EgtSetName(l2,"A1") local l3 = EgtLinePVL(Ly,EgtSP(l1),VRotated(vAlfa,-90),L3) EgtInvertCurve(l3) EgtSetName(l3,"A6") local l4 = EgtLinePDL(Ly,EgtEP(l2),90,L4) EgtSetName(l4,"A2") -- linea di estensione angolo --local arcAlfa , rrefAlfa --rrefAlfa = min(L1,L2)/5 --arcAlfa = EgtArcC2P(La,EgtSP(l2),EgtSP(l2)+EgtEV(l2)*rrefAlfa,EgtSP(l1)) -- chiusura dei lati l5 e l7 se possibile local l5 = EgtLinePVL(Ly,EgtSP(l3),VRotated(vAlfa,180),L1) EgtInvertCurve(l5) EgtSetName(l5,"A5") local l7 = EgtLinePDL(Ly,EgtEP(l4),180,L2) EgtSetName(l7,"A3") local Beta, Dist, l6 --if EgtIP(l5,l7,EgtSP(l3)) then EgtModifyCurveStartPoint(l5,EgtIP(l5,l7,EgtSP(l3))) EgtModifyCurveEndPoint(l7,EgtIP(l5,l7,EgtEP(l4))) L5 = EgtCurveLength(l5) L7 = EgtCurveLength(l7) -- inserimentp dello smusso se possibile Beta = (180 - Alfa ) / 2 Dist = L6/2/cos(Beta) if Dist >= L5 or Dist >= L7 then Dist = min(L5,L7) - LgMin if CMP.ERR == 0 then CMP.ERR = 9 CMP.MSG = Msg[222] -- lo smusso non ci sta : L6 troppo grande end end if Dist > L5-LgMin or Dist > L7-LgMin then Dist = min(L5,L7) - LgMin if CMP.ERR == 0 then CMP.ERR = 10 CMP.MSG = Msg[223]..GetLenLimit(LgMin) -- un lato risulta troppo piccolo (minore di ..) end end --if L7 < LgMin then -- if CMP.ERR == 0 then -- CMP.ERR = 11 -- CMP.MSG = Msg[223]..GetLenLimit(LgMin) -- un lato risulta troppo piccolo (minore di ..) -- end -- end l6 = EgtCurveChamfer (Ly,l7,EgtSP(l7),l5,EgtEP(l5),Dist,true) EgtSetName(l6,"A4") L5 = EgtCurveLength(l5) L7 = EgtCurveLength(l7) --else -- if CMP.ERR == 0 then --CMP.ERR = 8 --CMP.MSG = Msg[221] -- figura impossibile: i lati L5 e L7 non si chiudono --end --end -- diagonali e assi di simmetria local d1, D1, a1, a2 if CMP.ERR == 0 then d1 = EgtLine(La,EgtSP(l1),EgtEP(l2)) D1 = EgtCurveLength(d1) a1 = EgtLinePVL(La,EgtMP(l3),VRotated(vAlfa,180),L1) a2 = EgtLinePDL(La,EgtMP(l4),180,L2) EgtModifyCurveEndPoint(a1,EgtIP(a1,a2,EgtMP(l6))) EgtModifyCurveEndPoint(a2,EgtIP(a1,a2,EgtMP(l6))) end if Lc then EgtErase(Lc) end -- Riempimento della figura local e1, s1 if CMP.ERR ~= 8 then e1 = EgtCurveCompo(Ly,{l1,l2,l4,l7,l6,l5,l3},false) s1 = EgtSurfFlatRegion(Lr,e1) if CMP.ERR == 0 then EgtSetColor(s1,AQUA()) else EgtSetColor(s1,ORANGE()) end EgtSetAlpha(s1,25) EgtErase(e1) end -- Simmetria orizzontale if Simm then EgtMirror({Ly,Lr,La,Le,Lq},ORIG(),X_AX(),GDB_RT.GLOB) EgtInvertCurve({l1,l2,l3,l4,l5,l6,l7,arcAlfa}) if CMP.ERR == 0 then EgtInvertCurve(d1) EgtSetInfo(La,"SIMM","1") end end -- Simmetria verticale ('ribaltamento') if Rib then EgtMirror({Ly,Lr,La,Le,Lq},ORIG(),Y_AX(),GDB_RT.GLOB) EgtInvertCurve({l1,l2,l3,l4,l5,l6,l7,arcAlfa}) EgtSetInfo(La,"RIB","1") end EgtReorderCurvesInGroup(Ly,ORIG()) -- Dimensioni dell'oggetto local bbox = EgtGetBBoxGlob(Ly,GDB_BB.STANDARD) local dimX = EgtToUiUnits(bbox:getDimX()) local dimY = EgtToUiUnits(bbox:getDimY()) local dim = bbox:getRadius() * 0.1 if CMP.ERR == 0 then CMP.MSG = Msg[1] .. EgtNumToString(dimX,2) .. ' x ' .. EgtNumToString(dimY,2) end local pVal if Rib then pVal= bbox:getMin() - Vector3d(0,dim*3,0) -- uguali, se non ci sono linee di quotatura sotto la fiura else pVal= bbox:getMin() - Vector3d(0,dim*3,0) end -- Dimensioni sull'oggetto local LbOn if CMP.ERR == 0 then local sDim = EgtNumToString(dimX,2) .. ' x ' .. EgtNumToString(dimY,2) local dDim = bbox:getRadius() * 0.1 if L1 > L2 then LbOn = AddLabelPnt(Lr,EgtMP(a1,GDB_ID.ROOT),sDim,dDim,90,BLACK()) else LbOn = AddLabelPnt(Lr,EgtMP(a2,GDB_ID.ROOT),sDim,dDim,0,BLACK()) end EgtSetStatus(LbOn,GDB_ST.OFF) end -- Etichette sulla figura local stdoffset = 1 local LblL1 = AddLabel(Le,l1,stdoffset,CMP.N1,dim,-90,RED()) EgtSetInfo(LblL1,"Var",1) local LblL2 = AddLabel(Le,l2,stdoffset,CMP.N2,dim,-90,RED()) EgtSetInfo(LblL2,"Var",2) local LblL3 = AddLabel(Le,l3,stdoffset,CMP.N3,dim,-90,RED()) EgtSetInfo(LblL3,"Var",3) local LblL4 = AddLabel(Le,l4,stdoffset,CMP.N4,dim,-90,RED()) EgtSetInfo(LblL4,"Var",4) --[[local LblAlfa = AddLabel(Le,arcAlfa,stdoffset*.5,CMP.N5,dim*.8,-90,RED()) EgtSetInfo(LblAlfa,"Var",5) --]] if CMP.ERR ~= 8 then local LblL6 = AddLabel(Le,l6,stdoffset,CMP.N6,dim,-90,RED()) EgtSetInfo(LblL6,"Var",6) end if CMP.ERR == 0 then local LblL5 = AddLabel(Le,l5,stdoffset,L5label,dim*.75,-90,GREEN()) local LblL7 = AddLabel(Le,l7,stdoffset,L7label,dim*.75,-90,GREEN()) local LblD1 = AddLabelAl(La,d1,stdoffset*.75,D1label,dim/2,90,GREEN()) end -- Etichette sotto la figura if CMP.ERR == 0 then local lLenL5 = EgtToUiUnits(L5) local sLenL5 = EgtNumToString(lLenL5,1) local ValL5 = EgtTextAdv(Le,pVal,0,L5label..'='..sLenL5,'',100,'S',dim*.75,1,0,GDB_TI.BL,GDB_RT.GLOB) EgtSetColor(ValL5,GREEN()) EgtSetStatus(ValL5,GDB_ST.SEL) local ValL5Len = (EgtEP(ValL5,GDB_RT.GLOB)-EgtSP(ValL5,GDB_RT.GLOB)):getX() + dim/2 pVal = pVal + Vector3d(ValL5Len,0,0) local lLenL7 = EgtToUiUnits(L7) local sLenL7 = EgtNumToString(lLenL7,1) local ValL7 = EgtTextAdv(Le,pVal,0,L7label..'='..sLenL7,'',100,'S',dim*.75,1,0,GDB_TI.BL,GDB_RT.GLOB) EgtSetColor(ValL7,GREEN()) EgtSetStatus(ValL7,GDB_ST.SEL) local ValL7Len = (EgtEP(ValL7,GDB_RT.GLOB)-EgtSP(ValL7,GDB_RT.GLOB)):getX() + dim/2 pVal = pVal + Vector3d(ValL7Len,0,0) end if CMP.ERR == 0 then local lLenD1 = EgtToUiUnits(D1) local sLenD1 = EgtNumToString(lLenD1,1) local ValD1 = EgtTextAdv(La,pVal,0,D1label..'='..sLenD1,'',100,'S',dim*.5,1,0,GDB_TI.BL,GDB_RT.GLOB) EgtSetColor(ValD1,GREEN()) EgtSetStatus(ValD1,GDB_ST.SEL) end -- Se non Preview if not bPreview then -- cancello etichette e parti ausiliarie (es.: altezze, diagonali ) EgtErase({La,Le,Lq}) -- rendo visibile label sul pezzo EgtSetStatus(LbOn,GDB_ST.ON) end -- Se ok if CMP.ERR == 0 then -- scrivo i parametri nelle info del pezzo WriteCompoDataToPart(Pz,CMP.Nome,CMP.Npar) -- salvo i parametri come nuovo default SaveCompoData(CMP.Npar) end end function CMP_DrawA3(bPreview) -- Carico i messaggi local Msg = require('EgtCompoMsg') -- Assegnazioni local L1 = CMP.V1 local L2 = CMP.V2 local L3 = CMP.V3 local L4 = CMP.V4 local Alfa = 90 local R = CMP.V6 -- -- raggio di raccordo tra i lati interni local Simm = CMP.V7 local Rib = CMP.V8 CMP.N6 = 'R' local L5label = 'E' -- lato 'obliquo' interno local L7label = 'F' -- lato 'orizzontale' interno local D1label = 'd' -- diagonale CMP.ERR = 0 CMP.MSG = '' --Verifica di compatibilità dei dati di input if L1 < LgMin then L1 = LgMin CMP.ERR = 1 CMP.MSG = Msg[2]..GetLenLimit(LgMin) --Le dimensioni dei lati devono essere > = a ... end if L2 < LgMin then L2 = LgMin if CMP.ERR == 0 then CMP.ERR = 2 CMP.MSG = Msg[2]..GetLenLimit(LgMin) --Le dimensioni dei lati devono essere > = a... end end if L3 < LgMin then L3 = LgMin if CMP.ERR == 0 then CMP.ERR = 3 CMP.MSG = Msg[2]..GetLenLimit(LgMin) --Le dimensioni dei lati devono essere > = a... end end if L4 < LgMin then L4 = LgMin if CMP.ERR == 0 then CMP.ERR = 4 CMP.MSG = Msg[2]..GetLenLimit(LgMin) --Le dimensioni dei lati devono essere > = a... end end --[[if Alfa < AlfaMin then Alfa = AlfaMin if CMP.ERR == 0 then CMP.ERR = 5 CMP.MSG = Msg[220]..AlfaMin..' e '..AlfaMax -- L'angolo Alfa deve essere compreso tra ... e ... end end if Alfa > AlfaMax then Alfa = AlfaMax if CMP.ERR == 0 then CMP.ERR = 6 CMP.MSG = Msg[220]..AlfaMin..' e '..AlfaMax -- L'angolo Alfa deve essere compreso tra ... e ... end end --]] if R < RMin then R = RMin if CMP.ERR == 0 then CMP.ERR = 7 CMP.MSG = Msg[26]..GetLenLimit(RMin) --Il raggio deve essere maggiore o uguale a .. end end -- Se Preview cancello tutto if bPreview then EgtNewFile() EgtSetDefaultMaterial( BLACK()) end -- Pezzo e Layer local Pz = EgtGroup(GDB_ID.ROOT,GDB_RT.LOC) -- pezzo local Ly = EgtGroup(Pz,GDB_RT.LOC) -- layer della figura principale EgtSetName(Ly,'OutLoop') local Lr = EgtGroup(Pz,GDB_RT.LOC) -- layer regione EgtSetName(Lr,'Region') local Lc = EgtGroup(Pz,GDB_RT.LOC) -- layer di costruzione local La = EgtGroup(Pz,GDB_RT.LOC) -- layer ausiliario (diagonali e relative etichette, assi) EgtSetName(La,"LayAux") local Le = EgtGroup(Pz,GDB_RT.LOC) -- layer delle etichette pezzo EgtSetName(Le,"Etichette") local Lq = EgtGroup(Pz,GDB_RT.LOC) -- layer delle linee di quotatura EgtSetName(Lq,"Quotature") EgtSetCurrPartLayer(Pz,Ly) -- Costruzione della figura local vAlfa = Vector3d (cos(Alfa),sin(Alfa),0) local l1 = EgtLinePVL(Ly,ORIG(),vAlfa,L1) EgtInvertCurve(l1) EgtSetName(l1,"A7") local l2 = EgtLinePDL(Ly,ORIG(),0,L2) EgtSetName(l2,"A1") local l3 = EgtLinePVL(Ly,EgtSP(l1),VRotated(vAlfa,-90),L3) EgtInvertCurve(l3) EgtSetName(l3,"A6") local l4 = EgtLinePDL(Ly,EgtEP(l2),90,L4) EgtSetName(l4,"A2") --[[ linea di estensione angolo local arcAlfa , rrefAlfa rrefAlfa = min(L1,L2)/5 arcAlfa = EgtArcC2P(La,EgtSP(l2),EgtSP(l2)+EgtEV(l2)*rrefAlfa,EgtSP(l1)) --]] -- chiusura dei lati l5 e l7 se possibile local l5 = EgtLinePVL(Ly,EgtSP(l3),VRotated(vAlfa,180),L1) EgtInvertCurve(l5) EgtSetName(l5,"A5") local l7 = EgtLinePDL(Ly,EgtEP(l4),180,L2) EgtSetName(l7,"A3") local Dist, l6arc, L5, L7 --if EgtIP(l5,l7,EgtSP(l3)) then EgtModifyCurveStartPoint(l5,EgtIP(l5,l7,EgtSP(l3))) EgtModifyCurveEndPoint(l7,EgtIP(l5,l7,EgtEP(l4))) L5 = EgtCurveLength(l5) -- L5' L7 = EgtCurveLength(l7) -- L7' -- inserimentp del raccordo se possibile Dist = R --/tan(Alfa/2) --if Dist >= L5 or Dist >= L7 then --Dist = min(L5,L7) - LgMin --if CMP.ERR == 0 then --CMP.ERR = 9 --CMP.MSG = Msg[222] -- il raccordo non ci sta : L6 troppo grande --end --end -- if Dist > L5-LgMin or Dist > L7-LgMin then Dist = min(L5-LgMin, L7-LgMin) R = Dist -- *tan(Alfa/2) if CMP.ERR == 0 then CMP.ERR = 10 CMP.MSG = Msg[223]..GetLenLimit(LgMin) -- un lato risulta troppo piccolo (minore di ..) end end l6arc = EgtCurveFillet (Ly,l7,EgtSP(l7),l5,EgtEP(l5),R,true) EgtSetName(l6arc,"A4") L5 = EgtCurveLength(l5) L7 = EgtCurveLength(l7) --else -- if CMP.ERR == 0 then --CMP.ERR = 8 --CMP.MSG = Msg[221] -- figura impossibile: i lati L5 e L7 non si chiudono --end --end -- diagonali e assi di simmetria local d1, D1, a1, a2 if CMP.ERR == 0 then d1 = EgtLine(La,EgtSP(l1),EgtEP(l2)) D1 = EgtCurveLength(d1) a1 = EgtLinePVL(La,EgtMP(l3),VRotated(vAlfa,180),L1) a2 = EgtLinePDL(La,EgtMP(l4),180,L2) EgtModifyCurveEndPoint(a1,EgtIP(a1,a2,EgtMP(l6arc))) EgtModifyCurveEndPoint(a2,EgtIP(a1,a2,EgtMP(l6arc))) end -- linee di quota - raggio local dim = EgtGetBBoxGlob(Ly,GDB_BB.STANDARD):getRadius() * 0.1 local pt = EgtMP(l6arc) local vr = EgtMV(l6arc,Lq) --vr = VRotaded(EgtMV(l3,Lq),90) non può funzionare? local DimLineR = EgtLine(Lq,pt+VRotated(vr,-90)*dim,pt) pt = EgtEP(DimLineR) vr = EgtEV(DimLineR) EgtLinePVL(Lq,pt,VRotated(-vr,-15),dim*.4) -- freccia di quotatura EgtLinePVL(Lq,pt,VRotated(-vr, 15),dim*.4) pt = EgtSP(DimLineR)-vr*dim/2 -- linea aux per quotatura local DimLineRAux = EgtLine(Lq,EgtSP(DimLineR),pt) if Lc then EgtErase(Lc) end -- Riempimento della figura local e1, s1 if CMP.ERR ~= 8 then e1 = EgtCurveCompo(Ly,{l1,l2,l4,l7,l6arc,l5,l3},false) s1 = EgtSurfFlatRegion(Lr,e1) if CMP.ERR == 0 then EgtSetColor(s1,AQUA()) else EgtSetColor(s1,ORANGE()) end EgtSetAlpha(s1,25) EgtErase(e1) end -- Simmetria orizzontale if Simm then EgtMirror({Ly,Lr,La,Le,Lq},ORIG(),X_AX(),GDB_RT.GLOB) EgtInvertCurve({l1,l2,l3,l4,l5,l6arc,l7,arcAlfa}) if CMP.ERR == 0 then EgtInvertCurve(d1) EgtSetInfo(La,"SIMM","1") end end -- Simmetria verticale ('ribaltamento') if Rib then EgtMirror({Ly,Lr,La,Le,Lq},ORIG(),Y_AX(),GDB_RT.GLOB) EgtInvertCurve({l1,l2,l3,l4,l5,l6arc,l7,arcAlfa}) EgtSetInfo(La,"RIB","1") end EgtReorderCurvesInGroup(Ly,ORIG()) -- Dimensioni dell'oggetto local bbox = EgtGetBBoxGlob(Ly,GDB_BB.STANDARD) local dimX = EgtToUiUnits(bbox:getDimX()) local dimY = EgtToUiUnits(bbox:getDimY()) dim = bbox:getRadius() * 0.1 if CMP.ERR == 0 then CMP.MSG = Msg[1] .. EgtNumToString(dimX,2) .. ' X ' .. EgtNumToString(dimY,2) end local pVal if Rib then pVal= bbox:getMin() - Vector3d(0,dim*3,0) -- uguali, se non ci sono linee di quotatura sotto la fiura else pVal= bbox:getMin() - Vector3d(0,dim*3,0) end -- Dimensioni sull'oggetto local LbOn if CMP.ERR == 0 then local sDim = EgtNumToString(dimX,2) .. ' X ' .. EgtNumToString(dimY,2) local dDim = bbox:getRadius() * 0.1 if L1 > L2 then LbOn = AddLabelPnt(Lr,EgtMP(a1,GDB_ID.ROOT),sDim,dDim,90,BLACK()) else LbOn = AddLabelPnt(Lr,EgtMP(a2,GDB_ID.ROOT),sDim,dDim,0,BLACK()) end EgtSetStatus(LbOn,GDB_ST.OFF) end -- Etichette sulla figura local stdoffset = 1 local LblL1 = AddLabel(Le,l1,stdoffset,CMP.N1,dim,-90,RED()) EgtSetInfo(LblL1,"Var",1) local LblL2 = AddLabel(Le,l2,stdoffset,CMP.N2,dim,-90,RED()) EgtSetInfo(LblL2,"Var",2) local LblL3 = AddLabel(Le,l3,stdoffset,CMP.N3,dim,-90,RED()) EgtSetInfo(LblL3,"Var",3) local LblL4 = AddLabel(Le,l4,stdoffset,CMP.N4,dim,-90,RED()) EgtSetInfo(LblL4,"Var",4) --[[local LblAlfa = AddLabelU(Le,arcAlfa,1/4,stdoffset*.5,CMP.N5,dim*.8,-90,RED()) EgtSetInfo(LblAlfa,"Var",5) --]] if CMP.ERR ~= 8 then local LblLR = AddLabelAl(Le,DimLineRAux,stdoffset*.2,CMP.N6,dim*.8,45,RED()) EgtSetInfo(LblLR,"Var",6) EgtErase(DimLineRAux) end if CMP.ERR == 0 then local LblL5 = AddLabel(Le,l5,stdoffset,L5label,dim*.75,-90,GREEN()) local LblL7 = AddLabel(Le,l7,stdoffset,L7label,dim*.75,-90,GREEN()) local LblD1 = AddLabelAl(La,d1,stdoffset*.75,D1label,dim/2,90,GREEN()) end -- Etichette sotto la figura if CMP.ERR == 0 then local lLenL5 = EgtToUiUnits(L5) local sLenL5 = EgtNumToString(lLenL5,1) local ValL5 = EgtTextAdv(Le,pVal,0,L5label..'='..sLenL5,'',100,'S',dim*.75,1,0,GDB_TI.BL,GDB_RT.GLOB) EgtSetColor(ValL5,GREEN()) EgtSetStatus(ValL5,GDB_ST.SEL) local ValL5Len = (EgtEP(ValL5,GDB_RT.GLOB)-EgtSP(ValL5,GDB_RT.GLOB)):getX() + dim/2 pVal = pVal + Vector3d(ValL5Len,0,0) local lLenL7 = EgtToUiUnits(L7) local sLenL7 = EgtNumToString(lLenL7,1) local ValL7 = EgtTextAdv(Le,pVal,0,L7label..'='..sLenL7,'',100,'S',dim*.75,1,0,GDB_TI.BL,GDB_RT.GLOB) EgtSetColor(ValL7,GREEN()) EgtSetStatus(ValL7,GDB_ST.SEL) local ValL7Len = (EgtEP(ValL7,GDB_RT.GLOB)-EgtSP(ValL7,GDB_RT.GLOB)):getX() + dim/2 pVal = pVal + Vector3d(ValL7Len,0,0) end if CMP.ERR == 0 then local lLenD1 = EgtToUiUnits(D1) local sLenD1 = EgtNumToString(lLenD1,1) local ValD1 = EgtTextAdv(La,pVal,0,D1label..'='..sLenD1,'',100,'S',dim*.5,1,0,GDB_TI.BL,GDB_RT.GLOB) EgtSetColor(ValD1,GREEN()) EgtSetStatus(ValD1,GDB_ST.SEL) end -- Se non Preview if not bPreview then -- cancello etichette e parti ausiliarie (es.: altezze, diagonali ) EgtErase({La,Le,Lq}) -- rendo visibile label sul pezzo EgtSetStatus(LbOn,GDB_ST.ON) end -- Se ok if CMP.ERR == 0 then -- scrivo i parametri nelle info del pezzo WriteCompoDataToPart(Pz,CMP.Nome,CMP.Npar) -- salvo i parametri come nuovo default SaveCompoData(CMP.Npar) end end function CMP_Draw( bPreview) local OpzRaccordo = CMP.V5 if OpzRaccordo then CMP_DrawA3( bPreview) else CMP_DrawA2( bPreview) end end _G.CMP_Draw = CMP_Draw CMP_Draw(true) EgtZoom(SCE_ZM.ALL)