1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình autocad toàn tập phần 3

97 488 2
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giáo Trình Autocad Toàn Tập Phần 3
Trường học University of Architecture
Chuyên ngành Architecture
Thể loại Giáo Trình
Thành phố Hanoi
Định dạng
Số trang 97
Dung lượng 3,27 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giáo trình Autocad toàn tập - Phần 3 Tài liệu tham khảo Giáo trình Autocad toàn tập hướng dẫn các bạn sử dụng autocad

Trang 1

CHUONG 26: CAC VAN DE CO BAN CUA

AUTOLISP

AutoLISP là ngôn ngữ lập trình có thể sử dụng các tính năng, các lệnh trong AutoCAD

-AwtoLISP dựa trên cơ sở ngôn ngữ lập trình LISP - ngôn ngữ lập trình tr tuệ nhân tạo

Visual LISP (VLISP) 1a một phẩn mêm giúp phát triển chương trình AutoLISP Nó giúp ta thực

hiện hầu hết các thao tác cần thiết như soan thảo, gỡ rổi chương trình, giao tiếp với AutoCAD

mà không cần thóat ra khỏi AutoCAD

VLISP bao gồm các cửa sổ với các Menu riêng để hoạt động; nhưng VLISP chỉ hoạt động

được khi AutoCAD khởi động Cũng chú ý rằng một khi VLISP điều kh

AutoCAD, thi ta phai kích hoạt cho cửa xổ AutoCAD hoạt động trở lại

Trang 2

BAI 1: KHOI DONG VISUAL LISP

Dang ở tong môi trường AutoCAD, để khởi động môi trường phát triển giao tiếp VLISP tà có

2 cách sau:

Pulldown menu: - Toolv AuteLISP/ VisualLISP Edior

Sau khi gọi lệnh sẽ xuất hiện màn hình Visual LISP for AutoCAD

~ Toolbars: VLISP có các thanh công cụ Toolbars nbursau: Standard, Debug, View, Search,

Tools Để đồng/ mổ các Toolbars ta gọi View/ Toolbars và chọn thanh công cụ cần mỡ,

= Console Window: Dé nhập các lệnh của AutoLISP

ost asa

*ướm ues

HC

Trang 3

ie

ie eae seh few Toms Doty Tone Wes Ht

Trang 4

BAL 2: CONSOLE WINDOW

"rong cửa sổ Console, ta có thể nhập và chị

CCác tính năng thao tác của Console Window

= CTRL+ENTER: Để nhập biểu thức trên nhiều dòng

= TAB: Để truy xuất lại các lệnh đã nhập trong Console Window

Nếu ấn SHIILF+TAB thì đổi hướng truy xuất ngược lại

~ ESC: Xổa các Tet xu đấu nhấc Console (_$)

IIFT+ESC: Dé lai Text bất kỹ sau đấu nhắc Console

~ Ấn phím phải chuột hoặc SHIFT+F10: Để hiện Shortcut Menu

các lệnh của AttoLISP và xem kết quả

Trang 5

BÀI 3: CỦA SỐ VISUAL LISP TEXT EDITOR XVisual LISP Text Ediorlà công cụ để soạn thảo, công cụ chính của môi trường phát triển giao tiếp VLISP Để xem cửa sổ Text Editor, ta hãy mỡ một chương tình bất kỳ có phẩn mở rộng là ose

“Các tính năng chủ yéu cia Visual LISP Editor

“Tạo mã mầu: Các phẩn khác nhau của chương tình AutoLISP được VLISP Text Editor phân bi àu khác nhau Điễu đồ giúp ta tìm kiếm các phần của chương tình, các biến và lỗi chương trình một cách dễ dàng

- Ghếp đổi các dấu ngoặc trong chương trình: VLISP Text Eior có thể giúp ta đồ tìm dầy: ngoc đơn còn thiếu bằng cách đồ tim cặp dấu ngoặc đóng liên kết với dấu ngoặc mỡ,

- Thực hiện các biểu thức: VLISP Text Edior cho phép ta thử chạy các biểu thức mà không

cắn thoát khối VLISP Text Ediur

Ngoài ra còn có thể sao chếp từ, sao chép file, di chuyển, m kiến file

