Tema PFA 2-AUTOLISP.docx
-
Upload
cotescu-stefan -
Category
Documents
-
view
216 -
download
0
Transcript of Tema PFA 2-AUTOLISP.docx
-
7/29/2019 Tema PFA 2-AUTOLISP.docx
1/7
Se prezinta piesa 2D de parametrizat, in sectiune axiala, hasurata, cu cotele scrise literal
(reprezentand parametrii). Totodata se prezinta si orientarea u0, la un anume unghi fata de axa x in
WCS. Pe baza acestei reprezentari se alege un punct care sa determine originea locala a piesei. Intr-
un astfel de UCS local, prezentat in figura, se vor calcula punctele caracteristice necesare descrierii
geometrice a piesei. In figura urmatoare s-au indicat toate aceste puncte.
Cele doua figuri, impreuna cu parametrii care descriu
piesa, dau o ipoteza completa pentru realizarea
algoritmului din program. Parametrul F, in program este
denumit tesitura, parametru comun pentru cele douatesituri, respectiv pentru canalul din desen.
- X Y Z
P1 F B/2 0
P2 0 B/2+F 0
P3 0 A/2 0
P4 E-D A/2 0
P5 E-D C/2+F 0
P6 E-D-F C/2 0
P7 E-D C/2-F 0
P8 E-D+F C/2 0
P9 E C/2 0
P10 E B/2+F 0
P11 E-F B/2 0
P12 0 -B/2-F 0
P13 0 -B/2 0
P14 E-F -B/2 0
P15 E -B/2-F 0
-
7/29/2019 Tema PFA 2-AUTOLISP.docx
2/7
Programul este urmatorul:
(defun date()
(setq A (getreal "\nDati parametrul A:"))
(setq B (getreal "\nDati parametrul B:"))
(setq C (getreal "\nDati parametrul C:"))
(setq D (getreal "\nDati parametrul D:"))
(setq E (getreal "\nDati parametrul E:"))
(setq F (getreal "\nDati parametrul tesitura:"))
(setq p0 (getpoint "\nPunctul de inserare:"))
(setq u0 (* (getorient p0 "\nOrientare:")(/ 180 pi)))
)
(defun puncte()
(setq p1 (list F (/ B 2)0))
(setq p2 (list 0 (+ F(/ B 2))0))
(setq p3 (list 0 (/ A 2)0))
(setq p4 (list (- E D) (/ A 2)0))
(setq p5 (list (- E D) (+ (/ C 2) F)0))
(setq p6 (list (- (- E D) F) (/ C 2)0))
(setq p7 (list (- E D) (- (/ C 2) F)0))
(setq p8 (list (+ (- E D) F) (/ C 2) 0))
(setq p9 (list E (/ C 2)0))
(setq p10 (list E (+ (/ B 2) F)0))
(setq p11 (list (- E F) (/ B 2)0))
(setq p12 (mapcar '* '(1 -1 1) p2))
(setq p13 (mapcar '* '(1 -1 1) p1))
(setq p14 (mapcar '* '(1 -1 1) p11))
(setq p15 (mapcar '* '(1 -1 1) p10))
-
7/29/2019 Tema PFA 2-AUTOLISP.docx
3/7
)
(defun desen()
(command "UCS" "o" p0)
(command "UCS" "Z" u0)
(command "pline" p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 "c")
(setq pl1 (entlast))
(command "MIRROR" pl1 "" (list 0 0) (list 1 0) "N")
(setq pl2 (entlast))
(command "LINE" p1 p13 "")
(command "LINE" p2 p12 "")
(command "LINE" p11 p14 "")
(command "LINE" p10 p15 "")
(command "HATCH" "U" 45 (/ E 10.) "N" pl1 pl2 "")
(command "UCS" "W")
)
(defun c:piesa_stefan()
(date)
(puncte)
(desen)
)
(defun c:ex_geom (/ mesl lal lscris lpoly)
(setq mesl (list "Coordonate extrase:" "X Y Z"))
(setq lpoly (extmnc (ENTGET (car (entsel))) 10))
(foreach n lpoly
(if(caddr n)
(setq lscris (strcat (rtos (car n))
" "
-
7/29/2019 Tema PFA 2-AUTOLISP.docx
4/7
(rtos (cadr n))
(rtos(caddr n))))
(setq lscris (strcat (rtos (car n)) " " (rtos (cadr n)) " " "0.")))
(setq mesl (append mesl (list lscris))))
(setq lal "")
(foreach n mesl (setq lal (strcat lal n "\n")))
(alert lal)
(princ)
)
(defun extmNC (lent cod)
(setq lex '())
(setq tiplent (cdr (assoc 0 lent)))
(cond ((= tiplent "LWPOLYLINE")
(progn
(while (member (assoc cod lent) lent)
(setq lex (append lex
(append (list (cdar (member (assoc cod lent) lent))))))
(setq lent (cdr (member (assoc cod lent) lent))))))
((= tiplent "POLYLINE")
(progn
(setq i 0
e1 (cdr (assoc -1 lent))
e (entnext e1)
lista '()
lbulg '()
seq (cdr (assoc 0 (entget e)))
)
-
7/29/2019 Tema PFA 2-AUTOLISP.docx
5/7
(while (and e (/= seq "SEQEND"))
(setq pk1 (cdr (assoc 10 (entget e)))
bulg (cdr (assoc 42 (entget e)))
x1 (car pk1)
y1 (cadr pk1)
pkk (list x1 y1 0)
e (entnext e)
seq (cdr (assoc 0 (entget e)))
)
(setq lbulg (append lbulg (list bulg)))
(setq lista (append lista (list pk1)))
)
(cond ((= cod 10) (setq lex lista))
((= cod 42) (setq lex lbulg))
)
)
)
)
(if (not lex)
(progn
(princ
"\Entitatea nu este agreeata (LWPOLYLINE sau
POLYLINE)!..."
)
(exit)
)
lex
-
7/29/2019 Tema PFA 2-AUTOLISP.docx
6/7
))
(defun c:faex1()
(initget 7)
(setq nrex(getint "\Numarul exercitiului:"))
(setq file (strcat "c:\\ex" (itoa nrex) ".txt"))
(setq ff (open file "w"))
(setq lpoly (extmnc (ENTGET(car(entsel)))10))
(foreach n lpoly
(if (caddr n)
(setq lscris (strcat (rtos (car n)) " "(rtos (cadr n)) " " (rtos
(caddr n))))
(setq lscris (strcat (rtos (car n)) " "(rtos (cadr n)) " " "0."))
)
(write-line lscris ff)
)
(close ff)
(princ)
)
Practic programul, in prima lui parte, are definiti o serie de parametrii, care sunt descrisi dupa
conditiile prezentate in tabelul de mai sus. Se defineste UCS, pe object in p0, si orientarea u0. Se
deseneaza linia de tip pline intre punctele p1 pana la 11, inchizind conturul prin close. Se realizeaza
o oglindire a conturului 1 (mirror pl1), fata de axa x a sistemului local. Se deseneaza linii care sa
definitiveze piesa intre punctele p2-p12, p1-p13, p11-p14, p10-p15. Se deseneaza hasura. In finalul
primei parti se defineste si comanda care cheama programul(piesa_stefan). Urmeaza programul
ex_geom , care extrage punctele p1, p2, pn cu coordonatele xyz, ale unei polilinii, dupa cum se
prezinta in figura urmatoare:
-
7/29/2019 Tema PFA 2-AUTOLISP.docx
7/7
Prin intermediul functiei faex1, se extrag informatiile unei polilinii, intr-un fisier text extern, avand
ca rezultat urmatoarele valori:
80.25 37.02 0.
78.25 39.02 0.
78.25 99.52 0.
178.25 99.52 0.
178.25 61.52 0.
176.25 59.52 0.
178.25 57.52 0.
180.25 59.52 0.
228.25 59.52 0.
228.25 39.02 0.
226.25 37.02 0.
Command: citdat
Numarul exercitiului:3
("80.25 37.02 0." "78.25 39.02 0." "78.25 99.52 0." "178.25 99.52 0." "178.25
61.52 0." "176.25 59.52 0." "178.25 57.52 0." "180.25 59.52 0." "228.25 59.52
0." "228.25 39.02 0." "226.25 37.02 0.")