Documente Academic
Documente Profesional
Documente Cultură
Punctele prin care trec segmentele se vor introduce de la tastatur. De asemenea, pentru introducere
manual, se poate utiliza (command "line" pause) sau (command "line" "\\") care au acelai efect.
Pentru specificarea complet i corect a unui apel COMMAD trebuie cunoscute foarte
bine comenzile AutoCAD mpreun cu toate opiunile acestora. Primul argument eronat al funciei
command va antrena o cascad de erori, dac argumentul urmtor nu este o corecie a celui eronat.
Pn la urm, secvena (command "lie" "line" '(100 100) '(200 200) "") se va finaliza corect, dup
cum rezult din dialogul:
lie Unknown command "LIE". Press F1 for help.
Command: line From point:
To point:
To point:
Command: nil
Argumentele pot fi trimise prin mai multe apeluri COMMAND, dar numai n programe AutoLISP
stocate n fiiere LSP i ncrcate n sesiunea curent de lucru.
2.3 Antrenamente AutoLISP - 2
2.3.1. Comenzi pentru desenare
n aceast subseciune, urmnd ordinea din [2], se vor exersa comenzile: LINE, RAY, XLINE,
MLINE, CIRCLE, ARC, PLINE, POLYGON, RECTANG, DONUT, SPLINE, ELLIPSE i
POINT. Exersai conform modelelor prezentate n rundele urmtoare (pe baza textului nclinat
italic). Observai i reinei variantele posibile de utilizare.
a) Comanda LIE n AutoLISP desenarea de linii simple
Prima rund: [Apelul fr argumente]
Pentru apelul (command "LINE") se iniiaz dialogul [from point, to point , ... ] cu utilizatorul.
Runda a II-a: [Trasarea unui segment opiunea "" ENTER]
(command "LINE" '(100 0 0) '(200 100 0) "")
nil
Observai irul vid "" pentru a indica terminarea mulimii de puncte (similar cu apsarea tastei
ENTER).
Runda a III-a: [Trasarea unui ptrat folosind opiunea "c" close.]
(command "line" (list 100 0 0) (list 100 100 0) (list 200 100 0) (list 200 0 0) "c")
line From point:
To point:
To point:
To point:
To point: c
nil
Runda a IV-a: [n anumite situaii trebuie renunat la un punct introdus i considerat urmtorul. Se
va opta pentru soluia "u" undo.]
(command "line" (list 300 100 0) (list 300 0 0) "u" (list 400 100 0) "")
line From point:
To point:
To point: u
nil
b) Comanda RAY n AutoLISP trasarea de raze1 (semidrepte de construcie) prin acelai punct
Prima rund: [Evantai de raze dintr-un punct specificat. Utilizatorul va introduce punctele dorite,
iar n final va apsa ENTER.]
(command "ray" (list 200 0 0))
ray From point:
Through point: nil
nil
Runda a IV-a: [Ang oblic. Primul test specific unghiul de 45 de grade, iar al doilea o referin
obinut ca ultim entitate i specificarea unghiului relativ la aceasta.]
Primul test:
(command "xline" "a" 45 (list 100 0 0) (list 200 0 0) "")
xline Hor/Ver/Ang/Bisect/Offset/<From point>: a
Reference/<Enter angle (0)>: 45
nil
Al doilea test:
(command "line" (list 100 0 0) (list 100 200 0) "")
nil
(setq ent (entlast))
<Entity name: 1ad0500>
(command "xline" "a" "r" ent 20 (list 400 0 0) (list 500 0 0) "")
xline Hor/Ver/Ang/Bisect/Offset/<From point>: a
Reference/<Enter angle (0)>: r
Select a line object:
Enter angle <0>: 20
nil
Runda a V-a: [Bisect crearea a cel puin unei x-linii care trece prin primul punct specificat i este
bisectoare unghiului, determinat de dreapta format de primele dou puncte i de cea format de
primul i urmtorul punct]
Primul test:
(command "xline" "b" (list 100 100 0) (list 100 400 0) (list 400 100 0) "")
xline Hor/Ver/Ang/Bisect/Offset/<From point>: b
nil
Al doilea test:
(command "xline" "b" (list 200 200 0) (list 200 400 0) (list 400 200 0) (list 400 300 0) (list 400 100 0) "")
xline Hor/Ver/Ang/Bisect/Offset/<From point>: b
nil
Runda a VI-a: [Offset creeaz o linie paralel la o anumit distan fa de obiectul linie selectat.]
Primul test:
(command "line" (list 100 100 0) (list 100 200 0) "")
nil
(setq ent (entlast))
<Entity name: 1ad0500>
(command "xline" "o" 100 ent (list 200 100 0) "")
xline Hor/Ver/Ang/Bisect/Offset/<From point>: o
Offset distance or Through <100.0000>: 100
Select a line object:
Side to offset?
Select a line object:
nil
Al doilea test:
(command "xline" "o" "t" ent (list 400 100 0) "")
xline Hor/Ver/Ang/Bisect/Offset/<From point>: o
Offset distance or Through <100.0000>: t
Select a line object:
Through point:
Select a line object:
nil
<To point>:
Undo/<To point>:
Close/Undo/<To point>:
Close/Undo/<To point>: c
nil
Runda a V-a: [2P Cerc specificat prin dou puncte "diametral opuse"]
(command "circle" "2P" (list 300 0 0) (list 400 0 0))
circle 3P/2P/TTR/<Center point>: 2P First point on diameter:
Second point on diameter:
nil
Runda a II-a: [Arc specificat prin centru, punct iniial i punct final]
(command "arc" "c" (list 150 150 0) (list 150 0 0) (list 200 200 0))
arc Center/<Start point>: c Center:
Start point:
Angle/Length of chord/<End point>:
nil
Runda a III-a: [Arc specificat prin centru, punct iniial i unghi la centru]
(command "arc" "c" (list 200 200 0) (list 200 100 0) "a" 45)
arc Center/<Start point>: c Center:
Start point:
Angle/Length of chord/<End point>: a Included angle: 45
nil
Runda a IV-a: [Arc specificat prin centru, punct iniial i lungimea coardei]
(command "arc" "c" (list 300 300 0) (list 300 100 0) "L" 100)
arc Center/<Start point>: c Center:
Start point:
Angle/Length of chord/<End point>: L Length of chord: 100
nil
Runda a V-a: [Arc specificat prin punct iniial, centru, unghi/lungimea coardei]
(command "arc" (list 300 100 0) "c" (list 300 300 0) "a" 90)
arc Center/<Start point>:
Center/End/<Second point>: c Center:
Angle/Length of chord/<End point>: a Included angle: 90
nil
(command "arc" (list 300 100 0) "c" (list 300 300 0) "L" 100)
arc Center/<Start point>:
Center/End/<Second point>: c Center:
Angle/Length of chord/<End point>: L Length of chord: 100
nil
Runda a VI-a: [Arc specificat prin punct iniial, punct final i unghi]
(command "arc" (list 300 300 0) "e" (list 300 400 0) "a" 45)
arc Center/<Start point>:
Center/End/<Second point>: e
End point:
Angle/Direction/Radius/<Center point>: a Included angle: 45
nil
Runda a VII-a: [Arc specificat prin punct iniial, punct final i direcia fa de punctul iniial]
(command "arc" (list 200 200 0) "e" (list 300 300 0) "d" 120)
arc Center/<Start point>:
Center/End/<Second point>: e
End point:
Angle/Direction/Radius/<Center point>: d Direction from start point: 120
nil
Runda a VIII-a: [Arc specificat prin punct iniial, punct final i raz]
(command "arc" (list 100 100 0) "e" (list 200 300 0) "r" 150)
arc Center/<Start point>:
Center/End/<Second point>: e
End point:
Angle/Direction/Radius/<Center point>: r Radius: 150
nil
Runda a IX-a: [Arc specificat prin punct iniial, punct final i centru]
(command "arc" (list 100 200 0) "e" (list 200 200 0) (list 150 150 0))
arc Center/<Start point>:
Center/End/<Second point>: e
End point:
Angle/Direction/Radius/<Center point>:
nil
g) Comanda PLINE n AutoLISP trasarea unei entiti formate din linii i arce de cerc
Pentru exersarea comenzii PLINE sunt necesare foarte multe etape. Exist opiuni la nivelul unui
segment de dreapt, dar i la nivelul unui arc de cerc. Orice polilinie are un punct de start. Ceea ce
urmeaz este un segment de dreapt sau un arc, acestea putnd fi amestecate la nevoie. O polilinie
poate fi i nchis (opiunea Close). Ultimul segment sau arc de cerc poate face obiectul unei aciuni
Undo.
Prima rund: [Polilinie compus numai din segmente de aceeai grosime]
Primul test: [Polilinie deschis]
(command "pline" (list 100 0 0) (list 200 0 0) (list 200 200 0) "")
pline
From point:
Current line-width is 0.0000
Arc/Close/Halfwidth/Length/Undo/Width/<Endpoint of line>:
Arc/Close/Halfwidth/Length/Undo/Width/<Endpoint of line>:
Arc/Close/Halfwidth/Length/Undo/Width/<Endpoint of line>:
nil
Runda a II-a: [Polilinie compus din arce de cerc. Se pot utiliza opiuni variate n specificarea
arcelor de cerc. A se vedea i comanda ARC]
Primul test: [Polilinie deschis]
(command "pline" (list 300 100 0) "a" (list 400 200 0) (list 500 300 0) "")
pline
From point:
Current line-width is 0.0000
Arc/Close/Halfwidth/Length/Undo/Width/<Endpoint of line>: a
Angle/CEnter/CLose/Direction/Halfwidth/Line/Radius/Second pt/Undo/Width/
<Endpoint of arc>:
Angle/CEnter/CLose/Direction/Halfwidth/Line/Radius/Second pt/Undo/Width/
<Endpoint of arc>:
Angle/CEnter/CLose/Direction/Halfwidth/Line/Radius/Second pt/Undo/Width/
<Endpoint of arc>:
nil
<Endpoint of arc>:
Angle/CEnter/CLose/Direction/Halfwidth/Line/Radius/Second pt/Undo/Width/
<Endpoint of arc>: l
Arc/Close/Halfwidth/Length/Undo/Width/<Endpoint of line>:
Arc/Close/Halfwidth/Length/Undo/Width/<Endpoint of line>: a
Angle/CEnter/CLose/Direction/Halfwidth/Line/Radius/Second pt/Undo/Width/
<Endpoint of arc>: cl
nil
Runda a II-a: [Specificarea poligonului regulat prin: numr de laturi, centrul cercului circumscris i
raza acestuia poligon nscris ntr-un cerc imaginar]
(command "polygon" 6 (list 400 200 0) "I" 100)
polygon Number of sides <5>: 6
Edge/<Center of polygon>:
Inscribed in circle/Circumscribed about circle (I/C) <C>: I
Radius of circle: 100
nil
Runda a III-a: [Specificarea poligonului prin numrul laturilor i dou puncte care desemneaz
prima latur a poligonului]
(command "polygon" 6 "e" (list 200 200 0) (list 300 200 0))
polygon Number of sides <4>: 6
Edge/<Center of polygon>: e First endpoint of edge: Second endpoint of edge:
nil
Chamfer/Elevation/Fillet/Thickness/Width/<First corner>: w
Width for rectangles <10.0000>: 10
Chamfer/Elevation/Fillet/Thickness/Width/<First corner>:
Other corner:
nil
Runda a II-a: [Curb spline printr-o mulime de puncte tangentele explicite n primul i ultimul
punct]
(command "spline" '(100 100 0) '(200 200 0) '(300 100 0) "" '(50 100 0) '(350 100 0))
spline
Object/<Enter first point>:
Enter point:
Close/Fit Tolerance/<Enter point>:
Close/Fit Tolerance/<Enter point>:
Enter start tangent: Enter end tangent:
nil
Runda a III-a [Curb spline nchis opiunea Close; se va specifica tangenta la curb n punctul de
start]
(command "spline" '(100 100 0) '(200 200 0) '(300 100 0) "c" '(100 50 0))
spline
Object/<Enter first point>:
Enter point:
Close/Fit Tolerance/<Enter point>: Close/Fit Tolerance/<Enter point>: c
Enter tangent:
nil
Runda a IV-a [Curbe spline de interpolare (tolerana = 0) versus curbe spline de aproximare
(tolerana 0) Opiunea Fit Tolerance]
Primul test: [Curb spline de interpolare precum cele din rundele anterioare]
(command "spline" '(200 100 0) '(300 200 0) "f" 0 '(400 100 0) "" "" "")
spline
Object/<Enter first point>:
Enter point:
Close/Fit Tolerance/<Enter point>: f
Enter Fit tolerance <0.0000>: 0
Close/Fit Tolerance/<Enter point>:
Close/Fit Tolerance/<Enter point>:
Enter start tangent: Enter end tangent:
nil
Runda a V-a: [Transformarea unei polilinii editate ca Spline n entitate spline: iniial generm o
polilinie, utilizm comanda PEDIT cu opiunea Spline, apoi comanda SPLINE cu optiunea Object.]
(command "pline" '(100 100 0) '(200 200 0) '(300 100 0) '(400 200 0) "")
(setq e1 (entlast))
(command "pedit" e1 "s" "")
(command "spline" "o" e1 "")
spline
Object/<Enter first point>: o
Select objects to convert to splines.
Select objects: 1 found
Select objects:
nil
Al doilea test: [Lungimea rezult prin calcul, folosind centrul elipsei i punctul specificat]
(command "ellipse" '(200 200 0) '(400 200 0) '(300 25 0))
ellipse
Arc/Center/<Axis endpoint 1>: Axis endpoint 2:
<Other axis distance>/Rotation:
nil
Runda a II-a: [ Elips definit prin centru vrful unei semiaxe i lungimea celeilalte semiaxe]
Primul test: [Lungimea este specificat numeric]
(command "ellipse" "c" '(300 300 0) '(300 100 0) 100)
ellipse
Arc/Center/<Axis endpoint 1>: c
Center of ellipse:
Axis endpoint:
<Other axis distance>/Rotation: 100
nil
Runda a III-a: [Trasarea unei elipse prin specificarea raportului dintre axa mare i axa mic: intre 0
i 89.4; valoarea zero definete un cerc, iar cu ct este mai mare valoarea specificat cu att este mai
mare raportul dintre axa mic i axa mare]
(command "ellipse" '(100 100 0) '(300 0 0) "R" 50)
ellipse
Arc/Center/<Axis endpoint 1>:
Axis endpoint 2:
<Other axis distance>/Rotation: R
Rotation around major axis: 50
nil
(command "ellipse" '(100 100 0) '(300 0 0) "R" 80)
ellipse
Arc/Center/<Axis endpoint 1>:
Axis endpoint 2:
<Other axis distance>/Rotation: R
Rotation around major axis: 80
nil
Al doilea test: [Specificarea elipsei la care aparine arcul, a punctului de start i a punctului final date prin coordonate]
(command "ellipse" "a" '(300 100 0) '(500 100 0) 100 '(300 100 0) '(500 100 0))
ellipse
Arc/Center/<Axis endpoint 1>: a
<Axis endpoint 1>/Center:
Axis endpoint 2:
<Other axis distance>/Rotation: 100
Parameter/<start angle>:
Parameter/Included/<end angle>:
nil
Al treilea test: [Specificarea elipsei la care aparine arcul, a punctului de start i a punctului final date prin parametrul unghiular]
(command "ellipse" "a" "c" '(200 200 0) '(400 200 0) '(300 300 0) "p" 0 120)
ellipse
Arc/Center/<Axis endpoint 1>: a
<Axis endpoint 1>/Center: c
Center of ellipse:
Axis endpoint:
<Other axis distance>/Rotation:
Parameter/<start angle>: p
Angle/<start parameter>: 0
Angle/Included/<end parameter>: 120
nil
Al patrulea test: [Specificarea elipsei la care aparine arcul, a punctului de start i a punctului final date prin unghiul inclus]
(command "ellipse" "a" "c" '(200 200 0) '(400 200 0) '(300 300 0) "p" 180 "i" 70)
ellipse
Arc/Center/<Axis endpoint 1>: a
<Axis endpoint 1>/Center: c
Center of ellipse:
Axis endpoint:
<Other axis distance>/Rotation:
Parameter/<start angle>: p
Angle/<start parameter>: 180
Angle/Included/<end parameter>: i
Included parameter <90>: 70
nil
Oriunde se cerea un punct, n testele de mai sus, acesta se putea specifica n modurile artate n
cadrul rundei a cincea.
2.3.2. Comenzi pentru editare
n aceast subseciune se vor exersa comenzile: COPY, MOVE, MIRROR, ROTATE, SCALE,
OFFSET, ARRAY, STRETCH, TRIM, EXTENDED, BREAK, CHAMFER, FILLET i ERASE.
S-a observat, mai sus, utilizarea funciei entlast care furnizeaz codul ultimei entiti trasate.
Acest cod, depus ntr-o variabil (folosind funcia LISP setq), poate fi folosit n comenzi AutoCAD
sau alte funcii AutoLISP. Deoarece comenzile de editare necesit selectarea entitilor ce urmeaz
a fi modificate, aceast funcie va fi utilizat destul de des.
n cele ce urmeaz nu va mai fi redat i dialogul din fereastra text special, ci numai ceea ce
scrie utilizatorul. Exersai conform modelelor prezentate n rundele urmtoare (pe baza textului
nclinat italic). Observai i reinei!
Se traseaz dou entiti (o polilinie e1; o linie e2) i se creeaz mulimea de selecie
set1. Aceast mulime este copiat ntr-o alt locaie prin specificarea punctului de referin iniial i
a celui final. Observai utilizarea funciei LISP ssadd care creeaz o mulime de selecie prin
inserarea de entiti. Secvena AutoLISP este urmtoarea:
(command "pline" '(100 100 0) '(100 200 0) '(200 200 0) "")
(setq e1 (entlast))
(command "line" '(200 100 0) '(300 100 0) "")
(setq e2 (entlast))
(setq set1 (ssadd e1))
(ssadd e2 set1)
Al doilea test : [Copierea circular Se specific centrul polar, numrul de copii i unghiul la centru
care va fi acoperit.]
(command "array" set "" "p" '(200 200 0) 5 -270 "y")
"")
"")
"")
"")
Selectarea entitilor supuse unor operaii de editare se poate face i prin utilizarea opiunilor:
Window (fereastr dreptunghiular) /Last (ultima entitate) /Crossing (traversare fereastrei
dreptunghiulare) /BOX (box) /ALL (totul) /Fence /WPolygon (fereastr poligonal) /CPolygon
(traversarea ferestrei poligonale) /Group (dintr-un grup) /Add (adaugare la set) /Remove (eliminare
din set) /Multiple (puncte multiple) /Previous (anterior) /AUto (automatic) /SIngle (unic obiect).
Observai cteva dintre aceste posibiliti n testele care urmeaz.
Primul test: [Deformare prin selectarea entitilor folosind opiunea "Crossing"]
(command "stretch" "c" '(350 350 0) '(300 50 0) "" '(100 100 0) '(250 150 0))
stretch
Select objects to stretch by crossing-window or crossing-polygon...
Select objects: c
First corner: Other corner: 4 found
Select objects:
Base point or displacement:
Second point of displacement:
nil
Ce ai observat? Folosii comanda Undo pentru a anula comanda extend tocmai executat. Reluai
comanda Extend (comand AutoCAD) de la promptul Command. Fii atent la selectarea obiectelor.
Aceast comand utilizeaz informaia din variabilele EDGEMODE i PROJMODE.
k) Utilizarea comenzii BREAK n AutoLISP ruperea obiectelor
Uneori este util ca o entitate (linia, polilinia sau arcul de cerc) s fie "rupt" n mai multe pri, prin
eliminarea de poriuni. Exersai dup modelul:
(command "line" '(100 100 0) '(400 100 0) "")
(command "break" "last" '(200 100 0) '(300 100 0))
(command "arc" '(200 300 0) '(300 200 0) '(100 200 0))
(command "break" "last" '(300 200 0) '(200 100 0))
(setq e3 (entlast))
(command "chamfer" e2 e3)
chamfer
(TRIM mode) Current chamfer Dist1 = 20.0000, Dist2 = 30.0000
Polyline/Distance/Angle/Trim/Method/<Select first line>:
Select second line:
nil
m) Utilizarea comenzii FILLET n AutoLISP racordarea colurilor folosind arce de cerc. Racordul
se poate realiza cu/fr retezare
Deschidei un nou desen i exersai, observnd i dialogul, dup modelul:
(command "line" '(100 100 0) '(100 200 0) "")
(setq e1 (entlast))
(command "line" '(250 100 0) '(250 150 0) "")
(setq e2 (entlast))
(command "line" '(150 250 0) '(200 250 0) "")
(setq e3 (entlast))
(command "fillet" e1 e3)
fillet
(TRIM mode) Current fillet radius = 10.0000
Polyline/Radius/Trim/<Select first object>:
Select second object:
nil
(command "undo" 1)
undo Auto/Control/BEgin/End/Mark/Back/<Number>: 1 FILLET GROUP
nil
(command "fillet" "r" 20)
fillet
(TRIM mode) Current fillet radius = 10.0000
Polyline/Radius/Trim/<Select first object>: r Enter fillet radius <10.0000>: 20
nil
(command "fillet" e1 e3)
fillet
(TRIM mode) Current fillet radius = 20.0000
Polyline/Radius/Trim/<Select first object>:
Select second object:
nil
(command "fillet" e2 e3)
end angle
0
at point X= 350.0000 Y= 150.0000 Z= 0.0000
at point X= 100.0000 Y= 50.0000 Z= 0.0000
(command "arc" '(100 100 0) '(300 300 0) '(400 100 0))
(setq e2 (entlast))
(command "list" e2 "")
list
Select objects: 1 found
Select objects:
ARC
Layer: 0
Space: Model space
Handle = 21
center point, X= 250.0000 Y= 150.0000 Z= 0.0000
radius 158.1139
start angle 342
end angle 198
length 598.4759
(command "erase" e1 e2 "")
erase
Select objects: 1 found
Select objects: 1 found
Select objects:
nil
Un paralelipiped poate fi specificat prin colurile opuse. Exist i alte posibiliti de specificare.
Scriei apelurile (command "box" ... ) pentru a studia i celelalte opiuni. Folosii comanda
AutoCAD render pentru generarea 3D a obiectului.
6. Studiai dialogul:
(command "cylinder" '(100 100 100) 50 200)
cylinder
Elliptical/<center point> <0,0,0>:
Diameter/<Radius>: 50
Center of other end/<Height>: 200
nil
Exersai apeluri similare pentru parcurgerea tuturor modurilor de specificare a corpurilor de tip
cilindru. Folosii comanda AutoCAD render pentru a vedea obiecte spaiale redate n manier
realist.
7. Alte primitive 3D permise de AutoLISP, sunt: conul (COE), sfera (SPHERE), torul (TORUS)
i pana (WEDGE). Sunt permise de AutoCAD (comanda 3D), dar nu i de AutoLISP, primitivele:
farfuria semisferic (DISH), cupola semisferic (DOME), suprafaa reea (MESH) i piramida
(PYRAMID).
Studiai apelurile:
(command "cone" '(200 200 200) 50 100) con definit prin centrul bazei, raz i nlime;
(command "3dface" '(200 200 200) '(200 100 200) '(100 100 200) '(100 200 200) '(100 200 100) '(100 100 100) "")
9. Dup modelul (command "solid" '(200 100 100) '(200 200 100) '(200 100 200) '(200 200 200) "") creai i
alte
obiecte. Indicarea punctelor se face ncruciat. Dac punctele 3 i 4 coincid atunci suprafaa este un
triunghi.
10. Suprafaa de tip reea (colecie de petice) se obine prin comanda 3dmesh disponibil i n
AutoLISP. Studiai apelul: (command "3dmesh" 4 2 '(0 0 100) '(0 50 100) '(50 0 120) '(50 50 110) '(100 0 50) '(100
100 75) '(150 0 100) '(150 150 110)) i utilizai View/3D Dynamic View /CAmera pentru a vedea
suprafaa definit. Aplicai render pentru a genera o imagine solid.
11. Dac avei conexiune la INTERNET atunci putei accesa situl dorit, din programe AutoLISP,
ntr-o fereastr nou, conform modelului:
(command "browser" "http://www.uoradea.ro")
browser Location <http://www.autodesk.com/acaduser>: http://www.uoradea.ro
nil