Ai chỉ giáo mình cách tạo listcad được không

  • Khởi xướng trongnguyen
  • Ngày gửi
T

trongnguyen

Guest
:( mình muốn có 1 listcad riêng mình, mong các bạn giúp mình tạo 1 cái xài ná x(.Thank's nhiều nhiều !!!
 
N

naut

Guest
Bạn muốn tạo một file cho riêng mình thì không còn cách nào là phải học thôi. Mình không biết về lisp lắm nên không chỉ bạn được.

Bạn có thể : -Ra hàng sách, mua sách về Lisp để học
- Đọc trong Help hoặc Tutorial của autocad

Bạn muốn lập trình thì nên trang bị cho mình một số kiến thức về tin học như : cơ sở dữ liệu, thuật toán...

good luck
 

TuvanXD246

Cựu Thành viên BQL Diễn đàn
Tham gia
4/3/08
Bài viết
751
Điểm thành tích
43
Website
giaxaydung.vn
Tóm lược về autolisp

TỔNG QUAN VỀ AUTOLISP
NGÔN NGỮ LẬP TRÌNH TRONG TỰ ĐỘNG HOÁ THIẾT KẾ


1. Giới thiệu về Autolisp
1.1. Sơ lược về LISP
LISP – List Processing là một chuẩn ngôn ngữ lập trình được John McCarthy phát triển vào năm 1956 trong dự án nghiên cứu AI (Artificial Intelligence). Phiên bản đầu tiên LISP 1.5 được giới thiệu vào đầu thập niên 60 và phát triển với nhiều biến thể như: BBNLisp, Interlisp, MacLisp, NIL (New Implementation of Lisp), Franz Lisp…Vào thập niên 70 và đầu những năm 80 đã có máy tính chuyên dụng như Lisp Machines được thiết riêng để chạy những chương trình LISP. Đến năm 1981 để chuẩn hóa LISP các nhà lập trình đã tập hợp và chuẩn hóa thành chuẩn Common LISP. Năm 1984 Golden Common LISP trở thành chuẩn chính thức cho máy tính IBM và sau này phát triển thành XLISP- tiền thân của Autolisp ngày nay.

1.2. Lịch sử phát triển của Autolisp
AutoLisp được phát triển từ XLISP là ngôn ngữ lập trình trên môi trường AutoCAD và được công bố phiên bản đầu tiên 2.18 vào tháng 01 năm 1986. Cùng với sự phát triển của AutoCAD các phiên bản của Autolisp ngày càng được hoàn thiện với nhiều tính năng mới, có thể kể đến một vài phiên bản tiêu biểu như sau:
- Chính thức giới thiệu phiên bản 2.5 tích hợp vào AutoCAD R7 với một số tính tăng cơ bản về các tương tác với đối tượng trong bản vẽ
- Phiên bản 2.6 tích hợp vào AutoCAD R7 với chức năng 3D và một số hàm mới getcorner, getkword, và initget.
- Phiên bản tích hợp vào AutoCAD R12 giới thiệu một số hàm GUI (Graphic User Interface) và ngôn ngữ điều khiển hộp thoại DCL (Dialog Control Language).
- Phiên bản Visual LISP™ giới thiệu cùng với AutoCAD R14 là một môi trường phát triển Autolisp độc lập, trực quan với sự hỗ trợ của các công cụ gỡ rối.
- Visual LISP™ được chính thức tích hợp vào AutoCAD 2000 và từ đó đến nay được bổ sung nhiều tích năng mới.

1.3. Ưu và nhược điểm của Autolisp
1.3.1. Ưu điểm
Làm việc rất tốt và dễ dàng với điểm và các yếu tố hình học.
Rất mềm dẻo, không khắt khe.
Không cần trình dịch - lập trình và thực hiện lệnh.
Chạy được trên tất các các hệ điều hành với cùng 1 file Lisp.
Quản lý đối tượng với List - một kiểu dữ liệu với nhiều ưu điểm vượt trội trong quản lý tọa độ điểm.
Mã nguồn mở và cộng đồng phát triển Autolisp rất rộng lớn.

1.3.2 Nhược điểm
Hình thức bên ngoài không hấp dẫn.
Cú pháp khó hiểu.
Hạn chế, không có trình biên dịch.
Ngôn ngữ trung gian nên thực thi chậm.
Hầu như không thể tương tác với hệ thống.

2. Những khó khăn khi tiếp cận với Autolisp
Có thể khẳng định chắc chắn một điều là Autolisp là một ngôn ngữ rất dễ tiếp cận so với một số ngôn ngữ lập trình khác vì nó là ngôn ngữ lập trình theo kịch bản (Script). Tuy nhiên, để tiếp cận được với Autolisp yêu cầu người học phải có kiến thức nền về lập trình và nắm vững về AutoCAD, đồng thời phải có kiến thức nhất định về hình học. Chương trình Autolisp là một tổ hợp những kịch bản được định trước nằm điều khiển AutoCAD thực thi theo suy nghĩ của người thiết kế.

Đa số mọi người muốn học Autolisp là để giải quyết những bài toán trong lĩnh vực chuyên môn của mình. Để tiếp cận và ứng dụng tốt Autolisp trong công việc yêu cầu người lập trình phải có sự liên hệ với nhu cầu công việc thực tế, điều này phụ thuộc rất lớn vào sở trường của mỗi người. Bạn đang thực hiện một vài thao tác để hoàn thiện bản vẽ của mình và bạn chợt nhận ra nó cứ lặp lại liên tục. Một ý tưởng nảy ra là bạn cần thực hiện một đoạn chương trình Autolisp để tự động thực hiện các thao tác này và chương trình Autolisp được hoàn thành. Điều này có thể giải thích được vì sao một số người lại cảm thấy khó khăn khi tiếp cận với Autolisp mặt dù khả năng tư duy về lập trình của họ khá tốt.

3. Một số khái niệm và cú pháp lập trình
3.1. Giới thiệu
Một chương trình Autolisp luôn bắt đầu bằng dấu “(“ và kết thúc bằng dấu “)”. Một chương trình Autolisp đơn giản như sau:
Code: (defun myProg()
(princ "Tecco 533")
(princ)
)
Autolisp là ngôn ngữ trả về giá trị sau khi thực thi lệnh. Bạn có thể kiểm tra điều này bằng cách mở AutoCAD và gỏ dòng lệnh sau: (+ 1 2)
Kết quả trả về là 3.

3.2. Biến
Để gán giá trị trong Autolisp bạn cần sử dụng từ khóa setq với cú pháp: (setq a 1)
Để kiểm tra giá trị của biến dùng từ khóa ! với cú pháp: !a
Giống một số ngôn ngữ lập trình khác Autolisp cũng qui định cách đặt tên biến như sau:
- Không dùng các ký tự đặc biệt: *, &, ^, $...
- Không dùng các từ khóa của AutoCAD: LINE, PLINE, MIRROR…
- Tên biến không phân biệt chữ hoa và chữ thường

3.3. Hàm
Autolisp qui định từ khóa defun để định nghĩa hàm thực thi với cú pháp:
Code: (defun myProg()
(princ "Tecco 533")
(princ)
)
Ngoài ra Autolisp còn sử dụng từ khóa C: sẽ khai báo với AutoCAD là chương trình sẽ thực thi bằng lệnh tại dấu nhắc lệnh Command với cú pháp:
Code: (defun C:myProg()
(princ "Tecco 533")
(princ)
)
Với hàm đầu tiên để thực thi bạn phải gõ Command: (myProg) tại dòng nhắc lệnh còn với hàm thứ hai bạn chỉ cần gỏ Command: myProg giống như một lệnh trong AutoCAD.

3.4. Kiểu dữ liệu
Một số kiểu dữ liệu thông dụng trong Autolisp như sau:
String: Chuổi gồm các ký tự và số
Integers: Số tự nhiên
Real: Số thực
List: Kiểu dữ liệu đặc trưng và cũng là thế mạnh của LISP so với các ngôn ngữ lập trình khác.
Associated List: Đây là kiểu dữ liệu định nghĩa các đối tượng trong AutoCAD.
Dựa trên các kiểu dữ liệu trên Autolisp phân loại các nhóm hàm dựng sẵn như sau:
- Hàm xử lý chuổi: substr, strlen, strcase, strcat
- Hàm xử lý số: abs, atof, atoi, fix, float, itoa
- Hàm xử lý List: car, cdr, cadr, caddr, caar, cddr, foreach, list, cons, nth
- Hàm chuyển đổi: fix, float, itoa, atoi, atof, rtos, angtos
- Hàm toán học: +, -, *, /, +1, -1, cos, atan, sin, sqrt, expt
Hàm lựa chọn thực thể: entsel, ssget
Hàm xử lý tập chọn: ssadd, ssdel, sslength, ssname
Hàm xử lý đối tượng: entget, entlast, entnext, entdel, entmod, entupd
Hàm xử lý file: pen, close, read-line, write-line

3.5. Bảng mã DXF
AutoCAD định nghĩa một đối tượng trên bản vẽ theo kiểu dữ liệu Associated List như sau:
((-1 . <Entity name: 30a0510>) (0 . "LINE") (5 . "22") (100 . "AcDbEntity") (67 . 0) (8 . "0") (62 . 4) (100 . "AcDbLine") (10 3.39219 5.3243 0.0) (11 8.72878 3.10374 0.0) (210 0.0 0.0 1.0))
Đây là một tập hợp các cặp đôi (mã số . dữ liệu) được qui định trước. Tùy theo đối tượng và thuộc tính đối tượng mà Associated List sẽ có những tham số khác nhau. Các mã số này tuân theo một qui định trong bảng định nghĩa cho trước gọi là bảng mã DXF. Để có thể đều khiển được các đối tượng trong bản vẽ AutoCAD yêu cầu người lập trình phải hiểu rất rõ về bảng mã DXF này.

3.6. Dữ liệu mở rộng
AutoCAD dùng các mã số từ 1000 đến 1042 để biểu diễn các dữ liệu mở rộng. Với dữ liệu mở rộng người lập trình có thể đánh dấu đối tượng trên AutoCAD để thực hiện các thao tác tiếp theo. Một ứng dụng điển hình trên AutoCAD sử dụng dữ liệu mở rộng này là chương trình Nova-TDN của Công ty tin học Hài Hòa. Thông qua dữ liệu mở rộng chương trình có thể phân biệt được đâu là tim tuyến, đâu là trắc dọc, cắt ngang…Toàn bộ dữ liệu mở rộng được định nghĩa trong Associated List với mã số -3.
Ví dụ:
Code: ((-3 ("TECCO533" (1000 . "Tim tuyen"))))

3.7. Điều kiện
Cũng giống với một số ngôn ngữ lập trình khác Autolisp hỗ trợ người lập trình 02 cú pháp điều kiện là điều kiện xác định If và điều kiện lựa chọn Cond với cú pháp như sau:
Code: (if <điều kiện>
<thực thi khi điều kiện đúng>
<thực thi khi điều kiện sau>
)
(cond
(<th1> <thực thi th1>)
(<th2> <thực thi th2>)
...
(<thN> <thực thi thN>)
)

3.8. Vòng lặp
Autolisp không hỗ trợ vòng lặp For mà chỉ hỗ trợ 02 vòng lặp Repeat và While với cú pháp như sau:
Code: (while < điều kiện >
<thực thi>
)
(repeat <số lần lặp>
<thực thi>
)

3.9. Ngôn ngữ điều khiển hộp thoại DCL
Autolisp cung cấp cho người lập trình một ngôn ngữ điều khiển hộp thoại DCL để giải quyết về giao diện tương tác với người sử dụng. Thông qua ngôn ngữ DCL người lập trình có thể thiết kế các Form nhập liệu trực quan giúp cho chương trình trở nên thân thiện hơn.

3.10. Hướng đối tượng
Bản thân Autolisp không phải là ngôn ngữ lập trình hướng đối tượng, nhưng cùng với xu hướng phát triển của lập trình hướng đối tượng bắt đầu từ Visual LISP™ cho AutoCAD R14 hãng AutoDesk đã tích hợp vào AutoCAD công nghệ ActiveX với kỹ thuật lập trình hướng đối tượng VLA (Visual LISP ActiveX). Thông qua công nghệ ActiveX người lập trình có thể diểu khiển tất các các đối tượng trên bản vẽ qua các thuộc tính và phương thức của nó. Điều đặc biệt là người lập trình có thể can thiệp đến một số chức năng như in ấn, định dạng hệ thống AutoCAD mà trước đây Autolisp không can thiệp được. Các chương trình sử dụng công nghệ ActiveX phải được dịch qua chuẩn ARX mới thực thi được trên AutoCAD.

4. Kết luận
Autolisp là một ngôn ngữ lập trình đơn giản, dễ tiếp cận và hiệu quả công việc nó đem lại là đáng kể. Hãy bắt đầu Autolisp với những công việc thường ngày. Những đoạn chương trình Autolisp đơn nhưng có thể giảm được thời gian đáng kể trong việc hoàn thiện các bản vẽ. Một chương trình Autolisp thành công không phải là chương trình có qui mô lớn đến vài chục ngàn dòng lệnh mà đó là chương hiệu quả, giải quyết được các yêu cầu của người thiết kế và tiết kiệm được thời gian thực hiện công việc.

5. Giới thiệu một số địa chỉ tham khảo
5.1. Website hướng dẫn học Autolisp
http://www.jefferypsanders.com/autolisp.html
Bạn đọc có thể tham khảo các tài liệu giới thiệu chi tiết về các hàm dựng sẵn trong Autolisp cũng như các tài liệu giới thiệu về bảng DXF tại đây. Ngoài ra tại website này bạn có thể download miễn phí nhiều chương trình Autolisp rất hay.
http://www.afralisp.com/lispa/lisp.htm
Website hướng dẫn học Autolisp khá chi tiết và đầy đủ. Bạn có thể tham khảo bất kỳ nội dung gì liên quan đến Autolisp tại đây

5.2. Download các chương trình Autolisp
http://xarch.tu-graz.ac.at/autocad/lisp/
http://home.pacifier.com/~nemi/
http://www.autolisppage.com
http://www.caddigest.com
http://www.autolisp.co.uk/
http://www.simplecad.com

Nguồn bài viết của: http://diendan.uct2.edu.vn
 

KTS_DUY

Thành viên năng động
Tham gia
12/5/08
Bài viết
79
Điểm thành tích
6
Tuổi
45
:( mình muốn có 1 listcad riêng mình, mong các bạn giúp mình tạo 1 cái xài ná x(.Thank's nhiều nhiều !!!

Nếu bạn muốn có lisp thì ít ra cũng phải có khung sơ lược thế này.
-Dữ liệu nhập vào.
-Dữ liệu xuất ra.
Nghĩa là bạn có gì và cần gì thì mới bắt tay viết được.
 

Tải bộ cài phần mềm Dự toán GXD, Đấu thầu GXD, Thanh Quyết toán GXD, Quản lý chất lượng GXD. Dành cho người mua bản quyền
Kích để xem khóa học Dự toán công trình
Kích để xem khóa học Dự toán công trình
Phần mềm quản lý chất lượng công trình QLCL GXD
Tìm hiểu khóa học Thanh Quyết toán GXD

Các bài viết mới

Top