Proiect PAC     
    Categoria: Referat
        Informatica     
    
             
    Descriere: 
      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       | 
    
    
       | 
   
  
    
  | 
   
  
    
	 
  
  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) 
 | 
   
  
    | Referat oferit de www.ReferateOk.ro | 
   
 
 |