Sunteți pe pagina 1din 13

(defun det_tol(d it);determina toleranta

;d dimensiunea
;it treapta de precizie
;tol toleranta
(if (> it 16) (setq it 16))
(setq lista '(( 1 3 0.8 1.2 2 3 4 6 10 14 25 40 60 100 140 250 400 600)
( 3 6 1 1.5 2.5 4 5 8 12 18 30 48 75 120 180 300 480 750)
( 6 10 1 1.5 2.5 4 6 9 15 22 36 58 90 150 220 360 580 900)
( 10 18 1.2 2 3 5 8 11 18 27 43 70 110 180 270 430 700 1100)
( 18 30 1.5 2.5 4 6 9 13 21 33 52 84 130 210 330 520 840 1300)
( 30 50 1.5 2.5 4 7 11 16 25 39 62 100 160 250 390 620 1000 1600)
( 50 80 2 3 5 8 13 19 30 46 74 120 190 300 460 740 1200 1900)
( 80 120 2.5 4 6 10 15 22 35 54 87 140 220 350 540 870 1400 2200)
(120 180 3.5 5 8 12 18 25 40 63 100 160 250 400 630 1000 1600 2500)
(180 250 4.5 7 10 14 20 29 46 72 115 185 290 460 720 1150 1850 2900)
(250 315 6 8 12 16 23 32 52 81 130 210 320 520 810 1300 2100 3200)
(315 400 7 9 13 18 25 36 57 89 140 230 360 570 890 1400 2300 3600)
(400 500 8 10 15 20 27 40 63 97 155 250 400 630 970 1550 2500 4000)
)
)
(setq i 0)
(repeat 13
(if (and (> d (nth 0 (nth i lista))) (<= d (nth 1 (nth i lista)))) (setq tol (nth (+ it 1) (nth i
lista))))
(setq i (1+ i))
)
(/ tol 1000.0)
)

(defun det_it (d tol);determina treapta de precizie


;d dimensiunea
;it treapta de precizie
;tol toleranta
(if (= tol 0) (setq it 14))
(setq lista '(( 1 3 0.8 1.2 2 3 4 6 10 14 25 40 60 100 140 250 400 600)
( 3 6 1 1.5 2.5 4 5 8 12 18 30 48 75 120 180 300 480 750)
( 6 10 1 1.5 2.5 4 6 9 15 22 36 58 90 150 220 360 580 900)
( 10 18 1.2 2 3 5 8 11 18 27 43 70 110 180 270 430 700 1100)
( 18 30 1.5 2.5 4 6 9 13 21 33 52 84 130 210 330 520 840 1300)
( 30 50 1.5 2.5 4 7 11 16 25 39 62 100 160 250 390 620 1000 1600)
( 50 80 2 3 5 8 13 19 30 46 74 120 190 300 460 740 1200 1900)
( 80 120 2.5 4 6 10 15 22 35 54 87 140 220 350 540 870 1400 2200)
(120 180 3.5 5 8 12 18 25 40 63 100 160 250 400 630 1000 1600 2500)
(180 250 4.5 7 10 14 20 29 46 72 115 185 290 460 720 1150 1850 2900)
(250 315 6 8 12 16 23 32 52 81 130 210 320 520 810 1300 2100 3200)
(315 400 7 9 13 18 25 36 57 89 140 230 360 570 890 1400 2300 3600)
(400 500 8 10 15 20 27 40 63 97 155 250 400 630 970 1550 2500 4000)

1
)
)
(setq i 0)
(repeat 13
(if (and (>= d (nth 0 (nth i lista))) (< d (nth 1 (nth i lista)))) (setq nl i))
(setq i (1+ i))
)
(setq linie (nth nl lista)
listag (member tol linie)
it (- (length linie) (length listag) 1)
)
(setq j 2 )
(repeat 15
(if (and (> tol (nth j linie)) (<= tol (nth (1+ j) linie))) (setq it j ))
(setq j (1+ j))
)
it
)

(defun readreal (pb vi ls ld mesaj / r)


;functia permite citirea unui real (cu returnarea acestuia) între valorile limita
;ls si ld, valoarea implicita este vi, punctul de baza este pb, pe ecran este afisat
;un mesaj iar utilizatorul este atentionat când introduce valori eronate
(setq r (+ ls ld 1))
(while (or (> r ld) (< r ls))
(initget 4)
(setq r (getdist pb mesaj))
(if (not r)
(setq r vi)
)
(if (or (> r ld) (< r ls))
(prompt
(strcat
"\n Se asteapta o val in intervalul ["
(rtos ls 2 2)
","
(rtos ld 2 2)
"]"
)
)
)
)
r
)

