Mulţumiri



Yüklə 1,64 Mb.
səhifə71/118
tarix03.01.2022
ölçüsü1,64 Mb.
#34196
1   ...   67   68   69   70   71   72   73   74   ...   118
NimicCDiscretSurface.AdunăCurbă(FamiliaDeCurbe fcOut, int nX, nY)

{

//prea laboriosă pentru a fi descrisă.

} //EndAdunăCurbă
NimicCDiscretSurface.CreazăCurbe(FamiliaDeCurbe fcOut, Real rPentruZ)

{

//y0



PentruFiecare(Întreg nI = 1; nI < nX; nI++)

Dacă ([nI, 0] > rPentruZ ŞI [nI + 1, 0] < rPentruZ SAU

[nI, 0] < rPentruZ ŞI [nI + 1, 0] > rPentruZ)



AdunăCurbă(fcOut, nI, 0);
//y max

PentruFiecare(Întreg nI = 1; nI < nX; nI++)

Dacă ([nI, nNrY] > rPentruZ ŞI [nI + 1, nNrY] < rPentruZ SAU

[nI, nNrY] < rPentruZ ŞI [nI + 1, nNrY] > rPentruZ)



AdunăCurbă(fcOut, nI, nNrY);
//x 0

PentruFiecare(Întreg nJ = 1; nJ < nY; nJ++)

Dacă ([0, nJ] > rPentruZ ŞI [0, nJ] < rPentruZ SAU

[0, nJ] < rPentruZ ŞI [0, nJ] > rPentruZ)



AdunăCurbă(fcOut, 0, nJ);
//x max

PentruFiecare(Întreg nJ = 1; nJ < nY; nJ++)

Dacă ([nNrX, nJ] > rPentruZ ŞI [nNrX, nJ] < rPentruZ SAU

[nNrX, nJ] < rPentruZ ŞI [nNrX, nJ] > rPentruZ)



AdunăCurbă(fcOut, nNrX, nJ);
//curbele închise interioare

PentruFiecare(Întreg nI = 2; nI < nX-1; nI++)

PentruFiecare(Întreg nJ = 2; nJ < nY-1; nJ++)

AdunăCurbă(fcOut, nI, nJ);

} //EndCreazăCurbe


NimicCDiscretSurface.CreazăToateCurbele( //crează toate curbele

FamiliaDeCurbe fcOut, //locul unde sunt stocate curbele

Real rZStep = 1.0, //pasul

Boolean bAuto = ADEVĂRAT, //dacă calculează automat cotele de start şi sfârşit

Real rZStart = 0.0, //cota de pornire

Real rZEnd = 10.0) //cota de oprire
{

Dacă(bAuto)

{

rZStart = pMax.rZ; //atribuie automat Z maxim



rZEnd = pMin.rZ; //atribuie automat Z minim

}

PentruFiecare(Real rZ = rZStart; rZ < rZEnd; rZ += rZStep)

CreazăCurbe(fcOut, rZ);

} //EndCreazăToateCurbele



NOTĂ: Detaliile de implementare a metodei AdunăCurbă() nu au fost expuse, deoarece metoda este destul de simplă, dar lungă; ea se bazează pe conceptele expuse la începutul capitolului.

3.2.2.Proiectarea unei familii de curbe pe suprafaţa discretă


Această metodă dă consistenţă şi generalitate algoritmului de conversie în curbe echipotenţiale şi deschide posibilităţi nelimitate pentru toţi algoritmii de generare a fişierului NC prin tehnici proiective (spirale, radiale, offset, morf etc).

Tehnica este destul de simplă şi este expusă în continuare:


NimicCDiscretSurface.ProiecteazăCurbă(Curbă cProiectează)

{

PentruFiecare(Întreg nI = 1; nI < c.nNr; nI++)

{

Punctp = cProiectează[nI];

p.rZ = IaDeLaR(p.rX, p.rY);

cProiectează.PuneLa(nI, p);

} //PentruFiecare

} //EndProiecteazăCurbă

NimicCDiscretSurface.ProiecteazăCurbe(FamiliaDeCurbe fcProiectează)

{

PentruFiecare(Întreg nI = 1; nI < c.nNr; nI++)



ProiecteazăCurbă(fcProiectează[nI])

} //EndProiecteazăCurbe


Notă: algoritmul expus proiectează doar noduri; în mod similar se poate descrie un algoritm care proiectează toate liniile, cu un anumit pas dat; un exemplu despre cele două familii de algoritmi, cel de conversie în curbe echipotenţiale a unei SD, după care proiectarea pe o altă SD, se prezintă în figura 5.3.


Figura 5.24 Exemplu de conversie echipotenţială şi proiecţie pe SD, cu EdgeCAM V3.0





3.2.3.Offset pe SD


O

Figura 5.25 Exemplificarea algoritmului de offset inteligent pe suprafaţa discretă. Procesări făcute pe repere importate din diferite sisteme CAD/CAM, pornind de la dreptunghi sau de la drepte paralele



ffsetul sau echidistanţarea unei curbe pe o SD este deosebit de utilă pentru generarea fişierelor NC de frezare cu rugozitate constantă (cea mai eficientă metodă de frezare). Algoritmul va fi prezentat în detaliu în subcapitolul “Calculul curbelor echirugozitate”. Câteva exemple ale conceptului se pot observa în următoarea figură, unde se prezintă, în nuanţe diferite, offsetarea pe SD a unui dreptunghi sau a două drepte paralele.

Yüklə 1,64 Mb.

Dostları ilə paylaş:
1   ...   67   68   69   70   71   72   73   74   ...   118




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin