giáo trình tự học Ngôn ngữ lập trình AutoLISP

40 1.8K 7
giáo trình tự học Ngôn ngữ lập trình AutoLISP

Đ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

utoLisp là một ứng dụng của ngôn ngữ Lisp được sử dụng trong môi trường AutoCad. Với AutoLisp người dùng có thể mở rộng và tuỳ biến các chức năng của AutoCad. AutoLisp là một ngôn ngữ lập trình thông dịch, nghĩa là dịch đến dòng nào thực hiện dòng đó và cho kết quả, không có trình biên dịch riêng. Một tập hợp các câu lệnh của AutoLisp được gọi là hàm Lisp và tệp (file) chứa các hàm gọi là tệp (file) Lisp có phần mở rộng là .Lsp. Với AutoLisp, người dùng có thể dễ dàng truy cập đến dữ liệu của AutoCad, có thể thay đổi, tạo mới, xoá bỏ các đối tượng, thêm các thông tin vào bản vẽ thực hiện các công việc Tự động hoá trong thiết kế... Tài liệu dưới đây tổng hợp các cấu trúc cơ bản trong ngôn ngữ lập trình Autolisp, tổng hợp các kiến thức toàn diện giúp bạn có thể tự mình khám phá và thực hành ngôn ngữ lập trình Tự động hóa thiết kế này.

Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DỤNG Ng«n ng÷ AUTOLISP I> TỔNG QUAN VỀ NGƠN NGŨ AutoLISP Giới thiệu chung: LISP chữ viết tắt cụm tõ tiÕng Anh: LISt Processor (Xư lý danh s¸ch) AutoLisp ứng dụng ngôn ngữ Lisp đ-ợc sử dụng môi tr-ờng AutoCad LISP ngôn ngữ lập trình thuộc nhóm trí tuệ nhân tạo MacCarthy soạn thảo cuối năm 50 Với AutoLisp ng-ời dùng mở rộng tuỳ biến chức AutoCad Hiện AutoLisp đà đ-ợc hÃng Autodesk phát triển theo số hiệu phát hành AutoCad Về phiên sau sử dụng đ-ợc ch-ơng trình lập phiên tr-ớc, ng-ợc lại không đ-ợc có số biến hệ thống lệnh AutoCad phiên không giống nên việc dùng chung có gặp số trở ngại Do yêu cầu ng-ời lập trình AutoLisp phải nắm thật vững AutoCad để sử dụng AutoLisp cách hiệu AutoLisp ngôn ngữ lập trình thông dịch, nghĩa dịch đến dòng thực dòng cho kết quả, trình biên dịch riêng Một tập hợp câu lệnh AutoLisp đ-ợc gọi hàm Lisp tệp (file) chứa hàm gọi tệp (file) Lisp có phần mở rộng *.Lsp Víi AutoLisp, ng-êi dïng cã thĨ dƠ dµng truy cËp đến liệu AutoCad, thay đổi, tạo mới, xoá bỏ đối t-ợng, thêm thông tin vào vẽ thực công việc Tự động ho¸ thiÕt kÕ C¸c qui -íc cđa AutoLisp: a) Cách viết ch-ơng trình AutoLisp Có cách viết ch-ơng trình AutoLisp: - Viết trực tiếp: Tại dòng nhắc Command: AutoCad ta gõ câu lệnh theo cú pháp AutoLisp Lệnh đ-ợc thực thi cho kết màm hình vùng dòng lệnh, nh-ng lệnh không l-u trữ đ-ợc - Viết thành ch-ơng trình: Dùng ch-ơng trình soạn thảo (dạng mà ASCII) Visual LISP, viết thành ch-ơng trình nh- tạp tin nguồn có phần mở rộng *.lsp Tên tệp tuân thủ theo qui -ớc hệ điều hành, th-ờng không ký tự, ký tự khoảng trống 21 Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DỤNG b) Tải chạy ch-ơng trình ứng dụng AutoLisp Từ VLISP: Tools\ Load Text in Editor Tõ AutoCad: Tool\ Load Application dòng lệnh Command: ap Để AutoCad tự động tải từ khởi động mở vẽ có cách: - Đặt tên tệp ACAD.LSP đặt th- mục Support AutoCad - Khi tải file lần đầu sử dụng Startup Suite\ Contents chọn đ-ờng dẫn cho file c) Các hàm AutoLisp AutoCad nhận xử lý lệnh hàm AutoLisp theo cú pháp sau: - Tên hàm ng-ời dùng định nghĩa gồm chữ số trừ ký tự đặc biệt: nh-: ? < > , * & ^ % $ # @ ! ~ \ | { } [ ] , tên hàm không nên dài phải dễ quản lý - Hàm câu lệnh AutoLisp phải đ-ợc đặt cặp dấu ngoặc đơn, bắt đầu ( kết thúc ) - Hàm đ-ợc viết từ trái qua phải theo kiểu Ba-lan, nghĩa phần tử sau dấu mở ngoặc phải tên hàm (có sẵn hay ng-ời lập trình tự định nghĩa) hay toán tử Các phần tử đứng sau tham số cần thiết để thực hàm hay toán tử - Phân cách tên hàm (hay toán tử) với tham số, tham số với phải có dấu cách ( dấu Space) - Một câu lệnh viết nhiều dòng Các dòng chữ viết thụt vào tuỳ ý theo cấu trúc đoạn lệnh cho dễ hiểu - Không phân biệt chữ hoa chữ th-ờng, th-ờng tên hàm nên viết chữ th-ờng, tên lệnh biến hệ thống AutoCad viết chữ hoa cho dễ đọc ch-ơng trình sáng sủa - Bất kỳ hàm trả giá trị đó, giá trị trả trị số mặc định nil - Lời thích ghi ch-ơng trình AutoLisp đ-ợc ghi sau dấu ; không đ-ợc thực thi ch-ơng trình d) Các biến AutoLisp - Các biến ch-ơng trình AutoLisp hoạt động t-ơng tự nh- biến ch-ơng trình khác - Tên biến gồm chữ số (trừ ký tự đặc biệt: nh-: ? < > , * & ^ % $ # @ ! ~ \ | { } [ ] ), chữ số đứng đầu tiếp sau phải chữ để tránh nhầm với số Tên biến không nên dài - Tên biến không phân biệt chữ hoa chữ th-ờng 22 Share99.net – All Free Dowwnload - LẬP TRÌNH ỨNG DỤNG Cã loại biến: + Biến chung: biến tồn suốt trình làm việc AutoCad Để kiểm tra giá trị cuả biến dòm Command AutoCad gõ !ten_biến + Biến riêng: Là biến tồn bên hàm Kết thúc hàm biến nhận giá trị Nil Chú ý: Các biến tham gia vào biểu thức phải đ-ợc gán giá trị định nghĩa không ứng dụng bị lỗi 23 Share99.net All Free Dowwnload LP TRèNH NG DỤNG II> CÁC KIỂU DỮ LIỆU CƠ BẢN TRONG AutoLISP Kiểu danh sách: (list) Đây kiểu đặc tr-ng ngôn ngữ Lisp bao gồm nhóm giá trị riêng lẻ gồm biến, số, hàm cách khoảng trống nằm dấu ngoặc đơn Danh sách đ-ợc chia làm loại chính: - Biểu thức (expression list): Chứa tên hàm tham số hàm - Toạ độ điểm (Point Coordinate List): Có hàm Quote dấu phía tr-ớc Đây tr-ờng hợp đặc biệt danh sách kho liệu, thông tin l-u trữ toạ độ điểm - Kho liệu (Data Storage List): Có hàm Quote hc dÊu „ ë phÝa tr-íc cã thĨ chøa kiểu liệu Ký hiệu hoàn trả AutoLisp: LIST Ví dụ: toạ độ điểm đ-ợc khai báo d-ới dạng danh sách: (1.0 1.0 1.0) hc (list 1.0 1.0 1.0) KiĨu sè: 2.1 Kiểu số nguyên - Kiểu số nguyên số nguyên thông th-ờng toán học Trong AutoLisp giới hạn số nguyên từ: -32768 đến +32767 - Các phép tính số nguyên cho kết số nguyên, phép chia cho kết số nguyên, phần d- có bị cắt bỏ Ví dụ: (/ 2) cho kết - Ký hiệu hoàn trả AutoLisp: INT 2.2 Kiểu sè thùc - KiĨu sè thùc AutoLisp cã ®é xác đến 14 chữ số sau dấu phẩy thập phân - Các số thực biểu diễn theo dạng thích khoa học, qua số e E đ-ợc theo sau số mũ số - Ký hiệu hoàn trả AutoLisp: REAL Kiểu chuỗi: - Chuỗi kí tự tập hợp ký tự đặt dấu ngoặc kép Trong AutoLisp chuỗi dài không 132 ký tự - Ký hiệu hoàn trả AutoLisp: “ STR” 24 Share99.net – All Free Dowwnload LẬP TRÌNH NG DNG Kiểu đối t-ợng nhóm đối t-ợng 4.1 Kiểu đối t-ợng - Mỗi đối t-ợng đ-ợc vẽ AutoCad đ-ợc quản lý theo tên (ENAME Entity Name) Mỗi tên đối t-ợng l-u trữ toàn thông tin đối t-ợng - Ký hiệu hoàn trả AutoLisp: ENAME 4.2 Nhóm đối t-ợng - Nhóm đối t-ợng (AutoCad selection set) kiểu đặc tr-ng cho tập hợp chứa ENAME đối t-ợng đ-ợc lựa chọn - Ta lấy ENAME đối t-ợng tập hợp đối t-ợng đ-ợc chọn - Ký hiệu hoàn trả AutoLisp: PICKSET” Sè Pi vµ Nil - Sè Pi toán học AutoLisp đ-ợc ký hiệu pi nhận giá trị không đổi 3.1415926 Pi tham gia vào biểu thức toán học số đo góc Radian - Nil ký hiệu để biến hay hàm giá trị biểu thức lôgíc nhận giá trị không 25 Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DỤNG III> CÁC HM CHUN CA AutoLISP Phép gán a Hàm (setq ): Chức năng: Gán giá trị cho biến Cú pháp: (setq b1 gt1 [b2 gt2] ) Giải thích: Gán gt1 cho biến b1, gt2 cho biến b2 Mỗi biến nhận giá trị viết sau Giá trị liệu, biến khác biểu thức đà xác định tr-ớc Để xoá biÕn khái bé nhí: (setq biÕn Nil) §Ĩ AutoCad thực lệnh AutoLisp mà không hiển thị dòng lệnh hình ta gán giá trị cho biÕn hÖ thèng CMDECHO b»ng lÖnh: (setq cmdecho 0) b Hàm (setvar ): Chức năng: Gán giá trị cho biÕn hƯ thèng Có ph¸p: (setvar varname value) Giải thích: varname: Tên biến hệ thống value: Giá trị cần gán VD: (setvar FILLETRAD 10.00) -> 10.00 c Hàm (set ): Chức năng: Gán tên biến cho biến Cú pháp: (set biến1 biến2) Giải thích: Gán tên biến2 cho biến1 Mỗi lấy giá trị biến1 thực chất lấy giá trị biến2 VD: (setq a 10.00) (set ‘b ‘a) -> b = 10.00 26 Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DNG Các hàm chuyển lệnh từ AutoLisp sang AutoCad a Hàm (Load ) Chức năng: Gọi ch-ơng trình ứng dụng vào AutoCad Cú pháp: (Load Tên_tệp) Giải thích: Tên_tệp: tên tập tin có phần mở rộng *.LSP, ARX, ADS EXE Nếu ch-ơng trình đặt th- mục làm việc AutoCad phải rõ đ-ờng dẫn tệp tin b Hàm (Command ) Chức năng: Thực lệnh AutoCad Cú pháp: (Command Tên_lệnh chọn] ) [các đáp ứng lời nhắc] [các tuỳ Giải thích: Tên_lệnh: tên lệnh AutoCad [các đáp ứng lời nhắc] [các tuỳ chọn]: Tuân theo lệnh AutoCad Nếu Tên_lệnh = _Tên_lệnh _.Tên_lệnh Autocad truy cập gía trị bảng số liệu cđa lƯnh thùc thi AutoCad VD: (Command “CIRCLE” ‘(100.00 100.00) 10.00) -> Vẽ đ-ờng tròn tâm có toạ độ (100.00, 100.00) có bán kính 10.00 Các hàm nhập liệu từ ng-ời dùng Các hàm sau tạm dừng ch-ơng trình để yêu cầu ng-ời dùng nhập liệu vào từ bàn phím chuột a Hàm (getpoint ) Chức năng: Chờ ng-ời dùng nhập toạ độ diĨm Có ph¸p: (getpoint [point] [prompt]) 27 Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DỤNG Gi¶i thÝch: point: NÕu có, cho danh sách điểm , điểm thứ nhất, điểm ng-ời dùng nhập vào ®iĨm thø §iĨm thø cã thĨ cho b»ng toạ độ t-ơng đối [prompt]: Nếu có, dòng nhắc giải thích liệu nhập Dòng nhắc phải đ-ợc đặt ngoặc kép VD: (setq pt1 (getpoint Cho tam duong tron:)) Kết cho dòng nhắc: Cho tam duong tron: b Hàm (getdist ) Chức năng: Chờ ng-ời dùng nhập vào: - Một số thực khoảng cách - Toạ độ điểm Nếu nhập toạ độ điểm, AutoLisp hoàn trả khoảng cách hai điểm Cú pháp: (getdist [point] [prompt]) Giải thích: point: giống nh- getpoint [prompt]: dòng nhắc giải thích liệu nhập VD: (setq r1 (getdist “Cho ban kinh duong tron:”)) KÕt qu¶ cho dòng nhắc: Cho tam duong tron: - Nhập vào số thực d-ơng - Nhập toạ độ điểm, dòng nhắc xuất hiện: Second point: Tiếp tục nhập vào điểm thứ để lấy khoảng cách giữ điểm c Hàm (getangle ) Chức năng: Chờ ng-ời dùng nhập vào: - Một số thực số đo độ góc cung tròn - Toạ độ điểm Nếu nhập toạ độ điểm, AutoLisp hoàn trả góc nghiêng đoạn thẳng nối hai ®iĨm so víi ph-¬ng n»m ngang 28 Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DỤNG KÕt qu¶ tr¶ vỊ: REAL ( số đo Radian) Cú pháp: (getangle [point] [prompt]) Giải thích: point: giống nh- getpoint [prompt]: dòng nhắc giải thích liệu nhập VD: (setq a1 (getangle “Cho goc nghieng cua duong thang:”)) KÕt cho dòng nhắc chờ ng-ời dùng nhập số liƯu: Cho goc nghieng cua duong thang: d Hµm (getint ) Chức năng: Chờ ng-ời dùng nhập vào số nguyên Kết quả: INT Cú pháp: (getint [prompt]) Giải thích: [prompt]: dòng nhắc giải thích liệu nhập e Hàm (getreal ) Chức năng: Chờ ng-ời dùng nhập vào số thực Kết quả: REAL Cú pháp: (getreal [prompt]) Giải thích: [prompt]: dòng nhắc giải thích liệu nhập f Hàm (iniget ) Chức năng: Kiểm soát kiểu giá trị nhập vào từ ng-ời dùng cho hàm nhập số liệu họ getxxx Hàm này, dùng phải đặt tr-ớc hàm nhập số liệu họ getxxx cần khống chế Cú pháp: (iniget mÃ_số [Chuỗi_định_dạng]) 29 Share99.net All Free Dowwnload LP TRèNH NG DNG Giải thích: mÃ_số: Giá trị mà số kiểm soát cách nhập số liệu vào Giá trị mÃ_số hàm chịu tác động cho bảng sau: Mà số Chức kiểm soát Hàm chịu tác động Bình th-ờng trả Nil gõ ENTER Toàn hàm getxxx trừ ch-a nhập số liệu hàm getstr getint, getreal, Không cho phép ng-ời dïng gâ ENTER getangle, ch-a nhËp sè liÖu getkword getdist, getpoint, Kh«ng cho phÐp nhËp sè getint, getreal, getangle, getpoint, getdist, Kh«ng cho phÐp nhËp số âm getint, getreal, getdist, Cho phép nhập toạ độ điểm nằm getpoint, getcorner LIMITS vẽ Nếu mà số có giá trị tổng mốtố giá trị cho bảng chức kiểm soát tổng chức Chuỗi_dịnh_dạng: Là chuỗi ký tự dùng làm từ khoá hỗ trợ cho hàm getxxx cã c¸c t chän nhËp sè liƯu + Mỗi từ khoá cách dấu trống + Các chữ viết hoa viết liền từ khoá dấu hiệu từ khoá Khi nhập số liệu, ng-ời dùng gõ theo chữ viết hoa để lựa chọn + Nếu tất chữ từ khoá viết hoa từ khoá c¸ch b»ng dÊu phÈy (,) VD1: (iniget 1) (setq a1 (getdist Cho ban kinh:)) Kết cho dòng nh¾c chê ng-êi dïng nhËp sè liƯu: Cho ban kinh: Nếu ng-ời dùng gõ ENTER mà không nhập có dòng thông báo: Requires numeric distance or two poionts Cho ban kinh: Đợi ng-ời dùng nhập liệu ch-ơng tr×nh míi tiÕp tơc 30 Share99.net – All Free Dowwnload LP TRèNH NG DNG Chức năng: Chuyển đổi số đo góc thành chuỗi ký tự (chứa chữ số) Cú pháp: (angtos angle [mode] [precision]]) Giải thích: angle : Là số đo góc radian mode : Là số nguyên xác định dạng đơn vị xuất ra, tuân theo cài đặt lệnh UNITS Các giá trị mode t-ơng tự nh- hàm (angtof ) precision : Là độ xác (số chữ số sau dấu phảy thập phân) c Hàm (atof ) Chức năng: Chuyển đổi chuỗi ký tự thành số thực Cú pháp: (atof str) Giải thích: str : Là chuỗi ký tự (chứa chữ số) d Hàm (atoi ) Chức năng: Chuyển đổi chuỗi ký tự thành số nguyên Cú pháp: (atoi str) Giải thích: str : Là chuỗi ký tự (chứa chữ số) e Hàm (itoa ) Chức năng: Chuyển đổi số nguyên thành chuỗi ký tự Cú pháp: (itoa int) Giải thích: int : Là số nguyên, cho kiểu khác hàm báo lỗi 46 Share99.net All Free Dowwnload LẬP TRÌNH ỨNG DỤNG f Hµm (rtos ) Chức năng: Chuyển đổi số thực thành chuỗi ký tự Cú pháp: (rtos number [mode [precision]]) Giải thích: number : Là số mode: Là mà điều khiển dạng xuất chuỗi ký tự Mode nhận giá trị sau: : D¹ng khoa häc : D¹ng thËp phân : Dạng kỹ thuật : Dạng kiến trúc : Dạng hữu tỷ (phân số) precision : Là độ xác (số chữ số sau dấu phảy thập phân) g Hàm (distof ) Chức năng: Chuyển đổi chuỗi ký tự (chứa chữ số) thành số thực Cú pháp: (distof str [mode]) Giải thích: str : Là chuỗi ký tự chứa chữ số mode: Là mà điều khiển nhập vào số thực nhận giá trị sau: : Dạng khoa học : Dạng thập phân : Dạng kỹ thuật : Dạng kiến trúc : Dạng hữu tỷ (phân số) h Hàm (fix ) Chức năng: Chuyển đổi số thực thành số nguyên, cắt bỏ phần thập phân Cú pháp: (fix number) 47 Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DNG Giải thích: number : Là số thực i Hàm (fload ) Chức năng: Chuyển đổi số thành số thực Cú pháp: (fload number) Giải thích: number : Là số nguyên số thực 10 Các hàm xử lý chuỗi ký tự Trong AutoLisp chuỗi ký tự đ-ợc viết ngoặc kép Dấu \ kèm theo chữ có tác dụng điều khiĨn: C¸ch viÕt ý nghÜa \\ : \ \n : Xuèng dßng \t : Tab \e : ESC \” : \r : ENTER a Hàm (strcat ) Chức năng: Nối chuỗi thành phần thành chuỗi chung Cú pháp: (strcat str1 str2 [str3] ) Giải thích: str1, str2, str3 : Là chuỗi thành phần cần đ-ợc ghép lại b Hàm (strcase ) Chức năng: Chuyển chuỗi chữ in hoa chữ th-ờng Cú pháp: (strcase str which) 48 Share99.net – All Free Dowwnload LẬP TRÌNH NG DNG Giải thích: str: Là chuỗi cần chuyển đổi which: Nếu không có, tất chuỗi biến thành chữ in hoa, chữ T tất chuỗi trở thành chữ th-ờng c Hàm (strlen ) Chức năng: Đếm số ký tự chuỗi Cú pháp: (strlen str) Giải thích: str: Là chuỗi cần đếm d Hàm (substr ) Chức năng: Trích phần chuỗi ký tự thành chuỗi khác Cú pháp: (substr str start [length]) Giải thích: str: Là chuỗi cần trích start: Vị trí ký tự chuỗi cần trích length: Chiều dài chuỗi (số ký tự), chuỗi vị trí start hết 11 Các hàm xử lý chuỗi ký tự 11.1 Các hàm thao tác với đối t-ợng độc lập a Hàm (entlast) Chức năng: Chọn đối t-ợng vẽ cuối vẽ trả mà ENAME Cú pháp: (entlast) Giải thích: Hàm đối số b Hàm (entnext ) Chức năng: Chọn đối t-ợng vẽ vẽ đối t-ợng tiếp sau đối t-ợng khác trả mà ENAME cđa nã Có ph¸p: (entnext [ename]) 49 Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DỤNG Gi¶i thÝch: ename: NÕu hoàn trả thực thể vẽ Nếu có hoàn trả tên thực thể tiếp sau thực thể có tên ename Ví dụ: (setq e1 (entnext)) ;Gán tên thực thể cho e1 (setq e2 (entnext e1)) ;Gán tên thực thể tiếp sau e1 cho e2 c Hàm (entsel ) Chức năng: Chờ ng-ời dùng chọn đối t-ợng trả mà ENAME Cú pháp: (entsel [promt]) Giải thích: promt: Lời nhắc, dòng nhắc : Select object: VÝ dô: (setq e1 (entsel “Chon doi tuong thu nhat:”)) (setq e2 (entsel “Chon doi tuong thu hai:”)) (command “EXTEND” e1 e2 ) d Hàm (nentselp ) Chức năng: Ch-ơng trình tự động chọn đối t-ợng qua điểm cho tr-ớc Cú pháp: (nentselp [promt] [pt]) Giải thích: promt: Lời nhắc pt: Điểm mà đối t-ợng qua e Hàm (entdel ) Chức năng: Xoá đối t-ợng vẽ khôi phục lại đối t-ợng vừa bị xoá Cú pháp: (entdel ename) Giải thích: ename: Mà tên đối t-ợng, hàm dùng cho thực thể chính, tên thực thể hàm (entlast), (entnext) 50 Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DỤNG f Hµm (entget ) Chức năng: Hoàn trả danh sách liệt kê thông tin đối t-ợng có vẽ đ-ợc gọi Cú pháp: (entget ename [applist]) Giải thích: ename: Mà tên đối t-ợng applist: Nếu có, danh sách chuỗi ký tự chứa thông tin mở rộng có liên quan đ-ợc gọi hoàn trả g Hàm (entmod ) Chức năng: Cập nhật lại thông tin đối t-ợng đà bị thay đổi hàm vẽ đối t-ợng với thông tin đà cập nhật Hàm th-ờng đ-ợc dùng với hàm (entget) Cú pháp: (entmod entlist) Giải thích: entlist: Là danh sách chứa thông tin đối t-ợng lấy từ hàm (entget) h Hàm (entmake ) Chức năng: Tạo thực thể cách xây dựng danh sách cởơ liệu nó, không cần qua lệnh AutoCad Cú pháp: (entmake edata) Giải thích: edata: Là danh sách sở liệu đối t-ợng cần tạo Ví dụ: Vẽ đ-ờng tròn (entmake ((0 CIRCLE) ; Kiểu đối tượng đường tròn (62 1) ; Màu đỏ (10 4.0 4.0 0.0) ; Tâm (4.0 4.0 0.0) (40 1.0) (40 1.0) ; B¸n kÝnh 1.0 ) ) 51 Share99.net – All Free Dowwnload LẬP TRèNH NG DNG 11.2 Các hàm thao tác với bảng đối t-ợng Bảng thực thể tập hợp thực thể khối đồ hoạ chuẩn AutoCad Các thực thể không thấy hữu vẽ mà nằm bảng liệu Các bảng liệu bao gồm: LAYER, BLOCK, LTYPE, STYLE, DIMSTYLE, UCS, VPORT Mỗi bảng đối t-ợng nói có liệu chính: + Tên bảng nh-: LAYER , BLOCK + Tên đối t-ợng bảng: Lớp , khối A1 + Dữ liệu đối t-ợng: màu sắc, đ-ờng nét a Hàm (tblnext ) Chức năng: Tìm bảng liệu trả liệu bảng Cú pháp: (tblnext tblname [rewind]) Giải thích: tblname: Chuỗi ký tự chứa tên bảng rewind: Nếu có giá trị khác nil, trả tên liệu bảng đối t-ợng mà AutoCad tìm thấy.Nếu nhận giá trị nil, trả tên liệu bảng đối t-ợng mà AutoCad tìm thấy b Hàm (tblsearch ) Chức năng: Tìm thành phần đ-ợc định bảng đối t-ợng trả liệu thành phần Cú pháp: (tblsearch tblname symbol [setnext]) Giải thích: tblname: Chuỗi ký tự chứa tên bảng symbol: Tên thành phần bảng Nếu tìm thấy, trả tên liệu tên gọi Nếu không tìm thấy trả nil setnext: Lµ lùc chän dïng cã mét lƯnh tblnext tiÕp sau lƯnh nµy 52 Share99.net – All Free Dowwnload LP TRèNH NG DNG 11.3 Các hàm thao tác với nhóm đối t-ợng Trong AutoCad ng-ời ta sử dung chữ viết tắt ss (Selection Set) để gọi tên nhóm đối t-ợng (Object) nhóm thực thể (entities) đ-ợc chọn sau dòng nhắc Select object: AutoCad Kiểu nhóm PICKSET Có thể coi nhóm đối t-ợng mảng phần tử, phần tử tên đối t-ợng a Hàm (ssget ) Chức năng: Chọn đối t-ợng vẽ trả nhóm đối t-ợng đà chọn Nếu đối t-ợng hàm trả kết nil Cú pháp: (ssget [mode] [pt1 [pt2]] [pt-list] [filter-list]) Giải thích: mode: Chuỗi ký tự chứa mà điều khiển việc lựa chọn, nhận mà sau: L : Last - đối t-ợng vẽ cuối tồn vẽ ®-ỵc chän ” P” : Previous – TËp hỵp ®èi t-ợng vừa chọn tr-ớc W : Windows Các đối t-ợng nằm cửa sổ chọn C : Cross Các đối t-ợng nằm cắt qua cửa sổ chọn X : Tất cảc đối t-ợng vẽ đ-ợc chọn WP : Các đối t-ợng nằm đa giác cho tr-ớc đ-ợc chọn WC : Các đối t-ợng nằm cắt qua đa giác cho tr-ớc đ-ợc chọn pt1 pt2: Hai điểm đỉnh đối cửa sổ hình chữ nhật dùng cho chọn đối t-ợng Crossing windows pt-list: Các điểm tạo thành đa giác dùng cho lựa chọn WP, WC filter-list: Là danh sách chứa tiêu chuẩn lọc cho việc chọn nhóm đối t-ợng b Hàm (ssadd ) Chức năng: Thêm đối t-ợng vào tập đối t-ợng Cú pháp: (ssadd [ename] [ss]) 53 Share99.net – All Free Dowwnload LẬP TRÌNH NG DNG Giải thích: ename: Chuỗi ký tự chứa tên mà đối t-ợng cần thêm vào, đối t-ợng ename đà có tập đối t-ợng, không thêm vào đ-ợc ss: Tên tập đối t-ợng Nếu tham số không có, trả tập rỗng Nếu ename khác nil tập đối t-ợng nil, hàm trả tập đối t-ợng có phần tử ename đà cho Nếu khác nil, hàm trả tập đối t-ợng có thêm phần tử ename vừa thêm vào c Hàm (sslength ) Chức năng: Trả số nguyên số đối t-ợng có tập đối t-ợng Cú pháp: (sslength ss) Giải thích: ss: Tên tập đối t-ợng có vẽ d Hàm (ssdel ) Chức năng: Loại bỏ đối t-ợng khỏi tập đối t-ợng Cú pháp: (ssdel ename ss) Giải thích: ename: Chuỗi ký tự chứa mà tên đối t-ợng cần loại bỏ Nếu đối ename đà có tập đối t-ợng, bị loại bỏ, trả nguyên tập đối t-ợng ss: Tên tập đối t-ợng có vẽ e Hàm (ssname ) Chức năng: Trả ename đối t-ợng có tập đối t-ợng Cú pháp: (ssname ss index) Giải thích: ss: Tên tập đối t-ợng có vẽ index: Số thứ tự đối t-ợng tập hợp đối t-ợng đ-ợc tÝnh tõ 0, 1, 54 Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DỤNG IV> HÀM DO NGƯỜI LẬP TRèNH NH NGHA Các hàm t-ơng tự nh- hàm (Function) ngôn ngữ lập trình C C++, thủ tục (Procedure) Pascal, hàm (Subroutine) Fortran Cú pháp chung hàm ng-ời dùng định nghĩa: Cú pháp: (defun tên_hàm (tham_số/ biến_số_riêng) ; Thân hàm ; Thân hàm ) Hoặc: (defun tên_hàm () ; Thân hàm ; Thân hàm ) Giải thích: defun: Hàm định nghĩa AutoLisp Tên_hàm: Do ng-ời lập trình đặt, tên hàm nên viết chữ hoa khoảng trống Thâm hàm: lệnh xử lý AutoLisp Một hàm triệu gọi nhiều hàm khác Trong thân hàm bao gồm có tham số, biến_số_riêng, biến_số_chung tham số: Là nhều biến hình thức, biến chung cho ch-ơng trình, tham gia vào biểu thức thân hàm đ-ợc tồn thoát khỏi AutoCad Khi đ-ợc triệu gọi, biến hình thức đ-ợc thay giá trị Trong hàm tham số biến_số_riêng: Trong hµm cã thĨ cã mét hay nhiỊu biÕn sè riêng, đ-ợc phân cách dấu trống Các biến số nhận giá trị định nghĩa tồn bên hàm, khỏi hàm, giá trị biến đ-ợc xoá khỏi nhớ biến_số_chung: Khi hàm tham số lẫn biến riêng, biến số biÕn chung 55 Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DỤNG VÝ dơ: a VÝ dơ vỊ tham sè: (defun VD1(x y) ; Thân hàm ; Thân hàm ) Hàm có tham số x y Hàm đ-ợc triệu gọi nh- sau: (VD1 x y) b VÝ dơ vỊ biÕn sè riêng: (defun VD2(/ x y) ; Thân hàm ; Thân hàm ) Hàm có biến số riêng x y Hàm đ-ợc triƯu gäi nh- sau: (VD2) c VÝ dơ vỊ biÕn số chung: (defun VD3() ; Thân hàm ; Thân hàm ) Hàm tham số biến riêng Hàm đ-ợc triệu gọi nhsau: (VD3) d Tên hàm lệnh AutoCad: (defun C:VD4() ; Thân hàm ; Thân hàm ) Khi ch-ơng trình AutoLisp chứa hàm đ-ợc gọi vào AutoCad vd4 lệnh AutoCad, gọi dòng lện Command: vd4 56 Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DNG Các tr-ờng hợp đặc biệt tên hàm: 1.1 Tên hàm trở thành lệnh AutoCad (defun C:tên_hàm( ) ; Thân hàm ; Thân hàm ) 1.2 Hàm đ-ợc thực sau khởi động AutoCad (defun S::tên_hàm( ) ; Thân hàm ; Thân hàm ) Một số ví dụ minh hoạ 2.1 T¹o Layer (defun C:TAOLOP() (command "-layer" "n" "dut" "l" "DASHED" "dut" "c" "dut" "") (command "-layer" "n" "tam" "l" "CENTER" "tam" "c" "tam" "") (command "Ltscale" 300) (command "ZOOM" "a") ); Kết thúc hàm Ch-ơng trình chạy AutoCad tạo lớp có tên dut tam 2.2 Vẽ khung tên (defun c:KBV(/ tyle loai KBV1 KBV2) (setq tyle (getreal "\Cho ty le ban ve : ")) (setq loai (getstring "\Cho kho giay in ban ve A0,A1,A2,A3,A4: ")) (setq KBV1 (getpoint "\Cho diem chen khung ban ve: ")) (if (= loai "a0") (setq KBV2 (list (+ (car KBV1) (* 1188.0 tyle)) (+ (cadr KBV1) (* 840.0 tyle)))) (if (= loai "a1") (progn (setq KBV2 (list (+ (car KBV1) (* 840.0 tyle)) (+ (cadr KBV1) (* 594.0 tyle))))) 57 Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DỤNG (if (= loai "a2") (progn (setq KBV2 (list (+ (car KBV1) (* 560.0 tyle)) (+ (cadr KBV1) (* 418.0 tyle))))) (if (= loai "a4") (progn (setq KBV2 (list (+ (car KBV1) (* 285.0 tyle)) (+ (cadr KBV1) (* 198.0 tyle))))) (if (= loai "a3") (setq KBV2 (list (+ (car KBV1) (* 396.0 tyle)) (+ (cadr KBV1) (* 285.0 tyle)))) ) ) ) ) ) (command "-layer" "n" "Dam" "l" "CONTINUOUS" "Dam" "c" "Dam" "") (command "-layer" "s" "Dam" "") (command "Rectangle" KBV1 KBV2 ) ); Hết hàm Ch-ơng trình chạy AutoCad vẽ kích th-ớc khung vẽ theo khổ vẽ mà ng-ời dùng yêu cầu 2.3 Đổi màu đối t-ợng (defun C:1() (prompt "_.change ") (princ "\n Change Colour to Red - 1") (setq sset (ssget)) (if (null sset) (progn (princ "\nERROR: Nothing selected.") (exit) ) ) (command "_.change" sset "" "P" "C" "1" "") 58 Share99.net – All Free Dowwnload LP TRèNH NG DNG (princ) ); Hết ch-ơng trình Ch-ơng trình chạy AutoCad đổi màu đối t-ợng chọn sang màu đỏ 2.4 Đổi lớp đối t-ỵng (defun C:DAM() (prompt "_.change ") (princ "\n Change Layer Dam") (setq sset (ssget)) (if (null sset) (progn (princ "\nERROR: Nothing selected.") (exit) ) ) (command "_.change" sset "" "P" "LA" "Dam" "LT" "BYLAYER" "C" "BYLAYER" "") (princ) ); HÕt ch-ơng trình Ch-ơng trình chạy AutoCad đổi lớp hành đối t-ợng sang lớp dam 2.5 Tạo underline cho nhóm text đ-ợc chọn (defun c:UU( / sset ssl temp ed old new ) (text_uu_ssget); Gäi hµm (setq ssl (sslength sset)) (while (> ssl 0) (progn (setq temp (ssname sset (setq ssl (1- ssl)))) (setq ed (entget temp)) (setq old (cons (DXF ed)) new (cons (strcat "%%u" (DXF ed))) ed (subst new old ed) ) (entmod ed) 59 Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DỤNG ) (princ) ) );HÕt hµm chÝnh ; -(defun text_uu_ssget ( / ssl nsset temp ed ); Hµm (setq sset (ssget)) (setq ssl (sslength sset) nsset (ssadd) ) (print ssl) (while (> ssl 0) (progn (setq temp (ssname sset (setq ssl (1- ssl)))) (setq ed (entget temp)) (if (= (DXF ed) "TEXT") (ssadd temp nsset)) ) ) (setq ssl (sslength nsset) sset nsset ) (print ssl) (princ) (print) );HÕt hµm _ END _ Tài liệu bạn sử dụng download miễn phí website 60 ... thứ tự đối t-ợng tập hợp đối t-ợng đ-ợc tính tõ 0, 1, 54 Share99.net – All Free Dowwnload LẬP TRÌNH ỨNG DỤNG IV> HÀM DO NGƯỜI LẬP TRÌNH NH NGHA Các hàm t-ơng tự nh- hàm (Function) ngôn ngữ lập trình. .. AutoLisp: REAL Kiểu chuỗi: - Chuỗi kí tự tập hợp ký tự đặt dấu ngoặc kép Trong AutoLisp chuỗi dài không 132 ký tự - Ký hiệu hoàn trả AutoLisp: “ STR” 24 Share99.net – All Free Dowwnload LẬP... ch-ơng trình d) Các biến AutoLisp - Các biến ch-ơng trình AutoLisp hoạt động t-ơng tự nh- biến ch-ơng trình khác - Tên biến gồm chữ số (trừ ký tự đặc biệt: nh-: ? < > , * & ^ % $ # @ ! ~ \ | {

Ngày đăng: 25/07/2014, 16:30

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan