Chuyển đến nội dung
Diễn đàn CADViet
ssg

Thư giãn cùng AutoLisp!

Các bài được khuyến nghị

Chào các bạn,

Ssg lập topic này với mong muốn giúp các bạn yêu thích lisp (nhưng còn ngại ngần) nhanh chóng vượt qua giai đoạn cơ bản ban đầu. Tên của topic ngụ ý rằng, lisp không có gì cao xa ghê gớm. Nó là một tính năng mở rộng của AutoCAD tặng cho người dùng. Hãy đến với lisp với tư thế nhẹ nhàng, thoải mái như khi bạn bắt đầu chơi trò xếp gạch (brick game), thay vì xếp các viên gạch thì xếp các chữ, số và dấu ngoặc!

Xin nói thêm, bản thân ssg không phải dân IT, cũng không là nhà sư phạm. Ssg chỉ là dân kỹ thuật, mày mò tự học lisp để phục vụ công việc của mình. Cái mà ssg muốn chia sẻ cùng các bạn là chút ít kiến thức và kinh nghiệm mà bản thân thu lượm được. Theo ssg, cách học hiệu quả nhất là thông qua ví dụ thực hành, càng đơn giản càng tốt. Khi đã có nền tảng tương đối, sẽ nâng dần độ phức tạp lên.

Để bắt đầu, bạn cần 2 điều kiện:

1) Biết sử dụng tương đối thành thạo AutoCAD

2) Có một cuốn sách về lisp (cuốn nào cũng được). Nếu vốn liếng English kha khá thì không cần sách vì Help của Acad chính là cuốn sách tuyệt vời nhất.

Bạn nào đã có chút kinh nghiệm về lập trình bằng các ngôn ngữ khác là lợi thế đáng kể, nhưng nếu không biết cũng chẳng sao, chúng ta sẽ bắt đầu từ 0.

Các bạn giải nén file train01.zip, đọc và làm theo hướng dẫn. Chúc các bạn thành công và cảm thấy thật sự được "thư giãn" với lisp!

 

http://www.cadviet.com/upfiles/Train01.zip

 

Ssg cũng kêu gọi tất cả các bạn đã am hiểu về lisp tích cực ủng hộ và giúp đỡ các bạn mới. Mong rằng, cộng đồng Lisp của CadViet ngày càng đông vui và hùng mạnh.

Cám ơn tất cả các bạn,

Ssg

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Ssg cũng kêu gọi tất cả các bạn đã am hiểu về lisp tích cực ủng hộ và giúp đỡ các bạn mới. Mong rằng, cộng đồng Lisp của CadViet ngày càng đông vui và hùng mạnh.

Cám ơn tất cả các bạn,

Ssg

 

Sao lâu quá hông thấy bác viết nửa vậy.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Các bạn hãy cùng thư giãn với Acad bằng các Game nhỏ viết bằng Autolisp . Các game này cũng lấy ý tưởng từ các minigame kinh điển như Swars,Battle Ship,Troy chỉ có điều giao diện của nó chính là màn hình Acad của bạn ,không cần cài đặt và chẳng tốn chút nào tài nguyên hệ thống.

 

CAD_Game.jpg

 

Download!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tại sao khi viết thông báo ra màn hình , phải luôn viết "\nTHONGBAO" , mình bỏ \n đi nó vẫn viết bình thường mà ?

Trong đoạn vd của bạn :

(defun BatDauVe() (setq OldOs (getvar "osmode")) (setvar "osmode" 0))

;;;----------------------------------------------------------------

(defun KetThucVe() (setvar "osmode" OldOs) (princ))

;;;----------------------------------------------------------------

(defun NhapSoLieu()

(setq

Rong (getreal "\nChieu rong: ")

Cao (getreal "\nChieu cao: ")

CaoChop (getreal "\nChieu cao chop: ")

DiemChuan (getpoint "\nDiem chuan: ")

)

)

;;;----------------------------------------------------------------

(defun VeNha ( W H1 H2 p1 / p2 p3 p4 p5 OldOs)

(setq

p2 (polar p1 0.0 W)

p3 (polar p2 (/ pi 2) H1)

p4 (polar p3 pi W)

p5 (list (+ (car p4) (/ W 2)) (+ (cadr p4) H2))

)

(BatDauVe)

(command "line" p1 p2 p3 p4 "c")

(command "line" p3 p5 p4 "")

(KetThucVe)

)

;;;----------------------------------------------------------------

(defun C:NHA (/ Rong Cao CaoChop DiemChuan)

(NhapSoLieu)

(VeNha Rong Cao CaoChop DiemChuan)

)

Ở các biến tô đỏ , bạn chưa nhập giá trị cho nó thì chương trình biết đâu mà chạy . Bài bạn viết thật dễ hiểu , nếu có thời gian , bạn tiếp tục bài 4 như đã " quảng cáo " đi , mình đang nôn quá .

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tại sao khi viết thông báo ra màn hình , phải luôn viết "\nTHONGBAO" , mình bỏ \n đi nó vẫn viết bình thường mà ?

Trong đoạn vd của bạn :

(defun BatDauVe() (setq OldOs (getvar "osmode")) (setvar "osmode" 0))

;;;----------------------------------------------------------------

(defun KetThucVe() (setvar "osmode" OldOs) (princ))

;;;----------------------------------------------------------------

(defun NhapSoLieu()

(setq

Rong (getreal "\nChieu rong: ")

Cao (getreal "\nChieu cao: ")

CaoChop (getreal "\nChieu cao chop: ")

DiemChuan (getpoint "\nDiem chuan: ")

)

)

;;;----------------------------------------------------------------

(defun VeNha ( W H1 H2 p1 / p2 p3 p4 p5 OldOs)

(setq

p2 (polar p1 0.0 W)

p3 (polar p2 (/ pi 2) H1)

p4 (polar p3 pi W)

p5 (list (+ (car p4) (/ W 2)) (+ (cadr p4) H2))

)

(BatDauVe)

(command "line" p1 p2 p3 p4 "c")

(command "line" p3 p5 p4 "")

(KetThucVe)

)

;;;----------------------------------------------------------------

(defun C:NHA (/ Rong Cao CaoChop DiemChuan)

(NhapSoLieu)

(VeNha Rong Cao CaoChop DiemChuan)

)

Ở các biến tô đỏ , bạn chưa nhập giá trị cho nó thì chương trình biết đâu mà chạy . Bài bạn viết thật dễ hiểu , nếu có thời gian , bạn tiếp tục bài 4 như đã " quảng cáo " đi , mình đang nôn quá .

Trước tiên cám ơn bạn đã có phản hồi, mình nghĩ chắc mọi người ít quan tâm nên chưa tiếp tục. Xin reply bạn:

1) "\n" nghĩa là xuống dòng (new line), dùng nó khi mình muốn thông báo hiện ra ở đầu dòng, bất kể trước đó như thế nào.

2) Bạn chú ý dòng: (defun VeNha ( W H1 H2 p1 / p2 p3 p4 p5 OldOs). Hàm VeNha có 4 tham số (parameter): W, H1, H2 và p1 (bạn tô đỏ còn thiếu p1!), đương nhiên là chúng đã được khai báo ở dạng variable, không cần value. Khi áp dụng, bạn phải cung cấp cho VeNha đủ các tham số như khi define function.

Bạn chú ý, ở function NhapSoLieu, mình có thể viết:

(defun NhapSoLieu()

(setq

W (getreal "\nChieu rong: ")

H1 (getreal "\nChieu cao: ")

H2 (getreal "\nChieu cao chop: ")

p1 (getpoint "\nDiem chuan: ")

)

)

và áp dụng:

(NhapSoLieu)

(VeNha W H1 H2 p1)

Nhưng nếu viết như vậy, người đọc dễ bị đánh lừa vì các biến khi định nghĩa hàm và áp dụng hàm có tên giống hệt nhau. Mình đã cố tình dùng (VeNha Rong Cao CaoChop DiemChuan) để người đọc không bị ám ảnh về hình thức mà chú trọng hơn đến bản chất của hàm.

Tóm lại là gì? Bạn xem lại câu kết ở cuối bài 2 sẽ hiểu ý mình.

Chúc vui.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Trước tiên cám ơn bạn đã có phản hồi, mình nghĩ chắc mọi người ít quan tâm nên chưa tiếp tục. Xin reply bạn:

1) "\n" nghĩa là xuống dòng (new line), dùng nó khi mình muốn thông báo hiện ra ở đầu dòng, bất kể trước đó như thế nào.

