View difference between Paste ID: iWRDuGPM and Sv5qZ6XZ
SHOW: | | - or go back to the newest paste.
1-
'Prd Interna
1+
'Tooling
2
3-
Sub PROG_MAC_S4()
3+
Function T_RECT1(ByVal XS As Double, ByVal XD As Double, ByVal YI As Double, ByVal YS As Double) As String
4
5-
VPRSS = 0
5+
6-
str_no_repet = ""
6+
N1 = Round(XS, 2)
7
N2 = Round(XD, 2)
8-
For CFL = 1 To NM_DT
8+
N3 = Round(YI, 2)
9
N4 = Round(YS, 2)
10-
ACT_MOD = ""
10+
11-
'PROGRAMMI EMZ
11+
If XS > XD Then
12-
If INFO_DAT(CFL, 0, 6) = "9999999" Then Call S_9999999(CFL)
12+
XS = N2
13
XD = N1
14-
If VAR_ACCORP = True And InStr(1, STR_VR_ACC, INFO_DAT(CFL, 0, 6)) = 0 Then GoTo NO_PROD_INT
14+
15-
If VAR_ACCORP = True And InStr(1, STR_VR_FIBRA, INFO_DAT(CFL, 0, 6)) > 0 Then GoTo NO_PROD_INT
15+
16
If YI > YS Then
17-
'**************************COPRIFESSURA
17+
YI = N4
18-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1014688A" Then Call S_1014688A(CFL)
18+
YS = N3
19-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007069A" Then Call S_1007069A(CFL)
19+
20-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10288740" Then Call S_10288740(CFL)
20+
21-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1026845A" Then Call S_1026845A(CFL)
21+
''********************
22
'If YI < -4 Then
23-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10328000" Then Call S_10328000(CFL)
23+
'YI = -4
24-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10269010" Then Call S_10269010(CFL)
24+
'End If
25-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1026901A" Then Call S_1026901A(CFL)
25+
''********************
26-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10287960" Then Call S_10287960(CFL)
26+
27
28-
'************************************** RINFORZI/COMPONENTI
28+
XC = (XS + XD) / 2
29-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10228760" Then Call S_10228760(CFL)
29+
YC = (YI + YS) / 2
30-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006718A" Then Call S_1006718A(CFL)
30+
WDTJ = Abs(XS - XD)
31-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006718B" Then Call S_1006718B(CFL)
31+
HGTJ = Abs(YI - YS)
32-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10068200" Then Call S_10068200(CFL)
32+
33-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006820A" Then Call S_1006820A(CFL)
33+
34-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1026716A" Then Call S_1026716A(CFL)
34+
T_RECT1 = T_RECT2(XC, YC, WDTJ, HGTJ)
35-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1026716B" Then Call S_1026716A(CFL)
35+
36-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1027588A" Then Call S_1027588A(CFL)
36+
37-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1027588C" Then Call S_1027588C(CFL)
37+
38-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1026699A" Then Call S_1026699A(CFL)
38+
If T_RECT1 = "" Then MsgBox ("ATTENZIONE ERRORE SPACCO RETTANGOLARE SU") & " " & ACT_MOD
39-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10280840" Then Call S_10280840(CFL)
39+
40-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10277620" Then Call S_10277620(CFL)
40+
End Function
41-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1011069A" Then Call S_1011069A(CFL)
41+
42-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1020085B" Then Call S_1020085B(CFL)
42+
43-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1020085C" Then Call S_1020085B(CFL)
43+
44-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1019999A" Then Call S_1019999A(CFL)
44+
Function T_RECT2(ByVal XC As Double, ByVal YC As Double, ByVal WDT As Double, ByVal HGT As Double) As String
45-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10067200" Then Call S_10067200(CFL)
45+
46-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1013300C" Then Call S_1013300C(CFL)
46+
'ESEGUE UNA LAVORAZIONE RETTANGOLARE
47-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1017690A" Then Call S_1017690A(CFL)
47+
'XC = X CENTRO RETTANGOLO    YC= Y CENTRO RETTANGOLO
48-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1017690B" Then Call S_1017690B(CFL)
48+
'WDT = LARGHEZZA RETTANGOLO  HGT= ALTEZZA RETTANGOLO
49-
If INFO_DAT(CFL, 0, 6) = "3201155358" Then Call S_3201155358(CFL)
49+
50-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10163900" Then Call S_10163900(CFL)
50+
WDT = Round(WDT, 2)
51-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1016517A" Then Call S_1016517A(CFL)
51+
HGT = Round(HGT, 2)
52-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1016517B" Then Call S_1016517B(CFL)
52+
53-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1016517C" Then Call S_1016517C(CFL)
53+
XC = Round(XC, 2)
54-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1016517D" Then Call S_1016517C(CFL)
54+
YC = Round(YC, 2)
55-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1016517E" Then Call S_1016517E(CFL)
55+
56-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10174520" Then Call S_10174520(CFL)
56+
XSX = XC - WDT / 2
57-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10357360" Then Call S_10357360(CFL)
57+
YLW = YC - HGT / 2
58-
'**************************************
58+
59
If XSX <= 0 Then LSX = 1 Else LSX = 0
60
If YLW <= 0 Then LNF = 1 Else LNF = 0
61-
'**********************ANTE
61+
62-
NHD = 17
62+
63-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006616A" Then Call S_1006616A(CFL)
63+
TX = LAB_2(WDT, HGT)
64-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006619A" Then Call S_1006619A(CFL)
64+
65-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006629E" Then Call S_1006629E(CFL)
65+
TXQ = LAB_7(WDT, HGT)
66-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006632B" Then Call S_1006632B(CFL)
66+
67-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006702A" Then Call S_1006702A(CFL)
67+
' --------------------------- COMPARIAMO I RISULTATI FRA QUADRI E RETTANGOLI:
68-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006704A" Then Call S_1006704A(CFL)
68+
RQ = 0
69-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006707B" Then Call S_1006707A(CFL)
69+
If TX <> "" Then RQ = ((1 * Right(TX, InStr(1, StrReverse(TX), " ", vbTextCompare) - 1)) ^ 2) / (WDT * HGT) ' INDICE DELLA LAVORAZIONE COL QUADRO
70-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006711A" Then Call S_1006711A(CFL)
70+
71-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10128290" Then Call S_10128290(CFL)
71+
If TXQ <> "" Then
72-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10130960" Then Call S_10130960(CFL)
72+
MLR = Right(TXQ, Len(TXQ) - InStr(1, TXQ, " ", vbBinaryCompare))
73-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1015353A" Then Call S_1015353A(CFL)
73+
MDX = NUM(Right(MLR, InStr(1, StrReverse(MLR), " ", vbTextCompare) - 1))
74-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1015390A" Then Call S_1015390A(CFL)
74+
MSX = NUM(Left(MLR, InStr(1, MLR, " ", vbTextCompare)))
75-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1015448C" Then Call S_1015448C(CFL)
75+
76-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1015607C" Then Call S_1015607C(CFL)
76+
77-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1015627A" Then Call S_1015627A(CFL)
77+
78-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1015591A" Then Call S_1015591A(CFL)
78+
79-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1017011A" Then Call S_1017011A(CFL)
79+
RR = 0
80-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1017132A" Then Call S_1017132A(CFL)
80+
RR = (MDX * MSX) / (WDT * HGT)    ' INDICE DELLA PRESTAZIONE CON RETTANGOLO
81-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10253920" Then Call S_1025392A(CFL)
81+
82-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1025682A" Then Call S_1025682A(CFL)
82+
If ACT_MOD = "1006715" And InStr(1, TXQ, "30 5") > 0 Then 'ELIMINARE
83-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1025392A" Then Call S_1025392A(CFL)
83+
RR = 0
84-
'**************************
84+
85
If ACT_MOD = "1014657" And InStr(1, TXQ, "32,6 22,6") > 0 Then 'ELIMINARE
86-
'**************************PIASTRONI
86+
RR = 0
87-
NHD = 15 'CAMBIO TESTA PER PIASTRONI E PARAMENTI
87+
88-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1005784C" Then Call S_1005784C(CFL)
88+
89-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1005784D" Then Call S_1005784C(CFL)
89+
If TX & TXQ = "" Then GoTo UUUUUU
90-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1005784E" Then Call S_1005784E(CFL)
90+
91-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1005785A" Then Call S_1005785A(CFL)
91+
If RQ > RR Then
92-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1005785B" Then Call S_1005785B(CFL)
92+
TLBL = Left(TX, InStr(1, TX, " ", vbBinaryCompare) - 1)                 'ETICHETTA DELL'UTENSILE QUADRO SELEZIONATO
93-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006615C" Then Call S_1006615C(CFL)
93+
SQRV = Right(TX, Len(TX) - InStr(1, TX, " ", vbBinaryCompare))          'LATO DELL'UTENSILE QUADRO SELEZIONATO
94-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006615D" Then Call S_1006615E(CFL)
94+
MIN_LAT = -(WDT * (WDT <= HGT) + HGT * (WDT > HGT))                     'LATO MINIMO DEL RETTANGOLO
95-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006615E" Then Call S_1006615E(CFL)
95+
96-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006615F" Then Call S_1006615F(CFL)
96+
DIFF = MIN_LAT - SQRV
97-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006615G" Then Call S_1006615G(CFL)
97+
98-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006615H" Then Call S_1006615H(CFL)
98+
99-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006715D" Then Call S_1006715D(CFL)
99+
Select Case DIFF
100-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006715E" Then Call S_1006715E(CFL)
100+
101-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006715F" Then Call S_1006715F(CFL)
101+
    Case Is > 0                'RODITURA X-Y
102-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "0902895D" Then Call S_0902895D(CFL)
102+
    NPX = WDT / SQRV
103-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "0902895E" Then Call S_0902895E(CFL)
103+
    If NPX > 1 Then
104-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "0902895F" Then Call S_0902895F(CFL)
104+
    NPX = Int(NPX)
105-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "0902895G" Then Call S_0902895G(CFL)
105+
    PX = Round((WDT - SQRV) / NPX, 2)
106-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "0902895J" Then Call S_0902895J(CFL)
106+
    End If
107-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "0902920C" Then Call S_0902920C(CFL)
107+
    
108-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "0902920D" Then Call S_0902920D(CFL)
108+
    NPY = HGT / SQRV
109-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "0902920F" Then Call S_0902920F(CFL)
109+
    If NPY > 1 Then
110-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "0902935C" Then Call S_0902935C(CFL)
110+
    NPY = Int(NPY)
111-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "0902935D" Then Call S_0902935D(CFL)
111+
    PY = Round((HGT - SQRV) / NPY, 2)
