ALTE DOCUMENTE
|
||||||
|
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).
|