PedjaZ
Član broj: 48898 Poruke: 2087
|
Slazem se sa Bogdanom da VB nije za to.
A to sto kazes da ces za program lako...
Ovo je taj program gde je mozda samo petina stvari odradjena.
Zamisli samo koliki bi bio ceo program.
Evo ti pa iskoristi sta ti treba
@shpiki
Da me vidis samo sa prastarim AmigaBASIC-om kako sam palio i zario :)
Nazalost, sve je to hobi.
---------------------------------------------------------------
Public maxXprikaz As Double 'kod COMPILE izracunava
Public maxYprikaz As Double ' max vrednosti x,y,z
Public maxZprikaz As Double ' da bi prikazao u max velicini
Public minZprikaz As Double
Public Korak As Double
Public BrojLinija As Double '__za 2D-3D_doradjeno.txt
Public klx As Integer
Public kly As Integer
Public klz As Integer
Public klr As Double
Public klr1 As Integer
Public kls As Double
Private Sub Command20_Click() ' OPEN
Dim unos As String
Dim FileN As String
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
' Set filters
CommonDialog1.Filter = "All Files (*.*)|*.*| " & _
"nc Files (*.nc)|*.nc|" & _
"cnc Files (*.cnc)|*.cnc|" & _
"txt Files (*.txt)|*.txt|"
CommonDialog1.FilterIndex = 1 ' default filter
CommonDialog1.ShowOpen: FileN = CommonDialog1.FileName: Open FileN For Input As #1
'Open "E:\Podaci sa C\VB6\_Proba\cnc\Izgled\6_2D_opcije\1.nc" For Input As #1
unos = Input$(LOF(1), 1)
Open App.Path + "\temp\_temp.nc" For Output As #2
Print #2, unos;
Close #1, #2
Text1.Enabled = True
Text1.Text = unos
Command26.Enabled = True 'compile
Command21.Enabled = True 'save
Command22.Enabled = True 'find
Command23.Enabled = True 'replace
Command26.BackColor = RGB(250, 100, 100)
SSTab3.Enabled = False
Form1.Caption = FileN
Exit Sub
ErrHandler:
'cancel
Stop
End Sub
Private Sub Command22_Click()
'u$=text1.text
End Sub
Private Sub Command26_Click() ' Compile
Dim unos As String 'red po red
Dim znak As String 'znak po znak iz reda
Dim k As String 'k=unos
Dim xs As String, ys As String, zs As String 'kod snimanja
Dim i As Double, j As Double, l As Double
Dim b As Double, c As Double, NewPosLen As Double, Razmak As Double
Dim mRip As String 'cupa x, y, z ... iz unosa - reda
Dim mv As Double 'mv=val(mrip)
Dim xStaro As Double, yStaro As Double, zStaro As Double
Dim xNovo As Double, yNovo As Double, zNovo As Double
Dim pomakX As Double, pomakY As Double, pomakZ As Double 'kod crtanja/snimanja cele putanje
Dim KorakXYZ As Double
Dim KorakX As Double, KorakY As Double, KorakZ As Double
Dim xStep As Double, yStep As Double, zStep As Double
Dim Lx As Double, Ly As Double, Lz As Double
Dim L0 As Double, L1 As Double, L2 As Double, L3 As Double, L4 As Double
Dim PromenaXYZ As Integer 'ako u koloni ima podataka za x,y ili z
'unos = "G00 X23 Y54 Z2"
'unos = "G00X23Y54Z2"
'unos = "G0 X0.01 Y0.01 Z-5.000"
'unos = "Y0.061"
'unos = "Y0.181 Z0.389"
'unos = "G0 X6.562 Y5.842 Z-0.800"
'unos = "X14.478Z-0.920"
'unos = "G1X0.255Z-1.403F2520.0"
Picture1.Cls
Picture2.Cls
j = 0 'prinudni izlaz - izbaciti posle
xStaro = 0 'pocetni polozaj
yStaro = 0
zStaro = 0
Korak = 0.2 'korak alata
maxXprikaz = 0
maxYprikaz = 0
maxZprikaz = 0
minZprikaz = 0
Open App.Path + "\temp\_temp.nc" For Input As #1
Open App.Path + "\temp\_temp.txt" For Output As #2
Open App.Path + "\_za 2D-3D.txt" For Output As #3
PocUnosa:
PromenaXYZ = 0
j = j + 1
'If j = 500 Or EOF(1) = True Then GoTo endsubic
If EOF(1) = True Then GoTo endsubic
Line Input #1, unos
unos = UCase(unos)
If unos = "" Then GoTo PocUnosa
'ako je unos "" onda je l=0 pa for i izadje,
' tako da ne stigne na if znak=""
c = 0
l = Len(unos)
For i = 1 To l
znak = Mid$(unos, i, 1)
If znak = "(" Or znak = "*" Or znak = "%" Or znak = "" Or znak = "{" Then
'( % * { - komentar (%=beep)
'Stop
GoTo PocUnosa 'novi red
ElseIf znak = "N" Then
'broj linije
GoSub ZnakZajednicko
'Stop
ElseIf znak = "G" Then
GoSub ZnakZajednicko
ElseIf znak = "X" Then
GoSub ZnakZajednicko
xNovo = mv
PromenaXYZ = 1
ElseIf znak = "Y" Then
GoSub ZnakZajednicko
yNovo = mv
PromenaXYZ = 1
ElseIf znak = "Z" Then
GoSub ZnakZajednicko
zNovo = mv
PromenaXYZ = 1
ElseIf znak = "M" Then
'smer vrtnje alata, promena alata, hladjenje...
'M03 start
'M05 stop
GoSub ZnakZajednicko
'Stop
ElseIf znak = "J" Or znak = "I" Then
'kruznica
'N30 G2 X22 Y40 I50 J40
'krug u smeru kazaljke na satu(G2)
'da X22 Y40
'centar u X50 Y40
GoSub ZnakZajednicko
Stop
ElseIf znak = "D" Then
'offset alata (isto G40/41/42 ?)
Stop
ElseIf znak = "S" Then
'S obrtanje alata (obrtaja/minut)
'Stop
ElseIf znak = "T" Then
'T odabir
'Stop
ElseIf znak = "F" Then
'F brzina hoda alata
GoSub ZnakZajednicko
'Stop
Else
'Stop
End If
Next i
'--------------------------------------------------------------
'Stop
If PromenaXYZ = 0 Then GoTo PocUnosa ' trenutno ovako
OdrediXYZ:
Lx = xNovo - xStaro
Ly = yNovo - yStaro
Lz = zNovo - zStaro
L1 = Sqr(Lx ^ 2 + Ly ^ 2)
L0 = Sqr(L1 ^ 2 + Lz ^ 2) 'L1 ne mora sqr zato sto je ovde ^2
If xNovo > maxXprikaz Then maxXprikaz = xNovo
If yNovo > maxYprikaz Then maxYprikaz = yNovo
If zNovo > maxZprikaz Then maxZprikaz = zNovo
If zNovo < minZprikaz Then minZprikaz = zNovo
If L0 = 0 Or Korak = 0 Then GoTo PocUnosa
KorakXYZ = L0 + 1
KorakX = Lx / L0 * Korak
KorakY = Ly / L0 * Korak
KorakZ = Lz / L0 * Korak
pomakX = 0
pomakY = 0
pomakZ = 0
DoEvents
BrojLinija = BrojLinija + 1
Write #3, xNovo; yNovo; zNovo
'Picture2.Line -(100 + (xNovo * 150), 5000 - (yNovo * 150))
'Sleep 10
'GoTo 500
For b = 1 To KorakXYZ Step Korak
xStep = xStaro + pomakX
yStep = yStaro + pomakY
zStep = zStaro + pomakZ
Picture1.PSet (100 + (xStep * 20), 4900 - (yStep * 20))
xs = Str$(Int(xStep * 1000) / 1000)
ys = Str$(Int(yStep * 1000) / 1000)
zs = Str$(Int(zStep * 1000) / 1000)
If Left$(xs, 1) = "-" Then
xs = " " + xs
End If
If Left$(ys, 1) = "-" Then
ys = " " + ys
End If
If Left$(zs, 1) = "-" Then
zs = " " + zs
End If
Print #2, xs; ys; zs
pomakX = pomakX + KorakX
pomakY = pomakY + KorakY
pomakZ = pomakZ + KorakZ
Next b
500
xStaro = xNovo
yStaro = yNovo
zStaro = zNovo
GoTo PocUnosa
ZnakZajednicko:
c = i
k = unos
NewPosLen = 0
Razmak = 0 'X22_Y30 broji i taj razmak
GoSub OdrediDuzinu
' Print NewPosLen
c = 0
mRip = Mid$(k, i + 1, NewPosLen)
mv = Val(mRip)
i = i + NewPosLen + Razmak 'vrteo bi od prvog broja posle G/X/Y/Z
Return
OdrediDuzinu:
c = c + 1
If Mid$(k, c, 1) = "0" Then NewPosLen = NewPosLen + 1: GoTo OdrediDuzinu
If Mid$(k, c, 1) = "1" Then NewPosLen = NewPosLen + 1: GoTo OdrediDuzinu
If Mid$(k, c, 1) = "2" Then NewPosLen = NewPosLen + 1: GoTo OdrediDuzinu
If Mid$(k, c, 1) = "3" Then NewPosLen = NewPosLen + 1: GoTo OdrediDuzinu
If Mid$(k, c, 1) = "4" Then NewPosLen = NewPosLen + 1: GoTo OdrediDuzinu
If Mid$(k, c, 1) = "5" Then NewPosLen = NewPosLen + 1: GoTo OdrediDuzinu
If Mid$(k, c, 1) = "6" Then NewPosLen = NewPosLen + 1: GoTo OdrediDuzinu
If Mid$(k, c, 1) = "7" Then NewPosLen = NewPosLen + 1: GoTo OdrediDuzinu
If Mid$(k, c, 1) = "8" Then NewPosLen = NewPosLen + 1: GoTo OdrediDuzinu
If Mid$(k, c, 1) = "9" Then NewPosLen = NewPosLen + 1: GoTo OdrediDuzinu
If Mid$(k, c, 1) = "-" Then NewPosLen = NewPosLen + 1: GoTo OdrediDuzinu
If Mid$(k, c, 1) = "." Then NewPosLen = NewPosLen + 1: GoTo OdrediDuzinu
If Mid$(k, c, 1) = " " Then Razmak = Razmak + 1: GoTo OdrediDuzinu
If Mid$(k, c, 1) = "A" Then Return
If Mid$(k, c, 1) = "B" Then Return
If Mid$(k, c, 1) = "C" Then Return
If Mid$(k, c, 1) = "D" Then Return
If Mid$(k, c, 1) = "E" Then Return
If Mid$(k, c, 1) = "F" Then Return
If Mid$(k, c, 1) = "G" Then Return
If Mid$(k, c, 1) = "H" Then Return
If Mid$(k, c, 1) = "I" Then Return
If Mid$(k, c, 1) = "J" Then Return
If Mid$(k, c, 1) = "K" Then Return
If Mid$(k, c, 1) = "L" Then Return
If Mid$(k, c, 1) = "M" Then Return
If Mid$(k, c, 1) = "N" Then Return
If Mid$(k, c, 1) = "O" Then Return
If Mid$(k, c, 1) = "P" Then Return
If Mid$(k, c, 1) = "Q" Then Return
If Mid$(k, c, 1) = "R" Then Return
If Mid$(k, c, 1) = "S" Then Return
If Mid$(k, c, 1) = "T" Then Return
If Mid$(k, c, 1) = "U" Then Return
If Mid$(k, c, 1) = "V" Then Return
If Mid$(k, c, 1) = "W" Then Return
If Mid$(k, c, 1) = "Y" Then Return
If Mid$(k, c, 1) = "Z" Then Return
'ovde izadje ako je c> od len(k)
Return
endsubic:
Close #1, #2, #3
Open App.Path + "\_za 2D-3D.txt" For Input As #1
Open App.Path + "\_za 2D-3D_doradjeno.txt" For Output As #2
unos = Input$(LOF(1), 1)
Print #2, "ako se otvara iz nekog drugog programa"
Print #2, BrojLinija
Print #2, maxXprikaz
Print #2, maxYprikaz
Print #2, maxZprikaz
Print #2, minZprikaz
Print #2, unos;
Close #1, #2
Beep
Command26.BackColor = &H8000000F
Picture1.CurrentX = 10
Picture1.CurrentY = 10
Picture1.Print "maxX="; maxXprikaz; " maxY="; maxYprikaz; " maxZ="; maxZprikaz; " minZ="; minZprikaz
Picture1.Print BrojLinija
BrojLinija = 0
SSTab3.Enabled = True
End Sub
Private Sub Command27_Click() ' NEW
Text1.Enabled = True
Text1.Text = ""
Command26.Enabled = True 'compile
Command21.Enabled = True 'save
Command22.Enabled = True 'find
Command23.Enabled = True 'replace
Command26.BackColor = RGB(250, 100, 100)
SSTab3.Enabled = False
Form1.Caption = "New"
End Sub
Private Sub Command30_Click()
Dim X As Double, Y As Double, z As Double
Dim xs As Double, ys As Double, zs As Double
Dim xr As Double, yr As Double, zr As Double
Dim ox As Double, oy As Double, oz As Double
Dim o As Double
Dim un As String
Open App.Path + "\_za 2D-3D_doradjeno.txt" For Input As #1
Line Input #1, un ' komentar
Line Input #1, un ' broj tacaka
Line Input #1, un ' maxX
maxXprikaz = un
Line Input #1, un ' maxY
maxYprikaz = un
Line Input #1, un ' maxZ
maxZprikaz = un
Line Input #1, un ' minZ
minZprikaz = un
xs = 0: ys = 0: zs = 0
Picture1.Cls
xs = 0
ys = 4913
zs = 0
ox = 6710 / maxXprikaz '6735
oy = 4900 / maxYprikaz '4913
If ox < oy Then
o = ox
Else
o = oy
End If
Picture1.Line (5, 4913)-(maxXprikaz * o + 2, 4913 - (maxYprikaz * o)), RGB(200, 150, 510), BF
If Option3 = True Then Picture1.Line (0, 2000)-(6700, 2000), RGB(250, 150, 200)
Poc:
If EOF(1) = True Then GoTo Kraj
Input #1, X
Input #1, Y
Input #1, z
xr = 20 + (X * o)
yr = 4913 - (Y * o)
zr = 2000 - (z * o)
If xr > 6740 Or yr > 4920 Then Stop
'Picture2.Cls
'Picture2.Print x
'Picture2.Print y
'Picture2.Print z
DoEvents
If Option2 = True Then
If z < 0 And Check3.Value = Checked Then
Picture1.Line (xs, zs)-(xr, zr)
ElseIf z >= 0 And Check2.Value = Checked Then
Picture1.Line (xs, zs)-(xr, zr), RGB(0, 150, 200)
End If
ElseIf Option3 = True Then
If z < 0 And Check3.Value = Checked Then
Picture1.Line (ys, zs)-(yr, zr)
ElseIf z >= 0 And Check2.Value = Checked Then
Picture1.Line (ys, zs)-(yr, zr), RGB(0, 150, 200)
End If
Else 'opcija 1
If z < 0 And Check3.Value = Checked Then
Picture1.Line (xs, ys)-(xr, yr)
ElseIf z >= 0 And Check2.Value = Checked Then
Picture1.Line (xs, ys)-(xr, yr), RGB(0, 150, 200)
End If
End If
xs = xr
ys = yr
zs = zr
Sleep HScroll15.Value
GoTo Poc
Kraj:
Beep
Close 1
End Sub
Private Sub Command31_Click()
HScroll15.Value = 0
End Sub
Private Sub Command32_Click()
Dim X As Double, Y As Double, z As Double
Dim xs As Double, ys As Double, zs As Double
Dim xr As Double, yr As Double, zr As Double
Dim ox As Double, oy As Double, oz As Double
Dim o As Double
Dim un As String
Dim Rgb1 As Integer 'boja kod 3d prikaza
Dim Rgb2 As Integer
'Dim pi As Double
'pi = 4 * Atn(1) '3,14159265358979
Open App.Path + "\_za 2D-3D_doradjeno.txt" For Input As #1
Line Input #1, un ' komentar
Line Input #1, un ' broj tacaka
Line Input #1, un ' maxX
maxXprikaz = un
Line Input #1, un ' maxY
maxYprikaz = un
Line Input #1, un ' maxZ
maxZprikaz = un
Line Input #1, un ' minZ
minZprikaz = un
Picture2.Print maxXprikaz; maxXprikaz
xs = 0: ys = 0: zs = 0
Picture2.Cls
xs = 0
ys = 4913
zs = 0
ox = 6710 / maxXprikaz '6735
oy = 4900 / maxYprikaz '4913
If ox < oy Then
o = ox
Else
o = oy
End If
Picture2.Line (5, 4913)-(maxXprikaz * o + 2, 4913 - (maxYprikaz * o)), RGB(200, 150, 510), BF
If Option3 = True Then Picture2.Line (0, 2000)-(6700, 2000), RGB(250, 150, 200)
Rgb1 = 255 / Abs(minZprikaz)
Poc:
If EOF(1) = True Then GoTo Kraj
Input #1, X
Input #1, Y
Input #1, z
xr = 20 + (X * o)
yr = 4913 - (Y * o)
xr = xr / (VScroll5.Value / 10)
yr = yr / (VScroll5.Value / 10)
zr = z / (VScroll5.Value / 20)
' If xr > 6740 Or yr > 4920 Then Stop
DoEvents
'xr = (xr * yr / 4000) + klx 'kao pruga - perspektiva za yr =yr
xr = (xr + yr / klr) + VScroll3.Value
yr = yr - xr / 2 '/klr1
yr = (yr - zr * 300) + VScroll4.Value
If z < 0 And Check4.Value = Checked Then
Rgb2 = 255 - Rgb1 * Abs(z)
Picture2.Line (xs, ys)-(xr, yr), RGB(Rgb2, Rgb2, Rgb2)
ElseIf z >= 0 And Check5.Value = Checked Then
Picture2.Line (xs, ys)-(xr, yr), RGB(0, 150, 200)
End If
xs = xr
ys = yr
zs = zr
Sleep HScroll16.Value
GoTo Poc
Kraj:
Beep
Close 1
End Sub
Private Sub Command34_Click() '----- oba -----
Dim X As Double, Y As Double, z As Double
Dim xs As Double, ys As Double, zs As Double
Dim xr As Double, yr As Double, zr As Double
Dim xs2 As Double, ys2 As Double, zs2 As Double
Dim xr2 As Double, yr2 As Double, zr2 As Double
Dim ox As Double, oy As Double, oz As Double
Dim o As Double
Dim un As String
Dim Rgb1 As Integer 'boja kod 3d prikaza
Dim Rgb2 As Integer
'Dim pi As Double
'pi = 4 * Atn(1) '3,14159265358979
Open App.Path + "\_za 2D-3D_doradjeno.txt" For Input As #1
Line Input #1, un ' komentar
Line Input #1, un ' broj tacaka
Line Input #1, un ' maxX
maxXprikaz = un
Line Input #1, un ' maxY
maxYprikaz = un
Line Input #1, un ' maxZ
maxZprikaz = un
Line Input #1, un ' minZ
minZprikaz = un
Picture2.Print maxXprikaz; maxXprikaz
xs = 0: ys = 0: zs = 0
xs2 = 0: ys2 = 0: zs2 = 0
Picture2.Cls
Picture1.Cls
xs = 0
ys = 4913
zs = 0
xs2 = 0
ys2 = 4913
zs2 = 0
ox = 6710 / maxXprikaz '6735
oy = 4900 / maxYprikaz '4913
If ox < oy Then
o = ox
Else
o = oy
End If
Picture2.Line (5, 4913)-(maxXprikaz * o + 2, 4913 - (maxYprikaz * o)), RGB(200, 150, 510), BF
If Option3 = True Then Picture2.Line (0, 2000)-(6700, 2000), RGB(250, 150, 200)
Rgb1 = 255 / Abs(minZprikaz)
Poc:
If EOF(1) = True Then GoTo Kraj
Input #1, X
Input #1, Y
Input #1, z
'--------------------------------2D
xr2 = 20 + (X * o)
yr2 = 4913 - (Y * o)
zr2 = 2000 - (z * o)
If xr2 > 6740 Or yr2 > 4920 Then Stop
'Picture2.Cls
'Picture2.Print x
'Picture2.Print y
'Picture2.Print z
DoEvents
If Option2 = True Then
If z < 0 And Check3.Value = Checked Then
Picture1.Line (xs2, zs2)-(xr2, zr2)
ElseIf z >= 0 And Check2.Value = Checked Then
Picture1.Line (xs2, zs2)-(xr2, zr2), RGB(0, 150, 200)
End If
ElseIf Option3 = True Then
If z < 0 And Check3.Value = Checked Then
Picture1.Line (ys2, zs2)-(yr2, zr2)
ElseIf z >= 0 And Check2.Value = Checked Then
Picture1.Line (ys2, zs2)-(yr2, zr2), RGB(0, 150, 200)
End If
Else 'opcija 1
If z < 0 And Check3.Value = Checked Then
Picture1.Line (xs2, ys2)-(xr2, yr2)
ElseIf z >= 0 And Check2.Value = Checked Then
Picture1.Line (xs2, ys2)-(xr2, yr2), RGB(0, 150, 200)
End If
End If
xs2 = xr2
ys2 = yr2
zs2 = zr2
'-------------------------------3D
xr = 20 + (X * o)
yr = 4913 - (Y * o)
xr = xr / (VScroll5.Value / 10)
yr = yr / (VScroll5.Value / 10)
zr = z / (VScroll5.Value / 20)
' If xr > 6740 Or yr > 4920 Then Stop
DoEvents
'xr = (xr * yr / 4000) + klx 'kao pruga - perspektiva za yr =yr
xr = (xr + yr / klr) + VScroll3.Value
yr = yr - xr / 2 '/klr1
yr = (yr - zr * 300) + VScroll4.Value
If z < 0 And Check4.Value = Checked Then
Rgb2 = 255 - Rgb1 * Abs(z)
Picture2.Line (xs, ys)-(xr, yr), RGB(Rgb2, Rgb2, Rgb2)
ElseIf z >= 0 And Check5.Value = Checked Then
Picture2.Line (xs, ys)-(xr, yr), RGB(0, 150, 200)
End If
xs = xr
ys = yr
zs = zr
Sleep HScroll17.Value
GoTo Poc
Kraj:
Beep
Close 1
End Sub
Private Sub Form_Load()
klx = 0
kly = 2480
klz = 0
klr = 1.1
klr1 = 2
kls = 1.5
End Sub
|