112-
'***********************************
112+
    End If
113-
'**************************PARAMENTI
113+
    
114-
If INFO_DAT(CFL, 0, 6) = "1007305" Then Call S_1007305(CFL)
114+
    
115-
If INFO_DAT(CFL, 0, 6) = "1007303" Then Call S_1007303(CFL)
115+
    Select Case LSX & LNF
116-
If INFO_DAT(CFL, 0, 6) = "1007236" Then Call S_1007236(CFL)
116+
    
117-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1023836A" Then Call S_1023836A(CFL)
117+
    Case "00"               ' SCANTONATURA DX ALTA
118-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1023836B" Then Call S_1023836B(CFL)
118+
    XPC = XC + (WDT / 2 - SQRV / 2)
119-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006951B" Then Call S_1006951(CFL)
119+
    YPC = YC + (HGT / 2 - SQRV / 2)
120-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006951C" Then Call S_1006951C(CFL)
120+
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
121-
'***********************************
121+
    G37 = "G37/I-" & PX & "/P" & NPX & "/J-" & PY & "/K" & NPY & "/" & TLBL & "/*SQ*/>"
122-
'****************************ENTRANCE -->attesa utensile asola
122+
    
123-
NHD = 16 'CAMBIO TESTA PER ENTRANCE
123+
    Case "11"               ' SCANTONATURA SX BASSA
124-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1012500B" Then Call S_1012500(CFL)
124+
    XPC = XC - (WDT / 2 - SQRV / 2)
125-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1012499B" Then Call S_1012499(CFL) 'OK GALLONI
125+
    YPC = YC - (HGT / 2 - SQRV / 2)
126-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1011908B" Then Call S_1011908(CFL)
126+
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
127-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1011067E" Then Call S_1011067(CFL) 'OK GALLONI
127+
    G37 = "G37/I" & PX & "/P" & NPX & "/J" & PY & "/K" & NPY & "/" & TLBL & "/*SQ*/>"
128-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1011060C" Then Call S_1011060(CFL) 'OK GALLONI
128+
129
    Case "10"               ' SCANTONATURA SX ALTA
130-
'If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1037319B" Then Call S_1037319B(CFL)
130+
    XPC = XC - (WDT / 2 - SQRV / 2)
131-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1037258B" Then Call S_1037258B(CFL)
131+
    YPC = YC + (HGT / 2 - SQRV / 2)
132-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1037258C" Then Call S_1037258C(CFL)
132+
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
133-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1037258D" Then Call S_1037258C(CFL)
133+
    G37 = "G37/I" & PX & "/P" & NPX & "/J-" & PY & "/K" & NPY & "/" & TLBL & "/*SQ*/>"
134-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1037258E" Then Call S_1037258E(CFL)
134+
    
135-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1037258F" Then Call S_1037258F(CFL)
135+
    Case "01"               ' SCANTONATURA DX BASSA
136-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1042991A" Then Call S_1042991A(CFL)
136+
    XPC = XC + (WDT / 2 - SQRV / 2)
137-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1042991C" Then Call S_1042991C(CFL)
137+
    YPC = YC - (HGT / 2 - SQRV / 2)
138-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1042991C01" Then Call S_1042991C(CFL)
138+
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
139-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1042991D" Then Call S_1042991D(CFL)
139+
    G37 = "G37/I-" & PX & "/P" & NPX & "/J" & PY & "/K" & NPY & "/" & TLBL & "/*SQ*/>"
140-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1036865A" Then Call S_1036865A(CFL)
140+
    
141-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1036865B" Then Call S_1036865B(CFL)
141+
    End Select
142-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1036865C" Then Call S_1036865C(CFL)
142+
    
143-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10483620" Then Call S_10483620(CFL)
143+
    T_RECT2 = ST64(Jcdf(G90)) & ST64(Jcdf(G37))
144-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1048362A" Then Call S_1048362A(CFL)
144+
      
145-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10429030" Then Call S_10429030(CFL)
145+
      
146-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10429030-MOD" Then Call S_10429030(CFL)
146+
Case Is = 0
147-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1042903B" Then Call S_1042903B(CFL)
147+
    If HGT - WDT = 0 Then     'COLPO SINGOLO
148-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1036714A" Then Call S_1036714A(CFL)
148+
    XPC = XC
149-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1036714B" Then Call S_1036714A(CFL)
149+
    YPC = YC
150-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10428730" Then Call S_10428730(CFL)
150+
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/>"
151-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1042873A" Then Call S_1042873A(CFL)
151+
    T_RECT2 = ST64(Jcdf(G90))
152-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1042873A02" Then Call S_1042873A(CFL)
152+
    Else
153
    
154-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1036629A" Then Call S_1036629A(CFL)
154+
    If WDT > HGT Then         'RODITURA X
155-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1036629B" Then Call S_1036629A(CFL)
155+
    NPX = WDT / SQRV
156-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1036629D" Then Call S_1036629D(CFL)
156+
    If NPX > 1 Then
157-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1036629E" Then Call S_1036629E(CFL)
157+
    NPX = Int(NPX)
158-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1036629F" Then Call S_1036629F(CFL)
158+
    PX = Round((WDT - SQRV) / NPX, 2)
159-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10414310" Then Call S_10414310(CFL)
159+
    End If
160-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1041431A" Then Call S_1041431A(CFL)
160+
   
161-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1041431B" Then Call S_1041431B(CFL)
161+
    If LSX = 1 Then           '-------DA DX A SX  <<<<<<
162-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1041431C" Then Call S_1041431C(CFL)
162+
    XPC = Round(XC - (WDT / 2 - SQRV / 2), 2)
163-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1041431D" Then Call S_1041431D(CFL)
163+
    YPC = Round(YC, 2)
164-
NHD = 14
164+
    REP_X = XPC - 2000
165-
'************************************
165+
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
166
    G28 = "G28/I" & PX & "/J0./K" & NPX & "/" & TLBL & "/*SQ*/>"
167
    T_RECT2 = ST64(Jcdf(G90)) & ST64(Jcdf(G28))
168-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10068260" Then Call S_10068260(CFL)
168+
    
169-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006897B" Then Call S_1006897C(CFL)
169+
    Else                     '-------DA SX A DX  >>>>>>>
170-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006897C" Then Call S_1006897C(CFL)
170+
    XPC = Round(XC + (WDT / 2 - SQRV / 2), 2)
171-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006897D" Then Call S_1006897D(CFL)
171+
    YPC = Round(YC, 2)
172-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006897E" Then Call S_1006897E(CFL)
172+
    REP_X = XPC - 2000
173-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006897H" Then Call S_1006897H(CFL)
173+
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
174-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007098C" Then Call S_1007098C(CFL)
174+
    G28 = "G28/I" & PX & "/J180./K" & NPX & "/" & TLBL & "/*SQ*/>"
175-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007098D" Then Call S_1007098D(CFL)
175+
    T_RECT2 = ST64(Jcdf(G90)) & ST64(Jcdf(G28))
176-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007098E" Then Call S_1007098D(CFL)
176+
    End If
177-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1010304B" Then Call S_1010304B(CFL)
177+
    
178-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1010304C" Then Call S_1010304C(CFL)
178+
    
179-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10130980" Then Call S_10130980(CFL)
179+
    Else                      'RODITURA Y
180-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1014657D" Then Call S_1014657D(CFL)
180+
    NPY = HGT / SQRV
181-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1014657E" Then Call S_1014657E(CFL)
181+
    If NPY > 1 Then
182-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10519690" Then Call S_10519690(CFL)
182+
    NPY = Int(NPY)
183-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10153570" Then Call S_10153570(CFL)
183+
    PY = Round((HGT - SQRV) / NPY, 2)
184-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1015357A" Then Call S_10153570(CFL)
184+
    End If
185-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10155310" Then Call S_10155310(CFL)
185+
    
186-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10155340" Then Call S_10155340(CFL)
186+
    If LNF = 1 Then           '------DALL'BASSO ALL'ALTO
187-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1016400A" Then Call S_1016400A(CFL)
187+
    XPC = Round(XC, 2)
188-
'If INFO_DAT(cfl, 0, 6) & INFO_DAT(cfl, 0, 9) = "1016520A" Then Call S_1016520A(cfl) 'fondello -- fare dxf
188+
    YPC = Round(YC - (HGT / 2 - SQRV / 2), 2)
189-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1020374B" Then Call S_1020374B(CFL)
189+
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
190-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1020374C" Then Call S_1020374B(CFL)
190+
    G28 = "G28/I" & PY & "/J90./K" & NPY & "/" & TLBL & "/*SQ*/>"
191-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1020445A" Then Call S_1020445A(CFL)
191+
    T_RECT2 = ST64(Jcdf(G90)) & ST64(Jcdf(G28))
192-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1020445B" Then Call S_1020445B(CFL)
192+
    
193-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1020445C" Then Call S_1020445B(CFL)
193+
    Else                      '-------DALL'ALTO AL BASSO
194-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10202990" Then Call S_10202990(CFL)
194+
    XPC = Round(XC, 2)
195-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1020299A" Then Call S_1020299A(CFL)
195+
    YPC = Round(YC + HGT / 2 - SQRV / 2, 2)
196-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1020299B" Then Call S_1020299B(CFL)
196+
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
197-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10206680" Then Call S_10206680(CFL)
197+
    G28 = "G28/I" & PY & "/J-90./K" & NPY & "/" & TLBL & "/*SQ*/>"
198-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1020668B" Then Call S_1020668B(CFL)
198+
    T_RECT2 = ST64(Jcdf(G90)) & ST64(Jcdf(G28))
199-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1020668C" Then Call S_1020668B(CFL)
199+
    End If
200-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10206400" Then Call S_10206400(CFL)
200+
    
201-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1020640A" Then Call S_10206400(CFL)
201+
    End If
202-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1020237A" Then Call S_10202370(CFL)
202+
    End If
203-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1020092A" Then Call S_1020092A(CFL)
203+
    
204-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10229750" Then Call S_10229750(CFL)
204+
    Case Is < 0
205-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10257410" Then Call S_10257410(CFL)
205+
206-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10275400" Then Call S_10275400(CFL)
206+
    End Select
207-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10339350" Then Call S_10339350(CFL)
207+
    
208-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1033935A" Then Call S_1033935A(CFL)
208+
    
209-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10339220" Then Call S_10339220(CFL)
209+
    
210-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1033922A" Then Call S_1033922A(CFL)
210+
Else    '---------------------- DEFINIAMO LA LAVORAZIONE FATTA DI RETTANGOLO
211-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10269750" Then Call S_10269750(CFL)
211+
   
212-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10284540" Then Call S_10284540(CFL)
212+
213-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10285220" Then Call S_10285220(CFL)
213+
UTE = Left(TXQ, InStr(1, TXQ, " ", vbBinaryCompare) - 1)
214-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1028522A" Then Call S_10285220(CFL)
214+
ANG = Right(UTE, InStr(1, StrReverse(UTE), "_", vbBinaryCompare) - 1)
215-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1026712A" Then Call S_1026712A(CFL)
215+
TLBL = Left(UTE, InStr(1, UTE, "_", vbBinaryCompare) - 1)
216-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1026633A" Then Call S_1026633A(CFL)
216+
217-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1026633B" Then Call S_1026633A(CFL)
217+
If Right(ANG, 1) = "I" Then TLBL = TLBL & "C" & Replace(ANG, "I", "") & "."
218
219-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10458640" Then Call S_10458640(CFL)
219+
220-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1045864A" Then Call S_1045864A(CFL)
220+
MLR = Right(TXQ, Len(TXQ) - InStr(1, TXQ, " ", vbBinaryCompare))
221-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1045864B" Then Call S_1045864A(CFL)
221+
222
223-
'If INFO_DAT(cfl, 0, 6) = "1007233" Then Call S_1007233(cfl)
223+
Select Case ANG
224-
'If INFO_DAT(cfl, 0, 6) = "1007253" Then Call S_1007253(cfl)
224+
225-
'If INFO_DAT(cfl, 0, 6) & INFO_DAT(cfl, 0, 9) = "1007889C" Then Call S_1007889C(cfl)
225+
Case "0", "0I"
226-
'If INFO_DAT(cfl, 0, 6) & INFO_DAT(cfl, 0, 9) = "1007896B" Then Call S_1007896B(cfl)
226+
XXX = NUM(Left(MLR, InStr(1, MLR, " ", vbTextCompare)))
227-
'If INFO_DAT(cfl, 0, 6) & INFO_DAT(cfl, 0, 9) = "1007909G" Then Call S_1007909G(cfl)
227+
YYY = NUM(Right(MLR, InStr(1, StrReverse(MLR), " ", vbTextCompare) - 1))
228-
'If INFO_DAT(cfl, 0, 6) & INFO_DAT(cfl, 0, 9) = "1007093D" Then Call S_1007093D(cfl)
228+
229-
'If INFO_DAT(cfl, 0, 6) & INFO_DAT(cfl, 0, 9) = "1006927A" Then Call S_1006927A(cfl)
229+
Case "90", "90I"
230-
'If INFO_DAT(cfl, 0, 6) = "1011763" Then Call S_1011763(cfl)
230+
231-
'If INFO_DAT(cfl, 0, 6) & INFO_DAT(cfl, 0, 9) = "1014512C" Then Call S_1014512C(cfl)
231+
XXX = NUM(Right(MLR, InStr(1, StrReverse(MLR), " ", vbTextCompare) - 1))
232-
'If INFO_DAT(cfl, 0, 6) = "1014700" Then Call S_1014700(cfl)
232+
YYY = NUM(Left(MLR, InStr(1, MLR, " ", vbTextCompare)))
233-
'If INFO_DAT(cfl, 0, 6) & INFO_DAT(cfl, 0, 9) = "1016416D" Then Call S_1016416D(cfl)
233+
234-
'If INFO_DAT(cfl, 0, 6) & INFO_DAT(cfl, 0, 9) = "1016428B" Then Call S_1016428B(cfl)
234+
Case Else
235
MsgBox "ERROR RECT TOOL ANGLE"
236
End Select
237
   
238-
'********************************OUTPUT DXF ***********************
238+
   
239
RX = "0"
240-
If InStr(1, str_no_repet, INFO_DAT(CFL, 0, 3)) = 0 Then
240+
RY = "0"
241
  
242-
cd_dxf = "_1006908_1006914_1006930_1007161_1007886_1011060_1011067_1011908_1011069_1012499_1012500_1007909_1016416_1016428_1007253_1020145_1022168_1020979_1020899_1023837_1023240_"
242+
If WDT > XXX Then RX = "1"
243-
cd_dxf = cd_dxf & "_1045862_1045866_1045872_1046016_1014512_1016520_1007896_1078916_1078917_1016517_"
243+
If HGT > YYY Then RY = "1"
244-
cd_mag = "_3212155519_"
244+
245-
If InStr(1, cd_dxf, INFO_DAT(CFL, 0, 6)) > 0 Or InStr(1, cd_mag, INFO_DAT(CFL, 0, 6)) > 0 Then
245+
246-
str_no_repet = str_no_repet & "-" & INFO_DAT(CFL, 0, 3) & "_"
246+
Select Case RX & RY
247
248
Case "00"   'COLPO   -------------------------------------------------------------------------------------
249-
If INFO_DAT(CFL, 0, 6) = "1006908" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
249+
    XPC = XC
250-
If INFO_DAT(CFL, 0, 6) = "1006914" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
250+
    YPC = YC
251-
If INFO_DAT(CFL, 0, 6) = "1006930" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
251+
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/>"
252-
If INFO_DAT(CFL, 0, 6) = "1007161" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
252+
    T_RECT2 = ST64(Jcdf(G90))
253-
If INFO_DAT(CFL, 0, 6) = "1007886" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
253+
254
255-
''If INFO_DAT(CFL, 0, 6) = "1011060" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1) 'ENTRANCE
255+
Case "11"   'RODITURA XY  -------------------------------------------------------------------------------------
256-
''If INFO_DAT(CFL, 0, 6) = "1011067" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
256+
257-
''If INFO_DAT(CFL, 0, 6) = "1011908" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
257+
    NPX = WDT / XXX
258-
''If INFO_DAT(CFL, 0, 6) = "1012499" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
258+
    If NPX > 1 Then
259-
''If INFO_DAT(CFL, 0, 6) = "1012500" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
259+
    NPX = Int(NPX)
260
    PX = Round((WDT - XXX) / NPX, 3)
261-
'If INFO_DAT(CFL, 0, 6) = "1007909" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
261+
    End If
262-
'If INFO_DAT(CFL, 0, 6) = "1016416" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
262+
    
263-
If INFO_DAT(CFL, 0, 6) = "1007253" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
263+
    NPY = HGT / YYY
264
    If NPY > 1 Then
265
    NPY = Int(NPY)
266-
If INFO_DAT(CFL, 0, 6) = "1020145" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
266+
    PY = Round((HGT - YYY) / NPY, 3)
267-
If INFO_DAT(CFL, 0, 6) = "1022168" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
267+
    End If
268-
If INFO_DAT(CFL, 0, 6) = "1020979" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
268+
269-
If INFO_DAT(CFL, 0, 6) = "1020899" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
269+
270-
If INFO_DAT(CFL, 0, 6) = "1023837" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
270+
    Select Case LSX & LNF
271
    
272-
If INFO_DAT(CFL, 0, 6) = "1016520" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
272+
    Case "00"               ' SCANTONATURA DX ALTA
273
    XPC = XC + (WDT / 2 - XXX / 2)
274-
If INFO_DAT(CFL, 0, 6) = "1045862" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
274+
    YPC = YC + (HGT / 2 - YYY / 2)
275-
If INFO_DAT(CFL, 0, 6) = "1045866" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
275+
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
276-
If INFO_DAT(CFL, 0, 6) = "1045872" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
276+
    G37 = "G37/I-" & PX & "/P" & NPX & "/J-" & PY & "/K" & NPY & "/" & TLBL & "/*SQ*/>"
277-
If INFO_DAT(CFL, 0, 6) = "1046016" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
277+
    
278-
If INFO_DAT(CFL, 0, 6) = "1078916" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
278+
    Case "11"               ' SCANTONATURA SX BASSA
279-
If INFO_DAT(CFL, 0, 6) = "1078917" And INFO_DAT(CFL, 0, 19) = 0 Then Call MODEL_SUB(CFL, 1)
279+
    XPC = XC - (WDT / 2 - XXX / 2)
280
    YPC = YC - (HGT / 2 - YYY / 2)
281
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
282
    G37 = "G37/I" & PX & "/P" & NPX & "/J" & PY & "/K" & NPY & "/" & TLBL & "/*SQ*/>"
283
284-
If InStr(1, str_no_repet, INFO_DAT(CFL, 0, 3)) = 0 Then 'CHECK SU MODULO O DXF MANCANTE
284+
    Case "10"               ' SCANTONATURA SX ALTA
285-
If ACT_MOD = "" Then MsgBox ("MODULO " & INFO_DAT(CFL, 0, 6) & " MANCANTE")
285+
    XPC = XC - (WDT / 2 - XXX / 2)
286
    YPC = YC + (HGT / 2 - YYY / 2)
287
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
288-
ACT_MOD = ""
288+
    G37 = "G37/I" & PX & "/P" & NPX & "/J-" & PY & "/K" & NPY & "/" & TLBL & "/*SQ*/>"
289-
NO_PROD_INT:
289+
    
290
    Case "01"               ' SCANTONATURA DX BASSA
291-
Next CFL
291+
    XPC = XC + (WDT / 2 - XXX / 2)
292
    YPC = YC - (HGT / 2 - YYY / 2)
293
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
294-
VPRSS = 1
294+
    G37 = "G37/I-" & PX & "/P" & NPX & "/J" & PY & "/K" & NPY & "/" & TLBL & "/*SQ*/>"
295-
For CFL = 1 To NM_DT
295+
    
296
    End Select
297-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1014688A" Then Call V_1014688A(CFL)
297+
    
298-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1016428C" Then Call V_1016428C(CFL)
298+
    T_RECT2 = ST64(Jcdf(G90)) & ST64(Jcdf(G37))
299-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1014512C" Then Call V_1014512C(CFL)
299+
300-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10339490" Then Call V_10339490(CFL)
300+
301-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1016416E" Then Call V_1016416E(CFL)
301+
302-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "10339850" Then Call V_1033985B(CFL)
302+
Case "01"  'RODITURA IN Y
303-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1033985B" Then Call V_1033985B(CFL)
303+
304-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006951B" Then Call V_1006951(CFL)
304+
305-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006951C" Then Call V_1006951C(CFL)
305+
NPY = HGT / YYY
306-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1023836A" Then Call V_1023836A(CFL)
306+
    If NPY > 1 Then
307-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007889B" Then Call V_1007889B(CFL)
307+
    NPY = Int(NPY)
308-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007889E" Then Call V_1007889E(CFL)
308+
    PY = Round((HGT - YYY) / NPY, 2)
309
    End If
