1
Universitatea din Craiova
Facultatea de Automatică, Calculatoare şi Electronică
Proiect P.A.C.
COORDONATOR:
STUDENTĂ:
PROF.DR.ING. COJOCARU
DORIAN
Stănică Roxana
Master - A.S.C
Programul următor crează o interfaţă
funcţională şi completă pentru programul piesă. Se vor introduce de la
tastatură 2 parametrii raza1 şi raza3 pentru arcul 1 şi arcul 3 şi după
rularea programului se va obţine figura următoare.
Dim corect As Boolean
Dim centru(0 To 2) As Double
Dim raza2 As Double
Dim raza3 As Double
Dim raza4 As Double
Dim x As Double
Dim y As Double
Dim circleobj As AcadCircle
Dim arcobj As AcadArc
Dim alfa As Double
Dim unghi As Double
Dim pi As Double
Private Sub userform_initialize()
piesa.raza1.ControlTipText = "trebuie introdus un numar strict pozitiv
pentru raza 1"
piesa.raza3.ControlTipText = "trebuie introdus un numar strict pozitiv
pentru raza 3 mai mic decat raza1"
piesa.deseneaza.ControlTipText = "deseneaza piesa"
piesa.afisare.ControlTipText = "afiseaza fereastra pentru urmarirea
executiei programului"
piesa.listaAfisare.ControlTipText = "afiseaza operatiile efectuate"
corect = True
piesa.afisare.Value = True
piesa.listaAfisare.AddItem ("s-a lansat programul")
End Sub
Private Sub afisare_click()
If piesa.afisare.Value = True Then
piesa.listaAfisare.Visible = True
Else
piesa.listaAfisare.Visible = False
End If
End Sub
Private Sub deseneaza_Click()
If (piesa.raza1.Value = "") Or (piesa.raza3.Value = "") Then
mesaj = MsgBox("trebuie sa introduceti toate datele inainte de a desena
piesa", vbOKOnly + vbCritical, "atentie")
piesa.listaAfisare.AddItem ("s-a incercat desenarea fara toate datele
introduse")
End If
piesa.listaAfisare.AddItem ("se incepe desenarea")
piesa.listaAfisare.AddItem ("se deseneaza arcul de raza1")
centru(0) = 0#: centru(1) = 0#: centru(2) = 0#
raza2 = (raza1 * 5) / 4
raza4 = (4 * raza3) / 3
alfa = (raza2 * raza2 + raza1 * raza1 - raza4 * raza4) / (2 * raza2 *
raza1)
unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 * Atn(1)
pi = 3.14159265
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza1, 0, pi - unghi)
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza1, pi + unghi, 2
* pi)
piesa.listaAfisare.AddItem ("se deseneaza arcul de raza2")
alfa = 1 - (raza4 * raza4) / (2 * raza2 * raza2)
unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 * Atn(1)
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza2, 0, pi - unghi)
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza2, pi + unghi, 2
* pi)
piesa.listaAfisare.AddItem ("se deseneaza arcul de raza3")
centru(0) = 0# - raza2: centru(1) = 0#: centru(2) = 0#
alfa = Sqr(3) / 2
unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 * Atn(1)
pi = 3.14159265
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza3, unghi, pi)
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza3, pi, 2 * pi -
unghi)
piesa.listaAfisare.AddItem ("se deseneaza cercul 4 de raza4")
centru(0) = 0# - raza2: centru(1) = 0#: centru(2) = 0#
Set circleobj = ThisDrawing.ModelSpace.AddCircle(centru, raza4)
Dim punctstart(0 To 2) As Double
Dim punctfinal(0 To 2) As Double
Dim frontiera(0 To 2) As AcadEntity
piesa.listaAfisare.AddItem ("se deseneaza polilinia")
punctstart(0) = 0# - raza2 + 6 * raza3 / 7: punctstart(1) = 0# + raza3
/ 2: punctstart(2) = 0#
punctfinal(0) = 0# - raza2 + 7 * raza3 / 6: punctfinal(1) = 0# + raza3
/ 2: punctstart(2) = 0#
Set frontiera(0) = ThisDrawing.ModelSpace.AddLine(punctstart,
punctfinal)
punctfinal(0) = 0# - raza2 + 7 * raza3 / 6: punctfinal(1) = 0# - raza3
/ 2: punctstart(2) = 0#
Set frontiera(1) =
ThisDrawing.ModelSpace.AddLine(frontiera(0).EndPoint, punctfinal)
punctfinal(0) = 0# - raza2 + 6 * raza3 / 7: punctfinal(1) = 0# - raza3
/ 2: punctstart(2) = 0#
Set frontiera(2) =
ThisDrawing.ModelSpace.AddLine(frontiera(1).EndPoint, punctfinal)
End Sub
Private Sub raza1_AfterUpdate()
piesa.listaAfisare.AddItem ("s-a introdus raza arcului 1")
piesa.listaAfisare.AddItem ("valoarea introdusa este raza1=" +
piesa.raza1.Value)
verificare_numar (piesa.raza1.Value)
If corect = False Then
piesa.raza1.Value = ""
End If
End Sub
Private Sub raza3_afterupdate()
piesa.listaAfisare.AddItem ("s-a introdus raza arcului 3")
piesa.listaAfisare.AddItem ("valoarea introdusa este raza3=" +
piesa.raza3.Value)
x = piesa.raza1.Value / 3
y = piesa.raza1.Value / 5
If piesa.raza3.Value >x Then
mesaj = MsgBox("raza3 trebuie sa fie mai mica decat" +str(x), vbOKOnly
+ vbCritical, "atentie")
corect = False
ElseIf piesa.raza3.Value < y Then
mesaj = MsgBox("raza3 trebuie sa fie mai mare decat" +str(y), vbOKOnly
+ vbCritical, "atentie")
corect = False
Else
corect = True
piesa.listaAfisare.AddItem ("valoarea introdusa este corecta")
End If
End Sub
Private Sub verificare_numar(valoare)
If IsNumeric(valoare) = False Then
mesaj = MsgBox("ati introdus un caracter trebuie sa introduceti un
numar", vbOKOnly + vbCritical, "atentie")
corect = False
piesa.listaAfisare.AddItem ("valoare este incorecta nefiind o cifra")
ElseIf Val(valoare) <= 0 Then
mesaj = MsgBox("numarul introdus trebuie sa fie strict pozitiv",
vbOKOnly + vbCritical, "atentie")
corect = False
piesa.listaAfisare.AddItem ("valoarea introdusa este incorecta trebuie
o valoare mai mare ca zero")
x = piesa.raza1.Value / 3
y= piesa.raza1.Value / 5
If piesa.raza3.Value > x Then
mesaj = MsgBox("raza3 trebuie sa fie mai mica decat" +str(x), vbOKOnly
+ vbCritical, "atentie")
corect = False
ElseIf piesa.raza3.Value < y Then
mesaj = MsgBox("raza3 trebuie sa fie mai mare decat" +str(y),
vbOKOnly + vbCritical, "atentie")
corect = False
Else
corect = True
piesa.listaAfisare.AddItem ("valoarea introdusa este corecta")
End If
End If
End Sub
Dacă de exemplu se introduce raza primului arc raza1=6 şi raza arcului
3 raza3=2 atunci după rularea programullui din Visual Basic īn Autocad
apare desenul următor:
Explicarea instrucţiunilor
Dim corect As Boolean
Dim centru(0 To 2) As Double
Dim raza2 As Double
Dim raza3 As Double
Dim raza4 As Double
Dim x As Double
Dim y As Double
Dim circleobj As AcadCircle
Dim arcobj As AcadArc
Dim alfa As Double
Dim unghi As Double
Dim pi As Double
Cu aceste intrucţiuni se definesc:
- O variabilă corect de tip boolean.
- Centrul – un vector cu trei componente: x, y, z.
- Razele arcelor 2 şi 3, raza cercului 4, x şi y sunt
valori reale.
- Pentru a desena un cerc trebuie definit ca
AcadCircle.
- Pentru a desena un arc trebuie definit ca AcadArc.
- Alfa este un unghi de valoare reală.
- Pi are valoare īntreagă.
Private Sub userform_initialize()
piesa.raza1.ControlTipText = "trebuie introdus un numar strict pozitiv
pentru raza 1"
piesa.raza3.ControlTipText = "trebuie introdus un numar strict pozitiv
pentru raza 3 mai mic decat raza1"
piesa.deseneaza.ControlTipText = "deseneaza piesa"
piesa.afisare.ControlTipText = "afiseaza fereastra pentru urmarirea
executiei programului"
piesa.listaAfisare.ControlTipText = "afiseaza operatiile efectuate"
corect = True
piesa.afisare.Value = True
piesa.listaAfisare.AddItem ("s-a lansat programul")
End Sub
Codul introdus īn acestă metodă este executat
la iniţializarea formei. Apare un mesaj atunci cānd dorim scrierea
valorilor de intrare īn căsuţele razei1 şi razei2.
Pentru desenare se foloseşte funcţia:
Private Sub deseneaza_Click()
If (piesa.raza1.Value = "") Or (piesa.raza3.Value = "") Then
mesaj = MsgBox("trebuie sa introduceti toate datele inainte de a desena
piesa", vbOKOnly + vbCritical, "atentie")
piesa.listaAfisare.AddItem ("s-a incercat desenarea fara toate datele
introduse")
End If
piesa.listaAfisare.AddItem ("se deseneaza arcul de raza1")
centru(0) = 0#: centru(1) = 0#: centru(2) = 0#
raza2 = (raza1 * 5) / 4
raza4 = (4 * raza3) / 3
alfa = (raza2 * raza2 + raza1 * raza1 - raza4 * raza4) / (2 * raza2 *
raza1)
unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 * Atn(1)
pi = 3.14159265
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza1, 0, pi - unghi)
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza1, pi + unghi, 2
* pi)
piesa.listaAfisare.AddItem ("se deseneaza arcul de raza2")
alfa = 1 - (raza4 * raza4) / (2 * raza2 * raza2)
unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 * Atn(1)
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza2, 0, pi - unghi)
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza2, pi + unghi, 2
* pi)
piesa.listaAfisare.AddItem ("se deseneaza arcul de raza3")
centru(0) = 0# - raza2: centru(1) = 0#: centru(2) = 0#
alfa = Sqr(3) / 2
unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 * Atn(1)
pi = 3.14159265
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza3, unghi, pi)
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza3, pi, 2 * pi -
unghi)
piesa.listaAfisare.AddItem ("se deseneaza cercul 4 de raza4")
centru(0) = 0# - raza2: centru(1) = 0#: centru(2) = 0#
Set circleobj = ThisDrawing.ModelSpace.AddCircle(centru, raza4)
Dim punctstart(0 To 2) As Double
Dim punctfinal(0 To 2) As Double
Dim linie(0 To 2) As AcadEntity
piesa.listaAfisare.AddItem ("se deseneaza polilinia")
punctstart(0) = 0# - raza2 + 6 * raza3 / 7: punctstart(1) = 0# + raza3
/ 2: punctstart(2) = 0#
punctfinal(0) = 0# - raza2 + 7 * raza3 / 6: punctfinal(1) = 0# + raza3
/ 2: punctstart(2) = 0#
Set linie(0) = ThisDrawing.ModelSpace.AddLine(punctstart, punctfinal)
punctfinal(0) = 0# - raza2 + 7 * raza3 / 6: punctfinal(1) = 0# - raza3
/ 2: punctstart(2) = 0#
Set linie(1) = ThisDrawing.ModelSpace.AddLine(linie(0).EndPoint,
punctfinal)
punctfinal(0) = 0# - raza2 + 6 * raza3 / 7: punctfinal(1) = 0# - raza3
/ 2: punctstart(2) = 0#
Set linie(2) = ThisDrawing.ModelSpace.AddLine(linie(1).EndPoint,
punctfinal)
1
Pentru a desena arcul de rază1 se folosesc următoarele
instrucţiuni:
piesa.listaAfisare.AddItem ("se incepe desenarea")
piesa.listaAfisare.AddItem ("se deseneaza arcul de raza1")
centru(0) = 0#: centru(1) = 0#: centru(2) = 0#
raza2 = (raza1 * 5) / 4
raza4 = (4 * raza3) / 3
alfa = (raza2 * raza2 + raza1 * raza1 - raza4 * raza4) / (2 * raza2 *
raza1)
unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 * Atn(1)
pi = 3.14159265
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza1, 0, pi - unghi)
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza1, pi + unghi, 2
* pi)
piesa.listaAfisare.AddItem ("se deseneaza arcul de raza1")
”afişează īn lista de afişare că se desenează arcul de rază1”
raza2 = (raza1 * 5) / 4
raza4 = (4 * raza3) / 3
„se calculează raza 2 pentru arcul 2 şi raza 4 pentru cercul 4”
Pentru a desena arcul vom avea nevoie de fapt de
două arcuri:
- un arc de la 0 la pi-unghi
- un arc de la pi+unghi la 2*pi
Se foloseşte comanda: Set arcobj=
ThisDrawing.ModelSpace.AddArc(centru, raza, unghiul de īnceput, unghiul
final).
Se va defini arcobj ca AcadArc (Dim arcobj As
AcadArc)
Pentru arcul de la 0 la pi-unghi se consideră:
• Centrul:centru(0) = 0#: centru(1) = 0#: centru(2) =
0#
• cos(alfa)= (raza2 * raza2 + raza1 * raza1 - raza4 *
raza4) / (2 * raza2 * raza1)
• unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 *
Atn(1) (se face arccos(alfa))
• unghiul de īnceput este 0
• unghiul final este pi -unghi
• pi = 3.14159265
• Set arcobj = ThisDrawing.ModelSpace.AddArc(centru,
raza1, 0, pi -
unghi) (se desenează un arc cu centrul=centru, raza=raza1, unghiul de
īnceput este 0, unghiul final este pi –unghi).
Pentru arcul de la pi+unghi la 2*pi se
consideră:
• Centrul:centru(0) = 0#: centru(1) = 0#: centru(2) =
0#
• cos(alfa)= (raza2 * raza2 + raza1 * raza1 - raza4 *
raza4) / (2 * raza2 * raza1)
• unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 *
Atn(1) (se face arccos(alfa))
• unghiul de īnceput este pi+unghi
• unghiul final este 2*pi
• pi = 3.14159265
• Set arcobj = ThisDrawing.ModelSpace.AddArc(centru,
raza1, pi +
unghi, 2 * pi) (se desenează un arc cu centrul=centru, raza=raza1,
unghiul de īnceput este pi + unghi, unghiul final este 2 * pi).
Pentru a calcula unghiul alfa s-au parcurs următorii paşi:
unghi=arccos(alfa)=Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 * Atn(1)
Arcul de rază2
Pentru a desena arcul de rază2 se folosesc
următoarele instrucţiuni:
piesa.listaAfisare.AddItem ("se deseneaza arcul de raza2")
alfa = 1 - (raza4 * raza4) / (2 * raza2 * raza2)
unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 * Atn(1)
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza2, 0, pi - unghi)
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza2, pi + unghi, 2
* pi)
piesa.listaAfisare.AddItem ("se deseneaza arcul de raza2")
”afişează īn lista de afişare că se desenează arcul de rază2”
Pentru calcule se vor folosi aceleaşi valori pentru
raza2, raza4.
raza2 = (raza1 * 5) / 4
raza4 = (4 * raza3) / 3
„se calculează raza 2 pentru arcule 2 şi raza 4 pentru cercul 4”
Pentru a desena arcul vom avea nevoie de fapt
de două arcuri:
- un arc de la 0 la pi-unghi
- un arc de la pi+unghi la 2*pi
Se foloseşte comanda: Set arcobj=
ThisDrawing.ModelSpace.AddArc(centru, raza, unghiul de īnceput, unghiul
final)
Pentru arcul de la 0 la pi-unghi se consideră:
• se foloseşte acelaşi centru ca la arcul 1-
centru(0) = 0#: centru(1) = 0#: centru(2) = 0#
• cos(alfa)= alfa = 1 - (raza4 * raza4) / (2 * raza2
* raza2)
• unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 *
Atn(1) (se face arccos(alfa))
• unghiul de īnceput este 0
• unghiul final este pi -unghi
• pi = 3.14159265
• Set arcobj = ThisDrawing.ModelSpace.AddArc(centru,
raza2, 0, pi - unghi)
Pentru arcul de la pi+unghi la 2*pi se
consideră:
• Centrul:centru(0) = 0#: centru(1) = 0#: centru(2) =
0#
• cos(alfa)= (raza2 * raza2 + raza1 * raza1 - raza4 *
raza4) / (2 * raza2 * raza1)
• unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 *
Atn(1) (se face arccos(alfa))
• unghiul de īnceput este pi+unghi
• unghiul final este 2*pi
• pi = 3.14159265
• Set arcobj = ThisDrawing.ModelSpace.AddArc(centru,
raza2, pi + unghi, 2 * pi)
Pentru a calcula unghiul alfa s-au parcurs următorii paşi:
unghi=arccos(alfa)=Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 * Atn(1)
Arcul de rază 3
Pentru a desena arcul de rază3 se folosesc
următoarele instrucţiuni:
piesa.listaAfisare.AddItem ("se deseneaza arcul de raza3")
centru(0) = 0# - raza2: centru(1) = 0#: centru(2) = 0#
alfa = Sqr(3) / 2
unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 * Atn(1)
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza3, unghi, pi)
Set arcobj = ThisDrawing.ModelSpace.AddArc(centru, raza3, pi, 2 * pi -
unghi)
piesa.listaAfisare.AddItem ("se deseneaza arcul de raza3")
”afişează īn lista de afişare că se va desena arcul de rază3”
Pentru calcule se vor folosi aceleaşi valori pentru raza2 şi raza4.
raza2 = (raza1 * 5) / 4
raza4 = (4 * raza3) / 3
Pentru a desena arcul vom avea nevoie de fapt
de două arcuri:
- un arc de la unghi la pi
- un arc de la pi la 2 * pi - unghi
Se foloseşte comanda: Set arcobj=
ThisDrawing.ModelSpace.AddArc(centru, raza, unghiul de īnceput, unghiul
final)
Pentru arcul de la unghi la pi se consideră:
• Centrul: centru(0) = 0# - raza2: centru(1) = 0#:
centru(2) = 0#
• cos(alfa)= alfa = 1 - (raza4 * raza4) / (2 * raza2
* raza2)
• unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 *
Atn(1) (se face arccos(alfa))
• unghiul de īnceput este unghi
• unghiul final este pi
• pi = 3.14159265
• Set arcobj = ThisDrawing.ModelSpace.AddArc(centru,
raza3, unghi, pi)
Pentru arcul de la pi la 2 * pi - unghi se
consideră:
• Centrul:centru(0) = 0#: centru(1) = 0#: centru(2) =
0#
• cos(alfa)= (raza2 * raza2 + raza1 * raza1 - raza4 *
raza4) / (2 * raza2 * raza1)
• unghi = Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 *
Atn(1) (se face arccos(alfa))
• unghiul de īnceput este pi
• unghiul final este 2*pi -unghi
• pi = 3.14159265
• Set arcobj = ThisDrawing.ModelSpace.AddArc(centru,
raza3, pi, 2 * pi - unghi)
Triunghiul din figură este echilateral
unghi=arccos(alfa)=Atn(-alfa / Sqr(-alfa * alfa + 1)) + 2 * Atn(1)
Cercul 4 de rază 4
Pentru a desena cercul 4 de rază4 se folosesc
următoarele instrucţiuni:
piesa.listaAfisare.AddItem ("se deseneaza cercul 4 de raza4")
centru(0) = 0# - raza2: centru(1) = 0#: centru(2) = 0#
Set circleobj = ThisDrawing.ModelSpace.AddCircle(centru, raza4)
piesa.listaAfisare.AddItem ("se deseneaza cercul 4 de raza4")
”afişează īn lista de afişare că se va desena cercul 4 de rază4”
Pentru a desena un cerc se foloseşte:
Set circleobj = ThisDrawing.ModelSpace.AddCircle (centru, raza) :
- centrul este centru(0) = 0# - raza2: centru(1) =
0#: centru(2) = 0#
- raza=raza4
Se va defini circleobj ca AcadCircle (Dim circleobj As AcadCircle)
Polilinia
Pentru a desena polilinia se folosesc
următoarele instrucţiuni:
Dim punctstart(0 To 2) As Double
Dim punctfinal(0 To 2) As Double
Dim linie(0 To 2) As AcadEntity
piesa.listaAfisare.AddItem ("se deseneaza polilinia")
punctstart(0) = 0# - raza2 + 6 * raza3 / 7: punctstart(1) = 0# + raza3
/ 2: punctstart(2) = 0#
punctfinal(0) = 0# - raza2 + 7 * raza3 / 6: punctfinal(1) = 0# + raza3
/ 2: punctstart(2) = 0#
Set linie(0) = ThisDrawing.ModelSpace.AddLine(punctstart, punctfinal)
punctfinal(0) = 0# - raza2 + 7 * raza3 / 6: punctfinal(1) = 0# - raza3
/ 2: punctstart(2) = 0#
Set linie(1) = ThisDrawing.ModelSpace.AddLine(linie(0).EndPoint,
punctfinal)
punctfinal(0) = 0# - raza2 + 6 * raza3 / 7: punctfinal(1) = 0# - raza3
/ 2: punctstart(2) = 0#
Set linie(2) = ThisDrawing.ModelSpace.AddLine(linie(1).EndPoint,
punctfinal)
ThisDrawing.ModelSpace.AddLine(punctstart,
punctfinal) –desenează o linie īntre punctele punctstart şi punctfinal
Pentru a desena o linie se parcurg paşii:
- se vor defini: punctul de start, punctul final şi
linia ca vectori
de trei elemente, (componentele x, y şi z pentru puncte iar
polilinia
are trei linii).
- se desenează o linie īntre punctul de start şi
punctul final: Set
linie(0) = ThisDrawing.ModelSpace.AddLine(punctstart, punctfinal):
punctstart(0) = 0# - raza2 + 6 * raza3 / 7: punctstart(1) = 0# + raza3
/ 2: punctstart(2) = 0# şi punctfinal(0) = 0# - raza2 + 7 * raza3 / 6:
punctfinal(1) = 0# + raza3 / 2: punctstart(2) = 0#
- se desenează o linie īntre punctul final al liniei
precedente
(linie(0).EndPoint) şi noul punctul final: punctfinal(0) = 0# - raza2 +
7 * raza3 / 6: punctfinal(1) = 0# - raza3 / 2: punctstart(2) = 0# Set
linie(1) = ThisDrawing.ModelSpace.AddLine(linie(0).EndPoint,
punctfinal)
- se desenează o linie īntre punctul final al liniei
precedente
(linie(1).EndPoint) şi noul punctul final: punctfinal(0) = 0# - raza2 +
6 * raza3 / 7: punctfinal(1) = 0# - raza3 / 2: punctstart(2) = 0# Set
linie(2) = ThisDrawing.ModelSpace.AddLine(linie(1).EndPoint,
punctfinal)
Private Sub raza3_afterupdate()
piesa.listaAfisare.AddItem ("s-a introdus raza arcului 3")
piesa.listaAfisare.AddItem ("valoarea introdusa este raza3=" +
piesa.raza3.Value)
verificare_numar (piesa.raza1.Value)
x = piesa.raza1.Value / 3
y = piesa.raza1.Value / 5
If piesa.raza3.Value > x Then
mesaj = MsgBox("raza3 trebuie sa fie mai mica decat" + str(x), vbOKOnly
+ vbCritical, "atentie")
corect = False
ElseIf piesa.raza3.Value < y Then
mesaj = MsgBox("raza3 trebuie sa fie mai mare decat" +str(y), vbOKOnly
+ vbCritical, "atentie")
corect = False
Else
corect = True
piesa.listaAfisare.AddItem ("valoarea introdusa este corecta")
End If
End Sub
Private Sub raza1_AfterUpdate()
piesa.listaAfisare.AddItem ("s-a introdus raza arcului 1")
piesa.listaAfisare.AddItem ("valoarea introdusa este raza1=" +
piesa.raza1.Value)
verificare_numar (piesa.raza1.Value)
If corect = False Then
piesa.raza1.Value = ""
End If
End Sub
Private Sub verificare_numar(valoare)
If IsNumeric(valoare) = False Then
mesaj = MsgBox("ati introdus un caracter trebuie sa introduceti un
numar", vbOKOnly + vbCritical, "atentie")
corect = False
piesa.listaAfisare.AddItem ("valoare este incorecta nefiind o cifra")
ElseIf Val(valoare) <= 0 Then
mesaj = MsgBox("numarul introdus trebuie sa fie strict pozitiv",
vbOKOnly + vbCritical, "atentie")
corect = False
piesa.listaAfisare.AddItem ("valoarea introdusa este incorecta trebuie
o valoare mai mare ca zero")
Else
corect = True
piesa.listaAfisare.AddItem ("valoarea introdusa este corecta")
End If
End Sub
AfterUpdate este o metodă asociată casetelor de editare
din Visual
Basic, care execută o acţiune la terminarea editării textului īn aceste
casete.
Prima linie de cod din Private Sub raza1_afterupdate()
afişază
textul "s-a introdus raza arcului 1" īn caseta listă, apoi dacă
valoarea razei 1 este corectă īn lista de afişare apare mesajul
"valoarea introdusa este raza1=" + piesa.raza1.Value (īn loc de
piesa.raza1.Value apare valoarea razei1 introduse de la tastatură).
Prima linie de cod din Private Sub
raza3_afterupdate() afişază
textul "s-a introdus raza arcului 3" īn caseta listă, apoi dacă
valoarea razei 3 este corectă īn lista de afişare apare mesajul
"valoarea introdusa este raza3=" + piesa.raza3.Value (īn loc de
piesa.raza3.Value apare valoarea razei3 introduse de la tastatură)
Īn metoda Private Sub
raza3_afterupdate() mai apar nişte condiţii:
- dacă raza1/5<raza3 şi raza3<raza1/3 atunci
valoarea razei3 este corectă şi se va folosi pentru desenare
- dacă raza1/5>raza3 şi raza3>raza1/3 valoarea
razei 3 este
incorectă şi apar mesaje de tipul "raza3 trebuie sa fie mai mica decat
" +str(x), sau "raza3 trebuie sa fie mai mare decat " +str(y),
- str(x) afişază valoarea raza1/3
- str(y) afişază valoarea raza1/5
Īn cazul īn care o valoare este greşită dorim
să fim avertizaţi
aşa că se mai crează o funcţie verificare_numar(valoare). Acestă
funcţie ne avertizează dacă valoarea introdusă de la tastatură este un
caracter sau un număr negativ şi ne permite modificarea valorii razei
1. Dacă se introduce o valoare greşită atunci apare pe ecran un mesaj
de tipul "ati introdus un caracter trebuie sa introduceti un numar" sau
"numarul introdus trebuie sa fie strict pozitiv". Această funţie este
apelată īn funcţiile Private Sub raza1_afterupdate(): verificare_numar
(piesa.raza1.Value) şi Private Sub raza3_afterupdate():
verificare_numar (piesa.raza3.Value) (se verifică valorile razelor 1 şi
3)
Cele mai ok referate! www.referateok.ro |