(0efun 30RERR (st) (AF (> st “Function cancer Kì (Brine (streat "\nErrer: " €

> (command “_.uno0" "Ey (aLundo_oFF)

Trang 6

Y¥ CHUONG TRIN!

BAI 4: DINH DANG MA QUAN

1 Tyo ma may eta VLISP:

“Trong các cửa sé Console hay Text Edior khi ta nhập Text vào tì VLISP xác định xem Text

mà ta nhập vào là hàm, biến, chuỗi hay thành phẫn nào khác, xau đó VLISP gán các mầu chơ mỗi loại thành phần đó để ta quản lý và phát hiện thiếu sốt ên hàm, dấu ngoặc đơn trong chương tình, Dưới đây là màu gán mặc định của VLISP:

-Đỗ Dấu ngoặc đơn (Parenthesis)

~ Màu Teal Số thực

~ Mẫu xanh Các hàm tạo sẵn

= Mau den “Các thành phần riêng không nhận biết

màu mặc định từ main menu VLISP như sau

Toolv Window: Attibute/ Confizure Curent

Trang 7

1H Tìm kiếm bảng ký hiệu bằng APROPOS:

Khi thực hiện chương trình AutoLISP, sử dụng tính năng Apropos giúp ta tìm kiếm bảng ký

"hiệu một cách nhanh chóng Để thực hiện Apropos ta lam như sau:

Pull-down menu: View /Apropos Window

‘Thanh Tools: Nut Apropos

Sau đó xuất hiện hộp thoại Apropos opdons Trên đó hiện ra text ta đã nhập Tiếp theo lựa chọn Match by prefix, use WCMATCH hay Lowercase symbols và ấn OK sẽ hiện ra bảng kết quả

BE ses Bài tên nà

ter ace caster

‘sch Won chờ ếch,

Trang 8

IML, Định dang ma quản lý chương trinh VLISP:

Để tạo các khối TeuL, sắp xếp cách canh lẻ hụt đầu dòng cho chương trình ta sử dụng bộ định

dạng mã mặc định VLISP Ta cũng có thể định dạng lại Text trong cửa sổ Text Edior như sau:

1 Dinh dang tit ed Text trong cửa sổ Text Editor như sau

‘Tools/ Format code in Editor (vi menu VLISP)

2 Định dạng các thành phần của Text trong cửa sổ Text Edior:

+ Chọn đoạn Text

+ Tools/ Format code in Selection (tit menu VLISP)

3 Định dang qua hộp thoại Format options Để làm xuất

hiện hộp thoại đó ta làm như sau (ừ menu VLISP):

‘Tools/ Environment Options/ Visual LISP Format Options

"Trên hộp thoại Format Options ta có thể định dang

— ron saegomen— Gi8€

Trang 9

BÀI 5: KIỀM TRA LÔI CŨ PHÁP (SYNTAX ERRORS)

1 Kiểm tra các cặp đấu ngoặc đơn;

Lỗi cú pháp thưởng mắc nhất là số các dấu ngoặc đơn mỡ và đóng không cân bằng hoặc không liên kết thành cấp Các lệnh liên kết các dấu ngoặc đơn:

+ Nếu đặt con trỏ trước dấu ngoặc đóng thì CTRL+[ sẽ chuyển con tr ti trước đấu ngoặc mở gần nhất

* CTRL+SHIFT+: Select Forward & CTRL+SHIFT#|: Select Backward

Tương tự như Match Forward & Match Backward, nhumg kich sing Text 3 gitta dau va cud

II Tìm các lỗi cú pháp bằng lệnh CHECK:

Lệnh Check của VLISP có thể dò tìm được lỗi sau: tên biến ai, các đối số, cú pháp không đúng khi gọi hàm

Để dò tìm lỗi tong chương trình AutoLISP, trước tiên ta mỡ cửa sổ Text Editor và gọi lệnh Check

TToole' nút Check Text in Editor: FF] d® âm lỗi cũa toàn bộ file chương tình

Tools’ nit Check Selection: BB] dd âm lỗi của đọan chương ình đã chọn

Sau khi đã biết đước các lỗi đó ta có thể sửa ngay, hoặc khó tìm vị tr lỗi thì ta double-click vao dng thong báo lỗi của cửa sổ Build Output, khi ấy VLISP mở cửa sổ Text Editor va đặt con trổ ở đầu câu lệnh liên quan đến lỗi để ta tìm sửa

IL Dd m lỗi cú pháp qua màu

'VLISP gần các màu cho mỗi loại đó để ta quản lý và phát hiện thiếu sót tên hàm, dấu ngoặc đơn trong chương trình

Trang 10

BÀI 6: MỞ ĐẦU AUTOLISP

1 Cấu tạo chương tinh AutoLISP:

Một chương trình AutoL.ISP là tập hợp các biểu thức (Expesion) được đặt trong các cặp đấu ngoặc đơn mở và đóng (Perenthexi) Biểu thức của AutoL1SP là tập hợp các con số, chuỗi ký tự

và chúng được cách nhau bởi ký tự trống Nếu ta nhập một biểu thức nằm trong cặp ngoặc đơn vio đồng nhắc “Command:” của ACAD, hay vào đấu nhắc ^_§” của Comsole Windows trong 'VLISP, tì máy thông dịch biểu thức đó rồi đưa kết quả ra màn hình và lưu kết quả rên bộ nhớ Vidụ

Command: (+ 100 50) <ENTER>

130

* Có thể sử dụng các lệnh

(eommand <đối số»)

"Trong đó <đối số» có thể là tên lệnh của ACAD, là số nguyên, xố thực, tên biến

* Các quy te viết ký hiệu đặc biệt trong chương trình:

~ Viết " " trong hàm Command tương đương với phím ENTER ví dụ

(Command *SOLID” P1 P2 P3 P4 * ")

~ Viết (Command) trong chương tình tương đương với CTRL.+C (hủy lệnh)

- Vigi PAUSE tong lệnh Command của chương ình để đũng lại khi chạy chương tình để nhập dữ liệu ví du

(Command *CIRCLE” PI PAUSE “CIRCLE” P2 PAUSE)

- Viết ; tong chương trình để ghi cha ding Text, AutoLISP không chạy dòng chương trình sau du ; nay Ví dụ:

“CT chuyen doi tu do thanh radian

(defun RA-DO (x) ; ham RA-DO ¢0 I doi so x

(Pi/x 180) - :bieu thúc than ham

ACAD trong chương tình:

Trang 11

II Soạn thảo chương trình:

Muốn có một chương trình trước hết phải soạn thảo nó trong một phẩn mễm soạn

ACAD ta 6 thé soan thio trong cửa sổ TextEduor của Visual LISP Cách mở cửa sổ Text

Edilor

Tools/ AutoLISP/ Visual LISP Editor

“Sau đó chọn New để soạn thảo chương trình mới, hoặc chọn Open để mỡ file chương trình đã

có ra để hiệu chỉnh Sau khi soạn thảo xong, ta ghi thành file chương trình AutoLISP phải có

Trang 12

THỊ, Tải chương trinh AutoL ISP:

“Trước khi chạy chương trình cần phải tải

nó vào ACAD, Có nhiều cách tải chương

trình như sau

1 Pull-down menu: Tools/ Load

Application

Sau khi nhập lệnh sẽ xuất hiện hop

thoại Load/ Unload Application Trén đó

ta chọn tên file, ấn nút Load để ti, rồi ấn

út Close tất hộp thoại

2 Gõ lệnh: (Load "nhập tên file không

đuôi»)

‘Vi dy: command: (Load “Hyuong”)

3 Dùng cửa s6 Visual LISP Text Editor

Trang 13

IV Chạy chương trinh AutoL ISP:

Sau khi ải mới có thể chạy chương trình được Các cách chạy chương trình:

1, Chạy từ cửa sổ ACAD:

'Command: (<nhập tên hàn><dốï số»)

2 Chay chương trình bằng cách nhập tên hàm trong

console Window

lấu ngoặc đơn sau đấu nhắc (_§) của

`V Tạo thêm lệnh cho ACAD:

“Ta có thể biến tên hàm được tạo do Defun thành một lệnh của ACAD bing cách đặt tên hàm

có dạng: C: XXX Trong đố

~ Phân C._ : Muôn bất buộc phải có

~ Phần XXX: là tên lệnh được tạo ra cho AutoCAD, nên dùng chữ in hoa

“Chú ý rằng hàm C.XXX không có đối số toàn cục nhưng phải có dấu () sau tên hàm XXX, và

có thể có đối số cục bộ (đặt sau du

Khi một hàm của AutoL1SP được đặt có dạng C:XXX thì XXX là tên Ï lệnh mới của ACAD

ai và chạy chương tình có tên hầm như vậy, ta chỉ cẩn nhập tên XXXX sau dòng

cho nên để tải

nhắc lệnh command: cia ACAD

Trang 14

BÀI 7: CÁC KHÁI NIỆM CƠ SỞ TRONG AUTOLISP

1 Bigu thie trong AutoL ISP:

"Một chương tình AutoLISP bao gồm chuổi

Mỗi biểu thức được bất đầu bởi dấu ngoặc đơn mổ: (Sau đó là tên hàm, rồi các đối số của him

đó, kết thúc biểu thức là đấu ngoặc đơn đóng) Mỗi đối số của hàm có thể là một biểu thức, Do Vậy một biểu thức có thể chữa các biểu thức con trong đó Ví dụ các biểu thức sau:

(3.12) Đây là các biểu thức lồng nhau: có 2 biểu thức

kết quả của chúng sẽ là 2 đối số cho hàm Liw của biểu thị

ben trong (ham + và hàm *) mà

‡ ngoài Kết quả hoàn trã sẽ là danh

thức 1) hoặc nhập vào sau dấu nhắc lệnh _§ của cửa sổ Console trong VLISP (biểu thức 2,3)

AutoLISP sẽ xử lý và hoàn trả kết quả ngay tại dấu nhắc đó

* Nếu ta nhập vào số lượng các dấu ngoặc đơn đóng chưa đúng AutoLISP sẽ hiện rà dấu nhắc nhờ ở đầu dòng như sau: ( >

Trang 15

11 Các kiểu dữ liệu của AutoLISP:

1 INTERGERS (lểu số nguyên) và REALS (kiểu số thực): INTERGERS là các số nguyên không chứa dấu thập phân và chon trong khoảng +2 147 483 647 đến -2 147 483 648 Nếu ta nhập vào con số ngoài khôang trên, hoặc kết quả giữa các số cho phép là con số lồn hơn số cực đại thì AutoLISP sẽ đưa rà kết quả s

* Vi dụ:

8/92)

4 Két qui him chia () 46 4a bỏ đi phần lẻ, Không phải là số nguyên

* REALS là sổ có chứa đấu chấm thập phân

3 LISTS (Kiểu danh sách): LISTS là kiểu dữ liệu đặc trưng của AutoL1SP LIST có thể bao gốm các giá tị cụ thể, các biển, các hàm Ví dụ:

+ Cổ thé thay him QUOTE boi him LIST; ma ham LIST gồm các phản tử là các giá trị và

cả các biến nữa Ví dụ: §(setq A (setpoint “Cho diem A:"))

(50.0 1000 00)

S$ (List A)

Tang 10a OON

Trang 16

3 STRING (kiểu chuỗi ký tự):

STRINGS là chuỗi các ký tự đặt bên trong dấu ngoặc kép * * Chuỗi ký tự không được vượt quá

4 Ngoài ra còn các dữ liêu kiểu:

~ SYMBOLS: để mô tả các ký tự ASCII mà chúng chứa 1 thông in nào đó

~ Kiểu đối tượng vẽ VLA (Visual LISP ActiveX): các đối tượng đặt tên của bản vẽ

AutoCAD có thể là đ liệu trong AutoLISP

~ Kiểu File: AttoLISP có thể dùng file deseriptor mô tả đưới đạng đối số cho hầm AutoLISP

Trang 17

ULL Céc biến trong AutoLISP:

Một biến AutoLISP nhận các giá tị kiểu dữ liệu đã gán cho nó cho đến khi gán giá tị mới Các biến rong ngôn ngữ lập tink bậc cao khác thường phẫi khai báo kiểu biển trước khi sử dụng, còn AutoLISP tự động xác định kiểu biến theo giá trị đã gần cho nó

"Đặc biệt trong đo góc của AutoLISP phải dùng đơn vị là Radian (RA); biến số pi due gần sẵn giá trị 3.14159 Một biến không được gần giá trị tủ gọi là NIL Biến với NỈ khi giá tị của nó Không còn cần thiết nữa, sẽ giảm việc sử dụng bộ nh của máy

* Hàm Setq được sử dụng để gần giá tr cho các biến NÓ có đạng sau:

(Setq <iên biến I> <giá trị > <iên biến 2> <giá trị 2> )

Hàm Setq sẽ gần giá tử cho biến 1, gần giá tị 2 cho biến 2 Nhưng AutoLISP chỉ hoàn trả giá trị của biểu thức của biểu thức biến cuối cùng, như ví dụ sau

Trang 18

Để truy cập đến các biến hệ thống AutoCAD, ta sử dụng 2 hàm AutoL.ISP như sau:

“Tra cứu giá trị hiện thời biến hệ thống:

(getvar "tên biến hệ thống”)

"Để gần giá trị mới cho biến hệ thống;

(setvar “tên biến hệ thống” <giá tị mới>)

Trang 19

IV Cac hàm (hay lệnh) trong Autol-SP:

1 Cũ pháp của hầm:

Các hàm AutoLISP cĩ cú pháp được mơ tả như sau:

(foo sưing [number )

“rong đĩ,

+ foo: tên ham

+ string: doi sé (ign) theo yêu cầu của hàm foo

++ number: di s8 ty § (e6 thể khơng cĩ)

*Vidụ

1 _§ (getpoint Pộn [đồng nhấc])

“Trong đồ hàm setpoint để nhập một điểm, đối xố Point là một tọa độ điểm, cịn đối số ở rong [ ] để ghỉ

¡, cĩ thể cho hoặc khơng,

_Š (getpoinL P1 "Cho toa đo diem 1:")

Cho toa do diem 1

-$ (quote (+ 4 6)

G46)

3 Định nghĩa hàm và thực th bàm:

Phan này ta xét cách định nghĩa một hầm và gọi hàm rã chạy như thé nào

* Cú pháp định nghĩa một hàm: (defun_ <tên hàm>- <các biếu biến cục bộ> <biểu thức thân hàm>)

Trong đĩ

+ Thành phần đầu tiên rong cặp ()Tà từ khĩa defun

+ Thanh phi thứ hai là tên hàm nhập vào

+ Thành phẫn thứ ba là biến tồn cục hay biến cục bộ (đất sau

một hàm con

+ Thành phẫn cuối cùng là biểu thức thân hàm

© Vidu: CT doi tu BO think RADIAN

(defn DO-RA (x) hàm DO-RA này e6 1 doi sx

Trang 20

`V Các hàm (hay lệnh) ed bản của AutoLISP:

Để gần (nhập) giá tị cho biến Nó có dạng sau:

(Setq <tén bign I> <giá tị l> <iên biến 2> <giá tị2> )

* Ví đụ: Chương trình tìm cạnh huyền của tam giác vuông, biết 2 cạnh x.y

(setg x (getreal “Cho can x:")) nip dd dn canh x (số thực)

(setg y (getreal “Cho canh y:"))snhap dO lon can y 6 thực)

(selq k (+ (° x x) * y y))) k là tổng bình phương 2 cạnh x.y

(prine "AnGia ti=”) in kết quả độ dài cạnh huyền tính được

(set | (sqet k)) Tbh

)

k

Trang 21

3 Hàm trả cứu và gán giá trị cho biến hệ thống của AutoCAD:

Để trủy cập đến các biến hệ thống AutoCAD, ta sử dụng 2 hàm AutoLISP như sau:

“Tra cứu giá tr hiện thi biến hệ thống:

(getvar "lên biến hệ thấng”)

ĐỂ sấn giá trị mới cho biến hệ thống

(setvar “tên biển hệ thống” <giá trị möi>)

(Getpoint [loa độ điểm] [dong nhấc|)

* via nhiều giáo trình hấp dẫn

* Lệnh nhập định hình chữ nhật (GETCORNEER); Hàm này giống hàm Getpoint, nhưng phải

‘ho toa độ đỉnh cụ thể, Cú pháp:

(getcorner pointl [dòng nhấc])

Vid

(Getcomer *(55,48) “Cho dinh 46i cia hinh chi nhdt:")

'Cho đỉnh đối của hình chữ nhật:

* Lệnh nhập khoảng cách (GETDIST): Để nhập khoảng cách giữa 2 điểm Cú pháp:

Trang 22

* Ví dụ _§ (sekq TUOI(getint *Tuoi bạn la:”)

‘Tuoi ban la: 34

a4

* Nhập chuỗi ký tự (GETSTRING)

ầm Getsuing chỉ cho phép nhập chuỗi ký tự có chiều dài tối đa 132 ký tự

(getstring [T] [dong nhắc|)

+ Nếu đặt dấu \ ở trước một ký tự khác sẽ tạo ra các ký tự mới

+ Trong cú pháp nhập chuỗi ký tự ở trên mà có mặt T tì có thể nhập ký tự trống rong chuổi

Trang 23

* Nhập từ khóa (GETWORD)

Him Getword để nhập các từ khóa Danh sách các từ khóa do hàm Initzet xác định Cho nên phải gọi him Initget trước khi nhập từ khóa Getword

(initget [bit] [dong nhấc|)

Bit =1 khong được nhập ký tự ting

2 khong duge nhập số 0

3 khong được nhập số â

8 có thể nhập điểm ngoài Limits

64 chi ding him getdist khi bỏ qua toa dz

Cú pháp nhập từ khóa

(getworl [đồng nhấc])

© Ví dục $ Gintget 1 “True False”))

nil

_S (setq x(getword “True or False:"))

‘True or False: T rae

Trang 24

* Các toán tử số học:

(+ <numl> <num2> ): oần tử cộng

(- <numl> <hum2> ): oán tử trừ

(* <numl> <hum2> ): toán tử nhân

(/ <numl> <num2> ): toán tử chia

(max <numl> <num2> ): tim giá tì cực đại

(mmin <numl> <num2> ): tim giá trị cực tiểu

* Các hàm số học và đại số

(1+ <number>): đếm tăng lên 1 đơn vị

* Ví dạ: _§ (seq A(I+9))

(1- <humber>): đếm giảm đi Ì đơn vị

(get <số nguyên> <số nguyên> : ìm mẫu số chung lớn nhất

(rem <number1> <numtber2> : fim phẫn dư của phép chia,

(sạn <numiber>): khai cân bậc 2

(exptx p): tính x mũ p

* Ví dụ (expt 23)

(exp p): tinh e mũ p

(abs <humber>): lấy giá trị tuyệt đối của s thự

(Jog x): tính logarit tự nhiên cơ sổ e của x

(float x): chuyển số x từ nguyên sang số thực

(fix x): chuyển x từ số thực sang số nguyên

(sin alpha): tinh sin g6e alpha (radian

{cos alpha): tinh cosin gée alpha (radian)

(atan x) tinh arctang ota x (radian)

(angle pl p2): tinh góc xác định bởi đường pIp và true x (theo radian),

Trang 25

6 Các hàm xử lý chuỗi ký ty (STRING):

(streat <sring1><string2> ) : ghép nổi các chuỗi thành 1 chuỗi

‘Vi du : _$(strcat "Hà Nội” "-” *Việt Nam”)

(aeii <ký >) chuyển Ì ký tự thành mã ASCH

* Ví đục (ai "C°) cho rủ kết quả 99

(ati <s6 nguyên>) _ :chuyển l số hành số nguyên

© Vi du: _S(atot “12.3")

=

Trang 26

7, Hàm xử lý danh sách (LIST):

Ngôn ngữ LISP nói chung và cả AutolLSP dựa trên nến ting là danh sách các thông tin Một

biểu thức chính là một danh sách Chương tình AutoLISP bao gdm các biểu thức, mà mỗi biểu thức được bất đầu bằng đấu ngoặc đơn mở và kết thúc bằng dấu ngoặc đơn đóng Các biểu thức

có thể lổng vào nhau,

AutoLISP c6 siin ci hầm để xử lý với các dạnh sách hoalec.com.vn

* Hợp nhất các biểu thức thành mt danh sich

“biểu thứeI> <biểu thức2>.)

(Xin chào” "các ban!”

* Chú ý: Một điểm trong AutoLISP được gần bởi lệnh List tức là các tọa độ (x.y) trong 2D hay (%.yz) rong 3D được viết dưới dạng List như sau:

‘Command: (ist 20 35)

(2035)

‘Command: (setq P2(ist 34.5 75 80))

(84.575 80)

* Các lệnh lựa chọn phẩn tử trong LIST và xử lý LIST

Lie là tập hợp nhiễu phần tử bên rong Đôi khi ta cần lựa chọn lấy 1 số phẩn tử rong

danh sich List 6, AutoLISP đưa ra các hàm lựa chọn họ Car như sau

(car <list>); chi la ra (hon ta) phn tthe 1 trong danh sich List

(cade <list>): chi lay ra (hoàn trả) phẩn tử thứ 2 trong danh sách LixL

(eaddt <list>) : chỉ lấy ra (hoàn trả) phẩn tử thứ 3 rong danh sách List

Trang 27

* Chú ý: Trong thực tiễn người ta thường sử dụng Car để chọn tọa độ x

lọa độ y của điểm, Caddr để chọn tọa độ z của điểm

° Ví dụ: Giả sử ta có 1 điểm Pt được gần tọa độ x là 10,

* Chứ ý: Các hàm Car, Củ có thể lổng vào nhau đỂ tạo thành các tên mối:

(caar <list>) = (car (car <list))

(dar <list>) = (ede (ede <is))

(cadae <list>) = ear (ed (car <list>)))

(dar <list>) = (cdr (car <list>))

(ast <list>) : chỉ chọn phẫn tử cuối cùng trong List

“S0 ng0603i04 be phiên: báo véng La,

Trang 28

(eons hiếu thức> «is §ymbol>)- :để to ra một Liet mới bằng cách nổi hai thành

phần phía sau tên hàm lại với nhau

+ Nếu thành phẫn cuối là Lix th tạo ra Liệt mối nối phẫn tử đâu chiếu thức> với

phiin tử cuối <list> với nhau:

_$ (setq A (list 1 2 3) B “object”)

object”

S$ (cons (* 5 5) A)

25123

+ Nếu thành phẫn cuối là Symbol ti igo ra List mdi ni phin tử đầu <hiểu thúc> với

phần tử cuối <Šymbol> với nhau và cách nhau dấu chấm (Doted pair)

-$ (cons (+ 1 9) B)

Trang 29

(append <list> <list2> :hầm này nối

(apply <func> <list>) :để thực thí hàm fune với các phẩn tử của List

* Vid: _$ (apply “scat (list “GOOD” “MORNING” “!"))

Hoàn trả kết quả là List: (-204 129.9)

phi tử List 2 vào cuối Lit

“P"*Q9)

Trang 30

Các hàm so sánh giữa 2 biến hay bai phân tử gốm có:

(eq <bién I> <bién 2>) : nếu biến 1 giống hệt biến 2 thì sẽ hoàn trả T, còn biến 1 khác

biến 2 thì hoàn trả Nil

* Chổ ý: đối với số thực máy tính xem số 0 là một số xấp xỉ bằng 0, cho nên khi dùng hầm “="

để so xnh có khi hoàn trả NÌ, Trường hợp này nên dùng hàm Pqual để so sánh

= chiều thức 1> chiều thức 2>) nếu 2 biểu thức Khác nhau sẽ hoàn tr T

€= <số thực I> <số thực 25) : nếu số thực 1 lớn hơn hay bằng số thực 2 thì hoàn trả T,

ngược lại sẽ hoàn trả NỈL

(<= <số thực I> <số thực 2>) : nếu số thực 1 nhỏ hơn hay bằng số thực 2 thì hoàn trả T,

ngược lại sẽ hoàn trd Nil,

(số thực 1> <số thực 2>) : nếu số thực l lớn hơn số thực 2 thì hoàn trả T, ngược lại sẽ

Đã ng 6°

Trang 31

(> <số thực 1> <xố thực 2>) _ : nếu số thực 1 nhỏ hơn số thực 2 thì hoàn trả T, ngược lại sẽ hoàn trả NỈ (and <giá tị I> <giá ị 2> ) : hàm AND sẽ hoàn tả Ni nếp bất kỳ 1 giá trị nào là Nil; và hoàn trả T khi tất cả các giá tr không có Nil

* Vi dụ: S(setq A 5 B NIL C “STRING")

(oot <gi wis): ham NOT hoàn trả T nếu giá tr cho là Nil, còn giá tị cho khác NỈ! sẽ hoàn trả Ni!

* Ví dụ: _S(setq x 5 y "Blue" z Nil)

“So hoalec.com.yn

me nhiều giáo trình hấp dẫn

Trang 32

'9 Các hàm hình học và lượng giác:

(distanee <Pi> <P2») : ính khoảng cách giữa hai điểm PI và P2

(aagle <Pl> <P2>)_ nh góc lạo bởi đường PIP2 với tre x (inh theo radian)

{polar <diém Pt> <g6e alpha> <khoiing eich delta>) : hàm Polar định tọa độ 1 điểm mới, so với điểm chuẩn Pt cách đoạn delta, nim trên đường thẳng nghiêng với trục x gốc alpha

(imters <Pl> <P2> <P3> <P4> [seg]) : hàm Inters hoàn trả tọa độ của giao điểm giữa PIP2 với P3P4

Nếu biến [seg] là Nil thì hai đường thẳng đồ xem là đài vô tận và hoàn trả tọa độ giao điểm của chúng Nếu

Iseg] nhận giá trị T thì hoàn trả Ni! khi hai đoạn thẳng không cất ở bên trong của chúng

Trang 33

* Ví dụ: Ta chuyển điểm P4150, 0, 0) từ hệ UCS hiện thời sang hệ WCS:

_Sttrans '(150 0 0) 1 0)

(292.449 72.963 3.552)

(sin <g6e radian>) :hoàn tra gid tri sin góc đó,

(eos <góc radian>) :hodn tả giá trị cos góc đó

{cvunit <st> <units i> <units méi>) cham Convert units dùng để chuyển đổi một số từ hệ đo này sang

10 Hàm kiểm soái lỗi:

Đây là cú pháp của một hàm xử lý lỗi:

“Ta thường nhập được thông báo lỗi chương tình với các dạng sau:

+**ERIROR: top (ew arguments

***ERROR: bad arguments type: 2D/ 3D point

Trang 34

VI Nhập và xuất

Cũng như các ngôn ngữ lập trình khác, AutoLISP sử đụng 2 dạng quản lý dữ liệu: ghỉ vào bộ nhớ của máy cách thứ hai là ghi vao file dữ liệu ngoại vi trên đĩa cứng địa mém không sử dụng bộ nhớ của máy Trong {qué tinh làm việc, các le dữ liệu đó được mở ra để ghỉ hoặc nhập vào khi AutoLISP yêu cầu

| Leni mad ding file (open <ién file> <mode>3: lệnh mỡ file theo mode:

i hi dé doe file

Sw" ghi thanh file mdi

“a” ghí tiếp vào file hiện thời khi xong việc phải đóng le lại

(close <mô tả ñile>) : lệnh đồng file

'Ví dụ: (setq fil “SOMEFILE.TXT)

(setq x (open fil “r°) et 0)

(while (read-line x)

setg et (1+ c0)

)

(close x)

Trang 35

2 Lệnh nhập dữ liệu t file và ghỉ dữ liệu vào file:

“Trước khi nhập hay ghi dữ liệu cần quay lại với màn hình hay máy in, chọn chế độ màn hình Text hay Graphics:

(oraphser) : chuyén mn hinh sang ché’ 49 46 hoa Graphies

iextser) : chuyển màn hình sang chế độ văn bản TexL

(textpage) : chuyển màn hình sang chế độ văn bin Text va xóa sạch màn hình đưa con tr lên góc trái trên màn hình,

* Xuất (ghỉ) dữ liệu vào 1 file:

(ostite-line <chuỗi ký o- <mô tả file») : cho mô tả file sẽ ghỉ chuỗi ký tự vào file, không cho mô tỉ file thì ghỉ chuỗi ký tự ra màn hình

Trang 36

3 Các hàm họ PRINT:

Các him họ Prnt sẽ xuất ra màn hình, máy in hoặc ghỉ vào file dữ liệu

{prince <hiểu thức> [m6 U file) nếu có mô tả ñle thì nội dung biểu thức được ghỉ vào ile đó: nếu không mô tả hàm pine sẽ in kết quả và hoàn trĩ ra màn hình,

(prin! <biểu thứe> [mô tả ñile]) : hàm sẽ in biểu thức ra màn hình, nếu có mô tả fie tì ý nghĩa nhữ

đã nói ở trên Khi in ra nếu là chuỗi ký tự tì đặt trong đấu ^”

*Vidu; Command: (setq a 123 b “a))

(AJ(A) _ z:in nội dụng biểu thứ: và hoàn trả

‘Command: (prin! “Hello” )

“Hello” in ndi dung biéu tite 1a dng ky tw đặt trong “*

{print <biéu thit> [mô tả file) : giống nbu prin}, him print s@ in bigu thức ra màn hình, nếu có mồ tả file thì ý nghĩa như đã nói ở trên Sau khi in nếu là chuỗi ký tự thì dành một khoảng trống ở cuối đồng

Trang 37

wi dy:

_§ (pin *\L AutoL ISP”

AutoLISP”N AutoLISP” ;:; hàm in và hoàn trả

-S (print “M AuloLISP")

<i him để lại một dòng rống không ïn

AL AutoLISP" “\ AuoLISP™ 3; him in va hoan tri

S$ (setq f (open “Textfile.txt” “w")) 5: md file

-S (prine “Bay 12 file vin bin”) :: ghi biéu thie vao file

* Chú ý

+ Ham Prine s@ in ra chuỗi kỹ tự không có đấu ngoặc kép

ngoặc kếp

+ Ham (princ) hay được dùng để xóa màn hình AutoCAD khi chay chương tình

còn hàm Print sẽ in ra chuỗi ký tự trong đấu

Trang 38

* Chú ý: Chương này ta đã khảo sát các lệnh cơ bản hay dùng nhất của AutoL1SP Các bạn có thể tìm hiểu thêm các lệnh khác trong mục Help của AutoLISP như sau;

Menu VLISP> Help> Visual LISP Help Topics (F1)> Help Topics> AutoLISP Reference

Phan trén ta da sử dụng màn hình là một thiết bị n ra, tức là sử dụng thiết bị xuất mặt định là CON (màn

“xuất tài liệu ra may in (Printer), hoặc cửa song song thì cần sử dụng thêm lệnh khác sau

Phần cứng thiết bị màn hình, bản phím

COMI, COM2 cổng nổi tiếp 1, 2

LPT LPT2 cổng song song 1, 2

Giả sử muốn xuất r máy ìn ta cần đăng ký máy in giống như mở I file thay tn ñle bằng tên máy in) Ví dục

(setq A (open “PRN" *w”)

¿ thực hiện các lệnh khác

(close A) ; đồng máy in.

Trang 39

'CHƯƠNG 27: CẤU TRÚC TRONG CHƯƠNG TRÌNH AUTOLISP

Cấu trúc tong chương trình AutoLISP cũng có đã các đặc trưng như trong các ngôn ngữ lập trình

khde: If, While, Cond, Progn

BALL: HAM DIEU KIEN (IF)

Ý là hầm điều kiện rất thường dùng trong chương trình AutoLISP

'Ý nghĩa: Nếu điều kiện nêu ra là đúng (T) thì thực hiện hiện biểu thức đầu; còn điều kiện nêu

ra là sai (Ni) thì thực hiện biểu thức sau

Cú pháp: (if_<điểu kiện> <thực hiện biểu thức nếu đúng> <thực hiện nếu sai>)

© Vi du: Ham if trên được mô tả trong chương trình sau đây so sánh 2 khoảng cách xuất phát từ 2

điểm pI

(Chay chương trình:

_Š ŒESTTING),

Diem dau tren man hình: 0/0

Diem thu 2 tren man hình: 100/0,

Khoang cach tu pl: 50

Khoang cach tu p2: 60

Chieu dai khong bang nhaw

_Š (TESTING)

Diem dau tren man hình: 0,0

Diem thu 2 tren man hình: 100,0

Khoang cach tu pl: 99

Khoang cach tu p2: 99

Chieu dil hang thee

2 trên màn hình Chương trình viết rong cửa s6 Text Editor của VLISP

(Seeq 2 (aetpoint (sety x (getenst PY "inoang cach ty P42") (Getq 9 (geteist ro canoang cach tu F222 Ge)

Grange “\nehicu dat knowg’ bang shaw") on eens et ee a ĐHỢT

> gehetie (prince)

433 het deFun

Trang 40

BÀI 3: HẦM LỰA CHỌN (COND)

Mầm Cond dùng tương tự như hàm If hung hàm Cond có thể xử lý với nhiều điều kiện th

"Nghĩa là hầm Cond có thể thay cho nhiều hàm If một lúc và hoàn trả giá tị tính sau cùng

Cú pháp:

(cond

Điều kiện 1 đúng thì thực hiện lệnh

Điều kiện 2 đúng thì thực hiện lệnh

"Điều kiện n đúng th thực hiện lệnh

)

* Vid

Mầm cond được mô tả trong chương tình sau đây xo sánh 2 khoảng cách xuất phát từ 2 điểm

pl và p2 trên màn hình Chương trình viết trong cửa xổ Text Edior của VLISP

fetm TESTTTM C/ xụ) (Seta pt (getpoint “Oien dau tren nan hinh:"))

Geta p2 Getpoint

(Setq x (getdist pt "khoang cach tu

Esetq y (aetaist pz “Knoang each tu p2

(cond (C= * 9) (prompe “\nchiew dài bang nhau"),

(C49) (prompt "\nthoang cach từ Ox "

(pine ey

Ngày đăng: 21/08/2013, 08:06

TỪ KHÓA LIÊN QUAN

w