310-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007233" Then Call V_1007233(CFL)
310+
    
311-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007236" Then Call V_1007236(CFL)
311+
    If LNF = 1 Then           '------DALL'BASSO ALL'ALTO
312-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007253" Then Call V_1007253(CFL)
312+
    XPC = Round(XC, 2)
313-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007303" Then Call V_1007303(CFL)
313+
    YPC = Round(YC - (HGT / 2 - YYY / 2), 2)
314-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007305" Then Call V_1007305(CFL)
314+
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
315-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007896B" Then Call V_1007896B(CFL)
315+
    G28 = "G28/I" & PY & "/J90./K" & NPY & "/" & TLBL & "/*SQ*/>"
316-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007896C" Then Call V_1007896C(CFL)
316+
    T_RECT2 = ST64(Jcdf(G90)) & ST64(Jcdf(G28))
317-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1011763" Then Call V_1011763(CFL)
317+
    
318-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007909H" Then Call V_1007909H(CFL)
318+
    Else                      '-------DALL'ALTO AL BASSO
319-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1006927A" Then Call V_1006927A(CFL)
319+
    XPC = Round(XC, 2)
320-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007093D" Then Call V_1007093D(CFL)
320+
    YPC = Round(YC + HGT / 2 - YYY / 2, 2)
321
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
322-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1016416F" Then Call V_1016416F(CFL)
322+
    G28 = "G28/I" & PY & "/J-90./K" & NPY & "/" & TLBL & "/*SQ*/>"
323-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1016428D" Then Call V_1016428D(CFL)
323+
    T_RECT2 = ST64(Jcdf(G90)) & ST64(Jcdf(G28))
324-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007909J" Then Call V_1007909J(CFL)
324+
    End If
325-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007909M" Then Call V_1007909M(CFL)
325+
326-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007909M-MOD" Then Call V_1007909J(CFL)
326+
327-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007909N" Then Call V_1007909M(CFL)
327+
Case "10"
328-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007889F" Then Call V_1007889F(CFL)
328+
329-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007889G" Then Call V_1007889H(CFL)
329+
    NPX = WDT / XXX
330-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1007889H" Then Call V_1007889H(CFL)
330+
    If NPX > 1 Then
331
    NPX = Int(NPX)
332
    PX = Round((WDT - XXX) / NPX, 2)
333
    End If
334-
'If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1014700" Then Call V_1014700(CFL)
334+
   
335-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1014700C" Then MsgBox ("chiedere dxf a Galloni cod. " & INFO_DAT(CFL, 0, 6))
335+
    If LSX = 1 Then           '-------DA DX A SX  <<<<<<
336-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1023837A" Then MsgBox ("chiedere dxf a Galloni cod. " & INFO_DAT(CFL, 0, 6)) 'Call S_1023837A(CFL)
336+
    XPC = Round(XC - (WDT / 2 - XXX / 2), 2)
337-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1014660A" Then MsgBox ("chiedere dxf a Galloni cod. " & INFO_DAT(CFL, 0, 6))
337+
    YPC = Round(YC, 2)
338-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1023240B" Then MsgBox ("chiedere dxf a Galloni cod. " & INFO_DAT(CFL, 0, 6))
338+
    REP_X = XPC - 2000
339-
If INFO_DAT(CFL, 0, 6) & INFO_DAT(CFL, 0, 9) = "1023240C" Then MsgBox ("chiedere dxf a Galloni cod. " & INFO_DAT(CFL, 0, 6))
339+
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
340
    G28 = "G28/I" & PX & "/J0./K" & NPX & "/" & TLBL & "/*SQ*/>"
341-
Next CFL
341+
    T_RECT2 = ST64(Jcdf(G90)) & ST64(Jcdf(G28))
342
    
343
    Else                     '-------DA SX A DX  >>>>>>>
344-
End Sub
344+
    XPC = Round(XC + (WDT / 2 - XXX / 2), 2)
345
    YPC = Round(YC, 2)
346
    REP_X = XPC - 2000
347
    G90 = "G90/X" & XPC & "/Y" & YPC & "/" & TLBL & "/*SQI*/>"
348
    G28 = "G28/I" & PX & "/J180./K" & NPX & "/" & TLBL & "/*SQ*/>"
349
    T_RECT2 = ST64(Jcdf(G90)) & ST64(Jcdf(G28))
350
351
    End If
352
353
354
355
356
Case "11"
357
MsgBox "ERROR RECT NIBBLING", vbCritical
358
Case Else
359
360
361
MsgBox "ERROR RECT NIBBLING", vbCritical
362
End Select
363
364
   
365
End If
366
   
367
If T_RECT2 = "" Then MsgBox "T_RECT2 FAILED  ON DRAWING " & ACT_MOD, vbCritical
368
Exit Function
369
UUUUUU:
370
371
T_RECT2 = ""
372
If T_RECT2 = "" Then MsgBox "T_RECT2 FAILED  ON DRAWING " & ACT_MOD, vbCritical
373
374
375
End Function
376
377
378
379
Function T_RECT3(ByVal XC As Double, ByVal YC As Double, ByVal WDT As Double, ByVal HGT As Double) As String
380
381
'ESEGUE UNA LAVORAZIONE RETTANGOLARE A COLPO SINGOLO
382
'XC = X CENTRO RETTANGOLO    YC= Y CENTRO RETTANGOLO
383
'WDT = LARGHEZZA RETTANGOLO  HGT= ALTEZZA RETTANGOLO
384
385
For i = 1 To 46
386
387
If UCase(TOOL_VAR(NHD, i, 6)) = "RETTANGOLO" Then
388
If (TOOL_VAR(NHD, i, 3) = WDT And TOOL_VAR(NHD, i, 4) = HGT) Then
389
TX = TOOL_VAR(NHD, i, 1)
390
Exit For
391
End If
392
End If
393
Next i
394
 
395
T_RECT3 = ST64("G90/X" & XC & "/Y" & YC & "/" & TX & "/>")
396
397
If TX = "" Then
398
MsgBox ("ERRORE SU SPACCO RETTANGOLARE A COLPO SINGOLO"), vbCritical
399
T_RECT3 = ""
400
End If
401
402
403
End Function
404
405
406
407
Function T_CIRC(ByVal X As Double, ByVal Y As Double, ByVal DIAMETER As String) As String
408
'ESEGUE UNA LAVORAZIONE CIRCOLARE A COLPO SINGOLO
409
410
If DIAMETER = "10" Then DIAMETER = "10.1"
411
If DIAMETER = "20" Then DIAMETER = "20.2"
412
If DIAMETER = "7" Then DIAMETER = "7.2"
413
If DIAMETER = "4,5" Then DIAMETER = "4.2"
414
If DIAMETER = "4" Then DIAMETER = "4.2"
415
If DIAMETER = "6.1" Then DIAMETER = "6"
416
417
LAB_TOOL = LAB_1(DIAMETER)
418
419
420
If LAB_TOOL = "" Then
421
422
423
'If DIAMETER = "36,5" Then
424
'T_CIRC = T_SECTOR(X, Y, DIAMETER)
425
'GoTo END_TCIRC:
426
'End If
427
    
428
429
MsgBox ("RODITURA CIRCOLARE DI DIAMETRO " & DIAMETER)
430
DIAM_RID = Round(Val(DIAMETER) * 0.75, 1) + 0.1
431
432
For kk = 1 To 10000
433
LAB_TOOL = LAB_1(DIAM_RID)
434
If LAB_TOOL <> "" Then Exit For
435
DIAM_RID = DIAM_RID - 0.05
436
DIAM_RID = Round(DIAM_RID, 2)
437
438
If DIAM_RID < 0.55 * Val(DIAMETER) Then
439
MsgBox "RODITURA CIRCOLARE FALLITA SU " & ACT_MOD
440
T_CIRC = ""
441
Exit Function
442
End If
443
444
Next kk
445
446
If Val(DIAM_RID) < 8 Then QLR = 0.6 Else QLR = 2 'QUALITA' RODITURA
447
448
G90 = "G90/G72/X" & X & "/Y" & Y & "/*SQI*/>"
449
G68 = "G68/I" & Val(DIAMETER) / 2 & "/J180./K-360./P-" & DIAM_RID & "/Q" & QLR & "./" & LAB_TOOL & "/*SQ*/>"  'CONTROLLO VAL
450
T_CIRC = ST64(Jcdf(G90)) & ST64(Jcdf(G68))
451
    
452
453
Else
454
455
G90 = "G90/X" & X & "/Y" & Y & "/" & LAB_TOOL & "/>"
456
T_CIRC = ST64(Jcdf(G90))
457
458
End If
459
460
461
End Function
462
463
464
465
Function T_SECTOR(ByVal X As Double, ByVal Y As Double, ByVal DIAM As Double) ' LAVORAZIONE CIRCOLARE DI 48, DI 36.5 O DI 30
466
467
'PER AUMENTARE I COLPI ANDARE AD AGIRE SULL'ARCO
468
469
470
Select Case DIAM
471
472
473
Case 36.5
474
ANGL = 270
475
DST = 12
476
ARCO = 73 'GRADI
477
MsgBox "CONTROLLARE DIAMETRO " & DIAM, vbCritical
478
479
Case 48
480
ANGL = 90
481
DST = 12
482
ARCO = 55 'GRADI
483
'MsgBox "CONTROLLARE DIAMETRO " & DIAM, vbCritical
484
485
Case 50
486
ANGL = 90
487
DST = 12
488
ARCO = 55 'GRADI
489
MsgBox "CONTROLLARE DIAMETRO " & DIAM, vbCritical
490
491
492
Case Else
493
MsgBox ("ERROR OF ANGLE IN THE FUNCTION T_SECTOR")
494
End Select
495
496
N_RP = (360 / ARCO)
497
If Int(N_RP) <> N_RP Then N_RP = Int(N_RP) + 1 Else N_RP = Int(N_RP)
498
499
PIG = 3.14159265358 'PIGRECO
500
UTLS = "BI_RAD"
501
502
For RP = 1 To N_RP
503
RADN = (ARCO * (RP - 1) * 2 * PIG) / 360
504
If ANGL > 360 Then ANGL = ANGL - 360
505
SCT1 = SCT1 & T_SPECIAL(X + (DIAM / 2 - DST) * Cos(RADN), Y + (DIAM / 2 - DST) * Sin(RADN), UTLS, "C" & ANGL & ".")
506
ANGL = ANGL + ARCO
507
Next RP
508
509
510
511
T_SECTOR = SCT1
512
513
514
End Function
515
516
517
Function T_HEX(ByVal X As Double, ByVal Y As Double, ByVal LARG As Double) As String
518
'ESEGUE UNA LAVORAZIONE ESAGONALE A COLPO SINGOLO
519
LARG = Int(LARG)
520
521
BG_LAB:
522
523
Key = "SPECIALE"
524
LAB_TOOL = ""
525
For i = 1 To 46
526
If UCase(TOOL_VAR(NHD, i, 6)) = Key Then
527
    If Replace(TOOL_VAR(NHD, i, 3), ",", ".") = Replace(LARG, ",", ".") & "EX" Then
