DIỄN ĐÀN KỸ SƯ TÀU THỦY VIỆT NAM-VIETNAMESE SHIPBUILDING AND ENGINEERING FORUM
Hiện tại bạn đang là khách viếng thăm của Diễn Đàn Kỹ Sư Tàu Thủy Việt Nam – Nơi Hội Tụ Tinh Hoa Đóng Tàu Việt Nam. Nếu chưa có tài khoản, xin mời bạn Click chuột vào nút Đăng Ký bên dưới hoặc Click vào nút Đăng Nhập nếu bạn đã là thành viên chính thức để hưởng trọn quyền lợi của Diễn Đàn dành cho bạn. Mọi thắc mắc liên hệ với Ban Quản Trị qua địa chỉ: nhatlamntu@gmail.com
Cảm ơn bạn đã ghé thăm Diễn Đàn của chúng tôi!
Lưu ý: Bạn chỉ được phép sử dụng Tiếng Việt có dấu hoặc Tiếng Anh trên Diễn Đàn và chỉ có thành viên mới được quyền viết bài, nhận xét trên Diễn Đàn!
Chúc bạn thu được nhiều kiến thức từ việc tham gia Diễn Đàn của chúng ta!

DIỄN ĐÀN KỸ SƯ TÀU THỦY VIỆT NAM-VIETNAMESE SHIPBUILDING AND ENGINEERING FORUM


 
Trang ChínhTrang Chính  Home 1Home 1  CalendarCalendar  GalleryGallery  Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng Nhập  

Ngôn ngữ được sử dụng trên Diễn Đàn là Tiếng Việt có dấu hoặc Tiếng Anh. Tất cả các bài viết không đúng quy định sẽ bị Xóa khỏi Diễn Đàn Kỹ Sư Tàu Thủy Việt Nam trong vòng 24h!

Không đăng tải các nội dung đồi trụy, chống phá nhà nước Cộng Hòa Xã Hội Chủ Nghĩa Việt Nam

Diễn Đàn Kỹ Sư Tàu Thủy Việt Nam là nơi giao lưu, học hổi, trao đổi kinh nghiệm, kiến thức chuyên ngành tàu thủy. Chúng tôi nghiêm cấm các hoạt động tuyên truyền, quảng bá trái phép việc sử dụng phần mềm không bản quyền.

Mọi rắc rối liên quan đến việc quảng bá, cung cấp các phần mềm không bản quyền trên diễn đàn chúng tôi hoàn toàn không chịu trách nhiệm. Thân !
Mọi thắc mắc, góp ý, đóng góp cho Diễn Đàn mời các thành viên gửi về email: nhatlamntu@gmail.com Thanks !
Hiện tại BQT đã tích hợp thêm chức năng upload file trực tiếp lên Diễn Đàn , mọi người cùng nhau chia sẻ kiến thức với cộng đồng !

BQT Diễn Đàn Kỹ Sư Tàu Thủy Việt Nam không hoan nghênh các bài viết, quảng cáo không liên quan đến ngành công nghiệp tàu thủy Việt Nam.
Tất cả các bài viết không đúng quy định sẽ bị xóa, ngay khi BQT phát hiện được. !

Nhằm nâng cao chất lượng bài viết và chống spam, hai bài viết liên tiếp của 1 thành viên sẽ cách nhau 5 phút (300 giây)

Chúc mọi người có 1 ngày vui vẻ và thu được nhiều kiến thức khi tham gian vào Diễn Đàn Kỹ Sư Tàu Thủy Việt Nam !

Share | 
 

 TỔNG QUAN VỀ AUTOLISP

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
DSC-Marine Co.,LTD
Quản Trị Cao Cấp
Quản Trị Cao Cấp
avatar

Nam
Tổng số bài gửi : 960
Age : 31
Đến từ:(NTU,...) : NTU
Nghề nghiệp: (Student,..) : Ship's Designer
Môn thể thao yêu thích: (football,..) : Sports
Điểm năng động tích lũy : 1406
Registration date : 26/12/2007

Bài gửiTiêu đề: TỔNG QUAN VỀ AUTOLISP   Wed 9 Apr 2008 - 2:02



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 . ) (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>


)
(cond
( )
( )
...
( )
)

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 >

)
(repeat

)

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
:-o]u: :iyti: :-o]u:
_________________
HÃY NÓI: KHÔNG GÌ LÀ KHÔNG THỂ!

_________________
DSC-Marine Co.,LTD.
Design, Shipbuilder and Marine Commercial Company Limited.
Add:  No.19/18 Vo Van Ngan Street, Linh Chieu Ward, Thu Duc District, Ho Chi Minh City, Viet Nam.
Contacts: (+84).977 310 828 Skype: DSC-Marine or nhatlamntu Email: dsc.marine.design@gmail.com.
OUR SERVICES:
1.Boatdesign.vn: Yacht, ferry, catamaran, tug,fishing..Design.
2.Shipbuilder: Aluminum, Steel, Wooden boat and Scale down models.
3.Marine Commercial: Ship broker, Re-seller genius software.
Về Đầu Trang Go down
http://www.votauthuy.org
Baphuoc_12
Thành Viên Ưu Tiên
Thành Viên Ưu Tiên
avatar

Nam
Tổng số bài gửi : 80
Age : 29
Đến từ:(NTU,...) : NTU
Nghề nghiệp: (Student,..) : Student
Môn thể thao yêu thích: (football,..) : football, volleyball
Điểm năng động tích lũy : 145
Registration date : 13/09/2009

Bài gửiTiêu đề: Re: TỔNG QUAN VỀ AUTOLISP   Mon 19 Oct 2009 - 10:31