2) Bạn chú ý dòng: (defun VeNha ( W H1 H2 p1 / p2 p3 p4 p5 OldOs). Hàm VeNha có 4 tham số (parameter): W, H1, H2 và p1 (bạn tô đỏ còn thiếu p1!), đương nhiên là chúng đã được khai báo ở dạng variable, không cần value. Khi áp dụng, bạn phải cung cấp cho VeNha đủ các tham số như khi define function.

Bạn chú ý, ở function NhapSoLieu, mình có thể viết:

(defun NhapSoLieu()

(setq

W (getreal "\nChieu rong: ")

H1 (getreal "\nChieu cao: ")

H2 (getreal "\nChieu cao chop: ")

p1 (getpoint "\nDiem chuan: ")

)

)

và áp dụng:

(NhapSoLieu)

(VeNha W H1 H2 p1)

Nhưng nếu viết như vậy, người đọc dễ bị đánh lừa vì các biến khi định nghĩa hàm và áp dụng hàm có tên giống hệt nhau. Mình đã cố tình dùng (VeNha Rong Cao CaoChop DiemChuan) để người đọc không bị ám ảnh về hình thức mà chú trọng hơn đến bản chất của hàm.

Tóm lại là gì? Bạn xem lại câu kết ở cuối bài 2 sẽ hiểu ý mình.

Chúc vui.

ban mau ra tiep phan 4 nhu da hua di ssg, rat nhiu` fan dang cho` ban

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Cảm on SSG đã đề xướng topic này, mình biết lisp rất cần thiết cho dân kỹ thuật, mình hiện tại là dân hệ thống điện, tuy sử dụng cad không nhiêu như dân xây dựng và kiến trúc nhưng có một số lĩnh vực mà thấy nếu áp dụng và thì rất tốt.

Nhất là làm tư vấn điện. Nên mình đang học lisp, rất mong được sự trao đổi của mọi người.

Có ai có file lisp về phần chạy tạo mặt cắt dọc tuyến thì cho mình tham khảo với.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Chào các bạn,

Ssg lập topic này với mong muốn giúp các bạn yêu thích lisp (nhưng còn ngại ngần) nhanh chóng vượt qua giai đoạn cơ bản ban đầu. Tên của topic ngụ ý rằng, lisp không có gì cao xa ghê gớm. Nó là một tính năng mở rộng của AutoCAD tặng cho người dùng. Hãy đến với lisp với tư thế nhẹ nhàng, thoải mái như khi bạn bắt đầu chơi trò xếp gạch (brick game), thay vì xếp các viên gạch thì xếp các chữ, số và dấu ngoặc!

Xin nói thêm, bản thân ssg không phải dân IT, cũng không là nhà sư phạm. Ssg chỉ là dân kỹ thuật, mày mò tự học lisp để phục vụ công việc của mình. Cái mà ssg muốn chia sẻ cùng các bạn là chút ít kiến thức và kinh nghiệm mà bản thân thu lượm được. Theo ssg, cách học hiệu quả nhất là thông qua ví dụ thực hành, càng đơn giản càng tốt. Khi đã có nền tảng tương đối, sẽ nâng dần độ phức tạp lên.

Để bắt đầu, bạn cần 2 điều kiện:

1) Biết sử dụng tương đối thành thạo AutoCAD

2) Có một cuốn sách về lisp (cuốn nào cũng được). Nếu vốn liếng English kha khá thì không cần sách vì Help của Acad chính là cuốn sách tuyệt vời nhất.

Bạn nào đã có chút kinh nghiệm về lập trình bằng các ngôn ngữ khác là lợi thế đáng kể, nhưng nếu không biết cũng chẳng sao, chúng ta sẽ bắt đầu từ 0.

Các bạn giải nén file train01.zip, đọc và làm theo hướng dẫn. Chúc các bạn thành công và cảm thấy thật sự được "thư giãn" với lisp!

 

http://www.cadviet.com/upfiles/Train01.zip

 

Ssg cũng kêu gọi tất cả các bạn đã am hiểu về lisp tích cực ủng hộ và giúp đỡ các bạn mới. Mong rằng, cộng đồng Lisp của CadViet ngày càng đông vui và hùng mạnh.

Cám ơn tất cả các bạn,

Ssg

mọi người tham khảo lisp này vừa giải trí vừa học tập

http://www.cadviet.com/upfiles/2/battle_shi1694911152004.zip

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×