528
    LAB_TOOL = TOOL_VAR(NHD, i, 1)
529
    Exit For
530
    End If
531
    End If
532
Next i
533
534
If LAB_TOOL = "" Then
535
MsgBox ("NON TROVATO UTENSILE ESAGONALE") & " !!!!!!!!!", vbCritical
536
Else
537
G90 = "G90/X" & X & "/Y" & Y & "/" & LAB_TOOL & "/>"
538
T_HEX = ST64(Jcdf(G90))
539
End If
540
541
End Function
542
543
544
Function T_SLOT(ByVal X As Double, ByVal Y As Double, ByVal LENG As String, ByVal HGT As String, ByVal ROT As Single) As String
545
'ESEGUE UNA LAVORAZIONE AD ASOLA IN COLPO SINGOLO O RODITURA
546
'If HGT = "7,2" Then HGT = "7" 'da eliminare
547
If HGT = "5,5" And LENG = "8" And ROT = 0 Then
548
'5 COLPI CON IL TONDO DI 5.5
549
T_SLOT = T_CIRC(X, Y, 5.5) & T_CIRC(X + 1.25, Y, 5.5) & T_CIRC(X - 1.25, Y, 5.5) & T_CIRC(X + 0.625, Y, 5.5) & T_CIRC(X - 0.625, Y, 5.5)
550
Exit Function
551
End If
552
553
554
LENG = Jcdf(LENG)
555
HGT = Jcdf(HGT)
556
RODITURA = 0
557
BG_LAB:
558
Key = "Asola"
559
560
'******************************* CERCA UN'ASOLA FISSA
561
LAB_TOOL = ""
562
For i = 1 To 46
563
If TOOL_VAR(NHD, i, 6) = Key Then
564
565
    If TOOL_VAR(NHD, i, 3) = LENG And TOOL_VAR(NHD, i, 4) = HGT & "A" Then
566
    If TOOL_VAR(NHD, i, 5) = Trim(STR(ROT)) Then
567
    LAB_TOOL = TOOL_VAR(NHD, i, 1)
568
    G90 = "G90/X" & X & "/Y" & Y & "/" & LAB_TOOL & "/>"
569
    T_SLOT = ST64(Jcdf(G90))
570
    Exit For
571
    End If
572
    End If
573
574
If RODITURA = 0 And (Val(Jcdf(TOOL_VAR(NHD, i, 3))) < Val(LENG) And TOOL_VAR(NHD, i, 4) = HGT & "A") Then
575
    If TOOL_VAR(NHD, i, 5) = Trim(STR(ROT)) Then
576
LAB_TOOL = TOOL_VAR(NHD, i, 1)
577
578
PMAX = Val(TOOL_VAR(NHD, i, 3)) - Val(TOOL_VAR(NHD, i, 4))
579
XX = ((Vbdf(LENG)) - Val(Vbdf(TOOL_VAR(NHD, i, 3)))) / PMAX
580
If XX > Int(XX) Then XX = Int(XX) + 1
581
PP = (Vbdf(LENG) - TOOL_VAR(NHD, i, 3)) / XX
582
DST = XX / 2 * PP
583
PPJ = Jcdf(PP)
584
585
Select Case ROT
586
Case 0
587
G90 = "G90/X" & X - DST & "/Y" & Y & "/" & LAB_TOOL & "/>"
588
G28 = ST64("G28/I" & PPJ & "/J0./K" & XX & "/" & LAB_TOOL & "/>")
589
Case 90
590
G90 = "G90/X" & X & "/Y" & Y - DST & "/" & LAB_TOOL & "/>"
591
G28 = ST64("G28/I" & PPJ & "/J90./K" & XX & "/" & LAB_TOOL & "/>")
592
593
Case Else
594
GoTo NLAB
595
End Select
596
597
T_SLOT = ST64(Jcdf(G90)) & ST64(Jcdf(G28))
598
599
    
600
    End If
601
    End If
602
    
603
    End If
604
Next i
605
606
'******************************* CERCA UN'ASOLA ROTANTE
607
If LAB_TOOL = "" Then
608
For i = 1 To 46
609
If TOOL_VAR(NHD, i, 6) = Key Then
610
    If TOOL_VAR(NHD, i, 3) = LENG And TOOL_VAR(NHD, i, 4) = HGT & "A" Then
611
    If TOOL_VAR(NHD, i, 5) = "0I" Then
612
    LAB_TOOL = TOOL_VAR(NHD, i, 1)
613
    G90 = "G90/X" & X & "/Y" & Y & "/" & LAB_TOOL & "C" & ROT & "./>"
614
    T_SLOT = ST64(Jcdf(G90))
615
    Exit For
616
    End If
617
    End If
618
    
619
    If RODITURA = 0 And (Val(Jcdf(TOOL_VAR(NHD, i, 3))) < Val(LENG) And TOOL_VAR(NHD, i, 4) = HGT & "A") Then 'AGGIUNTA RODITURA CON ASOLA ROTANTE
620
    If TOOL_VAR(NHD, i, 5) = "0I" Then
621
    LAB_TOOL = TOOL_VAR(NHD, i, 1)
622
623
    PMAX = Val(TOOL_VAR(NHD, i, 3)) - Val(TOOL_VAR(NHD, i, 4))
624
    XX = ((Vbdf(LENG)) - Val(Vbdf(TOOL_VAR(NHD, i, 3)))) / PMAX
625
    If XX > Int(XX) Then XX = Int(XX) + 1
626
    PP = (Vbdf(LENG) - TOOL_VAR(NHD, i, 3)) / XX
627
    DST = XX / 2 * PP
628
    PPJ = Jcdf(PP)
629
630
    Select Case ROT
631
    Case 0
632
    G90 = "G90/X" & X - DST & "/Y" & Y & "/" & LAB_TOOL & "C" & ROT & "/>"
633
    G28 = ST64("G28/I" & PPJ & "/J" & ROT & "./K" & XX & "/" & LAB_TOOL & "/>")
634
    Case 90
635
    G90 = "G90/X" & X & "/Y" & Y - DST & "/" & LAB_TOOL & "C" & ROT & "/>"
636
    G28 = ST64("G28/I" & PPJ & "/J" & ROT & "./K" & XX & "/" & LAB_TOOL & "/>")
637
    End Select
638
639
640
    
641
    T_SLOT = ST64(Jcdf(G90)) & ST64(Jcdf(G28))
642
    End If
643
    End If                                                                          'FINE AGGIUNTA RODITURA CON ASOLA ROTANTE
644
        
645
    End If
646
647
Next i
648
649
End If
650
651
652
If RODITURA = 1 Then GoTo NLAB
653
If LAB_TOOL = "" Then
654
RODITURA = 1
655
GoTo BG_LAB
656
End If
657
658
NLAB:
659
660
661
662
663
If LAB_TOOL = "" Then
664
MsgBox ("NON TROVATO UTENSILE ASOLA") & " " & LENG & " x " & HGT & " - " & ROT & " " & ("INSERIRE ALTRO VALORE")
665
LENG = InputBox("LENG")
666
HGT = InputBox("HGT")
667
GoTo BG_LAB
668
End If
669
670
671
672
End Function
673
674
675
676
Function T_SPECIAL(ByVal X As Double, ByVal Y As Double, ByVal TL_LAB As String, ByVal STR_IND As String) As String
677
'ESEGUE UNA LAVORAZIONE SPECIALE A COLPO SINGOLO
678
679
BG_LAB:
680
LAB_TOOL = LAB_3(TL_LAB, STR_IND)
681
If LAB_TOOL = "" Then
682
MsgBox ("NON TROVATO UTENSILE SPECIALE"), vbCritical
683
Exit Function
684
End If
685
686
G90 = "G90/X" & X & "/Y" & Y & "/" & LAB_TOOL & STR_IND & "/>"
687
T_SPECIAL = ST64(Jcdf(G90))
688
689
End Function
690
691
Function LAB_1(ByVal DIAM As String) As String
692
'DEFINISCE UTENSILE X LAVORAZIONE TONDA A COLPO SINGOLO
693
694
Key = "Tondo"
695
LAB_1 = ""
696
For i = 1 To 46
697
If TOOL_VAR(NHD, i, 6) = Key Then
698
    If Replace(TOOL_VAR(NHD, i, 3), ",", ".") = Replace(DIAM, ",", ".") Then
699
    LAB_1 = TOOL_VAR(NHD, i, 1)
700
    Exit For
701
    End If
702
    End If