anh Lâm ơi anh cho em hỏi lập trình autolist này nó mạnh về lĩnh vực gì trong tính toàn thiết kế tàu vậy. Mà em thấy nó cũng có vòng lặp, điều kiện, biến, hàm... cũng giống pascal, vậy việc thiết lập, lập trình nó có tương tự như ngôn ngữ lập trình pascal không anh
Về Đầu Trang Go down
http://google.com
PETER PAN
Thành Viên Ưu Tiên
Thành Viên Ưu Tiên
avatar

Nam
Tổng số bài gửi : 83
Age : 32
Đến từ:(NTU,...) : 6TT2-NA&ME-NTU
Nghề nghiệp: (Student,..) : Student
Môn thể thao yêu thích: (football,..) : võ thuật
Điểm năng động tích lũy : 47
Registration date : 03/08/2008

Bài gửiTiêu đề: Re: TỔNG QUAN VỀ AUTOLISP   Sat 21 Nov 2009 - 10:23

sử dụng autolisp bạn có thể xây dựng được giao diện như trong vb, ví dụ như sau:
LTDTM : dialog {
label = "LAY TOA DO TAU MAU";
: column {
: edit_box {
label = "TEN TAU";
key = "edt_tentau";
edit_width = 15;
}
ok_cancel_help;
}
viết đoạn chương trình này trong notepab, lưu với định dạng name.dcl
sau đó viết doạn chương trình sau gọi hộp thoại trên với định dạng name.lisp
(defun TKTAUMAU (/ DCL_ID)
(setq DCL_ID (load_dialog "name.DCL"))
(if (not (new_dialog "name" DCL_ID)) (exit))
(start_dialog)
(unload_dialog DCL_ID)
)
trên giao diện ta có thể có thiết kế edit_box cho các thông số đầu vào, sau đó tạo các nút lệnh (gọi chương trình con lưu định dạng .lsp) xử lý số liệu đầu vào, ví dụ tạo một nút lệnh trong file dcl
ve : button {
key = "accept";
label = " VE ";
is_default = false;
edit_width = 6;
fixed_width = true;
alignment = right;
}

autolisp cũng như các ngôn ngữ lập trình khác, cũng có các hàm toán học, nên nếu bạn tính toán trên excel rồi vẽ đồ thị trên cad, thì bạn có thể viết một đoạn macro autolisp tính toán và vẽ trực tiếp trên cad, ví dụ như tính sức cản theo viện leningrad

(defun TSCLG()

(setq LTKSC (atof (get_tile "edt_LTK")) )

(setq BTKSC (atof (get_tile "edt_BTK")) )

(setq ATTKSC (atof (get_tile "edt_ATTK")) )

(setq D (atof (get_tile "edt_DTK")) )

(setq detal (atof (get_tile "edt_HSDTTTK")) )

(setq S (* LTKSC ( + (* 1.36 (/ ATTKSC 1e3)) (* 1.13 detal BTKSC)) ))

(setq V (atof (get_tile "edt_HSBD2S0")) )

(setq R (+ (* 0.17 S (expt V 1.825)) (* 1.45 (- 24 (/ LTKSC BTKSC)) (expt detal 2.5)) (* (/ D (expt LTKSC 2)) (expt V 4)) ) )

...
)
, sử dụng autolisp viết các macro nhỏ giúp cho công việc bạn nhanh hơn và đỡ nhàm chán.
Về Đầu Trang Go down
http://baongay.com
tanminh49dt
Ban Điều Hành
Ban Điều Hành
avatar

Nam
Tổng số bài gửi : 162
Age : 28
Đến từ:(NTU,...) : NTU
Nghề nghiệp: (Student,..) : Student
Môn thể thao yêu thích: (football,..) : volleyball
Điểm năng động tích lũy : 314
Registration date : 29/10/2008

Bài gửiTiêu đề: Re: TỔNG QUAN VỀ AUTOLISP   Mon 23 Nov 2009 - 12:39

Rất cảm ơn anh Lâm .Nhìn có vẻ hơi phức tạp nhưng thấy cũng hay ,chắc cũng phải tìm hiểu thử.
Về Đầu Trang Go down
http://votauthuy.co.cc
Sponsored content




Bài gửiTiêu đề: Re: TỔNG QUAN VỀ AUTOLISP   

Về Đầu Trang Go down
 
TỔNG QUAN VỀ AUTOLISP
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
DIỄN ĐÀN KỸ SƯ TÀU THỦY VIỆT NAM-VIETNAMESE SHIPBUILDING AND ENGINEERING FORUM :: TỔNG HỢP :: TIN HỌC THƯỜNG THỨC :: MẸO VẶT MÁY TÍNH-
Chuyển đến 
THỐNG KÊ DIỄN ĐÀN
LƯỢT TRUY CẬP
Top posters
DSC-Marine Co.,LTD (960)
 
Nguoihatinh (521)
 
shippro (415)
 
Nguyễn Thanh Nghị (317)
 
tanduong028 (287)
 
quangthu (247)
 
nguyenxuanviet (235)
 
Anh2Long (197)
 
KENT0906 (196)
 
Hồng Thất Công (188)
 
DÀNH CHO QUẢNG CÁO
CÔNG TY TNHH THIẾT KẾ DSC-MARINE.
DỊCH VỤ THIẾT KẾ, ĐÓNG MỚI VÀ SỬA CHỮA TÀU
CÔNG TY TNHH BON VÀNG - THI CÔNG CHỐNG ĐẠN VỎ TÀU, GIA CƯỜNG KẾT CẤU, CHỐNG THẤM NGƯỢC
DỊCH VỤ TỪ DIỄN ĐÀN KỸ SƯ TÀU THỦY VIỆT NAM
LIÊN HỆ VỚI CHÚNG TÔI NGAY BẰNG CÁCH BẤM VÀO ĐÂY !