Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 260 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
260
Dung lượng
2,17 MB
Nội dung
THE CONTENTS MỤC LỤC The contents (Mục lục) General View (Tổng quan tài liệu) The Autolisp Beginner (Autolisp Sơ cấp) 3.1 The first thing you should know about AutoLisp (Điều cần biết Autolisp) 3.2 Variables (Các biến số) 3.3 Functions (Các hàm ) The Autolisp Immediate (Autolisp Trung cấp) 4.1 Data Types (Các loại liệu) 4.2 String Functions (Các hàm xử lý chuỗi) 4.3 Number Functions (Các hàm xử lý số) 4.4 List Functions (Các hàm xử lý danh sách) 4.5 Entity DXF Group Codes (Các mã nhóm DXF đối tượng) 4.6 Entity DXF Group Code Table (Bảng mã nhóm DXF đối tượng) 4.7 Conversion Functions (Các hàm chuyển đổi) 4.8 Math Functions (Các hàm toán học) 4.9 Selecting Entities (Các hàm lựa chọn đối tượng) 4.10 Selection Set Functions (Các hàm xử lý lựa chọn) 4.11 Entity Functions (Các hàm xử lý đối tượng) 4.12 Read/Write & File Functions (Các hàm xử lý đọc viết tập tin) The Autolisp Advanced (Autolisp cao cấp) 5.1 Loop Functions (Các hàm lặp) 5.2 Conditional Statements (Các thông báo điều kiện) 5.3 Entity DXF Group Code Descriptions For (Mơ tả mã nhóm DXF số đối tượng) The Autolisp Extreme (Autolisp siêu cấp) Dialog Control Language (Ngôn ngữ điều khiển hộp thoại) 7.1 Getting Started (Mở đầu) 7.2 Overview (Tổng quan) 7.3 The basic DCL model (Mẫu tập tin DCL bản) 7.4 Rows and Columns (Các hàng cột) 7.5 Dialog Control Language–Controls (Các nút điều khiển DCL) 7.6 Dialog Control Language – Image (Hình ảnh DCL) 7.7 Dialog Control Language – Action ( Các hành động DCL) 7.8 Dialog Control Language - Set and Mode Tile (Đặt tạo chức cho phần tử DCL) 7.9 Dialog Control Language – List (Danh sách DCL) 7.10 Dialog Control Language–SaveVars(Lưu biến DCL) 7.11 Dialog Control Language - Parts (Phần thực hành DCL) Trang Trang Trang Trang Trang Trang Trang 14 Trang 15 Trang 18 Trang 25 Trang 31 Trang 42 Trang 44 Trang 50 Trang 58 Trang 68 Trang 73 Trang 80 Trang 86 Trang 91 Trang 92 Trang 95 Trang 102 Trang 152 Trang 155 Trang 156 Trang 161 Trang 164 Trang 167 Trang 172 Trang 177 Trang 180 Trang 182 Trang 184 Trang 187 Trang 196 The Ultimate AutoLisp Tutorial Tài liệu tự học Autolisp tốt What the hell is a car of a cdr? Car crd quái vậy? Beginner - You know how to spell AutoLisp and that is about it From opening notepad, writing your first program, saving your first program (this is an important step), to executing your first program and checking the variables inside AutoCAD I will cover it all Step by step Sơ cấp: - Ở bạn biết cấu trúc Autolisp điều Hãy mở phần mềm Notepad viết chương trình bạn, lưu lại chương trình (đây bước quan trọng), chạy chương trình dầu tiên kiểm soát thay đổi bên AutoCad Ta thực tất điều bước bước Intermediate - Enough of the notepad crap How I actually something? What the hell is a car of a cdr? Trung cấp:- Mọi thứ nhố nhăng với notepad đủ Làm để ta thực làm vơí Autolisp? Car cdr qi quỉ vậy? Advanced - Enough clowning around Get serious Let's something Cao cấp: - Đùa đủ Ta phải nghiêm chỉnh thơi Nào thử làm với Autolisp Extreme - Need more specifics? The hands on approach for the know it all Work in progress Siêu cấp: - Phải thêm chút đặc biệt chứ? Hãy tiếp tục tiến tới để hiểu hịan tịan Cơng việc tiến triển Dialog Control Language - Almost Completed! New! Ngôn ngữ điều khiển hộp thoại: - Hấu hết thứ hồn tất! Khối thiệt! Support this Site! Back to AutoLisp Home Home All questions/complaints/suggestions should be sent to JefferyPSanders.com Last Updated February 26th, 2005 Copyright 2002-2007 JefferyPSanders.com All rights reserved The AutoLisp Beginner Autolisp sơ cấp Welcome to the world of AutoLisp Soon you will know what the hell a car of a cdr is Xin chào bạn mò mẫm với giới Autolisp Bạn biết car cdr khỉ mốc mà Let's get to it But how? Ta bắt đầu Nhưng bắt đấu đây? When I say "type this at the command line" I will put the actual key strokes in red except for the enter key This will mean that you should type the red letters in at the Command Prompt inside AutoCAD as if you were typing the command "Line" To clarify, If I say "type this at the command line: Line and press the enter key, you would type the word "Line" at the command prompt inside of AutoCAD and press the enter key afterwards Got it? No? Oh, never mind Just keep reading I won't leave you behind Khi tơi nói “đánh máy điều vào dịng lệnh” tơi đặt nút bàn phím hoạt động theo ký tự màu đỏ ngoại trừ phím Enter Điều có nghĩa bạn gõ chữ màu đỏ vào dòng nhắc lệnh AutoCad chẳng hạn bạn gõ lệnh “ Line” Để rõ ràng hơn, tơi nói “ gõ điều vào dịng lệnh : Line nhấn phím Enter, bạn gõ từ “Line” vào dịng nhắc lệnh AutoCad sau nhấn tiếp phím Enter Hiểu chưa nào? Chưa hả? Ồ khơng sao, cần bạn tiếp tục đọc Tôi không bỏ rơi bạn đâu mà sợ The first thing you should know about AutoLisp: Điều bạn cần biết Autolisp: AutoLisp always has as many opens "(" as it does closes ")" Autolisp sử dụng nhiều dấu ngoặc mở “(“ ngoặc đóng “)” ;(Trong chương trình số lượng ;ngoặc mở sử dụng ln số lượng ngoặc đóng, khơng chương trình bị lỗi “bad argument“ ;không chạy Every AutoLisp program should look similar to this: Mỗi chương trình Autolisp ln có dạng tương tự chương trình (defun myProg() ;;; Hàm defun xác ••nh tên ch••ng trình myProg khơng có ;bi•n s• Bi•n s• n•u có s• •••c ••t ngo•c ••n (princ "Jeff") ;;; Hàm princ hi•n th• ký t• Jeff hình (princ) ;;; Hàm princ khơng hi•n th• thêm k•t thúc vi•c th•c ;hi•n ch••ng trình ) ;;; Ký t• b•t bu•c có bi•u th• k•t thúc c•a ch••ng trình You can execute AutoLisp at the Command Prompt inside AutoCAD This is where we will start Bạn thực chương trình Autolisp dịng nhắc lệnh AutoCad Và ta bắt đầu AutoLisp is a language that returns a value after executing Every function that executes will return or echo it's answer Let's test this Open AutoCAD and type this at the command line: (+ 2) and press the enter key (The + function adds numbers together) Look at the command line You should see something that looks like this: Autolisp ngơn ngữ mà trả giá trị sau thực lệnh Mỗi hàm thực trả kết không trả Ta kiểm chứng điều Hãy mở AutoCad gõ vào dòng lệnh điều này: (+ 2) nhấn Enter (Ký tự “+” biểu thị hàm cộng số với nhau) Hãy xem dòng lệnh Bạn thấy biểu thị giống sau: Notice the below the line you typed and the Command Prompt? AutoLisp returned the value of the function you typed in Try it again This time change the to and the to As in (+ 5) What did it return? AutoLisp ALWAYS returns the answer Bạn có ý tới số bên dòng mà bạn gõ vào dòng nhắc lệnh không? Autolisp trả giá trị hàm mà bạn nhập Hãy thử lần Lần ta đôỉ thành thành Và (+ 5) Nó trả kết nhỉ? Vậy Autolisp LN LN trả kết việc thực Variables Các biến số What the hell is a variable? Variables are names or placeholders if you will, for values Remember algebra? (Your going to wish you would have paid attention to Mrs Johnson instead of that cheerleader on the first row with the blond hair and the big well nevermind.) X=1 Y=2 Look familiar? X and Y are variables They could mean anything If you need to store data, such as a string or integer, you will need to assign a variable name to the data The way to this is to use the setq function Ex (setq a 1) This set's the variable a to the value Anytime you use the variable a in your program, it will actually use the value If you typed (+ a 2) and pressed enter, AutoLisp would return Biến số khỉ khơ vậy? Các biến số tên hay ký tự thay bạn muốn mà có giá trị Bạn cịn nhớ chút đại số học không? (Này bạn muốn ý tới Quý Mợ Jonhson , bạn thay từ Cheerleader dịng từ Tóc vàng …… bự… Vậy đừng có lo lắng nhé) X=1 Y=2 Trơng có quen khơng? X Y biến số Chúng có nghĩa điều Nếu bạn muốn lưu trữ liệu, chẳng hạn chuối hay số, bạn phải gán tên biến cho liệu Cách thực điều sử dụng hàm setq Ví dụ : (setq a 1) Hàm đặt biến a giá trị Mỗi lần bạn sử dụng biến a chương trình bạn, sử dụng giá trị thực Nếu bạn nhập (+ a 1) nhấn Enter Autolisp trả giá trị You can use any variable name you want (Practically) Upper case and lower case does not matter I would suggest you not use any names that AutoCAD has in use How you know which ones are being used by AutoCAD? Good question Jeff The simplest method to find out if AutoCAD is using a name is to type in the name at the Command Prompt inside of AutoCAD and press the enter key If nothing happens, use it Bạn sử dụng tên biến mà bạn khoái Thật Chữ hoa hay chữ thường Tôi muốn lưu ý bạn đừng sử dụng tên mà AutoCad sử dụng Làm để biết tên AutoCad sử dụng hay chưa? Ái chà, câu hỏi ác Phương pháp đơn giản để biết bạn việc gõ tên vào dịng nhắc lệnh AutoCAd nhấn Enter Nếu chả có xảy tên dùng tốt If you were to write a program named Line.lsp and load the program, AutoCAD's built in LINE command will seem to be replaced When you type Line you will run your program instead of the Line command You will get the built in functions back next time you open a new drawing or you could use a period in front of the command to make it execute an AutoCAD built in function Ex .LINE would execute the AutoCAD built in function instead of your program I not suggest toying with this Nếu bạn viết chương trình mang tên Line.lsp tải nó, lệnh LINE nội trú AutoCad bị thay Và bạn gõ Line, bạn chạy chương trình Line bạn khơng phải thực lệnh LINE AutoCad Bạn có lệnh LIND nội trú AutoCad bạn mở vẽ lần bạn phải sử dụng dấu “.” phía trước lệnh để bắt chạy lệnh nội trú AutoCAD Ví dụ: lệnh Line thực lệnh LINE nội trú AutoCad khơng phải chạy chương trình Line bạn viết Tơi chẳng muốn bạn đùa với trị đâu Name your variables and programs something unique AutoCAD does not have any "built in" functions that are a single character So a through z are fair game ( Unless they are assigned in the programs that automatically load during startup such as the ACAD.lsp, ACADDOC.lsp, and ACAD.PGP files Better check your variable names at the command line as discussed earlier Also, the letter T is used by autolisp as a TRUE symbol.) Hãy đặt tên biến chương trình bạn ký tự đơn AutoCad chẳng có lệnh nội trú mà có tên có ký tự đơn Từ a đến Z chơi tuốt (Trừ phi chúng gán chương trình chạy tự động khởi động hẳng hạn ACAD.lsp, ACADDOC.lisp ACAD.PGP Tốt kiểm tra tên biến bạn dòng nhắc lệnh AutoCAD tơi bật mí cho bạn phần trước cho ăn trước sử dụng Cũng vậy, chữ “ T” Autolisp sử dụng dấu hiệu giá trị TRUE cho biến logic) [ Thanks Ethan! ] [Ơn chúa lòng lành!] Some safe examples of variable names are: Một số mẫu an toàn (xài tốt) cho tên biến sau: (setq a 1) (setq b1 3) (setq aa1 4) (setq jeffsVarForHisProgram 1) (setq thisVarA 2) Some bad examples are: Vài tên dở (không xài được) sau: (setq line 1) (setq acad 4) (setq ltscale 7) (setq car 12) (setq cdr 400) Again with the car and cdr stuff? What is it man? Lại anh quậy car cdr ư? Nó thằng vậy? I suggest you use variable names that are somewhat descriptive If you had to name a variable for a string that contains people's names then I would use something like this (setq strName "Jeff") Tôi mách nước cho bạn sử dụng tên biến mà mơ tả chút biến Nếu bạn phải đặt tên cho biến dạng chuỗi có chứa tên người, bạn nên sử dụng sau : (setq strName “Jeff”) If you have a variable name for a integer that holds the data for a value that represents a title block selection then I would use something like this (setq intTBSelection 3) Còn bạn phải đặt tên biến cho số mà mang liệu giá trị đại diện cho lựa chọn title block , bạn nên sử dụng sau: (setq intTBSelection 3) ;(À mà bạn có quên tên biến phải ký tự liền nhau, khơng có khoảng trắng chúng nhé) A couple of important last minute things: Vài điều quan trọng cuối cùng: While inside AutoCAD you can check your variables to see what they are set to This is very handy when debugging a program Type (setq aa1 454) and press enter To check the value of the variable we just declared, simply type !aa1 at the command prompt Go ahead Try it AutoLisp echo's the value to the command line Using an exclamation point in front of the variable prints the value of the variable to the command line Trong bạn cịn AutoCad bạn kiểm tra biến bạn để xem chúng đặt Đây điều cần kiểm duyệt bước chương trình Hãy gõ (setq aa1 454) nhấn Enter Để kiểm tra giá trị biến mà ta vừa đưa ra, đơn giản gõ !aa1 vào dòng nhắc lệnh Nào ta thử Autolisp lặp lại giá trị biến dịng lệnh Ln nhớ phải sử dụng dấu chấm than “!” phía trước biểu thị tên biến dòng lệnh New! Have you ever seen an AutoLisp program crash? Ever try to debug it? It looks like a bunch of garbled mess How in the heck can you cipher through all of this: Mới đây! Bạn thấy chương trình Autolisp gặp nạn chưa? Bạn cố kiểm duyệt bước chưa? Nó trơng giống mớ bịng bong thơng báo Bằng cách mà bạn lẫn mò mã cho hết chúng? It's not as tough as it looks You only have to worry about the first or second lines returned In this case the culprit that crashed the program is (+ CANT 1) Let's look at the variable CANT At the command prompt type !CANT It will return nil You can't add nil to Why is CANT set to nil? Let's look at the next line (SETQ CNT(+ CANT 1)) This looks like a counter of some type I'll bet the variable name CANT should have been CNT A typo! At this point I would open the program with NotePad and search for the text string CANT If this is the only place it shows up then my first explanation would be correct I would retype the CANT variable to be CNT Save the program and try it again Ồ, khơng rắc rối bạn tưởng đâu Bạn cần ý tới kết dòng thứ thứ hai mà Trong trường hợp này, thủ phạm gây họa cho chương trình (+ CANT 1) Ta xem biến CANT Tại dòng nhắc lệnh, ta nhập !CANT Enter Nó trả kết nil Bạn khơng thể cộng nil với Vậy biến CANT lại bị đặt thành nil? Ta xử dòng (SETQ CNT (+ CANT 1)) Điều trông giống việc đếm Vì tơi đốn chừng tên biến CANT phải CNT Tại đánh máy chắc!.Bây giớ tơi mở Notepad tìm kiếm chuỗi lý tự CANT Nếu có chỗ chứa chuỗi lời giải thích ban đầu Tôi sửa lại tên biến CANT thành CNT Lưu lại chương trình chạy thử lại Okay, enough for variables for now Let's move on Ô kê xa lem, xem xem giống … Autolisp chưa? Vậy đủ với biến Tiếp tục ; (Một lần nhắc ;lại tên biến không chứa khoảng trắng, khơng chẳng giống Autolisp đâu, giống Oẳn Tà ;Roằn) Functions Các hàm ;(Hàm tơi gọi bậy, cịn tùy bạn gọi nhé, Tí hay Tèo Function thơi) Let's take it a step further and create our very own function Every defined function begins with the declaration defun Mị thêm tí ta tạo chương trình riêng Mỗi chương trình xác định bắt đầu tuyên bố Autolisp defun ;(Nhớ phải tuyên bố sau mở ngoặc nhé, không Autolisp bảo ;láo, không thừa nhận đâu Ở tơi gọi function chương trình nghe cho hồnh tráng ;function thơi) Ex (defun myProg() or (defun C:myProg() Ví dụ: (defun myProg() hay (defun C:myProg() ;;; Chỗ chưa đóng ngoặc ta cịn phải tun bố nội hàm (internal function) chương trình ta , xong đóng thể The difference between using the C: and not using the C: will be explained later For now let's learn another AutoLisp function to use in our first program The function princ simply prints to the command line Ex (princ "Jeff") would print Jeff on the command line Alrighty then, let's type this at the command prompt: Sự khác việc sử dụng không sử dụng ký tự “ c: “ giải thích sau Cịn ta học hàm Autolisp khác để sử dụng chương trình ta Hàm princ đơn giản in dòng lệnh Ví dụ; (princ “Jeff”) in ký tự Jeff dịng lệnh Mọi hồn hảo rồi, ta nhập điều vào dòng nhắc lệnh Enter (defun myProg()(princ "Jeff")) and press enter ;(Lúc ta phải nhớ đóng ngoặc lại kết thúc chương trình hết trò cần tuyên bố) You should see something that looks like this: Bạn thấy vài thứ giống sau: Now type (myprog) at the command prompt and press the enter key You should see something that looks like this: Bây giờ, nhập (myProg) vào dòng nhắc lệnh nhấn Enter Bạn thấy sau: The program executed and printed "Jeff" on the command line Then the program echoed the last statement to the command line AutoLisp always returns the answer right? That is why you ended up with Jeff"Jeff" on the command line The way to get rid of the echo is to use a princ statement without any parameters as the last statement in your program Ex (princ) Chương trình thực in “Jeff” lên dịng lệnh Sau chương trình lặp lại thơng báo cuối dịng lệnh Autolisp ln trả kết quả, khơng? Đó lý bạn kết thúc với Jeff”Jeff” dòng lệnh Cách để loại bỏ lặp lại sử dụng thơng báo princ khơng có thơng số thơng báo cuối chương trình bạn Ví dụ: (princ) Let's rewrite the program using the (princ) function to stop the echo Type this is in at the command prompt: Hãy viết lại chương trình sử dụng hàm (princ) để dừng lặp lại Nhập điều sau vào dòng nhắc lệnh: (defun myProg()(princ "Jeff")(princ)) Then type (myprog) and press enter What happened? No echo Cool Rồi nhập (myProg) nhấn Enter Điều xảy thế? Khơng có lặp lại Chà khối ghê Let's back track and explain the C: we mentioned earlier The C: tells AutoCAD that you want this program to be executed at the Command Prompt like a built in function Let's redo our program Type this at the command line: Ta quay lại giải thích ký tự “ C: “ đề cập Ký tự “c:” nói với AutoCad bạn muốn chương trình thực dịng nhắc lệnh giống hàm nội trú AutoCad Ta