703
Next i
704
705
End Function
706
707
708
Function LAB_2(ByVal X As Double, ByVal Y As Double) As String
709
'DEFINISCE L'UTENSILE QUADRO X LAVORAZIONE RETTANGOLARE    LAB_2= <ETICHETTA LATOUTENSILE>
710
711
Key = "Quadro"
712
SQRV = -(X * (X <= Y) + Y * (X > Y))
713
If X < 13 Or Y < 13 Then SVP = 10 Else SVP = 20                    'PERCENTUALE SOVRAPPOSIZIONE MINIMA COLPI RODITURA
714
715
Dim NDX(100) As String
716
Dim LTR(100) As Double
717
718
719
RRT = 0
720
For i = 1 To 46
721
If TOOL_VAR(NHD, i, 6) = Key And TOOL_VAR(NHD, i, 5) <> "45" Then
722
If TOOL_VAR(NHD, i, 5) = "0I" Then AGG = "C0." Else AGG = ""
723
RRT = RRT + 1
724
NDX(RRT) = TOOL_VAR(NHD, i, 1) & AGG
725
LTR(RRT) = Val(TOOL_VAR(NHD, i, 3))
726
727
End If
728
Next i
729
730
COUNT_T = RRT
731
732
SRCL2:                            'BLOCCO CHE ORDINA IN MODO DECRESCENTE DI DIMENSIONE GLI UTENSILI QUADRI
733
For i = 1 To COUNT_T - 1
734
If LTR(i) < LTR(i + 1) Then
735
LTR(0) = LTR(i)
736
LTR(i) = LTR(i + 1)
737
LTR(i + 1) = LTR(0)
738
NDX(0) = NDX(i)
739
NDX(i) = NDX(i + 1)
740
NDX(i + 1) = NDX(0)
741
GoTo SRCL2
742
End If
743
Next i
744
745
For i = 1 To COUNT_T
746
DFR = LTR(i) - SQRV
747
Select Case DFR
748
Case Is > 0
749
If i = COUNT_T Then
750
'MsgBox "ERRORE UTENSILE SPACCO RETTANGOLARE  " & ACT_MOD, vbCritical
751
752
Exit For
753
End If
754
Case Is = 0
755
LAB_2 = NDX(i) & " " & LTR(i)
756
Exit For
757
Case Is < 0
758
If SQRV / LTR(i) >= 1 + SVP / 100 Then
759
LAB_2 = NDX(i) & " " & LTR(i)
760
Exit For
761
End If
762
End Select
763
Next i
764
765
Erase NDX, LTR
766
End Function
767
768
Function LAB_3(ByVal TL_LAB As String, ByVal STR_IND As String) As String
769
'DEFINISCE UTENSILE X LAVORAZIONE SPECIALE A COLPO SINGOLO
770
771
LAB_3 = ""
772
For i = 1 To 46
773
If TOOL_VAR(NHD, i, 3) = TL_LAB Then
774
If InStr(1, TOOL_VAR(NHD, i, 3), "RD", vbBinaryCompare) = 0 Then GoTo LLL
775
If TOOL_VAR(NHD, i, 5) = Mid(STR_IND, 2, InStr(1, STR_IND, ".") - 2) Then
776
LLL:
777
LAB_3 = TOOL_VAR(NHD, i, 1)
778
Exit For
779
End If
780
End If
781
Next i
782
783
End Function
784
785
786
Function LAB_4(ByVal WDT As Double, ByVal LGT As Double, ByVal DRZ As String) As String
787
'DEFINISCE UTENSILE RETTANGOLARE
788
789
Dim LAB_LAB(10) As String
790
NN = 0
791
Key = "RETTANGOLO"
792
LAB_4 = ""
793
L4 = ""
794
795
For i = 1 To 46
796
L4 = ""
797
If UCase(TOOL_VAR(NHD, i, 6)) = Key Then
798
799
    If (TOOL_VAR(NHD, i, 3) = WDT And TOOL_VAR(NHD, i, 4) <= LGT) Or (TOOL_VAR(NHD, i, 4) = WDT And TOOL_VAR(NHD, i, 3) <= LGT) Then
800
    If TOOL_VAR(NHD, i, 3) = WDT Then LL = TOOL_VAR(NHD, i, 4)
801
    If TOOL_VAR(NHD, i, 4) = WDT Then LL = TOOL_VAR(NHD, i, 3)
802
    LB_ANG = TOOL_VAR(NHD, i, 5)
803
    LB_IND = TOOL_VAR(NHD, i, 2)
804
805
    Select Case DRZ
806
    Case "X+", "X-"
807
    If LB_ANG = "0I" Then L4 = TOOL_VAR(NHD, i, 1) & "C0." & "*" & LL
808
    If LB_ANG = "0" Then L4 = TOOL_VAR(NHD, i, 1) & "*" & LL
809
810
    Case "Y+", "Y-"
811
    If LB_ANG = "0I" Then L4 = TOOL_VAR(NHD, i, 1) & "C90." & "*" & LL
812
    If LB_ANG = "90" Then L4 = TOOL_VAR(NHD, i, 1) & "*" & LL
813
    Case Else
814
    MsgBox ("ERRORE SU RODITURA RETTANGOLARE")
815
    End Select
816
817
    If L4 <> "" Then
818
    NN = NN + 1
819
    LAB_LAB(NN) = L4
820
End If
821
    End If
822
    End If
823
824
Next i
825
826
827
828
If NN = 1 Then LAB_4 = LAB_LAB(1)
829
If NN > 1 Then
830
831
LAB_4 = ""
832
AAAAAA:
833
For SSRY = 1 To NN - 1 'METTO IN FILA DAL PIù CORTO AL PIù LUNGO
834
If Val(Right(LAB_LAB(SSRY), InStr(1, StrReverse(LAB_LAB(SSRY)), "*", vbBinaryCompare) - 1)) > Val(Right(LAB_LAB(SSRY + 1), InStr(1, StrReverse(LAB_LAB(SSRY + 1)), "*", vbBinaryCompare) - 1)) Then
835
ZFRTY = LAB_LAB(SSRY)
836
LAB_LAB(SSRY) = LAB_LAB(SSRY + 1)
837
LAB_LAB(SSRY + 1) = ZFRTY
838
GoTo AAAAAA
839
End If
840
Next SSRY
841
842
NN = 2
843
For SSRX = 1 To NN
844
If LGT > Val(Right(LAB_LAB(SSRY), InStr(1, StrReverse(LAB_LAB(SSRY)), "*", vbBinaryCompare) - 1)) Then LAB_4 = LAB_LAB(SSRX)
845
Next SSRX
846
847
End If
848
849
850
End Function
851
852
853
Function LAB_5(ByVal X As Double, ByVal Y As Double) As String
854
'DEFINISCE L'UTENSILE X LAVORAZIONE RETTANGOLARE    LAB_2= <ETICHETTA LATOUTENSILE>
855
856
Key = "Rettangolo"
857
858
Dim NDX(100) As String
859
Dim LTR(100) As Double
860
861
RRT = 0
862
For i = 1 To 46
863
If TOOL_VAR(NHD, i, 6) = Key And TOOL_VAR(NHD, i, 5) = "0" Then
864
If TOOL_VAR(NHD, i, 3) = X And TOOL_VAR(NHD, i, 4) = Y Then
865
RRT = RRT + 1
866
LAB_5 = TOOL_VAR(NHD, i, 1)
867
End If
868
End If
869
Next i
870
871
If LAB_5 = "" Then
872
RRT = 0
873
For i = 1 To 46
874
If TOOL_VAR(NHD, i, 6) = Key And TOOL_VAR(NHD, i, 5) = "90" Then
875
If TOOL_VAR(NHD, i, 3) = Y And TOOL_VAR(NHD, i, 4) = X Then
876
RRT = RRT + 1
877
LAB_5 = TOOL_VAR(NHD, i, 1)
878
End If
879
End If
880
Next i
881
End If
882
883
If LAB_5 = "" Then
884
RRT = 0
885
For i = 1 To 46
886
If TOOL_VAR(NHD, i, 6) = Key And TOOL_VAR(NHD, i, 5) = "0I" Then
887
If TOOL_VAR(NHD, i, 3) = Y And TOOL_VAR(NHD, i, 4) = X Then
888
RRT = RRT + 1
889
LAB_5 = TOOL_VAR(NHD, i, 1)
890
End If
891
End If
892
Next i
893
End If
894
895
896
Erase NDX, LTR
897
End Function
898
899
900
Function LAB_6(ByVal LATO As String) As String
901
'DEFINISCE UTENSILE QUADRO A 45
902
903
Key = "Quadro"
904
LAB_6 = ""
905
For i = 1 To 46
906
If TOOL_VAR(NHD, i, 6) = Key Then
907
    If Replace(TOOL_VAR(NHD, i, 3), ",", ".") = Replace(LATO, ",", ".") Then
908
    If TOOL_VAR(NHD, i, 5) = "0I" Then
909
    LAB_6 = TOOL_VAR(NHD, i, 1)
910
    Exit For
911
    End If
912
    End If
913
    End If
