Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




PROGRAME AUTOLISP

autocad




PROGRAME AUTOLISP

În capitolul 14 au fost introduse elementele de bază legate de limbajul de programare AutoLISP. În acest capitol sunt prezentate două aplicații din domeniul construcțiilor de mașini în care vor fi utilizate programe și rutine AutoLISP mai complexe.

16.1. Proiectarea calibrelor tampon cilindrice

La fabricația de serie sau de masă, controlul diferitelor dimensiuni (acolo unde precizia o permite) se face cu ajutorul calibrelor. Utilizarea calibrelor oferă o serie de avantaje față de folosirea mijloacelor de măsurare universale și anume: mărește productivitatea operațiilor de control, înlătură erorile de citire, asigură interschimbabilitatea pieselor fabricate.

Calibrele sunt măsuri și aparate de măsurat care materializează cele două limite, între care este permis să se execute o piesă oarecare. De exemplu, în cazul unui alezaj, materializarea limitelor se poate face prin două tampoane: unul pentru materializarea dimensiunii minime (numit partea "trece" notată cu "T") și altul pentru materializarea dimensiunii maxime (numit partea "nu trece", notată cu "NT").

Cele două calibre considerate, care materializează cele două limite permise pentru executarea unei piese, se numesc calibre limitative.

Construcția calibrelor este standardizată. Enumerăm câteva STAS-uri care au fost utilizate și pentru elaborarea acestui subcapitol:

·     16416l1121q ;     16416l1121q ; STAS 8221-68 (revizuit în 1969) - Calibre netede fixe pentru alezaje. Toleranțe de execuție și limite de uzură.

·     16416l1121q ;     16416l1121q ; STAS 8222-68 (revizuit în 1969) - Calibre de lucru și contracalibre. Toleranțe de execuție și limite de uzură.

·     16416l1121q ;     16416l1121q ; STAS 2981/1-88 - Calibre tampon cu diametrul de la 1 la 50 mm. Dimensiuni.

·     16416l1121q ;     16416l1121q ; STAS 3938-87 - Calibre și contracalibre limitative netede fixe. Condiții tehnice generale de calitate.

·     16416l1121q ;     16416l1121q ; STAS 8424-69 - Verificarea pieselor cu calibre limitative netede.

·     16416l1121q ;     16416l1121q ; STAS 2980/1-87 - Calibre și contracalibre limitative netede fixe pentru verificarea alezajelor și arborilor. Simbolizare și clasificare.

·     16416l1121q ;     16416l1121q ; STAS 8100/2-88 - Sistemul de toleranțe și ajustaje pentru dimensiuni liniare. Toleranțe fundamentale și abateri fundamentale pentru dimensiuni până la 3150.

Pentru fiecare dimensiune care trebuie controlată cu ajutorul calibrelor trebuie proiectat și fabricat câte un set de calibre limitative. În acest caz proiectarea calibrelor prin metode clasice devine o muncă costisitoare și neeconomică. Metoda de proiectare și de desenare automată a calibrelor tampon cilindice pe care o prezentăm în continuare, utilizând calculatorul, este rentabilă, mai ales în atelierele de proiectare în care această muncă este preponderentă.

16.1.1. Parametrizarea desenelor calibrelor

Dimensiunile calibrelor tampon pentru alezaje cilindrice cu diametrul de la 1 la 50 mm sunt date în STAS 2981/1-88. În acest STAS este dat un tabel care cuprinde atât dimensiunile calibrului partea "trece" cât și dimensiunile calibrului partea "nu trece" în funcție de intervalul de dimensiuni în care se încadrează diametrul nominal al alezajului pentru care se proiectează calibrele. Astfel, se poate spune că aceste calibre (ca și celelalte tipuri constructive de calibre) sunt parametrizate, în sensul că fiecare dimensiune a calibrului este prezentată în tabel cu valorile ei.

Pentru realizarea programului de proiectare și desenare automată este necesar ca desenele calibrelor prezentate în STAS 2981/1-88 să fie întocmite într-o manieră de lucru specifică AutoCAD-ului. Aceasta înseamnă că orice punct care reprezintă un punct definitoriu pentru entitățile de tip AutoCAD care vor forma desenul calibrului "trece" și respectiv "nu trece" trebuie definit în coordonate relative față de originea UCS-ului curent. În acest scop, prin programul AutoLISP întocmit de noi am definit un UCS cu originea în punctul "po" aflat pe axa calibrului, în planul frontal din stânga. Astfel, în acest sistem de coordonate pot fi stabilite cu ușurință coordonatele tuturor punctelor care definesc conturul calibrului.

Fig.16.1. Desenul calibrului partea "trece" cu marcarea principalelor puncte.

Considerând, pentru început, desenul calibrului tampon partea "trece" (fig.16.1) se vor determina coordonatele punctelor care definesc desenul acestui calibru în sistemul UCS stabilit, avându-se în vedere dimensiunile standardizate ale calibrului conform STAS 2981/1-88.

po (0, 0)

p1 (0, d/2)

p2 (l2t, d/2)

p3 (l2t, do/2) (s-a luat coordonata y =do/2 deoarece conicitatea părții de fixare a calibrului în mâner este foarte mică.)

p4 (l1t, (do/2) -1) (s-a scăzut 1 din do/2 pentru a obține o reprezentare a     conicității apropiată de cea prescrisă în STAS.)

p5 (l1t, 0)

După cum se va vedea în programul principal, se desenează conturul calibrului de deasupra axei, cu ajutorul punctelor definite mai sus, urmând ca cealaltă jumătate a conturului să fie realizată prin oglindire, cu ajutorul comenzii MIRROR.

Avându-se în vedere diametrul do din planul care limitează introducerea cozii calibrului în mâner și lungimea l3, s-au determinat coordonatele punctelor m1 și m2, astfel ca acestea să fie în afara conturului calibrului. Punctul m3 se determină automat cu funcția "inters" din AutoLISP prin intersecția dreptelor determinate de punctele m1 și m2, respectiv de p3 și p4. Asemănător se determină punctul m4.