(defun introd_rug(/ rug);introduce rugozitatea

2
(initget "0.4,4 0.8,8 1.6,1 3.2,3 6.3,6 12.5,12 25,2")
(setq rug
(Getkword "\nRugozitatea suprafetei [0.4/0.8/1.6/3.2/6.3/12.5/25] <6.3>:" )
)
(if (not rug) (setq rug "6.3"))
(setq rug (read rug))
rug
)

(defun date_cil ();intro duce datele pentru o suprafata cilindrica


(setq
d (readreal '(0 0) 150 1 500 "\nIntroduceti diametrul suprafetei d <150> :")
ai (getreal "\nIntroduceti abaterea inferioara <0> :")
as (getreal "\nIntroduceti abaterea superiara <0> :")
l (readreal '(0 0) 100 1 500 "\nIntroduceti lungimea suprafetei <100> :")
)
(if (not ai)
(setq ai 0)
)
(if (not as)
(setq as 0)
)
(setq tol (abs (* 1000 (- as ai))))
(setq it (det_it d tol))
(setq ra (introd_rug))
)

(defun date_frontal ();introduce datele pentru o suprafata frontalaa


(setq
d1 (readreal '(0 0) 50 1 500 "\nIntroduceti diametrul mic al suprafetei d1 <50> :")
d2 (readreal '(0 0) 150 1 500 "\nIntroduceti diametrul mare al suprafetei d2 <150> :")
l (readreal '(0 0) 100 1 500 "\nIntroduceti cota de dispunere a suprafetei l <100> :")
ai (getreal "\nIntroduceti abaterea inferioara <0> :")
as (getreal "\nIntroduceti abaterea superiara <0> :")
)
(if (not ai)
(setq ai 0)
)
(if (not as)
(setq as 0)
)
(setq tol (abs (* 1000 (- as ai))))
(setq it (det_it l tol))
(setq ra (introd_rug))
)

3
(defun det_proc (it ra) ; determina procedeele de prelucrare a suprafetei
(setq procedee '("StrunjireD"))
(if (or (<= it 12) (<= ra 12.5)) (setq procedee '("StrunjireD")))
(if (or (<= it 11) (<= ra 6.3)) (setq procedee '("StrunjireD" "StrunjireF")))
(if (or (<= it 10) (<= ra 3.2)) (setq procedee '("StrunjireD" "StrunjireF" "RectficareD")))
(if (or (<= it 8) (<= ra 0.8)) (setq procedee '("StrunjireD" "StrunjireF" "RectficareD"
"RectficareF")))
(if (<= ra 0.2) (setq procedee '("StrunjireD" "StrunjireF" "RectficareD" "RectficareF"
"Superfinis")))
procedee
)

(defun aminsd (d l m tsf / valaminsd)


;strunjire degrosare
(cond
((= tsf "Matritat")
(setq valaminsd
(+
(* 2
(+ (* 0.10967 (expt m 0.231)) (* 0.17296 (expt m 0.146)))
(* 2
(sqrt
(+ 0.0625
(expt (* 0.032494 (/ 1 (expt d 0.4482)) l) 2)
(expt (* 0.39985 (expt m 0.2728)) 2)
(expt (/ (+ (* 2.64 d) 224.88) 1000) 2)))))
(det_tol d 14))
)
)
((= tsf "Tras")
(setq valaminsd (+ 0.83 (* -0.0018 d) (* 0.0066 l)))
)
((= tsf "Laminat")
(setq valaminsd (+ 1.98 (* 0.0218 d) (* 0.00647 l)))
)
);cond

(/ (fix (+ (* valaminsd 100)0.5)) 100.0)


)

(defun aminrd (d l m tsf)


;rectificare degrosare
4
(cond
((= tsf "Matritat")
(setq valaminrd
(+ 0.1
(* 2
(sqrt
(+ (expt (* 0.01028 (expt d 0.366)) 2)
(*
(expt 0.025 2)
(+
(expt (* 0.032494 (/ 1 (expt d 0.4482)) l) 2)
(expt (* 0.39985 (expt m 0.2728)) 2))))))
(det_tol d 11))
)
)
((= tsf "Tras")
(setq valaminrd (* 0.142 (expt d 0.224)))
)
((= tsf "Laminat")
(setq valaminrd (* 0.142 1.12 (expt d 0.224)))
)
);cond

(/ (fix (+ (* valaminrd 100)0.5)) 100.0)


)

(defun tip_sf (/ sf);introduce tipul semifabricatului


(initget "Matritat Laminat Tras")
(setq sf
(Getkword "\nSemifabricatul este [Matritat/Laminat/Tras] <Matritat>:" )
)
(if (not sf) (setq sf "Matritat"))
sf
)

(defun masa_sf(/ masa)


(setq masa (getreal "\nIntrod masa piesei <1 Kg>:"))
(if (not masa) (setq masa 1.0))
masa
)
(defun aminsf (d l m tsf)
;strunjire finisare
(cond
((= tsf "Matritat")
(setq valaminsf
(+ 0.4
(* 2

5
(sqrt
(+ (expt (* 0.020568 (expt d 0.366)) 2)
(*
(expt 0.06 2)
(+
(expt (* 0.032494 (/ 1 (expt d 0.4482)) l 2)
(expt (* 0.39985 (expt m 0.2728)) 2)))))))
(det_tol d 12))
)
)
((= tsf "Tras")
(setq valaminsf (* 0.4223 (expt d 0.18)(expt l 0.002)))
)
((= tsf "Laminat")
(setq valaminsf (* 0.44 (expt d 0.2)(expt l -0.0046)))
)
);cond

(/ (fix (+ (* valaminsf 100)0.5)) 100.0)


)

(defun aminrf (d l m tsf)


;rectificare finisare
(cond
((= tsf "Matritat")
(setq valaminrf
(+ 0.06
(* 2
(sqrt
(+ (expt 0.04 2)
(*
(expt 0.003 2)
(+
(expt (* 0.032494 (/ 1 (expt d 0.4482)) l) 2)
(expt (* 0.39985 (expt m 0.2728)) 2)
)
)
)
)
)
(det_tol d 9)
)
)
)
((= tsf "Tras")
(setq valaminrf (* 0.087 (expt d 0.23)))
)

6
((= tsf "Laminat")
(setq valaminrf (* 0.0996 (expt d 0.23)))
)
);cond
(/ (fix (+ (* valaminrf 100)0.5)) 100.0)
)

(defun poz_supr (/ poz);introduce pozitia suprafetei


(initget "Interioara Exterioara")
(setq poz
(Getkword "\nSuprafata este [Interioara/Exterioara] <Exterioara>:" )
)
(if (not poz) (setq poz "Exterioara"))
(if (= poz "Exterioara") (setq ks 1) (setq ks -1))
ks
)

(defun writeln(mesaj valoare);afiseaza un mesaj + o valoare


(princ mesaj)
(princ valoare)
(prin1)
)

(defun des_cil (pb d l) ;deseneaza suprafata cilindrica exterioara


(setq p1 pb
p3 (list (+ (car p1) l) (+ (cadr p1) d))
p2 (list (car p3) (cadr p1))
p4 (list (car p1) (cadr p3))
pa1 (list (- (car p1) 5) (+ (cadr p1) (/ d 2)))
pa2 (list (+ (car p2) 5) (+ (cadr p1) (/ d 2)))
)
(command "pline" p1 p2 p3 p4 "c"
"region" "l" "")
(setq cil (entlast))
(if (not (tblsearch "ltype" "dashdot"))
(command "._ltype" "l" "dashdot")
)
(setq lay-curent (getvar "clayer"))
(if (not (tblsearch "layer" "axe"))
(command "._layer" "m" "axe" "c" "yellow" "axe" "l" "dashdot" "axe" "")
(command "._layer" "s" "axe" "")
)
(command "line" pa1 pa2 "")
(setvar "clayer" lay-curent)
)
(defun cutit_ext (pb d ad) ;deseneza cutit strunjire exterioara
;ad - adancimea

7
(setq c1 20
h1 30
l1 25
h2 35
pc1 pb
pc2 (polar pc1 (/ (* 220 pi) 180) c1)
;pc1 pc2... pe conturul cutitului spre stanga
pc3 (polar pc2 (/ (* 270 pi) 180) h1)
pc4 (polar pc3 (/ (* 0 pi) 180) l1)
pc5 (polar pc4 (/ (* 90 pi) 180) h2)
)
(command
"pline" pc1 pc2 pc3 pc4 pc5 "c"
"region" "l" "")
(setq cutit (entlast))
(setq
pco1 (polar pb (/ pi 2) (- d (* 2 ad)))
pco2 (polar pc2 (/ pi 2) (+ d (* 2 (- (cadr pc1) (cadr pc2) ad))))
pco5 (polar pc5 (/ pi 2) (+ d (* 2 (- (cadr pc1) (cadr pc5) ad))))
)
(command "pline" pco1 pco5 pco2 "c"
"region" "l" "")
)

(defun strunj_cil (d ad culoare) ;simulare strunjire cilindrica exterioara

(command "erase" "all" "")


(setq p1 (getpoint "\nPunctul de baza p1:")
)
(des_cil p1 d l)
(setq avans 0.2)
(setq ps (list (+ (car p2) 3) (+ (cadr p2) ad))
pc ps
)
(command "color" culoare)
(cutit_ext pc d ad)
(command "zoom" "e")
(while (< (- (car p1) avans) (car pc))
(command "subtract" cil "" cutit "l" "")
(setq pc (list (- (car pc) avans) (cadr pc)))
(cutit_ext pc d ad)
)
(command "erase" "l" "")
(command "color" "bylayer")
)

(defun disc_ext (pb d ad);genereaza discul de rectificat extterior

8
;ad - adancimea
(command
"pline" pb "@25,0" "@0,-40" "@-25,0" "c"
"region" "l" "")

(setq rcutit (entlast))


(command "pline" (list (car pb) (+ (cadr pb) d (- 0 (* 2 ad)))) "@25,0"
(strcat "@0," (rtos ad 2 2)) "@-25,0" "c")
(command "region" "l" ""

)
)

(defun Rect_cil (d ad culoare)


(command "erase" "all" "")
(setq p1 (getpoint "\nPunctul de baza p1:")
)
(des_cil p1 d l)
(setq avans 0.5)
(setq ps (list (+ (car p2) 3) (+ (cadr p2) ad))
pc ps)
(command "color" culoare)
(disc_ext pc d ad)
(Getpoint "apasa enter")

(while (< (- (car p1) 28) (car pc))


(command "subtract" cil "" rcutit "l" "")
(setq pc (list (- (car pc) avans) (cadr pc)))
(disc_ext pc d ad)
)
(command "erase" "l" "")
(command "color" "bylayer")
)

(defun c:cilindrica ()
(setq cmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(setq strat (getvar "clayer"))

(setq tsf (tip_sf)) ;se citeste tipul semifabricatului


(setq masa (masa_sf)) ;se citeste masa piesei
(date_cil) ;se citesc datele de intrare
9
(setq procedee (det_proc it ra));se determina procedeele de prelucrare

(princ "\nSuccesiunea de prelucrari pt supraf curenta este:")


(princ procedee)

(setq ks (poz_supr)) ;se citeste pozitia suprafetei Interioara sau Exterioara

(setq drf d airf ai asrf as) ;rf=rectificare finisare rd=rectificare degrosare


(if (nth 3 procedee)
(progn
(setq tolrd (det_tol d 9)
arf (/ (fix (* 100 (+ (aminrf d l masa tsf) 0.005))) 100.0)
drd (+ d (* ks arf))
)
(if (= ks 1) (setq aird (- tolrd) asrd 0) (setq aird 0 asrd tolrd))
)
(setq drd d aird ai asrd as)
)

(if (nth 2 procedee)


(progn
(setq tolsf (det_tol d 11)
ard (aminrd d l masa tsf)
dsf (/ (fix (* 10 (+ drd (* ks ard)(* ks 0.05))))10.0)
ard (* (- dsf drd) ks)
)
(if (= ks 1) (setq aisf (- tolsf) assf 0) (setq aisf 0 assf tolsf))
)
(setq dsf d aisf ai assf as)
)

(if (nth 1 procedee) ;sd=strunjire degrosare sf=strunjire finisare


(progn
(setq tolsd (det_tol d 12)
asf (aminsf d l masa tsf)
dsd (/ (fix (* 10 (+ dsf (* ks asf)(* ks 0.5))))10.0)
asf (* (- dsd dsf) ks)
)
(if (= ks 1) (setq aisd (- tolsd) assd 0) (setq aisd 0 assd tolsd))
)
(setq dsd d aisd ai assd as)
)

(if (nth 0 procedee)


(setq tolsemif (det_tol d 14)
asd (aminsd d l masa tsf)
10
dsemif (/ (fix (* 10 (+ dsd (* ks asd) (* ks 0.5))))10.0)
asd (* (- dsemif dsd) ks)
aisemif (- (/ tolsemif 2)) assemif (/ tolsemif 2))
)

(princ "\n")
(princ "\n R E Z U L T A T E")
(princ "\n")

(princ "\nPentru suprafata CILINDRICA cu urmatoarele date:")


(writeln "\nTipul semifabricatului: " tsf)
(writeln "\nDiametrul d=" d)
(writeln "\nAbatere inferioara ai=" ai)
(writeln "\nAbatere superioara as=" as)
(writeln "\nLungime l=" l)
(writeln "\nRugozitate Ra=" Ra)
(writeln "\nClasa de precizie it=" it)
(If (= ks 1) (writeln "\nPozitie suprafata: " "Exterioara")
(writeln "\nPozitie suprafata: " "Interioara")
)
(writeln "\n" "\n")

(writeln "\nDIMENSIUNILE SEMIFABRICATULUI sunt: " "")


(writeln "\nDiametrul semifabricatului " dsemif)
(writeln "\n Abatere inferioara: " aisemif)
(writeln "\n Abatere superioara: " assemif)

(writeln "\n" "\n")

(writeln "\nSunt necesare urmatoarele prelucrari:" "")


(if (nth 0 procedee)
(progn
(writeln "\n1. STRUNJIRE DEGROSARE " "")
(writeln "\nAdaos la strunjirea de degrosare: " asd)
(writeln "\nDiametrul dupa strunjire degrosare: " dsd)
(writeln "\n Abatere inferioara: " aisd)
(writeln "\n Abatere superioara: " assd)
)
)
(writeln "\n" "")

(if (nth 1 procedee)


(progn
(writeln "\n2. STRUNJIRE FINISARE " "")
(writeln "\nAdaos la strunjirea de finisare: " asf)
(writeln "\nDiametrul dupa strunjire finisareare: " dsf)

11
(writeln "\n Abatere inferioara: " aisf)
(writeln "\n Abatere superioara: " assf)
)
)

(writeln "\n" "")

(if (nth 2 procedee)


(progn
(writeln "\n3. RECTIFICARE DEGROSARE " "")
(writeln "\nAdaos la rectificarea de degrosare: " ard)
(writeln "\nDiametrul dupa rectificarea de degrosare: " drd)
(writeln "\n Abatere inferioara: " aird)
(writeln "\n Abatere superioara: " asrd)
)
)

(writeln "\n" "")

(if (nth 3 procedee)


(progn
(writeln "\n4. RECTIFICARE FINISARE " "")
(writeln "\nAdaos la rectificarea finisare: " arf)
(writeln "\nDiametrul dupa rectificarea de finisare: " drf)
(writeln "\n Abatere inferioara: " airf)
(writeln "\n Abatere superioara: " asrf)
)
)

(textscr)
(getpoint "\napasa enter pentru revenire in mod grafic")
(graphscr)
(initget "Shade Wireframe")
(setq opt_sim (getkword "\nSimularea se face in mod [Shade/Wireframe] <Wireframe>"))
(if (not opt_sim) (setq opt_sim "Wireframe"))
(if (= opt_sim "Wireframe")
(command "_shademode" "2")
(command "_shademode" "o")
)
(if (= ks 1)
(progn
(strunj_cil dsemif (/ asd 2) "red")
(getpoint "\napasa enter pentru strunjirea finisare")
(if (nth 1 procedee) (strunj_cil dsd (/ asf 2) "blue"))
(getpoint "\napasa enter pentru rectificare degrosare")
(if (nth 2 procedee) (rect_cil dsf (/ ard 2) "magenta"))
(getpoint "\napasa enter pentru rectificare finisare")

12
(if (nth 3 procedee) (rect_cil drd (/ arf 2) "green"))
)
)
(setvar "osmode" osm)
(setvar "clayer" strat)
(setvar "cmdecho" cmd)

(prin1)
)

13

S-ar putea să vă placă și