Documente Academic
Documente Profesional
Documente Cultură
FACULTATEA DE MECANIC
Catedra de Tehnologia Construciilor de Maini
TEZA DE DOCTORAT
Metode de generare,
conversie, import, export,
analiz i fabricaie
optimizat a suprafeelor
discrete
Conductor tiinific :
1998
Mulumiri
Cuprins
1. Introducere....................................................................1
2. Stadiul actual.................................................................7
2.1. Introducere.............................................................................. 8
2.2. Evoluia metodelor de stocare.................................................9
2.2.1. Seturi de puncte..................................................................................9
Clas .................................................................................................33
Obiect................................................................................................33
Operator ...........................................................................................33
Lista cu parametri..............................................................................34
Indexul vectorilor ..............................................................................34
Enumerare ........................................................................................34
Algoritm.............................................................................................35
Cuvinte cheie.....................................................................................37
Comentariu........................................................................................37
Figura
3.11 Exemple de operatori solizi posibili ntre
diferite suprafee discrete................................................52
3.3.14. Clasa Masc.....................................................................................54
Plan orizontal.....................................................................................65
Plan nclinat ......................................................................................65
Funcie Z(x, y)...................................................................................66
Interpolarea prin seciuni...................................................................66
Figura
5.24 Exemplu de conversie echipotenial i
proiecie pe SD, cu EdgeCAM V3.0.....................................97
5.2.3. Offset pe SD......................................................................................98
Figura
5.28 Reprezentare cadru de srm i solid,
importat ca fiier STL, pentru verificare solid a frezrii
capturate din NCVerify....................................................110
5.3.3. Formatul CL ....................................................................................110
Figura
5.30 Export fiier NC cu modul FHTSP activat,
exemplificarea reducerii micrilor n avans rapid cu peste
95%................................................................................116
Figura 5.31 Alte exemplificri ale utilizrii TechnoCAM i
GNCPP............................................................................116
5.4. Concepte introduse.............................................................117
Figura
6.32 Convertirea n curbe de nivel. Curbele
echipoteniale (n b) sunt mai bombate, din cauza aplicrii
algoritmilor pe SDCS. Curbele de nivel sunt cele cu culoare
nchis (rou).................................................................124
6.3.2. Calculul seciunilor paralele n planul XY.........................................125
Figura
6.34 SD care stocheaz evoluia (n marime
absolut) a unghiului normalei cu planul orizontal, pentru
dou SD, i familii de curbe echinormale proiectate pe SDCS,
procesate din 10 n 10 grade...........................................128
Figura 6.35 Evoluia rugozitii n funcie de unghiul de
detecie a zonelor plane, pentru valori ale acestuia de 300,
450, 600, 750. Pasul pe Z i n planul XY este constant.
(EdgeCAM V3.0)..............................................................129
6.3.4. Calculul zonelor critice la frezarea seciunilor paralele n planul XY130
Figura
6.39 Evoluia rugozitii i a petei critice
(neatingerea rugozitii impuse) n funcie de unghiul
principal de frezare n planul XY. n aceste zone, pentru
atingerea rugozitii impuse este utilizat un ciclu echidistant
n direcie perpendicular...............................................134
Figura 6.40 Comparaie ntre dou metode de offset: cea n
2D (portocaliu) i cea culcat pe suprafa......................135
6.3.6. Calculul curbelor echirugozitate......................................................135
BIBLIOGRAFIE................................................................209
Concluzii
Concluzii
1. Introducere
- 1-
Concluzii
Concluzii
- 2-
Concluzii
Concluzii
- 3-
Concluzii
Concluzii
- 4-
Concluzii
Concluzii
- 5-
Concluzii
Concluzii
- 6-
Concluzii
Concluzii
2. Stadiul actual
- 7-
Concluzii
Concluzii
2.1. Introducere
Dat fiind complexitatea i varietatea tipodimensional, n cursul
anilor s-a ncercat ca n funcie de stadiul respectiv de evoluie al
aparatelor matematice, calculatoarelor, limbajelor de programare,
echipamentelor cu comenzi numerice, mainilor unelte, sculelor
achietoare, s se genereze diferite metode de descriere, stocare,
procesare, optimizare, verificare i prelucrare, n vederea fabricaiei
diferitelor repere complexe.
Se va ncerca doar prezentarea ntr-o manier evolutiv a
metodelor de stocare utilizate n descrierea reperelor sau efectuarea
analizelor, precum i a limbajelor de programare, pentru a justifica
construcia i utilizarea limbajului pseudocod ntrebuinat la expunerea
metodelor i tehnicilor folosite.
Va fi atins doar stadiul actual al evoluiei proiectrii i fabricrii
asistate n Romania i pe plan mondial.
Evoluia altor domenii, care au o influen i o implicaie mai puin
important, i care vor fi atinse doar tangenial (calculatoare,
echipamente cu comenzi numerice, maini unelte, scule achietoare,
pachete de plci, teoria sistemelor, inteligena artificial, automate
celulare, automate neuronale, automate moleculare, automate genetice,
teoria dezastrelor, comunicaii, sisteme de calitate, aparate de msur i
control, tribologie, mecanisme i organe de maini, dispozitive), va
rmne nediscutat.
- 8-
Concluzii
Concluzii
Utilizare:
la discretizri de date provenite de la maini de scanat, palpat sau
cartografiat, la reprezentri moleculare 3D n chimie, n anii 70 80.
Avantaje:
sunt foarte simplu de importat i exportat.
Dezavantaje:
inutilizabile n analiz i fabricaie, deoarece informaii auxiliare, ca
aceea de normal, sunt imposibil de obinut (pentru executarea
ofsetului);
sunt foarte dificil de interpretat i convertit n alte reprezentri.
Exemple:
Concluzii
Concluzii
analitice
Definiie:
Suprafeele i curbele analitice sunt acelea care pot fi descrise printrun singur set de ecuaii matematice (nu conin seturi de ecuaii pe
poriuni de curb sau suprafa descris).
Utilizare:
la descrierea obiectelor matematice simple (sfere, tori, paralelipipede,
conuri).
Avantaje:
sunt foarte precise (comparativ cu metodele de stocare discrete);
asigur precizie mare (teoretic infinit) la calcularea ariei, volumului,
perimetrului, existnd integrale directe pentru ecuaiile lor;
sunt compacte, necesitnd spaii de stocare sczute (de 10-100 ori
mai mici dect cele discrete).
Dezavantaje:
tipurile de repere descrise sunt foarte limitate;
importul i exportul este dificil, necesitnd resurse nsemnate n
scrierea convertoarelor;
suprafeele descrise sunt nesculpturale.
Exemple:
- 10 -
Concluzii
Concluzii
Utilizare:
pe scar larg n prezent, la definirea contururilor pentru strunjiri i
decupri prin electroeroziune, laser, jet de ap, jet de aer etc.Sunt
prezente n toate sistemele de proiectare i sunt suportate, n general,
cam de toate formatele de import export.
Avantaje:
sunt compacte, comparativ cu poliliniile;
sunt independente de toleran (stocare analitic).
Dezavantaje:
conversiile (importul, exportul) sunt relativ greu de executat;
calculele de arie, perimetru trebuie executate pentru fiecare tip de
segment n parte.
Utilizare:
pe scar larg n prezent, la definirea contururilor pentru strunjiri i
decupri prin electroeroziune, laser, jet de ap, jet de aer etc. Sunt
prezente n toate sistemele de proiectare i sunt suportate, n general,
cam de toate formatele de import export. Toate curbele i
suprafeele sunt reprezentate vizual utiliznd poliliniile.
Avantaje:
export i import simplu;
procesare simpl a perimetrului, ariei;
sunt generice, descriind orice geometrie sub o toleran
- 11 -
Concluzii
Concluzii
Dezavantaje:
necesit spaii mari de stocare;
sunt dependente de toleran;
Utilizare:
Descrierea primordial a reperelor cu geometrie extrudat simpl 2
D destinate frezrii (carcase, repere cu guri, repere turnate/ forjate).
Avantaje:
simplu de importat, exportat, procesat i stocat.
Dezavantaje:
geometriile descrise sunt simple, neoferind posibilitatea descrierii
volumelor sculpturale.
Exemple:
- 12 -
Concluzii
Concluzii
Utilizare:
este tipul principal de dat geometric existent n fiierele NC
destinate frezrii n 3 i mai multe axe. Este utilizat de toate sistemele
de fabricaie care suport mai mult de 2 axe. Pe parcursul acestei
teze se vor folosi doar curbele de tip polilinie.
Avantaje:
este suportat de toate formatele de import - export;
simplu de procesat i stocat;
simplu de reprezentat;
orice curb n spaiu poate fi convertit ntr-o polilinie, sub o toleran.
Dezavantaje:
sunt dependente de toleran;
necesit memorie nsemnat pentru stocare.
Exemple:
- 13 -
Concluzii
Concluzii
Utilizare:
sunt primele ncercri cu adevrat valoroase de a gsi o metod
unificat de a stoca i analiza solide. Sunt utilizate ntr-o multitudine
de sisteme de proiectare, fiind destul de uor de utilizat i
implementat.
Avantaje:
simplu de editat;
interferene corect detectate;
frezri n mai mult de 3 axe;
calcul precis al suprafeei i ariei.
Dezavantaje:
formate speciale de export i import;
pot fi descrie numai geometrii simple.
Exemple:
- 14 -
Concluzii
Concluzii
Utilizare:
n formate de export de nivel jos, ca DXF i STL;
n schimbul de informaii cu analizoare de elemente finite sau de
frontier;
n simulatoare de detectare a interferenei
materialului neprelucrat (verificare).
n cartografiere.
Avantaje:
foarte generale;
capabile s stocheze orice reprezentare;
simplu de importat i exportat;
simplu de procesat.
Dezavantaje:
foarte dificil de modificat;
dependente de toleran;
mari consumatoare de memorie.
Exemple:
- 15 -
sau
detectare
Concluzii
Concluzii
Utilizare:
este utilizat n produsele din anii 90 care execut diferite analize pe
solide, detecteaz foarte rapid interferene, solidific traiectorii venite
de la maini de palpat sau scanere 3D etc.
Avantaje:
-
Dezavantaje:
-
Exemple:
- 16 -
Concluzii
Concluzii
Utilizare:
Sunt folosite cvasitotal n toate sistemele de modelare moderne ca i
curbe i suprafee: spline, B-spline, Bzier, Hermite etc [ECAM],
[BKOS], [DFR], [IFMP], [LEO], [SAV].
Avantaje:
compacte la utilizarea memoriei;
foarte uor de editat i racordat.
Dezavantaje:
aparatele matemetice
rudimentare i greoaie.
de
analiz
- 17 -
optimizare
sunt
foarte
Concluzii
Concluzii
Exemple:
Utilizare:
Utilizat n sistemele evoluate de proiectare orientate pe solide AMD,
SolidEdge, Microstation, etc.
Avantaje:
faciliti de modelare extraordinare;
calcul precis al suprafeei i volumului;
faciltati bune pentru proiectarea parametric.
- 18 -
Concluzii
Concluzii
Dezavantaje:
lente pentru analize;
dificil de importat i exportat;
foarte complexe metode de vehiculare a bazelor de date.
Exemple:
Avantaje:
sunt foarte generice, pot stoca orice geometrii cu aceai uurin;
foarte simplu de analizat;
simplu de implementat;
- 19 -
Concluzii
Concluzii
Dezavantaje:
sunt dependente de toleran;
dificil de editat;
mari consumatoare de memorie;
imprecise n calcule care necisit rezultate foarte precise.
Avantaje:
precise (calcule de volum, perimetru, arie);
independente de toleran;
natural de editat;
suport foarte bun pentru proiectare parametric.
Dezavantaje:
dificil de implementat;
dificil de importat i exportat;
dificil i lent de analizat.
- 20 -
Concluzii
Concluzii
- 21 -
Concluzii
Concluzii
Utilizare:
La ora actual C++ este destinat produselor profesionale de nalt
performan uniplatform; pentru portare pe o alt platform acestea
necesit recompilare.
Java este destinat produselor soft multiplatform i este cvasitotal
prezent pe internet, dar codul generat este de cca 10 ori mai lent dect
cel generat de C++ sau Delphi.
ADA i FORTRAN sunt utilizate n mainframeuri i aplicaii din
domeniul militar, datorit numrului imens de librrii scrise pentru ele,
stabilitii compilatoarelor i verificarea tipului strict de dat.
Delphi (Object Pascal) este destinat instruirii n tehnici de
programare i tehnici de implementare rapid a aplicaiilor (Rapid
Application Development RAD).
- 22 -
Concluzii
Concluzii
- 23 -
Concluzii
Concluzii
- 24 -
Concluzii
Concluzii
- 25 -
Concluzii
Concluzii
- 26 -
Concluzii
Concluzii
- 27 -
Concluzii
Concluzii
2.5. Concluzii
Avnd n vedere cele expuse, se poate observa c, n domeniul
stocrii, comunicrii (importului, exportului, DNC), vizualizrii i simulrii,
lucrurile sunt aproape nchise, existnd colective i produse foarte
performante. Singurele locuri cu adevrat deschise mbuntirilor sunt:
generarea optimizat a codului NC:
analizarea i calculul zonelor neprelucrate din cauza interferenelor
scul - semifabricat;
generarea codului, cu condiia de frezare la rugozitate constant ceea ce duce la reducerea dramatic a timpilor de prelucrare.
detecia pentru diferite cicluri clasice (echidistante n x, y, z) a zonelor
critice, unde nu se poate asigura rugozitatea impus;
analiza i compensarea uzurilor;
analiza i compensarea dilatrilor;
generarea codului NC n curbe cu ct mai puine inflexiuni - pentru a
preveni oprirea i schimbarea sensului de rotaie a motoarelor mainii
unelte, ceea ce duce la ocuri, vibraii i previne utilizarea eficient a
traseelor de scul generate la maini unelte cu avans rapid;
reducerea micrilor rapide - prin optimizarea traiectoriilor n ciclurile
de finisare, ceea ce duce la avansuri constante i timpi mai sczui;
luarea automat a deciziei privind care tip de frezare este
recomandat pentru un anumit tip de reper (n funcie de gabarit,
nclinaii, inflexiuni, racordri);
deciderea, n cazul existenei mai multor scule achietoare, a setului
optim de scule necesar n vederea frezrii reperului dat, la rugozitatea
cerut, ntr-un timp ct mai redus;
simulri inteligente: (menin n tot timpul generrii fiierului NC
starea de frezare a semifabricatului).
Aceste simulri trebuie s asigure citirea nivelelor de siguran pentru
micri n avans rapid, ct mai reale, deci ct mai joase, optimiznd
timpul n micri rapide;
S se poat cunoate n fiecare moment cantitatea de material care
este prelevat n direcie radial i frontal, oferind oportunitatea de a
pilota inteligent avansul, ncrcnd ct mai uniform scula i maina
unealt cu solicitri i scznd timpii necesari prelucrrii unui reper;
citirea i convertirea ntr-un format utilizabil a datelor provenite de
la maini de palpat, scanat i cartografiat;
citirea i convertirea ntr-un format utilizabil a datelor provenite
din alte sisteme destinate proiectrii i fabricaiei, n format CL sau
NC;
- 28 -
Concluzii
Concluzii
- 29 -
Concluzii
Concluzii
3. Metode de
notaie i clase
utilizate
- 30 -
Concluzii
Concluzii
3.1. Introducere
Analiznd stadiul actual i observnd evoluia exploziv a tehnicilor
de stocare folosite n decursul vremii, nu s-a ncercat crearea unei noi
metode de stocare, ci folosirea uneia din alte domenii, artndu-se n
decursul lucrrii imensul potenial pe care l posed n domeniul
fabricaiei.
Metoda de stocare pentru SD utilizat de ctre autor se ncadreaz
n suprafee discrete demulabile. Aceast metod discret se regsete
ntr-o multitudine de alte domenii, ca metod de stocare, vizualizare i
analiz, utilizat n general pentru stocarea i procesarea imaginilor,
hrilor, propagarea dezastrelor (incendii, taifune) n funcie de
geometria terenului, la simularea solid a frezrii n 2, 2, 3 axe [LWRK],
procesare de semnal i zgomot bidimensional.
Din cauza problematicii destul de complexe care se dorete a fi
rezolvat, vor fi prezentate i alte metode de stocare (clase) folosite n
decursul tezei; acestea sunt: irul de caractere, fiierul, ntregul,
booleanul, realul, punctul, curba, curbe superioare, plasa, suprafee
superioare, masca, suprafaa discret, coleciile.
Toate clasele vor fi prezentate ntr-un mod organizat, atandu-li-se
att operaiile ct i metodele i funciile asociate, ncercndu-se n
prima parte expunerea unui limbaj pseudocod rudimentar i simplu de
neles, orientat pe obiecte.
Nu se dorete o prezentare exhaustiv a acestor clase, ci doar
crearea unui set decent i relativ bogat de tehnici de operare pe clasa
respectiv, tipurile enumerate fiind larg studiate i implementate n toate
sistemele de proiectare i fabricaie moderne.
La sfritul capitolului, n subcapitolul Concepte introduse, se va
ncerca sintetizarea n pseudocod a celor discutate pe parcursul
capitolului. De asemenea, nu se vor expune toate metodele i funciile
triviale, deoarece aceasta ar duce la ncrarea nejustificat a tezei.
- 31 -
Concluzii
Concluzii
din
librriile
standard
(cu
excepia
celor
metode virtuale,
- 32 -
Concluzii
Concluzii
3.2.1. Clas
Clasele sunt scrise ngroat i verde nchis i au asociat
obligatoriu o prescurtare ct mai sugestiv, format din una sau mai
multe caractere scrise cu liter mic. Prefixarea trebuie specificat
numai prima oar cnd clasa este definit.
Clasele ncapsuleaz (conin) atribute (set de date), operatori,
metode. Clasele sunt la ora actual cele mai nalte forme de stocare a
informaiilor.
Ele se pot moteni, pot asigura
polimorfism, prototipizare, abstractizare etc.
mecanisme
evoluate
de
Exemple:
Real prefix: r; Intreg prefix: n; Curb prefix: c; Punct prefix: p;
3.2.2. Obiect
Obiectele sunt instanele (de tipul) unei clase ce sunt declarate n
felul urmtor: TipClasa prefixclasaNumeObiect; numele obiectului este
prefixat obligatoriu de prescurtarea clasei respective (notaia ungar).
Sunt scrise normal.
Exemple:
Real rTolerana = 0.0, rRugozitate;
ntreg nIndex = 0, nPuncteCorectate(0);
Punct pTest(0.0, 0.0, 1.0), pMax = {1.0, 1.0, 10.0}, pMin;
Curb cPtrat;
n cazul mai multor obiecte de un anumit tip se folosete un
operator , ca separator. Obiectele pot fi iniializate n timpul declarrii,
folosind operatorul de atribuire = sau un constructor specific, utiliznd
operatorul (), cazul nPuncteCorectate, pTest.
3.2.3. Operator
Operatorii sunt setul de operaii posibile definit pe Clasa
respectiv. Ei sunt utilizai n scopul scrierii expresiilor ntr-un limbaj mai
apropiat de cel natural. Cteva exemple de utilizare a operatorilor sunt
descrise n continuare:
rA = rB + rC cu Atribuie(rA, Sum(rB, rC))
- 33 -
Concluzii
Concluzii
Exemple:
+, -, *, /, &, |, %, <, >, =, ==, +=, -=, *=, /=, &=, |=, %=, I, SAU, !, (),
[];
Exemple:
ntreg Max(ntreg n0, n1);
NimicAnalizeaz(); //lista este vid, dar marcat, pentru a face diferena fa de un obiect.
Exemple:
Nimic fcCurb[2].Rotunjete(ntreg nIndex);
3.2.6. Enumerare
Enumerrile sunt utilizate fr operatori speciali, n cazul cnd
este vorba de un element, sau folosind operatorul {} (paranteze
acolade), dac sunt mai multe elemente.
Exemple:
//enumerare de instruciuni
Dac(condiie)
{
rA = rB + rC; //instruciunea 1;
rSum ++; //echivalent cu rSum = rSum +1; instruciunea 2;
} //Dac
Altfel
rSum --; //echivalent cu rSum = rSum 1; instruciunea 1;
//enumerare de reali
Punct pMax = {1.0, 12.0, 10.0};
- 34 -
Concluzii
Concluzii
3.2.7. Algoritm
Algoritmii (aparate matematice, proceduri, rutine, funcii, metode)
se vor regsi n dou locuri, sub form de funcii (n cazul n care nu
sunt coninui ntr-un corp de clas) sau metode (n cazul n care se
gsesc ncapsulai n interiorul unei clase).
Algoritmii sunt blocuri de cod care pot returna un obiect dintr-o
clas anume, sau un obiect din clasa special Nimic, dac nu returneaz
nimic (numii proceduri n unele limbaje).
Algoritmii sunt scrii subliniat n culoarea rou nchis i suplimentar
trebuiesc nsoii de lista de obiecte care trebuiesc transmise, scris
folosind operatorul () (ntre paranteze rotunde). n cazul cnd aceast
list este vid, trebuie chemat cu parantez rotund deschis, urmat
de parantez nchis, pentru a face distincia ntre algoritmi i obiecte.
Algoritmii pot s aib unii parametri iniializai n momentul
definiiei, ceea ce nseamn c urmtoarele chemri ale aceluiai
algoritm EsteApropiat() sunt valide, vor fi interpretate i vor avea ca
rezultat, ca n exemplul urmtor:
Boolean EsteApropiat(Real r0 = 0.0, r1= 0.0, rToleran = 1e-10)
{
Dac(r0 r1 < rToleran SAU r1 r0 < rToleran) //echivalent Abs(r1 r0) < rTol
ntoarce(ADEVRAT);
Altfel
ntoarce(FALSE);
} //EsteApropiat
Utilizri posibile:
Chemare
Interpretare
EsteApropiat(10.0,
11.0, 2.0)
EsteApropiat(10.0,
11.0)
EsteApropiat(3.0)
Rezultat
- 35 -
Concluzii
Concluzii
3.2.7.1.
Funcii
Exemple:
NimicAnalizeaz();
Real Max(Real rA, Real rB);
Punct Max(Punct rA, Punct rB);
3.2.7.2.
1.
Funcii speciale
Dac i Dac-Altfel
2.
PentruFiecare
3.
PnCnd
4.
observa
PnCnd(condiie)
ntoarce i ntoarce()
PentruFiecare(_,
- 36 -
Concluzii
Concluzii
3.2.7.3.
Metode
Exemple:
Nimic dsPies.Analizeaz(); Real cCurb.PuneLa(ntreg nIndex, Punct
pPunct);
Clasa
3.2.8.2.
DerivatDin
DerivatDin
(cuvnt
cheie)
comportamentului unei clase printe.
3.2.8.3.
nseamn
motenirea
Operator
3.2.8.4.
Enumerare
3.2.9. Comentariu
Comentariile sunt clarificri ale pseudocodului, sunt scrise italic i
sunt prefixate de //.
Exemple:
//acesta este un comentariu
n interiorul comentariilor, n cazul n care se doresc a fi specificate
diferite valori pentru un coeficient, acestea vor fi specificate n felul
urmtor:
- 37 -
Concluzii
Concluzii
- 38 -
Concluzii
Concluzii
Operatori:
O Expresi Explicaii
p
e
=
+
*
/
!
&
|
%
I
SAU
%%
>
<
C
C
C
C
C
C
C
C
C
C
C
C
C
C
=
=
=
=
=
=
=
=
=
=
=
=
=
=
A
A + B
A B
A * B
A / B
!A
A & B
A | B
A % B
A I B
A SAU B
A %% B
A > B
A < B
Egalitatea 5 = 5
Adunarea 5+3= 8
Scderea 53= 2
nmulirea 5*3=15
nprirea 5/3= 1
NEGAIA !5 = 2;!101 =010
I logic 5&3= 1; 101&110=001
SAU logic 5|3= 7; 101&110=111
SAU exclusiv5%3= 6; 101&110=110
C = (A&B>0)?1:0
C = (A|B>0)?1:0
C = (A%B>0)?1:0
C = (A>B)?1:0
C = (A<B)?1:0
O
p
Expres
ie
Explica
ii
==
+=
-=
*=
/=
!=
&=
|=
%=
INT
MIN
MAX
>=
<=
C
C
C
C
C
C
C
C
C
C
C
C
C
C
(C=A)?1:0;
C = C + A
C = C A
C = C * A
C = C / A
C = !A
C = C & A
C = C | A
C = C % A
INT 4.5 =4
C = MIN(A,C)
C = MAX(A,C)
C=(A>=B)?1:0
C=(A<=B)?1:0
== A
+= A
-= A
*= A
/= A
!= A
&= A
|= A
%= A
INT rA
MIN A
MAX A
= A>=B
= A<=B
Metode:
NimicMin (ntreg nA, nB); //ntoarce minimul dintre valorile nA i nB
NimicMax (ntreg nA, nB); //ntoarce maximul dintre valorile nA i nB
NimicAbs (ntreg nA); //ntoarce valoarea absolut
Funcii asociate:
ntreg Min (ntreg nA, nB); //ntoarce minimul dintre valorile nA i nB
ntreg Max (ntreg nA, nB); //ntoarce maximul dintre valorile nA i nB
ntreg Abs (ntreg nA); //ntoarce valoarea absolut
Prefixare: n;
Exemple:
nNumrPuncte numrul de puncte;
- 39 -
Concluzii
Concluzii
Operatori:
Toi operatorii posibili pe Clasa ntreg sunt aplicabili specializrii (clasei
derivate) Boolean; evident, nu toi i au sensul.
Metode:
Toate metodele de la Clasa ntreg sunt motenite.
Prefixare: b;
Exemple:
bStart variabila boolean Start;
Operatori:
Op Expres
ie
Explicaii
Op
.
Expresie
Explicaii
=
+
*
/
C
C
C
C
C
>
<
C = A > B
C = A < B
==
+=
-=
*=
/=
Real
min
max
>=
<=
C
C
C
C
C
C
C
C
C
C
(C=A)?1.0:0.0
C = C + A
C = C A
C = C * A
C = C / A
4.0 = real 4
C = min(A,C)
C = max(A,C)
(A>=B)?1.0:0.0
(A<=B)?1.0:0.0
=
=
=
=
=
A
A
A
A
A
*
/
B
B
B
B
C = (A>B)?1.0:0.0
C = (A<B)?1.0:0.0
Metode:
NimicMin (Real rA, rB); //ntoarce minimul dintre valorile rA i rB
NimicMax (Real rA, rB); //ntoarce maximul dintre valorile rA i rB
NimicMorf(Real rA, rB, rP = 0.5); //ntoarce rA * rP + rB * (1.0 - rP)
NimicAbs (Real rA); //ntoarce valoarea absolut
Funcii asociate:
Real Min (Real rA, rB); //ntoarce minimul dintre valorile rA i rB
Real Max (Real rA, rB); //ntoarce maximul dintre valorile rA i rB
Real Morf(Real rA, rB, rP = 0.5); //ntoarce rA * rP + rB * (1.0 - rP)
Real Abs (Real rA); //ntoarce valoarea absolut
- 40 -
== A
+= A
-= A
*= A
/= A
real nA
min A
max A
= A>=B
= A<=B
Concluzii
Concluzii
Prefixare: r;
Exemple:
rMin, rMax valorile minim i maxim;
Operatori:
Pe clasa Punct se aplic exact aceleai tipuri de operaii ca i la
Clasa Real, corespunztor fiecrui membru rX, rY, rZ.
Pentru a da consisten se implementeaz operaiile cu scalari de
tip real sau ntreg, care pot substitui coordonatele unui punct, spre
exemplu:
pP0(2.0); //pP0.rX = 2.00; pP0.rY = 2.00; pP0.rZ = 2.00; Iniializare
pP0 = 0.0; //pP0.rX = 0.00; pP0.rY = 0.00; pP0.rZ = 0.00; Iniializare
pP0(1.0, 3.9,-1.2); //pP0.rX = 2.00; pP0.rY = 3.90; pP0.rZ =-1.20; Iniializare
pP0 = {2.0, 1.9,-1.2}; //pP0.rX = 2.00; pP0.rY = 1.90; pP0.rZ =-1.20; Iniializare
pP1 = 2.0 * pP0; //pP1.rX = 4.00; pP1.rY = 3.80; pP1.rZ =-2.40; nmulire scalar
pP1*= pP0; //pP1.rX = 8.00; pP1.rY = 7.22; pP1.rZ = 2.88; nmulire point
pP0/= 2.0; //pP0.rX = 1.00; pP0.rY = 0.95; pP0.rZ =-0.60; mprire
pP1 = max(pP0, 5.0); //pP1.rX = 8.00; pP1.rY = 7.22; pP1.rZ = 5.00; Similar pP1 MAX 5
pP0 min 0.0; //pP0.rX = 0.00; pP0.rY = 0.00; pP0.rZ =-0.60; Op. MIN cu scalar.
pP0=morph(pP0,pP1,0.5); //pP0.rX = 4.00; pP0.rY = 3.61; pP0.rZ = 2.20; funcia morph.
Metode:
NimicMin (Punct pA, pB); //ntoarce minimul dintre valorile pA i pB
NimicMax (Punct pA, pB); //ntoarce maximul dintre valorile pA i pB
NimicMorf(Punct pA, pB, pP = 0.5); //ntoarce pA * pP + pB * (1.0 - pP)
NimicAbs (Punct pA); //ntoarce valoarea absolut
NimicRotX(Punct pRot, Real rUnghiDeg); //rotaia n jurul lui X
NimicRotY(Punct pRot, Real rUnghiDeg); //rotaia n jurul lui Y
NimicRotZ(Punct pRot, Real rUnghiDeg); //rotaia n jurul lui Z
- 41 -
Concluzii
Concluzii
Funcii asociate:
Punct Min (Punct pA, pB); //ntoarce minimul dintre valorile pA i pB
Punct Max (Punct pA, pB); //ntoarce maximul dintre valorile pA i pB
Punct Morf(Punct pA, pB, pP = 0.5); //ntoarce pA * pP + pB * (1.0 - pP)
Punct Abs (Punct pA); //ntoarce valoarea absolut
Punct RotX(Punct p, pRot, Real rUnghiDeg); //rotaia n jurul lui X
Punct RotY(Punct p, pRot, Real rUnghiDeg); //rotaia n jurul lui Y
Punct RotZ(Punct p, pRot, Real rUnghiDeg); //rotaia n jurul lui Z
Punct Scalare(Punct p, pScalare, Real rFactorScalare); //scalarea fa de un punct
Punct Translaie(Punct p, pTranslaie); //scalarea fa de un punct
Prefixare: p;
Exemple:
pMin, pMax punctul minim i maxim;
p0.rX - valoarea cotei x din punctul 0;
Prefixare: str;
Exemple:
strMesaj = Acesta este un set de caractere;
- 42 -
Concluzii
Concluzii
Prefixare: bv;
- 43 -
Concluzii
Concluzii
Operatori:
Operatorii specifici clasei Curb sunt cei de la clasa
BazaVectorial; orice operaie care conine ca parametru un scalar sau
un punct poate fi definit pe o colecie de puncte.
Suplimentar se pot imagina operatorii +, +=, care adun la lista de
puncte un punct nou sau o list nou de puncte. Totui, aceast facilitate
nu va fi folosit, datorit necesitii de a fi consecvent n folosirea
operatorilor, lsndu-i pentru transformrile datelor n maniera folosit la
clasele real, punct.
Metode:
Metodele descrise sunt cele elementare, de adunare, modificare i
tergere a punctelor, precum i cele de schimbare de sens, interogare
despre sens, care i au rostul doar n cazul curbelor nchise.
Punct Operator[] (ntreg nNr); //ntoarce punctul numrul nNr = [1..nMax]
Punct Operator[] (Real rT); //ntoarce punctul normnd curba rT = [0.0..1.0]
Punct Operator[] (ntreg nNr, Real rT); //ntoarce punctul normnd elementul nNr
NimicPuneLa(ntreg nNr, Punct p); //seteaz punctul numrul nNr = [1..nMax]
Punct Adun(Punct p); //adun un punct
Punct Adun(ntreg nNr, Curb c); //adun o curb la poziia dat de nNr
Punct Adun(Curb c); //adun o curb la sfrit
Punct Del(ntreg nNr); //terge punctul numrul nNr = [1..nMax]
NimicSchimbSensul(); //schimb sensul de parcurgere al curbei
NimicFTrigonometric(); //face sensul de parcurs al curbei n sens trig.
NimicFTrigonometric(); //face sensul de parcurs al curbei n sens trig.
Boolean EstenSensTrig(); //ntoarce ADEVRAT daca-i n sens trig.
Boolean EstenSensOrar(); //ntoarce ADEVRAT daca-i n sens orar
- 44 -
Concluzii
Concluzii
Funcii asociate:
Nu exist nc.
Prefixare:
c;
Exemple:
cBoundaries.nNr numrul de puncte de pe curbe care reprezint
dreptunghiul nconjurtor;
cTemp.rMax.rY valoarea Y a punctului maxim de pe curba Temp;
n general, curbele nu se folosesc singure dect n cazul particular
al generrii de suprafee ca i curbe directoare sau generatoare. Sunt de
preferat coleciile (familii) de curbe, care sunt mult mai puternice din
punct de vedere al reprezentrii. Spre exemplu, n cazul n care se
doresc locuri critice sau trasee de scule n care trebuie alternate micri
rapide cu cele n avans de lucru, sau scule de geometrii diferite, curbele
singure nu sunt destul de bogate n informaia coninut pentru a putea
reprezenta pertinent aceste tipuri de date, care conin discontinuiti
geometrice sau informaii auxiliare (tehnologice, geometrie de cap de
scul etc.).
Concluzii
Concluzii
Operatori:
Operatorii specifici clasei Plas sunt cei de la Clasa
BazaVectorial. Orice operaie care conine ca parametru un scalar sau
un punct poate fi definit pe o colecie de puncte de tip plas (mesh
[ACAD]).
Metode:
Metodele descrise sunt cele elementare, de adunare, modificare i
tergere a punctelor, precum i cele de schimbare de sens interogare
despre sens, care i au sensul doar n cazul curbelor nchise.
Punct Operator[] (ntreg nU, nV); //ntoarce pt. nU=[1..nNrU], nV =[1..nNrV]
Punct Operator[] (Real rU, rV); //ntoarce nomnd plasa rU,rV = [0.0..1.0]
Punct Operator[] (ntreg nU, nV, Real rU, rV); //normeaz elem. NU, nV
NimicPuneLa(ntreg nU, nV, Punct p); //seteaz punctul de la nU, nV
NimicSchimbSensul(Boolean bU, bV); //schimb sensul de parcurgere al plasei
Curb IaDeLaXY(ntreg nPlasa, Real rX, rY); //proiecteaz i returnez o list cu pt.
FamiliaDeCurbe IaDeLaU(Real rV); //convertete n f.curb pt rV
FamiliaDeCurbe IaDeLaV(Real rU); //convertete n f.curb pt rU
FamiliaDeCurbe IaDeLaX(Real rX); //convertete n f.curb pt rX
FamiliaDeCurbe IaDeLaY(Real rY); //convertete n f.curb pt rY
FamiliaDeCurbe IaDeLaZ(Real rZ); //convertete n f.curb pt rZ
- 46 -
Concluzii
Concluzii
Funcii asociate:
Nu exist nc.
Prefixare:
m;
Exemple:
mAnalitic.nNrU numrul de puncte n direcia U de pe plasa Analitic;
mTemp.Put(nU, nV, pPunct) pune pe plasa Temp la punctul de
coordonate nU, nV valoarea pPunct.
Concluzii
Concluzii
Prefixare:
ss;
Exemple:
ssOffset.nNrU numrul de puncte n direcia U de pe plasa Offset;
- 48 -
Concluzii
Concluzii
Concluzii
Concluzii
Prefixare:
sc;
Exemple:
scSferic.rR raza capului de scul Sferic;
Variabile:
ntreg nX; //numrul de puncte din matrice n direcia X
ntreg nY; //numrul de puncte din matrice n direcia Y
Real rStep; //pasul reprezentrii
Metode:
Real IndexnRealPtX(ntreg nX); //conversia din index in real pe X
Real IndexnRealPtY(ntreg nY); //conversia din index in real pe Y
ntreg RealnIndexPtX(Real nX); //conversia din real n index pe X
ntreg RealnIndexPtY(Real nY); //conversia din real n index pe Y
Prefixare:
Nu exist obiecte direct derivate !
Concluzii
Concluzii
Operatori:
operator +, -, *, /, +=, -=, *=, /=, =, MAX, MIN, ADD, SUB, MULTIPLY, DIVIDE, MORPH, FILSUS, FILJOS,
ECDSUS, ECDJOS;
Metode:
NimicPuneLa(ntreg nX, ntreg nY, Real rVal, ntreg nMetoda = PM_NONE, Real rMorph = 0.5);
NimicPuneLa(Real rX, Real rY, Real rVal, ntreg nMetoda = PM_NONE, Real rMorph = 0.5);
Real Operator[] (ntreg nX, ntreg nY); //citete un punct
Real Operator[] (Real rX, Real rY); //citete un punct
NimicPuneLaAll(Real rValoare); //seteaza toat suprafaa
Prefixare:
sd;
Exemple:
sdReper, sdCorecie
suprafeei de corecie.
suprafeele
discrete
ale
reperului
ale
- 51 -
Concluzii
Concluzii
Fi
gura 3.11 Exemple de operatori solizi posibili ntre diferite suprafee
discrete
Se prezint n continuare cteva operaii solide ntre dou SD.
Exemple despre cum arat sdRezultante se pot observa n figura 3.2,
unde s-au reprezentat ntr-o seciune cele trei SD: cu negru
sdRezultat, cu rou sdNou, cu verde sdVeche.
Enumerare ModulDePunere //enumerarea modurilor de combinare solid a SD i mtilor
{
PM_NONE, //sdRezultat = sdNou;
PM_MAX, //sdRezultat = max(sdVeche, sdNou);
PM_MIN, //sdRezultat = min(sdVeche, sdNou);
PM_ADD, //sdRezultat = sdVeche + sdNou;
PM_SUB, //sdRezultat = sdVeche - sdNou;
PM_MULTIPLY, //sdRezultat = sdVeche * sdNou;
PM_DIVIDE, //sdRezultat = sdVeche / sdNou;
PM_MORPH, //sdRezultat = morph(sdVeche, sdNou, rMorfValue);
PM_FILSUS, //sdRezultat = offset(offset(sdVeche, sdHead, bSus), sdHead, bJos);
PM_FILJOS, //sdRezultat = offset(offset(sdVeche, sdHead, bJos), sdHead, bSus);
- 52 -
Concluzii
Concluzii
Concluzii
Concluzii
Operatori:
Cei de la BazVectorial, pentru modificarea pMin, pMax, deci
scalri i translaii.
De asemenea, operatori noi pentru operaii cu mti: AND (Fig.3.2
a), OR (Fig.3.2 b), XOR (Fig.3.2 c), SUB (Fig.3.2 d,e), NOT (Fig.3.2 f);
- 54 -
Concluzii
Concluzii
Metode:
Sunt cele de citire i scriere.
NimicPuneLa(ntreg nX, ntreg nY, Boolean bVal, ntreg nMetoda = PM_NONE);
//pune un bool
Real Operator[] (ntreg nX, ntreg nY); //citete un bool
NimicPuneLa(Real rX, Real rY, Boolean bVal, ntreg nMetoda = PM_NONE); //pune un bool
Real Operator[] (Real rX, Real rY); //citete un bool
NimicPuneLaAll(Boolean bValoare); //seteaz toat suprafaa
NimicRevert(); //schimb toate valorile
Prefixare:
sc;
Exemple:
sdReper.m, sdVrfScul.m masca suprafeei discrete a reperului i a
vrfului sculei;
sdContact.m.Get(nX, nY), - masca SD a suprafeei de contact i
interogarea acesteia despre starea de adevrat sau fals a punctului de
coordonate nX, nY;
Fi
gura 3.12 Metode de combinare a mtilor
- 55 -
Concluzii
Concluzii
3.3.15. Coleciile
Coleciile sunt seturi de obiecte derivate din aceeai clas stocate
mpreun. Accesul la un element dintr-o colecie se face cu ajutorul
operatorul [], care va returna un element din tipul stocat n colecia
respectiv.
Se poate observa imediat c: curba este o colecie de obiecte de tip
Punct, suprafaa demulabil este o colecie de Reali, irul de caractere
este o colecie de ntregi etc.
Prefixare:
f + prefixul clasei din colecie; exceptnd cazurile de prefixare
discutate
Exemple:
fcAnaliz[3].Deseneaz()
curbe fcAnaliz.
- 56 -
Concluzii
Concluzii
- 57 -
Concluzii
Concluzii
- 58 -
Concluzii
Concluzii
- 59 -
Concluzii
Concluzii
- 60 -
Concluzii
Concluzii
3.5. Concluzii
n acest capitol s-a dorit prezentarea unitar a modului de
organizare i structurare a datelor, algoritmilor i aparatelor matematice.
Nu s-a folosit nici o metod clasic descris n manualele de prezentare a
limbajelor orientate pe obiecte ca Java [JAV], Pascal [PAS], C++[CPP],
deoarece folosind o metod clasic de structurare, prezentarea devine
fie prea complex, fie prea sumar.
Pe parcursul lucrrii se va ncerca structurarea conceptelor
descrise, ntr-un limbaj de tip pseudocod orientat pe obiecte, asemntor
cu C++ sau Java, sintaxa nefiind asemntoare n totalitate. Scopul
principal al acestei structurri este acela de a fi succint, flexibil i
sugestiv.
La sfrsitul fiecrui capitol se vor sintetiza n acest limbaj pur
matematic i algoritmic conceptele studiate n capitolul respectiv.
Analiznd listingul se poate observa c, dei succint enumerate, clasele
elementare Intreg, Boolean, Real i Punct sunt tratate destul de
consistent, permindu-se o multitudine de operatori pe tipul respectiv.
Diferenele fa de C++ i Java sunt:
contoarele sunt bazate pe numerotaia natural ncepnd de la 1, nu
de la 0;
cuvintele cheie au fost traduse din englez;
metodele i funciile sunt subliniate i scrise cu rou nchis;
toate obiectele trebuiesc prefixate cu prefixul tipului de dat pe care-l
reprezint;
funciile, metodele i variabilele triviale s-ar putea s nu fie
comentate;
pentru simplicitate nu s-a implementat tipul pointer sau adres;
i
b
r
p
bv
c, cs
l, ls
bd
s
m
f
- 61 -
Concluzii
SetDeCaractere
Concluzii
str
- 62 -
Concluzii
Concluzii
4. Metode de
generare i
modelare
- 63 -
Concluzii
Concluzii
4.1. Introducere
n acest capitol se vor prezenta pe larg cteva metode care stau la
baza generrii SD (o descriere a tuturor metodelor se poate gsi n
[DM01 11, DMW01 - 04]). De asemenea, se vor prezenta diferite
metode de conversie din alte tipuri de dat, specifice importului din alte
sisteme de proiectare i fabricaie, date importate n format plas
(suprafee discrete patrulatere) sau list cu triunghiuri (suprafee
discrete faetate) [DM 12 - 15], forma cea mai simpl de export a
solidelor.
De asemenea, se vor prezenta i defini filtrele, se vor prezenta i
exemplifica scopul i utilitatea lor n reducerea zgomotului introdus n
diferii pai de conversie i analiz, sau datorat diferitelor inflexiuni
particulare ale suprafeei date spre conversie i analiz.
Se va descrie un set de algoritmi de modelare: cel al calculului
nfurtorii i racordrii statice i dinamice, care nu sunt specifici numai
modelrii, ci i calculului suprafeei corecie de scul i a suprafeei de
contact, pentru scule generice de orice geometrie; se va face
particularizarea specific capetelor de frez, ca fiind suprafee de
revoluie.
De asemenea, se vor prezenta, n premier, trei algoritmi noi
concepui de ctre autor:
algoritmul de import i conversie a seturilor de puncte i curbe
furnizate fr nici o regul;
algoritmul de calculare a nfurtoarei i racordrilor cu forme de
orice geometrie (un caz particular al acestora sunt capetele de
scul suprafee de revoluie utilizate n frezare);
reeaua neuronal pentru antrenarea cu date care nu cad n
punctele reelei, utilizabil ca o metod generic de import a
tuturor datelor parametrice.
- 64 -
Concluzii
Concluzii
- 65 -
Concluzii
Concluzii
Not: Clasa CFuncie nu a fost discutat. S-au folosit dou metode ale
ei, una (Iniializeaz) care o iniializeaz cu un SetDeCaractere de tipul
Z(x, y) = SIN(X/100.0) + COS(Y/200.0) i o alta (IaDeLaZ) care
returneaz valoarea ei pentru un X i Y. Implementarea acestei clase nu
face partre din acest lucrare.
- 66 -
Concluzii
Concluzii
NOT: Se poate observa c s-au folosit dou noi metode ale clasei
Curb, una care creaz i interpoleaz o curb cunoscnd un set de
puncte de control i o alta care terge toate punctele dintr-o list cu
puncte. De asemennea, funcia geamn PuneInterpolareYDir nu a fost
prezentat.
Algoritmii din aceast familie pot fi gsii ca produs shareware la
adresa
ftp.simtel.net\pub\msdos\cad\tmesh0.zip
sau
ftp.simtel.net\pub\msdos\cad\tpck20lt.zip i sunt descrii pe larg n
[DM05..DM11].
- 67 -
Concluzii
Concluzii
Figura
4.13
seciuni pe SD
Interpolare
prin
interpolare liniar
interpolare cubic
diferena dintre cele dou
Exemple
procesate
utiliznd
TechnoCAD V2.0 si DSView V1.0.
- 68 -
Concluzii
Concluzii
4.2.6. Exemple
discutate
despre
metodele
- 69 -
Concluzii
Concluzii
Figura
4.15 Exemple
modelare elementare
de
dou
funcii
- 70 -
Concluzii
Concluzii
- 71 -
Concluzii
Concluzii
{
rDist = DistXY(pPunctulCurent, cListaCuPuncte[nPunctul));
rDistSpecial:=Pow(1.0 / rDist, rRigiditatea)*
frListaCuPonderi[nPunctul];
rSumaDistSpecial = rSumaDistSpecial + rDistSpecial;
frTemp.Adun(rDistSpecial);
} //PentruFiecare
Concluzii
Concluzii
- 73 -
Concluzii
Concluzii
- 74 -
Concluzii
Concluzii
- 75 -
Concluzii
Concluzii
} //EndInitRacordareStatic
- 76 -
Concluzii
Concluzii
- 77 -
Concluzii
Concluzii
Concluzii
Concluzii
4.3. Filtre
Filtrele sunt metode auxiliare, care au scopul principal de a cura
SD de eventualele zgomote create n diferite procese de conversie sau
interpolare, sau sunt folosite n algoritmi de export, pentru a asigura
exportul unor curbe continue lipsite de zgomot.
Acest tipuri de filtre sunt n general folosite de algoritmii de
conversie vectorial, n cazul n care nu sunt descrise pe suprafeele
stocate vectorial funcii de proiecie real GetZ(real rX, real rY).
- 79 -
Concluzii
Concluzii
PuneLa(nSDX, nSDY, ([nSDX1, nSDY] + [nSDX + 1, nSDY] + [nSDX, nSDY 1]) / 3.0);
m.PuneLa(nSDX, nSDY, ADEVRAT);
nIndex++;
} //Dac
Dac(m[nSDX 1, nSDY] I m[nSDX + 1, nSDY] I m[nSDX, nSDY 1])
{
PuneLa(nSDX, nSDY, ([nSDX1, nSDY] + [nSDX+1, nSDY] + [nSDX, nSDY-1]) / 3.0);
m.PuneLa(nSDX, nSDY, ADEVRAT);
nIndex++;
} //Dac
Dac(m[nSDX, nSDY 1] I m[nSDX, nSDY + 1] I m[nSDX + 1, nSDY])
{
PuneLa(nSDX, nSDY, ([nSDX, nSDY-1] + [nSDX, nSDY + 1] + [nSDX+1, nSDY])/3.0);
m.PuneLa(nSDX, nSDY, ADEVRAT);
nIndex++;
} //Dac
Dac(m[nSDX, nSDY 1] I m[nSDX, nSDY + 1] I m[nSDX - 1, nSDY])
{
PuneLa(nSDX, nSDY, ([nSDX, nSDY-1] + [nSDX, nSDY+1] + [nSDX-1, nSDY]) / 3.0);
m.PuneLa(nSDX, nSDY, ADEVRAT);
nIndex++;
} //Dac
} //PentruFiecare
ntoarce(nIndex);
} //EndCreazMasc3
- 80 -
Concluzii
Concluzii
nIndex++;
} //Dac
} //PentruFiecare
ntoarce(nIndex);
} //EndCreazValoare2
Cteva exemple despre Filtre se dau n figura urmtoare, unde sau prezentat cteva conversii n curbe a unor SD, cu i fr filtrare.
Concluzii
Concluzii
- 82 -
Concluzii
Concluzii
- 83 -
Concluzii
Concluzii
Matematic:
(P(U, V) / D2) /D2
SuprafaDiscret sdSumaPD, sdSumaD;
NimicSuprafaDiscret.InitPuneLaR()
{
sdSumaPD = sdAceasta; //iniializeaz SumaPD
sdSumaPD.PuneLaAll(0.0); //o iniializeaz pe 0.0
sdSumaD = sdAceasta; //iniializeaz SumaD
sdSumaD.PuneLaAll(0.0); //o iniializeaz pe 0.0
} //EndInitPutR
SuprafaDiscret.DonePuneLaR()
{
sdSumaPD /= sdSumaD; //mparte sd SumaPD/SumaD
PnCnd(sdSumaPD.Creaz2()); //filtreaz sd pentru eventualitatea pt. puncte necreate
PnCnd(sdSumaPD.Distruge2()); //filtreaz sd pentru eventualitatea pt. puncte necreate
Combin(sdSumaPD, PM_MAX, FALS); //combin sd actual cu sd, SumaPD lund numai masca
} //EndDonePutR
NimicSuprafaDiscret.PuneLaR(PunctpP, Real rTaieSus = 2.0) //antreneaz vecinii
{
Real rX = RealnIndexPtXR(pP.iX); //convertete valoarea real dar din spaiul ntreg
Real rY = RealnIndexPtYR(pP.iY); //convertete valoarea real dar din spaiul ntreg
Real rD2;
//P00
rD2 = (rX int(rX))*(rX int(rX)) + (rY int(rY))*(rY int(rY));
Dac (rD2 < rTaieSus)
{
sdSumaPD.PuneLa(int(rX) + 0, int(rY) + 0, pP.Z/rD2); //adun pe PD
sdSumaD .PuneLa(int(rX) + 0, int(rY) + 0, 1/rD2); //adun pe PD
} //Dac
- 84 -
Concluzii
Concluzii
//P01
rD2 = (rX int(rX))*(rX int(rX)) + (rY + 1 int(rY))*(rY + 1 int(rY));
Dac (rD2 < rTaieSus)
{
sdSumaPD.PuneLa(int(rX) + 0, int(rY) + 1, pP.Z/rD2); //adun pe PD
sdSumaD .PuneLa(int(rX) + 0, int(rY) + 1, 1/rD2); //adun pe PD
} //Dac
//P10
rD2 = (rX + 1 int(rX))*(rX + 1 int(rX)) + (rY int(rY))*(rY int(rY));
Dac (rD2 < rTaieSus)
{
sdSumaPD.PuneLa(int(rX) + 1, int(rY) + 0, pP.Z/rD2); //adun pe PD
sdSumaD .PuneLa(int(rX) + 1, int(rY) + 0, 1/rD2); //adun pe PD
} //Dac
//P11
rD2 = (rX + 1 int(rX))*(rX + 1 int(rX)) + (rY + 1 int(rY))*(rY + 1 int(rY));
Dac (rD2 < rTaieSus)
{
sdSumaPD.PuneLa(int(rX) + 1, int(rY) + 1, pP.Z/rD2); //adun pe PD
sdSumaD .PuneLa(int(rX) + 1, int(rY) + 1, 1/rD2); //adun pe PD
} //Dac
} //EndPutR
NimicSuprafaDiscret.PuneLaSuprafaaSuperioar(SuprafaSuperioar sS; Real rUStep, rVStep)
{
InitPuneLaR();
PentruFiecare(Real rU = 0.0; rU<= 1.0 rU += rUStep)
PentruFiecare(Real rV = 0.0; rV<= 1.0 rV += rVStep)
PuneLaR(sS[rU, rV]);
EndPuneLaR();
} //EndPutSuprafaaSuperioar
Concluzii
Concluzii
- 86 -
Concluzii
Concluzii
4.6. Concluzii
n acest capitol au fost descrise tehnici i metode de creare,
modelare, conversie, import i filtrare a SD.
Scopul acestuia este ca, utiliznd metodele descrise, un numr ct
mai mare de repere provenite din diferite sisteme de proiectare,
fabricaie sau modelate direct, s poat beneficia de soluiile sofisticate
de analiz i generare a codului NC care vor fi discutate n viitor.
De asemenea, s-au prezentat n premier trei algoritmi noi,
concepui de ctre autor:
algoritmul de import i conversie a seturilor de puncte i curbe
furnizate fr nici o regul;
algoritmul de calculare a nfurtoarei i racordrilor cu forme de
orice geometrie (un caz particular al acestora sunt capetele de scul
suprafee de revoluie, utilizate n frezare);
reeaua neuronal pentru antrenarea cu date care nu cad n punctele
reelei utilizabile, ca o metod generic de import a tuturor datelor
parametrice.
- 87 -
Concluzii
Concluzii
5. Metode de
conversie i
formate de import
export
- 88 -
Concluzii
Concluzii
5.1. Introducere
n acest capitol se vor sintetiza i prezenta cteva conversii ale SD
n reprezentrile vectoriale uzuale altor sisteme de proiectare i/sau
fabricaie, pentru a da nu numai o consisten vizual analizelor i
generrilor, ci i o finalitate i utilizabilitate n alte sisteme de proiectare
- fabricare.
n prima parte a capitolului se vor prezenta metode de culegere a
datelor i de convertire a lor n formate de tip plas, solide discrete
faetate reprezentate ca triunghiuri, reprezentri de tip familie de
curbe, specifice generrii fiierului NC via CL.
Se vor introduce metode de creare de curbe, proiecie, offset
inteligent i export n formatele simple ASCII, ca: DXF, STL, CL, NC. Nu
se vor discuta, pentru a nu ncrca expunerea, formatele evoluate, ca
IGES, STEP, VDA, avnd n vedere i utilizarea lor destul de restrns,
deocamdat. Expunerea fiecrui format superior ar necesita un minim de
20 pagini, ceea ce nu asigur cadrul lucrrii de fa.
Metodele de conversie i export sunt de o mare importan n
utilizarea suprafeelor discrete demulabile, virtual, n orice sistem de
proiectare i fabricaie. Ideea prezentrii fiecrui format const n a
mbina prezentarea acestuia, nsoit de expunerea algoritmilor n
pseudocod, cu exemplificarea fiecrui concept introdus, cu ajutorul
exemplelor i a listingului potenial, realizat de ctre clasa expus.
Se va crea un set nou de clase, specifice exportului fiecrui tip n
parte: Fiier, CDXFOut, CSTLOut, CLOut, CNCOut. Aceste clase vor fi
implementate folosind o metod unificat de prezentare, ncercnd s se
ascund detaliile fiecrui format n parte.
Se vor expune metode noi, destinate conversiei i exportului,
metode care dau o utilizabilitate SD, legndu-le de alte sisteme de
proiectare, ca aparate matematice auxiliare de analiz sau conversie n
format NC.
Se va prezenta, n premier, un algoritm de conversie n curbe de
nivel foarte fin (comparativ cu pasul suprafeei discrete), care permite
conversia SD corecie de scul n format NC, asigurnd erori de ordinul
micrometrilor.
Un subcapitol aparte va fi rezervat expunerii problemei unui
postprocesor generic de control numeric, GNCPP (generic numeric
control post processor), o librrie dinamic complex, care are scopul
de a genera fiier NC specific, virtual, pe orice echipament, optimizat
pentru lungime i timp de rulare.
- 89 -
Concluzii
Concluzii
- 90 -
Concluzii
Concluzii
- 91 -
Concluzii
Concluzii
Figura
5.22 Prezentarea algoritmului de conversie a SD n curbe
echipoteniale, folosind metoda clasic a punctelor de control i cea nou,
care folosete continuitatea seciunilor.
- 92 -
Concluzii
Concluzii
- 93 -
Concluzii
Concluzii
Concluzii
Concluzii
- 95 -
Concluzii
Concluzii
- 96 -
Concluzii
Concluzii
- 97 -
Concluzii
Concluzii
5.2.3. Offset pe SD
Offsetul sau echidistanarea unei curbe pe o SD este deosebit de
util pentru generarea fiierelor NC de frezare cu rugozitate constant
(cea mai eficient metod de frezare). Algoritmul va fi prezentat n
detaliu n subcapitolul Calculul curbelor echirugozitate. Cteva
exemple ale conceptului se pot observa n urmtoarea figur, unde se
prezint, n nuane diferite, offsetarea pe SD a unui dreptunghi sau a
Figura
5.25 Exemplificarea algoritmului de offset inteligent pe
suprafaa discret. Procesri fcute pe repere importate din diferite
sisteme CAD/CAM, pornind de la dreptunghi sau de la drepte paralele
dou drepte paralele.
- 98 -
Concluzii
Concluzii
Concluzii
Concluzii
5.2.5. Convertirea
triunghiular
reprezentare
Reprezentarea
triunghiular,
stocat
n
formatul
STL
(stereolitography format), este cea mai simpl reprezentare posibil
pentru exportul i importul solidelor. n prezent, STL este exportat de
ctre toate sistemele de proiectare orientate pe solide (Solid Edge, Solid
Works, ProEngineering, Autodesk Mechanical Desktop), ca export generic
n sistemele de analiz cu elemente finite (FEA), n cele de fabricaie
(CAM) sau de verificare.
Teoria triangularizrii, folosit pentru convertirea n acest format,
este foarte vast avnd aplicaii ntr-o multitudine de domenii, ca:
analiz cu elemente finite, trasri de hri, stocri optimizate a zonelor
plane.
Primele ncercri, cu adevrat remarcabile, de rezovare a
triangularizrii suprafeelor i tetraedrizrii volumelor au fost fcute de
Delaunay, bazndu-se pe polinoamele convexe Voronoi [TRI].
Se va prezenta, n continuare, un algoritm minimal de conversie a
SD n reprezentare solid triunghiular neoptimizat.
NimicCDiscretSurface.ExportPlas(SetDeCaractere strNumeDXF)
{
CSTLExport stlout;
Punctp1, p2, p3, p4;
stlout.Iniializeaz(strNumeDXF);
PentruFiecare(ntreg nI = 1; nI < nX; nI++)
PentruFiecare(ntreg nJ = 1; nJ < nY; nJ++)
{
p1(IndexnRealPtX(nI + 0), IndexnRealPtY(nJ + 0), [nI + 0, nJ + 0]);
p2(IndexnRealPtX(nI + 0), IndexnRealPtY(nJ + 1), [nI + 0, nJ + 1]);
p3(IndexnRealPtX(nI + 1), IndexnRealPtY(nJ + 0), [nI + 1, nJ + 0]);
p4(IndexnRealPtX(nI + 1), IndexnRealPtY(nJ + 1), [nI + 1, nJ + 1]);
stlout.PuneLa(p1, p2, p3);
stlout.PuneLa(p2, p3, p4);
} //PentruFiecare
stlout.Sfrete();
} //EndExportPlas
- 100 -
Concluzii
Concluzii
- 101 -
Concluzii
Concluzii
Proporia de
utilizare, n
[%]
75
13
14
- 102 -
Tendina de
cretere n
1997, [%/ an]
-5
0
+4
Concluzii
Concluzii
Numr angajai
Despre
intreprindere
Repere desenate
Tota <50 50.. 201.. >500 1..5 6..10 10..1 16.. >20
l
200 500
5
20
81.5 86.7 73.3 86.7 80.0 100.0 69.6 90.9 78.6 100.
0
Translaii manuale
14.6 21.7 13.3
0.0
0.0
0.0 16.1 18.2
0.0 12.5
Fiiere SAT (solide 5.4
6.7
6.7
0.0
0.0
0.0
7.1
6.8
0.0 0.0
ACIS)
Fiiere
IGES 30.8 31.7 26.7 26.7 60.0
0.0 32.1 27.3 28.6 37.5
(standard)
Fiiere
DXF 43.1 45.0 40.0 40.0 50.0 50.0 44.6 45.5 35.7 50.0
(AutoCAD)
Fiiere
DWG 38.5 35.0 46.7 26.7 30.0 50.0 33.9 38.6 50.0 62.5
(AutoCAD)
Fiiere
VDA 3.8
5.0
4.4
0.0
0.0
0.0
5.4
4.5
0.0 0.0
Microstation
- 103 -
Concluzii
Altele
Concluzii
9.2
SUA
10.0
8.9
13.3
Numr angajai
0.0
0.0
12.5
9.1
0.0
0.0
Despre
Total <50 50.. 201.. >500 1..5 6..10 10..1 16.. >20
intreprindere
200 500
5
20
Repere desenate
72.9 80.0 66.7 69.2 60.0 64.7 69.6 93.8 83.3 75.0
Translaii manuale
13.5 15.6 12.1
7.7 20.0
8.8 17.4 12.5
0.0 18.8
Fiiere SAT (solide 13.5 17.8 12.1
7.7
0.0 14.7 13.0 12.5
0.0 18.8
ACIS)
Fiiere
IGES 27.1 24.4 33.3 23.1 20.0 35.3 21.7
6.3
0.0 43.8
(standard)
- 104 -
Concluzii
Fiiere
(AutoCAD)
Fiiere
(AutoCAD)
Fiiere
Microstation
Altele
Concluzii
DXF
33.3
31.1
36.4
30.8
40.0
2.9
34.8
25.0
16.7 50.0
DWG
45.8
37.8
51.5
53.8
60.0
35.3
39.1
50.0
50.0 68.8
VDA
5.2
2.2
9.1
0.0
20.0
0.0
4.3
12.5
0.0 12.5
5.2
2.2
9.1
0.0
20.0
8.8
0.0
6.3
- 105 -
0.0
6.3
Concluzii
Concluzii
- 106 -
Concluzii
Concluzii
simplificat,
filozofia
formatului
DXF
este
- 107 -
Concluzii
Concluzii
13
10
270.000000
20
10.000000
30
450.000000
70
16
66
1
71
19
72
91
0
VERTEX
8
0
10
2.000000
20
0.000000
30
0.000000
0
SEQEND
8
0
0
ENDSEC
0
EOF
- 108 -
Concluzii
Concluzii
Se va prezenta, n continuare, forma de fiier ASCII ncapsulat ntro clas numit CSTLOut.
NimicCSTLExport.Iniializeaz(SetDeCaractere strNume) //iniializarea obiectului
{
fiier.Creaz(strNume);
fiier.Scrie(solid SD Export);
} //Iniializeaz
NimicCSTLExport.Sfrete() //terminarea sesiunii de export
{
fiier.Scrie(endsolid);
fiier.nchide();
} //Sfrete
NimicCSTLExport.Export(Punct p1, p2, p3)
{
fiier.Scrie( facet normal 0.0 0.0 0.0\n);
fiier.Scrie(
outer loop\n);
fiier.Scrie(
vertex %d %d %d, p1.rX, p1.rY, p1.rZ);
fiier.Scrie(
vertex %d %d %d, p2.rX, p2.rY, p2.rZ);
fiier.Scrie(
vertex %d %d %d, p3.rX, p3.rY, p3.rZ);
fiier.Scrie(
endloop\n);
fiier.Scrie( endfacet\n);
} //Export
Metoda de utilizare a formatului STL este urmtoarea:
CSTLExport stlout;
stlout.Iniializeaz(Test.STL);
for (ntreg nI = 1; nI<= nNrTriunghiuri; nI++)
stlout.Export(p1, p2, p3);
stlout.Sfrete();
- 109 -
Concluzii
Concluzii
solid SD Export
facet normal 0.0 0.0 0.0
outer loop
vertex 0.038 0.038 0.045
vertex -0.007 0.0384 0.045
vertex -0.007 -0.03 0.045000
endloop
endfacet
..
5.3.3. Formatul CL
Formatul CL este un format vectorial, deosebit de important n
transferurile de trasee de scul, deoarece n el pot fi nmagazinate date
despre scul, compensaii, informaii geometrice de micare i informaii
tehnologice despre avansuri i turaie.
Marele avantaj al acestui format este acela c este generic,
nmagazinnd toate informaiile necesare generrii fiierului NC, pentru
un anumit reper, independent de echipament. Deci, CL este ieirea
comun a tuturor sistemelor destinate fabricaiei, fiind un dialect al
limbajului APT.
Fiind un format relativ complex, n aceast lucrare nu va fi folosit.
Vor fi generate direct fiiere NC, care sunt destul de asemntoare ca
sintax.
Pentru exemplificare se vor prezenta cteva figuri i o poriune de
listing n format CL.
- 110 -
Concluzii
Concluzii
5.3.4. Formatul NC
Prin convertirea formatul generic CL, pentru un echipament
specific, acesta i pierde generalitatea i devine un fiier NC specific
pentru un echipament NC dat. Teoretic, limbajul NC este un dialect
simplificat de BASIC, standardizat. Din pcate, fiecare echipament
respect, mai mult sau mai puin, acest standard.
n general, micrile G0, G1, G2, G3 i regitrii X, Y, Z, I, J, K, M, F, S
se respect de toate echipamentele.
- 111 -
Concluzii
Concluzii
- 112 -
Concluzii
Concluzii
Concluzii
Concluzii
- 114 -
Concluzii
Concluzii
- 115 -
Concluzii
Concluzii
Figura
5.30 Export fiier NC cu modul FHTSP activat, exemplificarea
reducerii micrilor n avans rapid cu peste 95%.
- 116 -
Concluzii
Concluzii
- 117 -
Concluzii
Concluzii
- 118 -
Concluzii
Concluzii
5.5. Concluzii
n acest capitol au fost introduse metode de creare de curbe,
proiecie, offset inteligent i export n formate simple ASCII, ca: DXF,
STL, NC.
Acest capitol, al metodelor de conversie i export, este de mare
importan n utilizarea suprafeelor discrete, virtual, n orice sistem de
proiectare i fabricaie. Ideea prezentrii lui a fost aceea de a mbina
prezentarea riguroas, nsoit de expunerea algoritmilor n pseudocod,
cu exemplificarea fiecrui concept introdus, cu ajutorul exemplelor i a
listingului potenial, realizat de ctre clasele expuse.
A fost creat un set nou de clase specifice fiecrui tip de export n
parte: Fiier, CDXFOut, CSTLOut, CNCOut. Aceste clase au fost
implementate folosind o metod unificat de prezentare, ncercnd s se
ascund detaliile fiecrui format n parte.
Au fost create metode noi, destinate conversiei i exportului,
metode care dau o utilizabilitate SD, legndu-le de alte sisteme de
proiectare, ca aparate matematice auxiliare de analiz sau conversie n
format NC.
S-a prezentat, n premier, un algoritm de conversie n curbe de
nivel foarte fin, care permite conversia SD corecie de scul n format NC,
i s-au prezentat aplicaiile lui, potenial nelimitate, n detectarea
formelor de analiz i vectorizarea fotografiilor.
S-a expus i exemplificat GNCPP, un postprocesor generic de
format NC, probabil unul dintre cele mai elaborate postprocesoare la ora
actual, realizat ca o librrie dinamic, foarte complex, care are scopul
de a genera fiier NC specific, i virtual, pentru orice echipament,
optimizat pentru lungime i timp de rulare.
- 119 -
6. Metode de
analiz i
optimizare
-120-
6.1. Introducere
n acest capitol, generic intitulat Metode de analiz i
optimizare, se vor cuprinde cteva dintre cele mai importante aspecte
legate de analiza SD i generarea optimizat a codului NC pentru
fabricarea suprafeelor discrete pe MUCN, precum i cteva tehnici de
verificare, simulare i vizualizare. Cum toate acestea sunt tehnici i
metode de analiz, ele i vor gsi locul n acest capitol.
Principalul scop al capitolelor prezentate pn n prezent a fost acela
de a proiecta i expune un set consistent de obiecte, (relativ) bogat n
metode de modelare, import, export, conversii i proiecii de curbe, n
vederea analizrii i a generrii optimizate de cod NC.
Metodele
algoritmilor n:
expuse
vor
fi
grupate
funcie
de
similitudinea
-121-
-122-
-123-
-124-
-126-
-127-
Figura
6.34 SD care stocheaz evoluia (n marime absolut) a
unghiului normalei cu planul orizontal, pentru dou SD, i familii de
curbe echinormale proiectate pe SDCS, procesate din 10 n 10 grade.
-128-
6.3.4. Calculul
zonelor
frezarea
seciunilor
planul XY
critice
paralele
la
n
cu
cea
precedent,
se
va
ncerca
-130-
Figura
6.36 Evoluia SD care stocheaz variaia (n marime absolut)
unghiului n direcie perpendicular, pentru dou SD, i familii de curbe
echinormale proiectate pe SDCS, procesate din 10 n 10 grade.
-131-
Figura
6.37 Zonele critice i umplerea lor cu curbe paralele
echidistante, care vor fi convertite n fiier NC.
-132-
-133-
-134-
b) offset inteligent - este exact ca i cel n 2D, numai c dup ce s-a terminat
de offsetat, curbele acestea sunt culcate (mulate) pe suprafee i rezult un
nou set de curbe, care sunt n concordan cu curvatura suprafeei de
dedesubt (figura urmtoare);
c) offset n planul unghiular de tiere acest tip de offset este mult mai
simplu de calculat dect cel precedent, deoarece el creaz dou tipuri de
curbe echiunghiulare de tiere, offsetate cu 1...2 grade. Curbe
echiunghiulare de la 100 la 800 se afl n figurile 6.3 c, d i 6.5 c, d.
-135-
-136-
} //PentruFiecare
Combina(sdTemp, PM_MIN); //combin i las minimul
sdTempX = sdAceasta; //creaz ca aceasta
} //Dac
Dac(nMetoda = ct_nEchirugozitateY SAU nMetoda = ct_nEchirugozitateXY)
{
sdTemp = sdAceasta; //creaz ca aceasta
PentruFiecare(ntreg nI = 2; nI < nX; nI++)
PentruFiecare(ntreg nJ = 1; nJ <= nY; nJ++)
{
PuneLa(nI, nJ, DistXZY(
IndexnRealPtX(nI), IndexnRealPtY(nJ-1), [nI, nJ-1], IndexnRealPtX(nI),
IndexnRealPtY(nJ), [nI, nJ]));
sdtemp.PuneLa(nX - nI, nY - nJ, DistXZY(IndexnRealPtX(nI),
IndexnRealPtY(nJ), [nX-nI+1,
nJ], IndexnRealPtX(nX - nI), IndexnRealPtY(nJ), [nX - nI, nJ]));
} //PentruFiecare
Combina(sdTemp, PM_MIN); //combin i las minimul
sdTempY = sdAceasta; //creaz ca aceasta
} //Dac
Dac(nMetoda = ct_nEchirugozitateXY)
Combina(sdTempX, PM_MIN); //combin i las minimul
} //TransfEchirugozitate
NimicSuprafaDiscret.DetectEchirugozitate( FamiliaDeCurbe fcOut, ntreg nMetoda =ct_nEchirugozitateXY,
Real rPasul = 1.0)
{
SuprafaDiscret sdTransformare; //pregtete suprafaa discret a transformrii
sdTransformare = sdAceasta; //o iniializeaz
sdTransformare.TransfEchirugozitate(sdAceasta, nMetoda); //o calculeaz
CreazCurbe(fcOut, rPentruZ);
} //DetectEchirugozitate
-137-
Figura
6.42 Suprafee discrete care stocheaz transformarea
echirugozitate. (SDER)
nceputuri are de pe marginile dreptunghiului care conine piesa.
Aceaste transformri au fost fcute cu condiia de a se putea
asigura o transformare intermediar, deci ele nu conin alte informaii
auxiliare despre curbe care taie curbele, destinate fiierului NC.
Suplimentar, se poate vorbi despre aceste tipuri de fiiere, care conin
curbe nconjurtoare, i se pot construi SDER care conin distanele
proiectate pe SDCS ale curbelor care se intenioneaz s fie folosite ca i
curbe de tiere a fiierului NC.
-138-
-140-
Figura
6.45 Exemplificarea algoritmului de detectare a materialului
nefrezabil i a necesitii calculului unui offset pe normal, pentru prevenirea
fenomenului de antiskating
n pseudocod, algoritmul are urmtoarea nfiare:
NimicSuprafaDiscret.DetectNefrezabil(FamiliaDeCurbe fcNefrezabil,
SuprafaDiscret sdReper, sdSculaAnal, sdSculaMic, Boolean bDetectPlan = FALS)
{
SuprafaDiscret sdVrfSAcul, sdContact, sdNefrezabil;
sdVrfSAcul.InitnfurtoareStatic(sdReper, sdSculaAnal);
sdContact.InitnfurtoareStatic(sdVrfSAcul, sdSculaAnal, FALS);
sdNefrezabil = sdContact sdReper;
Dac(bDetectPlan) //n cazul n care se dorete frezarea cu o frez cilindric
PentruFiecare(ntreg nI = 1; nI <= nX; nI++)
PentruFiecare(ntreg nJ = 1; nJ <= nY; nJ++)
Dac(sdReper[nI, nJ] = sdReper[0, 0]) sdNefrezabil.PuneLa(nI, nJ, 0.0);
sdNefrezabil.CreazCurbe(fcNefrezabil, 0.05); //creaz curbele de pe sdNefrezabil
sdReper.OffseteazCurbe(); //offseteaz cu raza umtoarei scule !!
} //TransfEchirugozitate
-142-
-143-
-144-
-146-
Fi
gura 6.49 Exemple de colapsare echirugozitate a curbelor ce reprezint
materialul nefrezat.
n coloana nti sunt reprezentate suprafeele i curbele care delimiteaz
materialul nefrezabil. n coloana a doua, curbele sunt colapsate n 3D,
pentru a genera un ciclu de frezare cu condiia de rugozitate constant.
Acestea au fost contribuiile autorului n domeniul frezrii optimizate
a suprafeelor discrete, care utilizeaz algoritmii bazai pe transformrile
discrete ale acestora.
n continuare se va trece la tehnici de optimizare care se aplic pe
familia de curbe, sau folosesc tehnici mixte de analiz i optimizare.
-148-
-149-
-150-
-151-
terge(nDist);
} //PentruFiecare
} //Altfel
sdAceasta = fcTemp; //!! actualizeaz familia de curbe
} //OptimizeazFHTSP
-152-
-153-
-154-
-155-
6.4.5. Eliminarea
inflexiune
punctelor
-156-
de
-157-
-158-
-159-
c = [nI];
c.FOrar();
} //PentruFiecare
} //FOrar
NimicFamiliaDeCurbe.Rotete() //rotete curbele pn au punctul de start minim
{
Curb cStart, cEnd;
cStart = [1];
PentruFiecare(ntreg nI = 2; nI < nNr; nI++)
{
cEnd = [nI];
pStart = cStart[1];
ntreg nRotete = 0;
Real rDist = 1e100;
PentruFiecare(ntreg nCurb = 1; nCurb < cEnd.nNr; nCurb++)
{
pEnd = cEnd[nCurb];
if (DistXYZ(pStart, pEnd) < rDist)
{
rDist = DistXYZ(pStart, pEnd);
nRotete = nCurb;
} //Dac
} //PentruFiecare
Rotete(nRotete);
cStart = cEnd;
} //PentruFiecare
} //Rotete
NimicFamiliaDeCurbe.Spiral(ntreg nPuncte = 100) //transform curbele n spirale
{
Curb cStart, cEnd;
cStart = [1];
PentruFiecare(ntreg nI = 2; nI < nNr; nI++)
{
cEnd = [nI];
PentruFiecare(ntreg nT = 2; nT < nPuncte; nT++)
{
pStart = cStart.IaDeLaT(nT/nPuncte);
pEnd = cEnd.IaDeLaT(nT/nPuncte);
Add(pStart + (pEnd - pStart) * nT / nPuncte);
} //PentruFiecare
cStart = cEnd;
} //PentruFiecare
} //Spiral
//transform SDC n spirale
NimicSuprafaDiscret.SpiraleleLuiBillator(FamiliaDeCurbe fcOut, Real rStep = 1.0)
{
SuprafaDiscret sdTemp;
sdTemp.TransfEchirugozitate(sdAceasta, 255);
sdTemp.nmoaie(5); //face media celor patru vecini de 5 ori crete continuitatea !
sdtemp.CreazToateCurbele(fcOut, rStep);
fcOut.FOrar();
fcOut.Rotete();
fcOut.Spiral();
ProiecteazToateCurbele(fcOut); //citete cota Z !
-160-
} //SpiraleleLuiBillator
-161-
Figura
6.54
echirugozitate.
Un
reper
analizat
vederea
frezrii
cu
curbe
-162-
-163-
-164-
-166-
Alte beneficii imediate ale simulrii n timp real a frezrii sunt cele ale
gsirii cu acuratee a cotei Z minime, pentru micrile cu avans rapid.
-167-
1.0
1.10
..
1.15
1.6 .. 3.0
de 5.0
..
20.0
Pas dinamic:
Fr variere
pas:
Tab 6.1
Date sunt trasate dup analiza unui set de peste 50 de repere
discretizate.
La ora actual, ciclurile de frezare cu pas inteligent sunt
implementate doar n sistemele de fabricaie EdgeCAM V4.x,
TechnoPack V2.x (implementate de autor) i HyperMill, n ciclurile de
colapsare a curbelor cu mulare pe suprafa.
-168-
-169-
-170-
-171-
-172-
-173-
-174-
-175-
-176-
-178-
6.10. Concluzii
n acest capitol, intitulat Metode de analiz i optimizare, s-a
ncercat s se cuprind cteva dintre cele mai importante aspecte legate
de analiza i generarea optimizat a codului NC pentru fabricarea
suprafeelor discrete pe MUCN, precum i cteva tehnici de verificare i
simulare.
Cum toate optimizrile, generrile de cod NC, verificrile i
simulrile sunt tehnici i metode de analiz, n mod natural ele i-au
gsit locul n acest capitol. S-a preferat gruparea tuturora la un loc,
deoarece ntre multe dintre acestea exist o interpenden ascuns
(d.p.d.v. matematic) i se consider c dup expunerea capitolului,
sortat din punct de vedere logic, al complexitii i asemnrii aparatelor
matematice, se poate observa asemnarea unor tehnici de analiz a
suprafeei (zone plane, material nefrezat etc.) cu tehnicile de generare a
codului NC (echidistante, echirugozitate etc.). Tehnicile de verificare
sunt aceleai, ntr-o foarte mare proporie, cu cele de simulare.
Cum lucrarea are un caracter primordial de sintez, s-a ncercat
gruparea logic, matematic, n detrimentul celei funcionale, nedorinduse pierderea relaiei dintre tehnicile de analiz.
n acest capitol s-au introdus i expus trei mari aspecte ale analizei:
metode de analiz a SD i generarea optimizat de cod NC, cteva
optimizri posibile ale codului NC n cazul traseelor echidistante i
calculul reelei de difracie pentru elementele optice.
S-au prezentat, n premier, cteva metode noi, precum:
calculul zonelor plane;
calculul zonelor critice la frezarea seciunilor paralele n planul XY;
calculul materialului nefrezabil;
calculul curbelor de egal rugozitate;
metode pseudoadaptive de variere a avansului i coreciei de uzur n
timp real;
minimizarea micrilor n avans rapid;
spiralele lui Billator;
o metod nou de optimizare a traseelor echidistante, prin dublarea
sau triplarea local;
o metod de rezolvare a reelelor de difracie;
-179-
-180-
7. Concepte
introduse
-181-
//----- Clasele utilizate pe parcursul lucrrii -----------------------------------//Clasa int utilizat pentru operaiile cu numere ntregi
//prefix Variabile: n
Clasa ntreg
{
operator +, -, *, /, &, |, %, <, >, >=, <=, =, ==, +=, -=, *=, /=, &=, |=, %=, I, SAU, %%, !, min, max; //operatorii i
conversiile din tipul real
Nimic Min (ntreg nA, nB); //ntoarce minimul dintre valorile nA i nB
Nimic Max (ntreg nA, nB); //ntoarce maximul dintre valorile nA i nB
Nimic Abs (ntreg nA); //ntoarce valoarea absolut
} //EndInt
//funcii prietene
ntreg Min (ntreg nA, nB); //ntoarce minimul dintre valorile nA i nB
ntreg Max (ntreg nA, nB); //ntoarce maximul dintre valorile nA i nB
ntreg Abs (ntreg nA); //ntoarce valoarea absolut
//Clasa bool utilizat pentru operaiile logice
//prefix Variabile: b
Clasa Boolean DerivatDin ntreg
{} //Boolean
//Clasa real utilizat pentru operaiile cu numere reale
//prefix Variabile: r
Clasa Real
{
//operatorii
operator +, -, *, /, +=, -=, *=, /=, <, >, <=, >=, =, ==, !=;
//funcii membru
Nimic Min (Real rA, rB); //ntoarce minimul dintre valorile rA i rB
Nimic Max (Real rA, rB); //ntoarce maximul dintre valorile rA i rB
Nimic Morf(Real rA, rB, rP = 0.5); //ntoarce rA * rP + rB * (1.0 - rP)
Nimic Abs (Real rA); //ntoarce valoarea absolut
Nimic RotX(Punct pRot, Real rUnghiDeg); //rotaia n jurul lui X
Nimic RotY(Punct pRot, Real rUnghiDeg); //rotaia n jurul lui Y
Nimic RotZ(Punct pRot, Real rUnghiDeg); //rotaia n jurul lui Z
Nimic Scalare(Punct pScalare, Real rFactorScalare); //scalarea fa de un punct
Nimic Translaie(Real rTranslaie); //scalarea fa de un punct
//suplimentar se pot introduce orice funcii matematice Ex sin, cos, etc!!
} //Real
//funcii prietene
Real Min (Real rA, rB); //ntoarce minimul dintre valorile rA i rB
Real Max (Real rA, rB); //ntoarce maximul dintre valorile rA i rB
Real Morf(Real rA, rB, rP = 0.5); //ntoarce rA * rP + rB * (1.0 - rP)
Real Abs (Real rA); //ntoarce valoarea absolut
Real RotX(Punct pRot, Real rUnghiDeg); //rotaia n jurul lui X
Real RotY(Punct pRot, Real rUnghiDeg); //rotaia n jurul lui Y
Real RotZ(Punct pRot, Real rUnghiDeg); //rotaia n jurul lui Z
Real Scalare(Punct pScalare, Real rFactorScalare); //scalarea fa de un punct
Real Translaie(Real rTranslaie); //scalarea fa de un punct
-182-
-183-
-184-
-185-
-186-
{
Fiier fiier; //fiierul de export
Nimic Iniializeaz(SetDeCaractere strNume);
Nimic Sfrete();
Nimic InitCurb(ntreg nCuloare = 15, SetDeCaractere strLayer = SD ieire);
Nimic DoneCurb();
Nimic InitPlas(ntreg nU, nV, nCuloare = 15, SetDeCaractere strLayer = SD ieire);
Nimic DonePlas();
Nimic Export(Punct pIn);
} //DXFExport
Clasa STLExport //o rudimentare a formatului de export STL care suport doar ASCII Export
{
Fiier fiier; //fiierul de export
Nimic Iniializeaz(SetDeCaractere strNume);
Nimic Sfrete();
Nimic Export(Punct p1, p2, p3);
} //CSTLExport
Clasa NCExport //o rudimentare a formatului de export NC
{
Fiier fiier; //fiierul de export
Nimic Iniializeaz(SetDeCaractere strNume);
Nimic Sfrete();
Nimic Export(Punct p, Boolean bRapid);
} //NCExport
Enumerare ModulDePunere //enumerarea modurilor de combinare solid a SD i mtilor
{ PM_NONE, PM_MAX, PM_MIN, PM_ADD, PM_SUB, PM_MULTIPLY, PM_DIVIDE, PM_MORPH,
PM_FILSUS, PM_FILJOS, PM_ECDLSUS, PM_ECDJOS, PM_AND, PM_OR, PM_XOR }
-187-
8. Concluzii
- 188-
- 189-
- 191-
- 192-
posibile
ale
codului
NC
cazul
traseelor
- 193-
- 194-
Anexe
Concluzii
Anexe
- 195 -
Anexe
Concluzii
Prefi
x
v
Operatori
SetDeCaracte
re
ntreg
str
+, -
Boolean
Real
+, -, *, /, &, |, %, <, >, =, ==, +=, -=, *=, /=, &=, |=,
%=, I, SAU, !, real;
+, -, *, /, &, |, %, <, >, =, ==, +=, -=, *=, /=, &=, |=,
%=, I, SAU, !, real;
+, -, *, /, <, >, =, ==, +=, -=, *=, /=, int;
Punct
Curb
(superioare)
Plasa
(superioare)
Masca
c, cs
Nimic
l, ls
Supr.
Demulabil
STL Export
CL Export
stlou
t
dxfo
ut
ncou
t
clout
Fiier
FamilieDe*
f*
DXF Export
NC Export
- 196 -
BIBLIOGRAFIE
Anexa B: Abrevieri
SD
SDR
SDCS
SDCST
SDN
SDNT
SDER
SDSC
SDT
Suprafa
Suprafa
Suprafa
Suprafa
Suprafa
Suprafa
Suprafa
Suprafa
Suprafa
Discret
Discret
Discret
Discret
Discret
Discret
Discret
Discret
Discret
(demulabil)
(demulabil)
(demulabil)
(demulabil)
(demulabil)
(demulabil)
(demulabil)
(demulabil)
(demulabil)
SLB
ACCE
ASCII
DXF
STL
APT
CL
NC
ECN
CNC
DNC
GNC
GNCPP
MSD
MU
MUCN
TSP
FHTSP
CAD
CAM
CAE
TechnoPac
k
TechnoCA
D
TechnoCA
M
TechnoFu
nction
TechnoMe
sh
TechnoCur
ves
Techno2D
TechnoBul
Reper
Corecie Scul
Corecie Scul Teoretic
Nefrezabil
Nefrezabil Teoretic
EchiRugozitate
scul
Transformat
- 197 -
BIBLIOGRAFIE
ge
- 198 -
BIBLIOGRAFIE
Anexa C: Definiii
ADA (limbaje): unul dintre cele mai complexe i solide limbaje
aprute; conine verificare puternic de tip metode de detecie i
tratare de erori; utilizeaz compilatoare foarte complexe.
Algoritmi (pseudocod): aparate matematice, proceduri, rutine, funcii,
metode; se vor regsi n dou locuri, sub form de funcii (n cazul n
care nu sunt coninui ntr-un corp de clas) sau metode (n cazul n
care se gsesc ncapsulai n interiorul unei clase).
Aparate matematice (pseudocod): vezi algoritmi.
Asamblare (limbaje): o evoluie natural a codului main, prin
renumirea ntr-un format mai accesibil a acestuia.
BASIC (limbaje): limbaj deosebit de simplu, aprut la nceput fr nici
o form de modularizare a informaiei, cu excepia subrutinelor, care,
ns, nu puteau avea variabile locale.
BazDiscret (clas): clas de baz derivat din baza vectorial,
destinat stocrii suprafeelor masc i suprafa discret; conine
informaii despre pasul i numrul de puncte discrete n cele dou
direcii X i Y.
BazaVectorial (clas): clas elementar care traseaz un
comportament comun pentru clasele mai evoluate (curbe, plase,
suprafee discrete).
Booleeni (clas): clas particular derivat din ntregi.
Borland Pascal (limbaje): limbaj evoluat orientat obiect.
C (limbaje): limbaj de nivel jos, destinat n general scrierii sistemelor
de operare portabile.
C++ (limbaje): limbaj evoluat orientat obiect.
CAD Report (reviste): revist despre proiectarea asistat, editat la
Tg. Mure.
Clasa (cuvnt cheie, pseudocod): nceputul definiiei unei noi clase.
Clasele (pseudocod) sunt scrise ngroat i verde nchis i au asociat
obligatoriu o prescurtare ct mai sugestiv, format din una sau mai
multe caractere scrise cu liter mic; prefixarea trebuie specificat
obligatoriu numai prima oar cnd clasa este definit.
Cod main (limbaje): limbaj de programare rudimentar.
Coleciile (clas): seturi de obiecte de acelai tip stocate mpreun;
accesul la un element dintr-o colecie se face cu ajutorul operatorul []
care va returna un element din tipul stocat n colecia respectiv.
Comentariile (pseudocod): clarificri ale pseudocodului; sunt scrise n
italic i sunt prefixate de//.
- 199 -
BIBLIOGRAFIE
pseudocod):
motenirea
BIBLIOGRAFIE
- 201 -
BIBLIOGRAFIE
- 202 -
BIBLIOGRAFIE
- 203 -
BIBLIOGRAFIE
Compania
Computervision USA
Dassault France
Intergraph USA
Matra Datavision France
SDRC USA
PTC USA
EDS USA
Compania
http: //www.anvil5k.com
CADAM,
http: //www.clearlake.ibm.com/MFG/engineering/consider.html
Cadkey, http: //www.cadkey.com/
CADRA, http: //www.adra.com/
CAELUM, http: //caelum.co.jp/
Cimatron, http: //http:/www.cimatron.com/
Cimalog, http: //www.swissprecision.com/SPEE3.html
GMS, http: //www.graftek.com/
ICEM, http: //www.cdc.com/icem.html
I-DEAS, http: //www.sdrc.com/
MASTERCAM, http: //www.mastercam.com/
MicroCADAM, http: //www.microcadam.com/
METALMAN, http: //www.unm.edu/~baltz/
MOZAIC, http: //www.auto-trol.com
Mr Machinist , http: //www.pennet.net/commercial/f1/
Para-Max, http: //www.innotts.co.uk/~mecs/
Prelude, http: //www.matra-datavision.com/
SURFCAM, http: //www.surfware.com/
VisiCAD/VisiCAM, http: //www.vero.it/
Varimetrix, http: //www.vx.com/
Virtual Gibbs, http: //www.bureaug.co.uk/gibbs/index.html
MCS USA
Dassault France
Baystate Technologies USA
ADRA USA
CAELUM Japan
Cimatron Israel
Swiss Precision/Engineer
Graftek
ICEM USA
SDRC USA
CNC Software USA
MICROCADAM USA
Metalman USA
Auto-Trol
F1 Computing USA
M.E.C.S. UK
Matra Datavision France
Surfware USA
Vero Italy
Gibbs USA
Compania
- 204 -
Ashlar USA
Autodesk USA
Accugraph USA
SoftCAD Belgium
Furukawa Info Technology
USA
Thomas Maier Germany
Softdesk USA
ViaGraphix USA
Ditek Canada
Douglas Electronics USA
Evolution computing USA
autodessys USA
//www-Macromedia USA
BIBLIOGRAFIE
1.macromedia.com/Tools/Studios/FGS/index.html
GMPCAD, http: //www.ens-cachan.fr/~gmpcad/
HVACp, http: //www.thecube.com/
Mechanical Desktop, http: //www.autodesk.com/
Microstation, http: //www.bentley.com/
MiniCAD, http: //www.graphsoft.com/
Powerlib, http: //www.cadsoftware.co.uk/plib.htm
QuickDraw,
http:
/www.wombat.com.au/wombat/showcase/sa/qikdraw/index.html
SolidBuilder, http: //www.solidbuilder.com/
RAY DREAM, http: //www2.us.com/raydream/
SolidEdge, http: //www.intergraph.com/solidedge
SolidWorks, http: //www.solidworks.com/
SolidDesigner, http: //www.hp.com/
TopCAD, http: //http:/www.merituk.co.uk/topcad/
TrueCAD , http: //www.choicecomp.com/
Trispectives, http: //www.eye.com/
CADMAX TrueSurf Master, http: //www.cadmax.com/
TurboCAD, http: //www.imsisoft.com/catprod.html
Visio, http: //205.185.183.34/html/a.html
Visual CADD, http: //www.numera.com/
/ QuickDraw Australia
Builders for Builders USA
Fractal USA
Intergraph USA
SolidWorks USA
Hewlett Packard USA
TopCAD France
3D Eyes USA
CADMAX USA
IMSI USA
Visio USA
Numera USA
Compania
APT/AC,
http: //www.clearlake.ibm.com/MFG/engineering/consider.html
HMS APT, http: //wwweurope.sgi.com/Products/appsdirectory.dir/Applications/
PC APT, http: //www.ncsoft.com/index.html
IBM USA
Houtzeel USA
N/C Software Inc. USA
Compania
- 205 -
BIBLIOGRAFIE
HI-MILL, http: //www.fidia.it/
NC Works, http: //www.industry.net/ca/showfile/00cm7/sponsors/psc/psc02
PEPSCUT, http: //www.peps.com/
ShopCAM
SmartCAM, http: //www.camax.com/
Synergy, http: //www.weber.com/
TechnoCAM, http: //cccsat.sorostm.ro/billasoft/
TekSoft, http: //www.teksoft.com/
WorkNC
XCAM, http: //www.industry.net/ca/showfile/00cm7/sponsors/psc/psc03/DoAuth
FIDIA Italy
Progressive
Software
Corporation
Camtek UK
ShopSystem USA
Camax USA
Weber SystemUSA
Billasoft Romania
TekSoft USA
Sescoi France
Progressive
Software
Corporation
Compania
Millennion USA
Spatial Technology USA
Algor USA
ANSYS USA
Faro Technologies USA
Manusoft Finland
ICAM Canada
Industrial
Automation
Solutions USA
CADSi USA
- 206 -
BIBLIOGRAFIE
Vericut, http: //www.vericut.com/
Virtual NC, http: //www.deneb.com/
HP WorkManager, http: //www.hp.com/
XYZPro EDIT, http: //www.ascendtec.com/
CGTech USA
Deneb USA
Hewlett Packard USA
Ascendant USA
Comentarii
utilizatorii
Teste si expertize
microstation din Portland
Pagina PTC prezentata de SUN
Comentarii
alt.cad, news:alt.cad
alt.cad.autocad, news:alt.cad.autocad
alt.cad.cadkey, news:alt.cad.cadkey
alt.comp.acad-freedom.news, news:alt.comp.acadfreedom.news
alt.comp.acad-freedom.talk, news:alt.comp.acad-freedom.talk
comp.cad.microstation, news:comp.cad.microstation
comp.cad.i-deas, news:comp.cad.i-deas
comp.cad.autocad, news:comp.cad.autocad
comp.cad.pro-engineer, news:comp.cad.pro-engineer
- 207 -
BIBLIOGRAFIE
comp.sys.intergraph, news:comp.sys.intergraph
Comentarii
//pcfolini.eng.unipr.it/sites.html
//www.free.cts.com/crash/p/patcad/
//www-cad.fnal.gov/otherlinks.html
//wwwcadcam.de
Cadsyst
CAD
http: //www.buildingweb.com/cadsyst/cadlink.html
- 208 -
Links,
BIBLIOGRAFIE
BIBLIOGRAFIE
ACAD
ALM
BEN
BIB
BJS
BKOS
BOURDI
BOW
CAT
CNC
COH
COR
CRI
CTR
DFR
DM01
DM02
DM03
DM04
DM05
DM06
BIBLIOGRAFIE
DM09
DM10
DM11
DM12
DM13
DM14
DM15
DMCS
07
DMCS
08
DMW
0
DMW
1
DMW2
DMW3
DMW
4
DRA92a
DRA92b
DRA95a
DRA95b
DUT
BIBLIOGRAFIE
DWG
DXF
ECAM
ELLI
GARD9
0a
GARD9
0b
GARD9
2
GF
HCF
IFMP
IGES
JAG
LEF
LEO91
LWRK
MAN
U
MAZ
MOL
MOR
MSDN
MUS
NCV
BIBLIOGRAFIE
NUM
RAN
RBPE
L
SAT
SAV
SAV96
SHI
SLA94a
SLA94b
SLA95a
SLA95b
SLA96
SOM
SOR
STL
TOM
TRI
VCPP
ZEI
- 212 -