Determinarea coordonatelor altor puncte necesare cotării calibrelor, precum și cele necesare realizării canalului de la calibrul NT (n1, n2, n3, n4, p6, p7, p8 și p9 - v.fig.16.2) se face prin program și sunt relative la coordonatele punctelor de pe conturul calibrului și la dimensiunile acestuia.

Fig.16.2. Desenul calibrului partea " nu trece" cu marcarea principalelor puncte.

16.1.2. Crearea bazelor de date

Pentru ca proiectarea și desenarea calibrelor să decurgă în mod automat, utilizând un program AutoLISP, trebuie ca în memoria calculatorului să existe datele din STAS referitoare la dimensionarea acestor calibre. În acest scop au fost create trei baze da date pe care le vom prezenta în continuare.

Baza 1 de date cuprinde dimensiunile calibrelor tampon partea T și partea NT) conform tabelului din STAS 2981/1-88. Se observă că, în această bază de date, dimensiunile sunt aranjate într-o formă convenabilă pentru citirea lor ulterioară.

BAZA1.DAT

Li Ls do L1 L2 L3 l1t l1nt l2t l2nt l3m e1 e2 r

Câmpurile înregistrărilor din baza de date au următoarea structură. Limita inferioară a intervalului de dimensiuni este scrisă începând din coloana 1, limita superioară a intervalului de dimensiuni este scrisă începând din coloana 4, ambele având o lungime de câte două caractere. Celelalte dimensiuni sunt scrise astfel:

do (7 4); L1 (12 3); L2 (16 3); L3 (20 3); l1t (24 2); l1nt (27 2); l2t (30 4);

l2nt (35 4); l3m (40 2); e1 (43 3); e2 (47 3); r (51 3)

unde do, l1, l2 etc. reprezintă simbolurile dimensiunilor respective, (unele notate diferit de cele din STAS pentru a le diferenția), primul număr din paranteză reprezintă coloana din care sunt scrise în baza de date, iar cel de-al doilea număr reprezintă lungimea dimensiunii în caractere. Semnificația notațiilor de mai sus rezultă din fig.16.1 și fig.16.2. Dimensiunile notate cu L1, L2 și L3 reprezintă lungimea calibrului asamblat cu mânerul și nu sunt folosite în calculele noastre.

Baza 2 de date conține toleranțele fundamentale ale piesei, toleranțele fundamentale ale calibrelor, precum și corelația dintre ele, conform STAS 8222-68 (revizuit în 1969), tabelul 2. Ca urmare, cu această bază de date se stabilește treapta de precizie a calibrului în funcție de treapta de precizie a dimensiunii piesei de controlat.

BAZA2.DAT

În baza 2 de date precizia dimensiunii piesei pentru care se proiectează calibrul este scrisă începând din coloana 1 sau 2 (dacă are o singură cifră), cu o lungime de două caractere, iar precizia calibrului este scrisă din coloana 4, cu o lungime de un caracter.

Baza 3 de date conține toleranțele de execuție (H) ale calibrelor și distanțele între centrul câmpului de toleranță a părții "trece" a calibrului tampon cilindric nou și limita "trece" a piesei (notate cu z), în funcție de precizia și de diametrul nominal al suprafeței piesei.

BAZA3.DAT

În această bază de date sunt scrise, în ordine, următoarele: limita inferioară a intervalului de dimensiuni al piesei începând din coloana 1, pe o lungime de 2 caractere, limita superioară a aceluiași interval de dimensiuni începând din coloana 4, pe o lungime de 2 caractere, urmează 7 câmpuri cu lungimea de 4 caractere pentru toleranțele de execuție ale calibrelor (H) și 22 de câmpuri cu lungimea de 4 caractere pentru valorile distanțelor z, în alternanță cu valorile limitelor de uzură (y), corespunzătoare preciziilor de la 6 la 16 ale pieselor.

Editarea celor trei baze de date s-a făcut cu ajutorul editorului de texte EDIT al sistemului MS-DOS.

16.1.3. Citirea datelor din bazele de date

Pentru citirea datelor din baza 1 de date și pentru atribuirea valorilor citite unor variabile a fost întocmită rutina AutoLISP "CB1". Fișierul care conține această rutină se numește CB1.LSP și este prezentat în continuare.

;Fisier CB1.LSP

;Rutina citeste datele din baza1 si determina dimensiunile

calibrelor partea "trece" si partea "nu trece"