914
Next i
915
916
End Function
917
918
919
Function LAB_7(ByVal X As Double, ByVal Y As Double) As String
920
'DEFINISCE L'UTENSILE X LAVORAZIONE RETTANGOLARE    LAB_2= <ETICHETTA LATOUTENSILE>
921
922
Key = "Rettangolo"
923
924
Dim NDX(100, 6) As String
925
926
927
RRT = 0
928
929
For i = 1 To 46
930
931
If TOOL_VAR(NHD, i, 6) = Key And TOOL_VAR(NHD, i, 5) = "0" Then
932
If NUM(TOOL_VAR(NHD, i, 3)) <= X And NUM(TOOL_VAR(NHD, i, 4)) <= Y Then
933
RRT = RRT + 1
934
NDX(RRT, 1) = i
935
NDX(RRT, 2) = TOOL_VAR(NHD, i, 5)
936
NDX(RRT, 3) = TOOL_VAR(NHD, i, 3)
937
NDX(RRT, 4) = TOOL_VAR(NHD, i, 4)
938
End If
939
End If
940
Next i
941
942
943
For i = 1 To 46
944
If TOOL_VAR(NHD, i, 6) = Key And TOOL_VAR(NHD, i, 5) = "90" Then
945
If NUM(TOOL_VAR(NHD, i, 3)) <= Y And NUM(TOOL_VAR(NHD, i, 4)) <= X Then
946
RRT = RRT + 1
947
NDX(RRT, 1) = i
948
NDX(RRT, 2) = TOOL_VAR(NHD, i, 5)
949
NDX(RRT, 3) = TOOL_VAR(NHD, i, 4)
950
NDX(RRT, 4) = TOOL_VAR(NHD, i, 3)
951
End If
952
End If
953
Next i
954
955
956
957
958
For i = 1 To 46
959
If TOOL_VAR(NHD, i, 6) = Key And TOOL_VAR(NHD, i, 5) = "0I" Then   'INDEXRR A 0 GRADI
960
If NUM(TOOL_VAR(NHD, i, 3)) <= X And NUM(TOOL_VAR(NHD, i, 4)) <= Y Then
961
RRT = RRT + 1
962
NDX(RRT, 1) = i
963
NDX(RRT, 2) = TOOL_VAR(NHD, i, 5)
964
NDX(RRT, 3) = TOOL_VAR(NHD, i, 3)
965
NDX(RRT, 4) = TOOL_VAR(NHD, i, 4)
966
End If
967
End If
968
Next i
969
970
971
972
For i = 1 To 46
973
If TOOL_VAR(NHD, i, 6) = Key And TOOL_VAR(NHD, i, 5) = "0I" Then   'INDEXRR
974
If NUM(TOOL_VAR(NHD, i, 3)) <= Y And NUM(TOOL_VAR(NHD, i, 4)) <= X Then
975
RRT = RRT + 1
976
NDX(RRT, 1) = i
977
NDX(RRT, 2) = "90I"
978
NDX(RRT, 3) = TOOL_VAR(NHD, i, 3)
979
NDX(RRT, 4) = TOOL_VAR(NHD, i, 4)
980
End If
981
End If
982
Next i
983
984
985
986
987
NDX(0, 1) = 0  ' VARIABILE IN CUI REGISTRO IL VALORE DI COPERTURA PIU'ALTO
988
NDX(0, 2) = 0  ' VARIABILE IN CUI REGISTRO L'INDICE CHE GENERA IL VALORE DI COPERTURA PIU'ALTO
989
990
If RRT > 0 Then
991
992
993
For RGQ = 1 To RRT
994
995
996
Select Case NDX(RGQ, 2)
997
998
Case "0", "90", "0I"
999
XXX = NUM(NDX(RGQ, 3)) 'INGOMBRO X DELL UTENSILE
1000
YYY = NUM(NDX(RGQ, 4)) 'INGOMBRO Y DELL UTENSILE
1001
Case "90I"
1002
YYY = NUM(NDX(RGQ, 3)) 'INGOMBRO X DELL UTENSILE
1003
XXX = NUM(NDX(RGQ, 4)) 'INGOMBRO Y DELL UTENSILE
1004
Case Else
1005
1006
MsgBox "FUNCTION LAB_7: ANGLE ERROR", vbCritical
1007
End Select
1008
1009
svpq = 1.27 'percentuale di sovrapposizione
1010
FX = (X / XXX)
1011
FY = (Y / YYY)
1012
If FX = 1 Or FY = 1 Then GoTo FAI_LAVR
1013
If FX > svpq And FY > svpq Then
1014
FAI_LAVR:
1015
1016
NDX(RGQ, 5) = (XXX * YYY) / (X * Y)
1017
1018
If InStr(1, STIPITI, ACT_MOD) > 0 Or InStr(1, STIPITI_PORTALI, ACT_MOD) > 0 Then 'aggiunta
1019
If XXX = 50 And YYY = 5 Then NDX(RGQ, 5) = 0
1020
End If
1021
1022
If (X = 112 And Y = 6.7) Or (X = 7.3 And Y = 112) Or (X = 6.7 And Y = 112) Then GoTo no_bislunghi
1023
If Val(XXX) / Val(YYY) > 7 Or Val(YYY) / Val(XXX) > 7 Then If XXX <> X And YYY <> Y Then NDX(RGQ, 5) = 0   ' UTENSILI BISLUNGHI VIETATI NELLE RODITURE
1024
no_bislunghi:
1025
1026
If 1 * NDX(RGQ, 5) > 1 * NDX(0, 1) Then
1027
NDX(0, 1) = NDX(RGQ, 5)
1028
NDX(0, 2) = NDX(RGQ, 1)
1029
NDX(0, 3) = NDX(RGQ, 3)
1030
NDX(0, 4) = NDX(RGQ, 4)
1031
NDX(0, 5) = NDX(RGQ, 2)
1032
Else
1033
If 1 * NDX(RGQ, 5) = 1 * NDX(0, 1) Then
1034
If XXX = X Or YYY = Y Then
1035
NDX(0, 1) = NDX(RGQ, 5)
1036
NDX(0, 2) = NDX(RGQ, 1)
1037
NDX(0, 3) = NDX(RGQ, 3)
1038
NDX(0, 4) = NDX(RGQ, 4)
1039
NDX(0, 5) = NDX(RGQ, 2)
1040
Else
1041
1042
'*************   VA A VEDERE L'ANGOLAZIONE CON LA MIGLIORE SOVRAPPOSIZIONE  *****************
1043
If NDX(RGQ, 5) > 0 Then
1044
If NDX(0, 3) <> "" And NDX(0, 4) <> "" Then
1045
If NDX(0, 3) <> X And NDX(0, 4) <> Y And NDX(0, 4) <> X And NDX(0, 3) <> Y Then
1046
SVRPP = 0
1047
If NDX(0, 5) = "0I" Then SVRPP = ((X / Val(NDX(0, 3))) + (Y / Val(NDX(0, 4))))
1048
If NDX(0, 5) = "90I" Then SVRPP = ((X / Val(NDX(0, 4))) + (Y / Val(NDX(0, 3))))
1049
If (FX + FY) > SVRPP Then
1050
NDX(0, 1) = NDX(RGQ, 5)
1051
NDX(0, 2) = NDX(RGQ, 1)
1052
NDX(0, 3) = NDX(RGQ, 3)
1053
NDX(0, 4) = NDX(RGQ, 4)
1054
NDX(0, 5) = NDX(RGQ, 2)
1055
End If
1056
End If
1057
End If
1058
End If
1059
'**********************************************************************
1060
1061
End If
1062
End If
1063
End If
1064
End If
1065
1066
Next RGQ
1067
1068
1069
If NDX(0, 1) > 0 Then LAB_7 = TOOL_VAR(NHD, NDX(0, 2), 1) & "_" & NDX(0, 5) & " " & TOOL_VAR(NHD, NDX(0, 2), 3) & " " & TOOL_VAR(NHD, NDX(0, 2), 4)
1070
1071
End If
1072
1073
1074
1075
Erase NDX
1076
End Function
1077
1078
1079
Function MR_Y(ByVal VALORE As Double, ByVal DY As Double, ByVal ACT As Byte) As Double
1080
1081
Select Case ACT
1082
Case 1
1083
MR_Y = VALORE
1084
Case 2
1085
MR_Y = DY - VALORE
1086
Case Else
1087
MsgBox ("ERRORE"), vbCritical, ("MR_Y")
1088
End Select
1089
1090
End Function
1091
1092
1093
Function MR_X(ByVal VALORE As Double, ByVal DX As Double, ByVal ACT As Byte) As Double
1094
1095
Select Case ACT
1096
Case 1
1097
MR_X = VALORE
1098
Case 2
1099
MR_X = DX - VALORE
1100
Case Else
1101
MsgBox ("ERRORE"), vbCritical, ("MR_X")
1102
End Select
1103
1104
End Function
1105
1106
Function T_BLQ(ByVal XI As Double, ByVal YI As Double, ByVal Xf As Double, ByVal YF As Double, ByVal SVPI As Double, ByVal SVPF As Double) As String
1107
'FUNZIONE PER IL TAGLIO OBLIQUO DA FARE E VERIFICARE
1108
1109
1110
T_BLQ = TG_R(7.5, XI, YI, Xf, YF, SVPI, SVPF)
1111
1112
'If ind = 0 Then
1113
'G90 = "G90/X" & X & "/Y" & Y & "/" & LAB_TOOL & "/>"
1114
'Else
1115
'G90 = "G90/X" & X & "/Y" & Y & "/" & LAB_TOOL & "C" & ind & "./>"
1116
'End If
1117
1118
1119
End Function
1120
1121
1122
Function TG_R(ByVal DU As Double, ByVal XI As Double, ByVal YI As Double, ByVal Xf As Double, ByVal YF As Double, ByVal SVPI As Double, ByVal SVPF As Double) As String
1123
'DU  = LATO DELL'UTENSILE QUADRO UTILIZZATO PER IL TAGLIO OBLIQUO    ; SI GIRA INTORNO AL PUNZONE IN SENSO ANTIORARIO
1124
1125
1126
Select Case DU
1127
Case 7.5
1128
LAB = LAB_3("7SQ", 0) '45
1129
Case 20
1130
LAB = LAB_2(20, 20)
1131
Case Else
1132
MsgBox ("ERRORE UTENSILE QUADRO X TAGLIO OBLIQUO"), vbCritical
1133
End Select
1134
1135
ANG = 9999
1136
If Xf > XI And YI = YF Then ANG = 0
1137
If Xf = XI And YI < YF Then ANG = 90
1138
If Xf < XI And YI = YF Then ANG = 180
1139
If Xf = XI And YI > YF Then ANG = 270
1140
If Not ANG = 9999 Then GoTo NNG
1141
1142
EEA = (YF - YI) / (Xf - XI)
1143
ANG = (Atn(EEA) * 180) / 3.14159265358979
1144
ANG = Round(ANG, 5)
1145
1146
If Xf > XI And YF > YI Then ANG = ANG
1147
If Xf < XI And YF > YI Then ANG = 180 + ANG
1148
If Xf < XI And YF < YI Then ANG = ANG + 180
1149
If Xf > XI And YF < YI Then ANG = 360 + ANG
1150
If ANG = 360 Then ANG = 0
1151
NNG:
1152
1153
ANG = 360 - ANG
1154
DR = DU / 2
1155
ANG_R = (ANG * 3.14159265358979) / 180
1156
1157
DXI = SVPI * Cos(ANG_R)
1158
DYI = SVPI * Sin(ANG_R)
1159
DXF = SVPF * Cos(ANG_R)
1160
DYFF = SVPF * Sin(ANG_R)
1161
1162
LTA = Round(((YF - YI) ^ 2 + (Xf - XI) ^ 2) ^ (0.5), 2)
1163
XXX = (Xf + XI) / 2
1164
YYY = (YF + YI) / 2
1165
1166
XI = XI - DXI
1167
YI = YI + DYI
1168
Xf = Xf + DXF
1169
YF = YF - DYFF
1170
1171
LT = Round(((YF - YI) ^ 2 + (Xf - XI) ^ 2) ^ (0.5), 2)
1172
''If DU > LT Then DU = LT
1173
NN = Int(LT / DU)
1174
1175
PP = Round((LT - DU) / NN, 3)    'PASSO RODITURA
1176
AU = 90 - ANG                    'ANGOLOUTENSILE
1177
AR = ANG                         'ANGOLORODITURA
1178
1179
XC = XI + DR * (Cos(ANG_R) + Sin(ANG_R))
1180
YC = YI + DR * (-Sin(ANG_R) + Cos(ANG_R))
1181
1182
XC = Jcdf(Round(XC, 2))
1183
YC = Jcdf(Round(YC, 2))
1184
AR = Jcdf(Round(AR, 2))
1185
AU = Jcdf(Round(AU, 0))
1186
1187
If LTA > DU Then
1188
ST1 = ST64("G90/X" & XC & "/Y" & YC & "/" & LAB & AU & "./>")
1189
ST2 = ST64("G28/I" & PP & "/J-" & AR & "./K" & NN & "/" & LAB & AU & "./>")
1190
Else
1191
1192
XKK = Jcdf(Round(XXX + DR * Sin(ANG_R), 2))
1193
YKK = Jcdf(Round(YYY + DR * Cos(ANG_R), 2))
1194
ST1 = ST64("G90/X" & XKK & "/Y" & YKK & "/" & LAB & AU & "./>")
1195
ST2 = ""
1196
End If
1197
TG_R = ST1 & ST2
1198
1199
End Function
1200
1201
1202
1203
Function T_PUNCH(ByVal X As Double, ByVal Y As Double, ByVal LAB As String, ByVal ind As Double) As String
1204
'ESEGUE UNA LAVORAZIONE  A COLPO SINGOLO SECONDO ETICHETTA STABILITA
1205
1206
1207
LAB_TOOL = LAB
1208
1209
1210
If ind = 0 Then
1211
G90 = "G90/X" & X & "/Y" & Y & "/" & LAB_TOOL & "/>"
1212
Else
1213
G90 = "G90/X" & X & "/Y" & Y & "/" & LAB_TOOL & "C" & ind & "./>"
1214
End If
1215
1216
T_PUNCH = ST64(Jcdf(G90))
1217
1218
End Function
1219
1220
1221
1222
Function T_DATAMATRIX(ByVal VALORE As String, ByVal X0 As Double, ByVal Y0 As Double, ByVal VERSO As String)
1223
1224
PS = 2.5 'PASSO
1225
1226
1227
Dim R(18) As String
1228
Dim RC(18, 18) As Byte
1229
Dim RC2(18, 18) As Byte
1230
1231
    '-------------------------------------------------------
1232
    ' Dichiarazione dell'oggetto array di stringhe
1233
    Dim DATA_MAT() As String
1234
    Dim fn As Object
1235
1236
1237
    ' Creazione dell'oggetto esterno per la logica
1238
    Set fn = CreateObject("Wittur.Amada.Utils.Datamatix")
1239
    ' Viene richiamata la funzione di conversione
1240
    ' 1° Parametro = codice a 8 cifre da decodificare
1241
    ' 2° Parametro = valore booleano che indica se è necessario escludere il perimetro esterno fisso
1242
1243
1244
    DATA_MAT = fn.GetBinaryMatrix(VALORE, False, True) 'CONSIDERO ANCHE IL CONTORNO - (CODICE A 8 CIFRE, CONTORNO, QUADRATO O RETTANGOLARE)
1245
    '-------------------------------------------------------
1246
1247
1248
Select Case VERSO
1249
Case "V"
1250
1251
For TY = 0 To 7
1252
R(TY + 1) = DATA_MAT(TY) 'RIGA MATRICE DATAMATRIX
1253
Next TY
1254
1255
1256
Q_INT = ""
1257
NORIPET = ""
1258
1259
For TC = 1 To 8 'RIGA
1260
For TC1 = 1 To Len(R(TC)) 'COLONNA
1261
RC2(TC, TC1) = Mid(R(TC), TC1, 1) 'MATRICE PUNTO PER PUNTO
1262
Next TC1
1263
Next TC
1264
1265
1266
For TR = 1 To 18 'FACCIO LA TRASPOSTA DELLA MATRICE
1267
For TR2 = 1 To 8
1268
RC(TR, TR2) = RC2(TR2, TR)
1269
Next TR2
1270
Next TR
1271
1272
1273
For kk = 1 To 18  'CONTATORE DI RIGA
1274
For NN = 1 To 8 'CONTATORE DI COLONNA
1275
1276
'GoTo NOASOLE
1277
'***************************************************************************************ASOLA VERTICALE
1278
1279
If Not kk > 16 Then
1280
1281
If Not (InStr(1, NORIPET, "_" & kk & NN & "_") > 0 Or InStr(1, NORIPET, "_" & kk + 1 & NN & "_") > 0 Or InStr(1, NORIPET, "_" & kk + 2 & NN & "_") > 0) Then
1282
If RC(kk, NN) = 1 And RC(kk + 1, NN) = 1 And RC(kk + 2, NN) = 1 Then
1283
Q_INT = Q_INT & T_SLOT(X0 + (NN - 1) * PS, Y0 + (kk + 1) * PS, 7, 2, 90)
1284
NORIPET = NORIPET & "_" & kk & NN & "_" & kk + 1 & NN & "_" & kk + 2 & NN & "_"
1285
End If
1286
End If
1287
End If
1288
1289
1290
'***************************************************************************************ASOLA ORIZZONTALE
1291
1292
If Not NN > 6 Then
1293
1294
1295
If Not (InStr(1, NORIPET, "_" & kk & NN & "_") > 0 Or InStr(1, NORIPET, "_" & kk & NN + 1 & "_") > 0 Or InStr(1, NORIPET, "_" & kk & NN + 2 & "_") > 0) Then
1296
If RC(kk, NN) = 1 And RC(kk, NN + 1) = 1 And RC(kk, NN + 2) = 1 Then
1297
Q_INT = Q_INT & T_SLOT(X0 + (NN) * PS, Y0 + (kk) * PS, 7, 2, 0)
1298
NORIPET = NORIPET & "_" & kk & NN & "_" & kk & NN + 1 & "_" & kk & NN + 2 & "_"
1299
End If
1300
End If
1301
End If
1302
1303
NOASOLE:
1304
'*****************************************************************************************TONDO
1305
1306
If Not InStr(1, NORIPET, "_" & kk & NN & "_") > 0 Then
1307
If RC(kk, NN) = 1 Then Q_INT = Q_INT & T_CIRC(X0 + (NN - 1) * PS, Y0 + (kk) * PS, 2)
1308
End If
1309
1310
1311
Next NN
1312
Next kk
1313
1314
T_DATAMATRIX = QORIGINE & QASSEY & QASSEX & Q_INT & QTM_Y & QTM_X
1315
1316
1317
1318
Case "O"
1319
1320
For TY = 0 To 7
1321
R(TY + 1) = DATA_MAT(TY) 'RIGA MATRICE DATAMATRIX
1322
Next TY
1323
1324
1325
Q_INT = ""
1326
NORIPET = ""
1327
1328
1329
For TC = 1 To 8 'RIGA
1330
For TC1 = 1 To Len(R(TC)) 'COLONNA
1331
RC(TC, TC1) = Mid(R(TC), TC1, 1) 'MATRICE PUNTO PER PUNTO
1332
Next TC1
1333
Next TC
1334
1335
1336
1337
For kk = 1 To 8  'CONTATORE DI RIGA
1338
For NN = 1 To 18 'CONTATORE DI COLONNA
1339
1340
'GoTo NOASOLE2
1341
'***************************************************************************************ASOLA VERTICALE
1342
1343
If Not kk > 6 Then
1344
1345
If Not (InStr(1, NORIPET, "_" & kk & NN & "_") > 0 Or InStr(1, NORIPET, "_" & kk + 1 & NN & "_") > 0 Or InStr(1, NORIPET, "_" & kk + 2 & NN & "_") > 0) Then
1346
If RC(kk, NN) = 1 And RC(kk + 1, NN) = 1 And RC(kk + 2, NN) = 1 Then
1347
Q_INT = Q_INT & T_SLOT(X0 + (NN - 1) * PS, Y0 + (8 - kk - 1) * PS, 7, 2, 90)
1348
NORIPET = NORIPET & "_" & kk & NN & "_" & kk + 1 & NN & "_" & kk + 2 & NN & "_"
1349
End If
1350
End If
1351
End If
1352
1353
1354
'***************************************************************************************ASOLA ORIZZONTALE
1355
1356
If Not NN > 16 Then
1357
1358
If Not (InStr(1, NORIPET, "_" & kk & NN & "_") > 0 Or InStr(1, NORIPET, "_" & kk & NN + 1 & "_") > 0 Or InStr(1, NORIPET, "_" & kk & NN + 2 & "_") > 0) Then
1359
If RC(kk, NN) = 1 And RC(kk, NN + 1) = 1 And RC(kk, NN + 2) = 1 Then
1360
Q_INT = Q_INT & T_SLOT(X0 + (NN) * PS, Y0 + (8 - kk) * PS, 7, 2, 0)
1361
NORIPET = NORIPET & "_" & kk & NN & "_" & kk & NN + 1 & "_" & kk & NN + 2 & "_"
1362
End If
1363
End If
1364
End If
1365
1366
NOASOLE2:
1367
'*****************************************************************************************TONDO
1368
1369
If Not InStr(1, NORIPET, "_" & kk & NN & "_") > 0 Then
1370
If RC(kk, NN) = 1 Then Q_INT = Q_INT & T_CIRC(X0 + (NN - 1) * PS, Y0 + (8 - kk) * PS, 2)
1371
End If
1372
1373
1374
1375
Next NN
1376
Next kk
1377
1378
T_DATAMATRIX = QORIGINE & QASSEY & QASSEX & Q_INT & QTM_Y & QTM_X
1379
1380
Case Else
1381
MsgBox ("ERRORE VERSO DATAMATRIX")
1382
End Select
1383
1384
1385
End Function
1386
1387
1388
1389
1390
1391
1392
Function T_RAD(ByVal XC As Double, ByVal YC As Double, ANGOLO As String)
1393
'RAGGIATURA
1394
1395
Select Case ANGOLO
1396
Case "1"
1397
ANGOLO = "-90"
1398
Case "2"
1399
ANGOLO = "0"
1400
Case "3"
1401
ANGOLO = "90"
1402
Case "4"
1403
ANGOLO = "180"
1404
Case Else
1405
MsgBox ("errore")
1406
End Select
1407
1408
1409
Offset = 0.65
1410
Select Case ANGOLO
1411
Case "0"
1412
T_RAD = T_SPECIAL(XC - Offset, YC + Offset, "RAG-3", "C0.")
1413
Case "180"
1414
T_RAD = T_SPECIAL(XC + Offset, YC - Offset, "RAG-3", "C0.")
1415
Case "90"
1416
T_RAD = T_SPECIAL(XC - Offset, YC - Offset, "RAG-3", "C0.")
1417
Case "-90"
1418
T_RAD = T_SPECIAL(XC + Offset, YC + Offset, "RAG-3", "C0.")
1419
Case Else
1420
MsgBox (("ERROR ANGLE 5RD"))
1421
End Select
1422
1423
1424
End Function
1425
1426
Function T_RAG(ByVal X As Double, ByVal Y As Double, ByVal LATO As Integer)
1427
1428
DSP = 2.9 '2.6
1429
Select Case LATO
1430
Case 1 'BASSO SINISTRO
1431
Y = Y - DSP
1432
X = X - DSP
1433
Case 2 'ALTO SINISTRO
1434
Y = Y + DSP
1435
X = X - DSP
1436
Case 3 'ALTO DESTRO
1437
Y = Y + DSP
1438
X = X + DSP
1439
Case 4 'BASSO DESTRO
1440
Y = Y - DSP
1441
X = X + DSP
1442
Case Else
1443
MsgBox ("ERRORE NELL'ANGOLO DEL RAGGIATORE")
1444
End Select
1445
1446
T_RAG = T_SPECIAL(X, Y, "3S", "C0.")
1447
1448
End Function
1449
1450