(defun CB1 (dn / line fis1)

(setq fis1 (open "/cad/baza1.dat" "r"))

(setq line (read-line fis1))

(while (and line (or (<= dn (atof (substr line 1 2))) (> dn (atof (substr line 4 2)))))

(setq line (read-line fis1)))

(setq gasitdn nil)

(if line (setq gasitdn T

do (atof (substr line 7 4))

l1 (atof (substr line 12 3))

l2 (atof (substr line 16 3))

l3 (atof (substr line 20 3))

l1t (atof (substr line 24 2))

l1nt (atof (substr line 27 2))

l2t (atof (substr line 30 4))

l2nt (atof (substr line 35 4))

l3m (atof (substr line 40 2))

e1 (atof (substr line 43 3))

e2 (atof (substr line 47 3))

r (atof (substr line 51 3))

)

(print "Diametrul suprafetei este in afara limitelor 6,01-50"))

(close fis1)

(princ)

Când este apelată de programul principal, această rutină primește diametrul nominal (dn) al alezajului pentru care se proiectează calibrul. După deschiderea bazei de date, se intră într-un ciclu while care testează dacă diametrul dn se încadrează într-un interval de dimensiuni pe care îl cuprinde baza de date și pentru care programul de proiectare și desenare poate realiza tipul de calibru pentru care a fost conceput. Dacă diametrul dn este găsit în baza de date, sunt citite dimensiunile corespunzătoare din bază, iar dacă nu este găsit, este afișat mesajul "Diametrul suprafeței piesei este în afara limitelor 6-50 mm. Dimensiunile calibrului citite din baza 1 de date sunt atribuite variabilelor do, L1, L2, L3, l1t etc și vor fi transmise programului principal.

Pentru citirea datelor din baza 2 de date a fost întocmită rutina "CB2". Fișierul care conține această rutină se numește CB2.LSP și este următorul:

;Fisier CB2.LSP

;Rutina citeste datele din baza2 si determina treapta de precizie a calibrului

(defun CB2 (pr / line fis2)

(setq fis2 (open "/cad/baza2.dat" "r"))

(setq line (read-line fis2))

(while (and line (/= pr (atoi (substr line 1 2))))

(setq line (read-line fis2)))

(setq gasitpr nil)

(if line (setq gasitpr T

prc (atoi (substr line 4 1))

)

(print "Treapta de precizie a piesei este in afara limitelor 6-16"))

(close fis2)

(princ)

La apelarea acestei rutine de către programul principal CALT.LSP (sau (CALNT.LSP), ea primește treapta de precizie a piesei notată cu variabila pr. Apoi se intră într-un ciclu while care care verifică dacă precizia piesei se află în limitele 6-16. În cazul în care precizia piesei a fost găsită între aceste limite, rutina citește din baza de date precizia calibrului (notată cu prc), corespunzătoare preciziei piesei. În caz contrar, rutina afișează mesajul "Treapta de precizie a piesei este în afara limitelor 6-16." și se iese din program.

Citirea datelor din baza 3 de date se face cu ajutorul rutinei "CB3", conținută în fișierul CB3.LSP, prezentat în continuare.

;Fisier CB3.LSP

;Rutina citeste toleranta de executie a calibrului (H),

; distanta "z" si limita de uzura "y" din baza3 de date

(defun CB3 (dn / line fis3)

(setq fis3 (open "/cad/baza3.dat" "r"))

(setq line (read-line fis3))

(while (and line (or (<= dn (atof (substr line 1 2))) (> dn (atof (substr line 4 2)))))

(setq line (read-line fis3)))

(setq gasitdn nil)

(if line (progn

(setq gasitdn T)

(setq i 1)

(while (<= i 7) (progn

(if (= prc i) (setq h (atof (substr line (+ (* i 5) 2) 4))))

(setq i (1+ i))

)

)

(setq i 6)

(while (<= i 16) (progn

(if (= pr i) (setq z (atof (substr line (- (* i 10) 18) 4))

y (substr line (- (* i 10) 13) 4)))

(setq i (1+ i))

)

)

)

(close fis3)

(princ)

Când este apelată de programul principal, rutina "CB3" primește valoarea diametrului nominal (dn) al piesei. Cu ajutorul unui ciclu while, rutina găsește înregistrarea din baza de date care corespunde intervalului de dimensiuni în care se încadrează dimensiunea nominală a piesei. Utilizând funcția "if" a AutoLISP-ului și două cicluri while, cu ajutorul a trei formule de recurență, se determină câmpul în care este înregistrată toleranța de execuție (H) a calibrului (corespunzătoare preciziei lui), câmpul în care este înregistrată valoarea distanței z, corespunzătoare preciziei piesei și câmpul în care este înregistrată limita de uzură (y) a calibrului "trece". Valorile variabilelor H, z și y citite din baza 3 de date sunt returnate programului principal.

Cele trei rutine de citire a celor trei baze de date sunt utilizate atât de programul principal CALT.LSP la proiectarea calibrului tampon partea "trece", cât și de programul principal CALNT.LSP la proiectarea calibrului tampon partea "nu trece".

16.1.4. Rutina pentru proiectarea calibrului "trece"

Această rutină permite proiectarea și desenarea automată a calibrului "trece". Ea este conținută în fișierul CALT.LSP pe care îl prezentăm în continuare.

;Fisier CALT.LSP

;programul deseneaza calibru partea TRECE

(defun CALT ( / p1 p2 p3 p4 p5 p6 p7 pc1 pc2 pc3 m1 m2 m3 m4 m5 m6 ps pd)

(prompt "DATE INITIALE ALE PROIECTULUI:")

(setq dn (getreal "\nDati diametrul nominal al alezajului de controlat (peste 6 pana la 50):"))

(setq as (getreal "Dati abaterea supeioara (cu semnul ei) a diametrului alezajului:"))

(setq ai (getreal "Dati abaterea inferioara (cu semnul ei) a diametrului alezajului:"))

(setq pr (getint "Dati treapta de precizie a diametrului alezajului (de la 6 la 16):"))

(setvar "CMDECHO" 0)

(setvar "BLIPMODE" 0)

(cb1 dn)

(cb2 pr)

(if (= gasitdn nil) (exit))

(if (= gasitpr nil) (exit))

(setq po (list 0 0)

p1 (list 0 (/ dn 2))

p2 (list l2t (cadr p1))

p3 (list l2t (/ do 2))

p4 (list l1t (- (cadr p3) 1))

p5 (list l1t 0)

ps (list (- (car po) 5) 0)

pd (list (+ (car p5) 5) 0))

(command "zoom" "w" (list 0 0) (list 200 50))

(setq orig (getpoint "\nIndicati punctul pe axa calibrului,

in planul frontal din stanga:"))

(command "UCS" "o" orig)

(command "linetype" "s" "dashdot2" ""

"line" ps pd ""

"linetype" "s" "continuous" ""

"pline" po "W" 0.5 0.5 p1 p2 p3 p4 p5 ""

"chamfer" "D" 0.5 0.5)

(command "chamfer" "C" (list -2 1) (list 2 1)

"C" (list 2 (+ (cadr p1) 1)) (list 2 (- (cadr p1) 1)))

(command "chamfer" "C" (list (- l1t 1) 0.1) (list (+ l1t 1) 0.1)

"C" (list (- l1t 3) (+ (cadr p4) 3)) (list (- l1t 3) 0.1))

(command "fillet" "R" r

"fillet" "C" (list (- l2t 2) (+ (cadr p3) 1))

(list (+ l2t 2) (- (cadr p3) 1)))

(command "pline" p2 (list l2t 0) ""

"pline" (list 0.7 (cadr p1)) (list 0.7 0) ""

"pline" (list (- l1t 0.7) (cadr p4)) (list (- l1t 0.7) 0) "")

(command "mirror" "C" p1 pd "" ps pd "")

(setq m1 (list (- l1t l3m) (+ (/ do 2) 2)))

(setq m2 (list (- l1t l3m) (- (/ do -2) 2)))

(command "line" m1 m2 "")

(cb3 dn)

(setq dmin (+ dn ai)

dc (+ dmin (/ z 1000))

ac (/ h 2000)

acs (rtos ac 2 4)

dc (rtos dc 2 4)

do (rtos do 2 1))

(command "units" 2 1 1 0 0 "N")

(command "DIM" "dimasz" 2.5 "dimtxt" 2 "dimtad" "ON" "dimtih" "OFF"

"dimtol" "ON" "dimtix" "OFF" "dimtoh" "OFF")

(setq pc1 (list 2 (- (/ dn -2) 25)))

(setq pc2 (list 2 (- (/ dn -2) 13)))

(setq pc3 (list (car p5) (cadr pc2)))

(command "dimtp" 0 "dimtm" 0.3 "hor" p2 po pc2 "")

(command "dimtp" 0.3 "dimtm" 0 "hor" po p5 pc1 "")

(command)

(command "units" 2 0 1 0 0 "N")

(command "DIM" "dimtp" 1 "dimtm" 0 "hor" m2 p5 pc3 "")

(command)

(command "units" 2 3 1 0 0 "N")

(setq dcs (strcat "%%c" dc "%%p" acs))

(command "DIM" "ve" (list (car p1) (/ dn -2)) p1 (list -9 0) dcs)

(command)

(setq m3 (inters m1 m2 p3 p4)

p4b (list (car p4) (* -1 (cadr p4)))

p3b (list (car p3) (* -1 (cadr p3)))

m4 (inters m1 m2 p4b p3b)

m5 (polar m3 0.25 10)

m6 (polar m4 0.25 10)

t1 (polar p1 0.8 6))

(command "line" m3 m5 "")

(command "line" m4 m6 "")

(setq dos (strcat "%%c" do))

(command "DIM" "ve" m6 m5 m5 dos)

(command "dimasz" 0.1 "Leader" p1 t1 "" "0,5x45%%d")

(setq t2 (polar p4b 4 8))

(setq t4 (list (car p4b) (cadr t2)))

(command "Leader" p4b t2 t4 "" "0,5x45%%d")

(setq pcon (list (- (car p4) 5) (cadr p4)))

(setq t3 (polar pcon 0.8 8))

(command "dimasz" 1.5 "Leader" pcon t3 "" "> 0,02:1")

(setq p6 (list (+ (car p3) (* 2.5 r)) (+ (cadr p3) (* 2.5 r))))

(setq p7 (list (+ (car p3) (/ r 4)) (+ (cadr p3) (/ r 4))))

(setq rs (rtos r 2 1))

(command "Leader" p7 p6 "" (strcat "R" rs))

(command)

(setq r1 (list (+ (car p1) 3) (* (cadr p1) -1))

r2 (polar r1 -1.0472 3)

r3 (polar r1 -2.0944 6)

r4 (list (+ (car r3) 1) (cadr r3)))

(command "line" r1 r2 "" "line" r1 r3 "")

(command "text" r4 2 0 "0.4")

(setq r1 (list (+ (car m4) 4) (cadr m4))

r2 (polar r1 -1.0472 3)

r3 (polar r1 -2.0944 6)

r4 (list (+ (car r3) 1) (cadr r3)))

(command "line" r1 r2 "" "line" r1 r3 "")

(command "text" r4 2 0 "0.8")

(setq p8 (list (car p5) (- (cadr pc1) 10)))

(command "text" "Justify" "Right" p8 2.5 0

"Limita de uzura a calibrului TRECE este y=")

(command "text" p8 2.5 0 (strcat y "microni"))

(command "UCS" "W")

(setvar "CMDECHO" 1)

(setvar "BLIPMODE" 1)

(princ)

Rutina CALT cere de la utilizator datele inițiale de proiectare a calibrului și anume: diametrul nominal al alezajului pentru care se proiectează calibrul (acesta poate avea valori între limitele 6-50 mm), abaterea superioară și abaterea inferioară ale diametrului alezajului, treapta de precizie a diametrului alezajului (cuprinsă între limitele 6-16).

Fiind cunoscute aceste date legate de diametrul alezajului de controlat, sunt apelate subrutinele CB1 și CB2 care citesc alte date din bazele de date respective. Dacă diametrul alezajului (dat de utilizator) se încadrează în limitele arătate și treapta de precizie se află și ea în limitele 6-16, se continuă proiectarea calibrului, în caz contrar programul este întrerupt și se afișează mesajul corespunzător (arătat la paragraful "Citirea datelor din bazele de date"). Limitele peste 6 până la 50 mm, date pentru diametrul alezajului, sunt impuse de tipul constructiv al calibrului tampon și de dimensiunile calibrului prevăzute în STAS 2981/1-88; pentru acest tip de calibru a fost conceput programul AutoLISP de proiectare.

După atribuirea coordonatelor principalelor puncte de pe conturul calibrului, se stabilește un ZOOM convenabil și se definește un sistem de coordonate al utilizatorului (UCS) cu originea într-un punct pe axa calibrului, punct dat de utilizator cu ajutorul mouse-ului.

În continuare sunt apelate comenzi AutoCAD pentru trasarea semiconturului calibrului, după care acesta este oglindit cu ajutorul comenzii MIRROR pentru a obține conturul întreg al calibrului.

După apelarea subrutinei CB3 care citește baza 3 de date se calculează diametrul suprafeței active a calibrului și abaterea acestui diametru, avându-se în vedere relațiile de calcul din STAS 8222-68, tabelul 1.

În următoarea secvență a rutinei CALT se realizează cotarea calibrului pe baza datelor citite de subrutina CB1 din baza 1 de date și pe baza dimensiunilor calculate prin program.

În ultima secvență a rutinei se specifică pe desenul calibrului rugozitatea suprafeței active (Ra 0,4 mm), rugozitatea cozii conice (Ra 1,6 mm) și se scrie limita de uzură (y) conform STAS 8222-68. Valorile parametrului de rugozitate Ra sunt conform STAS 3938-87.

16.1.5. Rutina pentru proiectarea calibrului "nu trece"

Pentru proiectarea și desenarea automată a calibrului "nu trece" a fost concepută o rutină separată conținută în fișierul CALNT.LSP, prezentată în continuare.

;Fisier CALNT.LSP

;programul deseneaza calibru partea TRECE

(defun CALNT ( / p1 p2 p3 p4 p5 ps pd n1 n2 n3 n4 f1 f2 f3 f4 f5 f6 f7 f8)

(prompt "DATE INITIALE ALE PROIECTULUI:")

(setq dn (getreal "\nDati diametrul nominal al alezajului de controlat (peste 6 pana la 50):"))

(setq as (getreal "Dati abaterea supeioara (cu semnul ei) a diametrului alezajului:"))

(setq ai (getreal "Dati abaterea inferioara (cu semnul ei) a diametrului alezajului:"))

(setq pr (getint "Dati treapta de precizie a diametrului alezajului (de la 6 la 16):"))

(setvar "CMDECHO" 0)

(setvar "BLIPMODE" 0)

(cb1 dn)

(cb2 pr)

(if (= gasitdn nil) (exit))

(if (= gasitpr nil) (exit))

(setq po (list 0 0)

p1 (list 0 (/ dn 2))

p2 (list l2nt (cadr p1))

p3 (list l2nt (/ do 2))

p4 (list l1nt (- (cadr p3) 1))

p5 (list l1nt 0)

ps (list (- (car po) 5) 0)

pd (list (+ (car p5) 5) 0)

n1 (list (+ (car p2) e2) (cadr p1))

n2 (list (car n1) (* -1 (cadr n1)))

n3 (list (+ (car n1) e1) (cadr n1))

n4 (list (car n3) (cadr n2))

(command "zoom" "w" (list 0 0) (list 200 50))

(setq orig (getpoint "\nIndicati punctul pe axa calibrului,

in planul frontal din stanga:"))

(command "UCS" "o" orig)

(command "linetype" "s" "dashdot2" ""

"line" ps pd ""

"linetype" "s" "continuous" ""

"pline" po "W" 0.5 0.5 p1 p2 p3 p4 p5 ""

"chamfer" "D" 0.5 0.5)

(command "chamfer" "C" (list -2 1) (list 2 1)

"C" (list 2 (+ (cadr p1) 1)) (list 2 (- (cadr p1) 1)))

(command "chamfer" "C" (list (- l1nt 1) 0.1) (list (+ l1nt 1) 0.1)

"C" (list (- l1nt 3) (+ (cadr p4) 3)) (list (- l1nt 3) 0.1))

(command "fillet" "R" r

"fillet" "C" (list (- l2nt 2) (+ (cadr p3) 1))

(list (+ l2nt 2) (- (cadr p3) 1)))

(command "pline" p2 (list l2nt 0) ""

"pline" (list 0.7 (cadr p1)) (list 0.7 0) ""

"pline" (list (- l1nt 0.7) (cadr p4)) (list (- l1nt 0.7) 0) "")

(command "mirror" "C" p1 pd "" ps pd "")

(command "pline" n1 n2 "" "pline" n3 n4 "")

(setq f1 (list (+ (car n1) 0.3) (cadr n1))

f2 (list (car f1) 0.5)

f3 (list (+ (car n2) 0.3) (cadr n2))

f4 (list (car f3) -0.5))

(command "trim" "c" n1 n3 "" "f" f1 f2 "" "f" f3 f4 "" "")

(setq f1 (list (+ (car n3) 0.5) (cadr n3))

f2 (list (car f1) 0.5)

f3 (list (car f1) (cadr n4))

f4 (list (car f1) -0.5)

f5 (list (- (car n1) 0.5) (cadr n1))

f6 (list (car f5) 0.5)

f7 (list (car f5) (cadr n2))

f8 (list (car f5) -0.5))

(command "trim" "F" f1 f2 "" "F" f3 f4 "" "F" f5 f6 "" "F" f7 f8 ""

"" "F" n1 n3 "" "F" n2 n4 "" "")

(setq m1 (list (- l1nt l3m) (+ (/ do 2) 2)))

(setq m2 (list (- l1nt l3m) (- (/ do -2) 2)))

(command "line" m1 m2 "")

(cb3 dn)

(setq dmax (+ dn as)

dc dmax

ac (/ h 2000)

acs (rtos ac 2 4)

dc (rtos dc 2 4)

do (rtos do 2 1))

(command "units" 2 1 1 0 0 "N")

(command "DIM" "dimasz" 2 "dimtxt" 2 "dimtad" "ON" "dimtih" "OFF"

"dimtol" "ON" "dimtix" "OFF" "dimtoh" "OFF")

(setq pc1 (list 2 (- (/ dn -2) 25))

pc2 (list 2 (- (/ dn -2) 13))

pc3 (list (car p5) (cadr pc2)))

(command "dimtp" 0 "dimtm" 0.3 "hor" p2 po pc2 "")

(command "dimtp" 0.3 "dimtm" 0 "hor" po p5 pc1 "")

(command)

(command "units" 2 0 1 0 0 "N")

(command "DIM" "dimtp" 1 "dimtm" 0 "hor" m2 p5 pc3 "")

(command)

(command "units" 2 3 1 0 0 "N")

(setq dcs (strcat "%%c" dc "%%p" acs))

(command "DIM" "ve" (list (car p1) (/ dn -2)) p1 (list -9 0) dcs)

(command)

(setq m3 (inters m1 m2 p3 p4)

p4b (list (car p4) (* -1 (cadr p4)))

p3b (list (car p3) (* -1 (cadr p3)))

m4 (inters m1 m2 p4b p3b)

m5 (polar m3 0.25 10)

m6 (polar m4 0.25 10)

p6 (list (car n3) (- (cadr m3) 0.5))

p7 (list (- (car p6) e1) (cadr p6))

p8 (list (car n4) (+ (cadr m4) 0.5))

p9 (list (- (car p8) e1) (cadr p8))

pc4 (list (car p6) (+ (cadr p2) 5))

pc5 (list (car p7) (+ (cadr p2) 12)))

(command "pline" p6 p7 "" "pline" p8 p9 "")

(setq e1s (rtos e1 2 1))

(setq e2s (rtos e2 2 1))

(command "DIM" "hor" p7 p6 pc4 e1s)

(command "hor" p2 p7 pc5 e2s)

(setq pc6 (list (+ (car p9) (/ e1 2)) (cadr p8)))

(command "ve" p8 (list (car p8) (- (cadr m4) 0.2)) pc6 "0,1")

(command)

(command "line" m3 m5 "")

(command "line" m4 m6 "")

(setq dos (strcat "%%c" do))

(command "DIM" "ve" m6 m5 m5 dos)

(setq t1 (polar p1 0.8 8))

(setq t5 (list (- (car t1) 1) (cadr t1)))

(command "dimasz" 0.1 "Leader" p1 t1 t5 "" "0,5x45%%d")

(setq t2 (polar p4b 4 6))   

(setq t4 (list (car p4b) (cadr t2)))

(command "Leader" p4b t2 t4 "" "0,5x45%%d")

(setq pcon (list (- (car p4) 5) (cadr p4)))

(setq t3 (polar pcon 0.8 8))

(command "dimasz" 1.5 "Leader" pcon t3 "" "> 0,02:1")

(setq p11 (list (+ (car p3) (* 2.5 r)) (+ (cadr p3) (* 2.5 r)))

p10 (list (+ (car p3) (/ r 4)) (+ (cadr p3) (/ r 4)))

rs (rtos r 2 1))

(command "Leader" p10 p11 "" (strcat "R" rs))

(command)

(setq r1 (list (+ (car p1) 3) (* (cadr p1) -1))

r2 (polar r1 -1.0472 3)

r3 (polar r1 -2.0944 6)

r4 (list (+ (car r3) 1) (cadr r3)))

(command "line" r1 r2 "" "line" r1 r3 "")

(command "text" r4 2 0 "0.4")

(setq r1 (list (+ (car m4) 4) (cadr m4))

r2 (polar r1 -1.0472 3)

r3 (polar r1 -2.0944 6)

r4 (list (+ (car r3) 1) (cadr r3)))

(command "line" r1 r2 "" "line" r1 r3 "")

(command "text" r4 2 0 "0.8")

(command "UCS" "W")

(setvar "CMDECHO" 1)

(setvar "BLIPMODE" 1)

(princ)

Această rutină este asemănătoare cu rutina pentru proiectarea calibrului "trece" și apelează aceleași subrutine (CB1, CB2, CB3) pentru citirea datelor corespunzătoare calibrului "nu trece" și care se află în aceleași baze de date folosite și de rutina CALT.

Deosebirea dintre desenul calibrului "trece" și desenul calibrului "nu trece" constă în faptul că ultimul are prevăzut un canal circular pe suprafața cozii și este realizat conform dimensiunilor date în STAS 2981/1-88.

Cele două rutine CALT și CALNT sunt utilizate ca programe principale, dar pot fi incluse și într-un program principal care să le apeleze pe rând după dorință. În această aplicație s-a optat pentru prima variantă, considerând că pentru fiecare calibru proiectat ("trece", respectiv "nu trece") este necesar să fie realizat automat un desen care trebuie apoi pregătit pentru plotare.

16.1.6. Rutina pentru încărcarea fișierelor

Pentru încărcarea tuturor fișierelor necesare rulării celor două rutine AutoLISP a fost scrisă rutina CALIBRE în fișierul CALIBRE.LSP dată mai jos.

;Fisier CALIBRE.LSP

;Rutina pentru incarcare fisierelor .LSP

(defun C:START ()

(load "CB1")

(load "CB2")

(load "CB3")

(load "CALT")

(LOAD "CALNT")

(princ)

Se observă că această rutină este simplă și cu ea se încarcă cele 5 fișiere necesare, prin intermediul funcției LOAD din AutoLISP. Pentru încărcare se tastează LOAD la prompt-ul "Command:" al AutoCAD-ului, astfel:

Command: (load "calibre")

Apăsând tasta ENTER, pe ecran apare mesajul:

C:START

unde START reprezintă numele funcției care definește rutina; ca urmare, acum se tastează START la prompt-ul "Command:"

Command: start

Acum pot fi lansate în execuție rutinele CALT și CALNT, scriind numele lor în paranteză la prompt-ul "Command:", de exemplu:

Command: (calt)

Astfel se va obține automat desenul calibrului "trece".

Apelarea acestor rutine se face dintr-un fișier desen nou.

După aceasta, utilizatorul poate face unele completări desenului, direct din AutoCAD, în spațiul model sau în spațiul hârtie, cum ar fi încadrarea unor dimensiuni (conicitatea, diametrul conului în planul de măsurare), completarea indicatorului etc.

În continuare va fi prezentat un exemplu de utilizare a acestor rutine la proiectarea calibrelor tampon cilindrice. Presupunem că dorim să proiectăm calibrul partea "trece" și calibrul partea "nu trece" pentru controlul alezajului cu diametrul . Conform STAS 8100/2-88 acestui diametru îi corespunde treapta 8 de precizie. Pentru proiectarea calibrului "trece", se lansează AutoCAD-ul, se deschide un fișier desen nou și se dau comenzile:

Command: (load "calibre")

C:START

Command: start

Command: (calt)

Pe ecran apar succesiv următoarele cereri la care utilizatorul trebuie să răspundă:

DATE INITIALE ALE PROIECTULUI

Dați diametrul nominal al alezajului de controlat (peste 6 până la 50): 30

Dați abaterea superioară (cu semnul ei) a diametrului alezajului: 0.033

Dați abaterea inferioară (cu semnul ei) a diametrului alezajului: 0

Dați treapta de precizie a diametrului alezajului (de la 6 la 16): 8

Fig.16.3. Calibrul partea "trece" proiectat cu ajutorul rutinei AutoLISP.

Primind aceste date, rutina CALT proiectează calibrul "trece" și îl desenează automat ca în fig.16.3. În același mod se dau comenzile și pentru proiectarea calibrului "nu trece", obținându-se desenul din fig.16.4.

Fig.16.4. Calibrul partea " nu trece" proiectat cu ajutorul rutinei AutoLISP.

16.2. Proiectarea cuțitelor profilate prismatice

Cuțitele profilate sunt scule așchietoare la care muchia materializează generatoarea suprafeței de prelucrat. În industria constructoare de mașini cuțitele profilate sunt utilizate la prelucrarea pieselor prin strunjire, mai rar la prelucrarea prin rabotare.

Prelucrarea suprafețelor profilate, fie cu scule așchietoare cu generatoare materializată (cazul prelucrării cu ajutorul cuțitelor profilate sau cu freze profilate), fie prin rulare fără alunecare (cazul strunjirilor, mortezărilor sau rectificărilor prin rulare), impune muchiei așchietoare o anumită formă, dimensiuni și poziție relativă. Aceste elemente influențează caracteristicile geometrice ale feței de așezare.

Prin profilul unei suprafețe a sculei așchietoare se înțelege linia de intersecție dintre suprafața considerată și un plan, numit plan de profilare.

În cazul unei scule așchietoare se deosebesc trei linii de profil: profil funcțional, profil tehnologic și profil de măsurare (de control). În general, se pot suprapune ultimele două linii de profil, dacă planele de profilare tehnologic și de măsurare sunt aceleași. Profilul funcțional al cuțitelor profilate este în planul axial al piesei și este identic cu profilul piesei.

Profilul cuțitului profilat interesează atât pentru execuție cât și pentru control.

Proiectarea cuțitelor profilate poate fi împărțită în două părți distincte:

·     16416l1121q ;     16416l1121q ; Determinarea profilului cuțitului prin una din metodele: grafică, analitică sau geometrică.

·     16416l1121q ;     16416l1121q ; Alegerea și determinarea elementelor constructive și geometrice specifice cuțitului.

În continuare vom prezenta modul de determinare a profilului cuțitului prismatic cu fața de degajare cu simplă orientare, prin metoda geometrică, folosind programarea în AutoLISP.

16.2.1. Algoritmul de calcul pentru determinarea profilului cuțitului

Pentru execuția unui cuțit profilat trebuie să se determine profilul tehnologic și de măsurare, linii care apar pe desenul de execuție al cuțitului. Profilul tehhnologic și de măsurare al unui cuțit prismatic se determină în planul normal pe directoarele rectilinii ale feței de așezare.

În unele cazuri relativ simple, cum este și cazul cuțitelor prismatice cu avans radial, metoda analitică poate fi înlocuită cu o metodă geometrică.

Profilul se determină prin puncte. Numărul de puncte caracteristice se alege între 6 și 30 puncte, depinzând de complexitatea și de lungimea profilului.

Pentru determinarea profilului tehnologic și de măsurare al cuțitului vom considera că punctul M de pe profilul piesei (v. fig. 16.5) de coordonate M(bM,RM) este generat de punctul M' care are pe profilul din planul normal pe fața de așezare coordonatele M' (b M, tM).

La început proiectantul alege valorile optime pentru geometria sculei așchietoare de proiectat, avându-se în vedere în mod deosebit materialul piesei de prelucrat, faza de prelucrare (degroșare, finisare) și materialul părții active a sculei așchietoare. Printre alte elemente geometrice se stabilesc valorile optime pentru unghiurile de degajare și de așezare. Aceste valori trebuie să se realizeze ca unghiuri funcționale în punctul cel mai solicitat de pe tăișul notat cu V. El se găsește în planul axial al piesei și corespunde cercului cu diametrul minim.

În majoritatea cazurilor cuțitelor profilate, fața de degajare are simplă orientare, astfel că unghiurile cinematice în vârful V au valorile:

gpx= 0 și gpyv gfV goptim

unde gfV reprezintă unghiul de degajare funcțional în vârful V.

Unghiul de așezare ayv din sistemul de referință constructiv se consideră egal cu cel din sistemul de referintă funcțional afv .

Cunoscându-se poziția vârfului V aflat pe cercul de rază RV și unghiurile gpyv și ayv (care se aleg din literatura de specialitate) determinarea geometrică a profilului cuțitului prismatic cu fața de degajare cu simplă orientare se face după următorul algoritm [6]:

1.     16416l1121q ;   Se determină unghiul de degajare în punctul M cu relația:

gM= arcsin (RV/RM) sin gpyv

2.     16416l1121q ;   Se determină cota A= RV cos gpyv și cota AM=RM cos gM

3.     16416l1121q ;   Se determină cota CM=AM-A.

4.     16416l1121q ;   Se determină tM=CM cos (gpyv ayv

Fig.16.5. Schema determinării profilului cuțitului prismatic [6}.

16.2.2. Programul AutoLISP pentru determinarea profilului cuțitului

În vederea determinării și desenării automate pe calculator a profilului cuțitului a fost întocmit un program AutoLISP. S-a considerat că desenul piesei este realizat pe calculator în AutoCAD, astfel că punctele caracteristice ale profilului piesei sunt date de utilizator direct de pe acest desen, utilizându-se opțiunile Endpoint și Nearest ale comenzii OSNAP. Programul este conținut în fișierul CUTITP.LSP și este prezentat în continuare.

;Fisier CUTITP.LSP

; Functia determina si traseaza profilul unui cutit profilat prismatic

(defun C:CUTITP ( / gamav alfav av m rm am cm tm profil)

(prompt "DATE INITIALE NECESARE DETERMINARII PROFILULUI CUTITULUI:")

(setq gama (getreal "\nDati unghiul gama in grade:"))

(setq alfa (getreal "Dati unghiul alfa in grade:"))

(setq rv (getreal "Dati raza cercului pe care se afla varful cutitului:"))

(setq np (getint "Dati numarul de puncte (np) de pe profilul piesei

care vor fi introduse:"))

(setvar "CMDECHO" 0)

(setvar "BLIPMODE" 0)

(command "units" 2 3 1 0 0 "N")

(command "graphscr")

(command "ortho" "OFF")

(command "snap" "OFF")

(setq gamav (/ (* gama pi) 180))

(setq alfav (/ (* alfa pi) 180))

(setq av (* rv (cos gamav)))

(prompt "DATI CU MOUSE-UL (np) PUNCTE DE PE PROFILUL PIESEI")

(setq profil (list 1))

(setq j 1)

(while (<= j 10) (progn

(setq m (getpoint))

(setq rm (cadr m))

(setq singm (* (/ rv rm) (sin gamav)))

(setq gamam (/ singm (sqrt (- 1 (expt singm 2 )))))

(setq am (* rm (cos gamam)))

(setq cm (- am av))

(setq tm (* cm (cos (+ gamav alfav))))

(setq pct (list (car m) tm))

(setq profil (cons pct profil))

(setq j (+ j 1))

)

(setq profil (reverse profil))

(setq j 2)

(command "color" 1)

(command "pline" (nth 1 profil) "w" 0.5 0.5 (nth 2 profil) "")

(while (< j 10) (progn

(setq j (+ j 1))

(command "pline" "@" (nth j profil) "")

)

(command "color" 7)

(setvar "CMDECHO" 1)

(setvar "BLIPMODE" 1)

(princ)

În prima parte programul cere utilizatorului introducerea datelor necesare determinării profilului cuțitului: unghiurile gama și alfa, raza cercului pe care se află vârful cuțitului (punctul cel mai solicitat) și numărul de puncte caracteristice ale profilului piesei. Aceste puncte sunt introduse în continuare cu ajutorul mouse-ului, de la un capăt la celălalt al profilului piesei.

Observându-se profilul unei suprafețe de revoluție, se constată că aceasta poate fi împărțită în zone distincte: segmente de dreaptă (pentru suprafețe cindrice sau conice) și arce de cerc (pentru racordări, suprafețe sferice, suprafețe toroidale). Ca urmare, utilizatorul va descompune profilul piesei în părți componente și va trebui să introducă:

- pentru suprafețe cilindrice și conice, deci în cazul în care profilul este un segment de dreaptă, coordonatele punctelor de capăt ale acestui segment;

- pentru celelalte suprafețe vor fi introduse un număr de puncte corespunzător preciziei cu care dorim să obținem profilul cuțitului; cu creșterea numărului de puncte introdus va crește precizia de determinare a profilului cuțitului.

Pentru introducerea punctelor cu precizie ridicată este necesar ca pe ecran să fie afișat, la o scară mărită, profilul piesei, iar grosimea poliliniei cu care acesta este trasat să fie modificată (pentru un moment), cu ajutorul comenzii PEDIT, la valoarea 0,1. În același scop, prin program se stabilește automat o precizie de afișare a numerelor reale cu trei zecimale și sunt dezactivate modurile Ortho și Snap.

În următoarea secvență de program sunt determinate: unghiul de degajare corespunzător fiecărui punct M dat și coordonatele punctelor corespunzătoare (M') de pe profilul cuțitului.

Ultima secvență de program desenează pe ecran profilul cuțitului, cu culoare roșie, alături de profilul piesei (v. fig.16.6). Acesta rezultă prin unirea punctelor M' determinate, cu segmente de dreaptă de lungime mică (dacă a fost introdus un număr suficient de mare de puncte de pe profilul piesei).

Profilul cuțitului poate fi transferat într-un fișier desen (utilizând comenzile WBLOCK și INSERT) și se continuă realizarea desenului cuțitului prismatic, completând-ul cu celelalte elemente constructive, condiții tehnice, indicator etc.

16.2.3. Exemplu de aplicare

Se consideră desenul piesei din fig.16.6 care a fost realizat anterior pe calculator în sistemul AutoCAD. Presupunem că piesa care se fabrică este executată din OL 60 cu rezistența la rupere sr=60 daN/mm2, iar cuțitul profilat este executat din oțel rapid pentru scule Rp3. Profilul piesei fiind de complexitate medie și de lungime relativ mică se consideră că pentru determinarea sa sunt suficiente 10 puncte caracterisrtice.

Având în vedere aceste date ale temei de proiectare, utilizatorul stabilește elementele pe care trebuie să le dea calculatorului după lansarea în execuție a programului, anume:

·     16416l1121q ;     16416l1121q ; Unghiul de degajare gpyv (tabelul 3.28 [6])

·     16416l1121q ;     16416l1121q ; Unghiul de așezare ayv (tabelul 3.28 [6])

·     16416l1121q ;     16416l1121q ; Raza cercului pe care se află vârful V: RV= 14 mm

Fig.16.6. Determinarea profilului cuțitului prismatic pentru prelucrarea piesei     alăturate.

Lansarea în execuție a programului AutoLISP se face parcurgând următoarele etape:

1.     16416l1121q ;   Se lansează sistemul AutoCAD și se încarcă fișierul desen al piesei pentru care se proiectează cuțitul profilat.

2.     16416l1121q ;   Se definește un UCS cu originea pe axa piesei în planul suprafeței frontale din partea stângă a piesei (v. fig.16.6).

3.     16416l1121q ;   Se afișează corespunzător profilul piesei folosind comanda ZOOM; de regulă se afișează profilul piesei la o scară mărită pentru a determina cu ușurință punctele caracteristice ale lui.

4.     16416l1121q ;   Pentru încărcarea programului AutoLISP la prompt-ul AutoCAD-ului se tastează: (load "cutitp") și AutoCAD afișează CUTITP (numele funcției AutoLISP).

5.     16416l1121q ;   După încărcarea programului se tastează CUTITP la prompt-ul Command: și programul intră în execuție.

6.     16416l1121q ;   După introducerea datelor inițiale și a punctelor caracteristice ale profilului de către utilizator, profilul cuțitului prismatic este determinat și desenat automat în partea de jos a desenului piesei (fig 16.6).


Document Info


Accesari: 5250
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )