Đến nội dung


Hình ảnh
* * * - - 3 Bình chọn

Hướng dẫn lập trình Lisp


  • Please log in to reply
497 replies to this topic

#1 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 26 December 2007 - 08:58 AM

*
Phổ biến

Tự tay mình lập một chương trình Lisp có gì khác so với nhờ ai đó làm? Chưa cần xét kết quả, điểm khác nhau rất cơ bản là bạn sẽ có được cái cảm giác rất là khoái chí (không thể diễn tả) khi chạy thử chương trình.
Ssg lập topic này không ngoài mục đích tạo điều kiện cho các bạn tự mình tìm hiểu và khám phá cái cảm giác "khoái chí không thể diễn tả" nói trên.
Với tinh thần "Share is Receive", ssg cũng mong các bạn đã thành thạo Lisp quan tâm giúp đỡ các bạn mới để cộng đồng Lisp của CadViet ngày càng đông vui và tạo được nhiều chương trình hữu ích.
Để bắt đầu, ssg post lại một bài viết cũ, nhưng có lẽ vẫn còn mới đối với một số bạn. Hy vọng sẽ giúp được chút gì đó cho các bạn mới tiếp cận với Lisp:

http://www.cadviet.c...les/Relax_1.zip

Download, giải nén rồi đọc file *.doc
  • 71

#2 pikeman286

pikeman286

    biết dimdiameter

  • Members
  • PipPipPipPipPip
  • 337 Bài viết
Điểm đánh giá: 244 (khá)

Đã gửi 26 December 2007 - 09:37 AM

Em đang đọc cái này.cảm ơn bác nhiều nhé.
  • 0

#3 pikeman286

pikeman286

    biết dimdiameter

  • Members
  • PipPipPipPipPip
  • 337 Bài viết
Điểm đánh giá: 244 (khá)

Đã gửi 26 December 2007 - 09:59 AM

bác cho em hỏi cái.Nó thông báo là successfully load rồi mà không hiện nhà01 ở cửa sổ là sao nhỉ.Em làm đúng theo tài liệu là save theo định dạng .lsp và để chế độ encoding la ANSI roài.
  • 2

#4 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 26 December 2007 - 10:52 AM

bác cho em hỏi cái.Nó thông báo là successfully load rồi mà không hiện nhà01 ở cửa sổ là sao nhỉ.Em làm đúng theo tài liệu là save theo định dạng .lsp và để chế độ encoding la ANSI roài.

Acad báo "successfully loaded" tức là file lisp của bạn đã load thành công, hoàn toàn đúng cú pháp và đã sẵn sàng chờ bạn sử dụng. Muốn chạy thì bạn phải nhập lệnh chứ (lệnh lisp là các ký tự nằm sau dấu 2 chấm của dòng định nghĩa function chính: (defun C:XXXX...). Cụ thể ở đây là gõ lệnh "nha" + Enter.
  • 1

#5 sumi

sumi

    biết lệnh array

  • Members
  • PipPipPip
  • 185 Bài viết
Điểm đánh giá: 55 (tàm tạm)

Đã gửi 26 December 2007 - 10:55 AM

hoan nghênh Bác SSq nhe,thật là tốt khi có bài tổng hợp như thế,mình mới tham gia gia đình CADVIET nên những bàii như vậy là mới toe lun,
cảm ơn SSq nhìu
  • 1
"Xin chào bạn. Đây là tổng đài tin nhắn. Ấn phím 1 để có 1 lời khen. Phím 2 cho một lời chúc tốt đẹp. Phím 3 cho 1 nụ hôn. Phím 4 cho 1 cuộc hẹn. Nếu muốn tất cả hãy bấm số của tôi"

#6 pikeman286

pikeman286

    biết dimdiameter

  • Members
  • PipPipPipPipPip
  • 337 Bài viết
Điểm đánh giá: 244 (khá)

Đã gửi 26 December 2007 - 11:19 AM

Acad báo "successfully loaded" tức là file lisp của bạn đã load thành công, hoàn toàn đúng cú pháp và đã sẵn sàng chờ bạn sử dụng. Muốn chạy thì bạn phải nhập lệnh chứ (lệnh lisp là các ký tự nằm sau dấu 2 chấm của dòng định nghĩa function chính: (defun C:XXXX...). Cụ thể ở đây là gõ lệnh "nha" + Enter.

hi.Em wên.Đoảng quá chưa đọc kỹ.Thấy hay quá là hú mắt vào.Bác chỉ zùm em mấy quyển sách để chiều em đi mua luôn. :)
  • 0

#7 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 28 December 2007 - 08:34 AM

hi.Em wên.Đoảng quá chưa đọc kỹ.Thấy hay quá là hú mắt vào.Bác chỉ zùm em mấy quyển sách để chiều em đi mua luôn. :)

Sách thì mình không nhớ lắm vì hiện giờ mình chẳng có cuốn sách Lisp nào ngoài cái "Developer Help" của chính Acad. Mình chỉ có nhận xét chung chung là các sách về Cad và Lisp của TS Nguyễn Hứu Lộc (ĐHBK TpHCM) có vẻ dễ tiếp thu hơn những "anh" khác.
Theo quan điểm mình, mỗi tác giả có mỗi cái hay riêng. Bạn mới bắt đầu tiếp cận thì cũng không bận tâm nhiều lắm về việc lựa chọn, vì thật ra cuốn nào cũng đều có những cái cơ bản. Khi bạn đã đạt được trình độ tương đối, tự khắc bạn sẽ biết chọn sách nào hợp với mình.
Ngoài ra, sách dù có viết kỹ thế nào cũng không thể đầy đủ bằng Help của Acad. Và nói chung, phần mềm nào cũng vậy, bạn phải tự đọc đuợc Help của nó thì mới hiểu sâu sắc được. Nếu vốn liếng English còn khiêm tốn thì phải chịu khó thôi, không có cách gì khác.
  • 1

#8 tienlagiay_dxt

tienlagiay_dxt

    biết lệnh trim

  • Members
  • PipPipPip
  • 191 Bài viết
Điểm đánh giá: 185 (tàm tạm)

Đã gửi 28 December 2007 - 08:49 AM

Sách thì mình không nhớ lắm vì hiện giờ mình chẳng có cuốn sách Lisp nào ngoài cái "Developer Help" của chính Acad. Mình chỉ có nhận xét chung chung là các sách về Cad và Lisp của TS Nguyễn Hứu Lộc (ĐHBK TpHCM) có vẻ dễ tiếp thu hơn những "anh" khác.
Theo quan điểm mình, mỗi tác giả có mỗi cái hay riêng. Bạn mới bắt đầu tiếp cận thì cũng không bận tâm nhiều lắm về việc lựa chọn, vì thật ra cuốn nào cũng đều có những cái cơ bản. Khi bạn đã đạt được trình độ tương đối, tự khắc bạn sẽ biết chọn sách nào hợp với mình.
Ngoài ra, sách dù có viết kỹ thế nào cũng không thể đầy đủ bằng Help của Acad. Và nói chung, phần mềm nào cũng vậy, bạn phải tự đọc đuợc Help của nó thì mới hiểu sâu sắc được. Nếu vốn liếng English còn khiêm tốn thì phải chịu khó thôi, không có cách gì khác.

Theo quan điểm của mình thì các cuốn sách hay giấu nghề lắm, hãy chịu khó tự mày mò và học lỏm từ bác ssg và bac Hoành nữa là đủ xài rồi
  • 0

#9 phutho86

phutho86

    biết pan

  • Members
  • Pip
  • 9 Bài viết
Điểm đánh giá: 2 (bình thường)

Đã gửi 30 January 2008 - 11:16 AM

em không có nhiều thời gian để học lisp đến cùng...rất tiếc, bọn em sắp có nhiều đồ án mà!
anh có thể nói cho em biết em cần những lệnh nào để phục vụ cho khoa xây dựng của bọn em
merci bcp!:)
  • 1

#10 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 30 January 2008 - 02:29 PM

em không có nhiều thời gian để học lisp đến cùng...rất tiếc, bọn em sắp có nhiều đồ án mà!
anh có thể nói cho em biết em cần những lệnh nào để phục vụ cho khoa xây dựng của bọn em
merci bcp!:)

Bạn post bài này ở topic AutoCAD và Excel là không đúng chỗ. Ai cũng tùy tiện như vậy sẽ làm cho diễn đàn càng ngày càng mất tính tổ chức, muốn tham khảo một chuyên đề nào đó sẽ rất khó khăn. Thông cảm bạn là newbie, mình đã move bài của bạn về đây. Mọi thắc mắc về lập trình lisp, bạn hãy nêu ở đây luôn, đừng post bài sai địa chỉ nữa!
Bạn muốn học lisp, hãy bắt đầu từ những cái cơ bản nhất,. Bạn có thể tham khảo bài Relax của mình ở đầu topic này và một số bài cơ bản khác có trên diễn đàn. Nếu cảm thấy bận thì thôi, dính vào cái "món" này mất thời gian lắm đó!
Lisp tự thân nó không có sự phân biệt chuyên ngành. Là lập trình viên, bạn muốn chương trình làm việc gì thì nó sẽ làm đúng việc ấy.
Lisp cũng không có "lệnh" gì cả. Chỉ có lập trình viên sáng tạo ra lệnh mới cho CAD thôi.
  • 1

#11 fucihi

fucihi

    biết pan

  • Members
  • Pip
  • 5 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 12 February 2008 - 07:54 PM

XIn chào các bạn!!!!!!!!!
Mình là người mới. Mình thấy diễn đàn này khá hay...nên mạo muội vào và xin được chỉ giáo nhiều hơn.
Lisp mình biết sơ sơ nên trong quá trình lập trình có nhiều trục trặc, rất mong nhận được hướng dẫn từ các bạn.
Xin gửi lên đây vấn đề mình gặp phải(phải nói là bị bó chiu lâu nay)...

sử dụng lệnh "FIX", cụ thể như sau.

- có trước một đoạn thẳng.
- dùng lệnh "GETPOINT" lấy được tọa độ điểm đầu(pt1) và điểm cuối(pt2).
- setq x (- (car pt1) (car pt2)).
- setq a (fix x)

VD:
Kết quả a = 297. nhưng khi thực hiện ở một bản vẽ khác có lúc nó lại là a = 296. Mặc dù thực tế 2 đoạn thẳng này bằng nhau "297.0000000"
  • 0
tks & regards

#12 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4106 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 12 February 2008 - 09:32 PM

sử dụng lệnh "FIX", cụ thể như sau.
- có trước một đoạn thẳng.
- dùng lệnh "GETPOINT" lấy được tọa độ điểm đầu(pt1) và điểm cuối(pt2).
- setq x (- (car pt1) (car pt2)).
- setq a (fix x)

Bạn có thể cho biết code của bạn được không?

và nếu có thể, upload file mà thực hiện lệnh bị lỗi?
  • 1

#13 fucihi

fucihi

    biết pan

  • Members
  • Pip
  • 5 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 14 February 2008 - 09:22 PM

Bạn có thể cho biết code của bạn được không?

và nếu có thể, upload file mà thực hiện lệnh bị lỗi?



cám ơn bạn nhìu,
đoạn code này rất đơn giản mình cũng nghi là file cad có vấn đề nhưng không biết khắc phục thế nào. mình cũng đã thử dùng nhìu phiên bản cad và trên nhìu máy khác nhau nhưng cũng không thành công.
Rất tiếc hôm nay lên mang mình không chuẩn bị nên không có file để up lên được.Hôm sau mình sẽ gửi lên.

tks & regards
  • 0
tks & regards

#14 xixongbana

xixongbana

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 11 March 2008 - 10:29 AM

Bác ssg có thể up lại cái file hướng dẫn ko. Em vào đường link bác cho nhưng ko tìm thấy file relax nào cả. Cảm ơn nhìu.
  • 0

#15 vndesperados

vndesperados

    biết lệnh xref

  • Members
  • PipPipPipPipPipPipPip
  • 547 Bài viết
Điểm đánh giá: 253 (khá)

Đã gửi 11 March 2008 - 11:18 AM

XIn chào các bạn!!!!!!!!!
Mình là người mới. Mình thấy diễn đàn này khá hay...nên mạo muội vào và xin được chỉ giáo nhiều hơn.
Lisp mình biết sơ sơ nên trong quá trình lập trình có nhiều trục trặc, rất mong nhận được hướng dẫn từ các bạn.
Xin gửi lên đây vấn đề mình gặp phải(phải nói là bị bó chiu lâu nay)...

sử dụng lệnh "FIX", cụ thể như sau.

- có trước một đoạn thẳng.
- dùng lệnh "GETPOINT" lấy được tọa độ điểm đầu(pt1) và điểm cuối(pt2).
- setq x (- (car pt1) (car pt2)).
- setq a (fix x)

VD:
Kết quả a = 297. nhưng khi thực hiện ở một bản vẽ khác có lúc nó lại là a = 296. Mặc dù thực tế 2 đoạn thẳng này bằng nhau "297.0000000"



Cái này dùng Getpoint để lấy điểm đầu và điểm cuối của một LINE nên có thể không chính xác nếu việc chọn bắt dính không chính lung tung
  • 0

#16 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 11 March 2008 - 04:00 PM

Bác ssg có thể up lại cái file hướng dẫn ko. Em vào đường link bác cho nhưng ko tìm thấy file relax nào cả. Cảm ơn nhìu.

I'm sorry! Link cũ died!
Đã up lại link mới ở bài đầu tiên của topic này.
  • 1

#17 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 15 March 2008 - 05:45 PM

Thưa bác SSG và các quý anh khác trên diễn đàn,
Úi giời ơi, sướng quá, thằng hay mót như tôi vớ được cái củ này của bác SSG khéo mà gặm cả đời không hết. Thú thực là tôi cũng có mót được mấy củ khoai giun, xơi cũng tàm tạm nhưng mà nhiều xơ quá, giắt răng muốn chết. Vớ được cái củ này trông mỡ màng ra phết. chưa gặm nhưng mà chắc là ít xơ nhiều nạc. Xem ra cứ dùng đồ nội lại tốt hơn đồ ngoại các bác ạ.
Cám ơn bác SSG nhé, cả các quý anh khác nữa. Xin hứa rằng sẽ cố gặm cho hết cái củ này, hễ gặp cái xơ nào giắt vào răng là nhờ các quý anh gỡ giùm ngay.
Lời khuyên của bác SSG là rất đúng nhưng có lẽ phải ăn cơm Tây vài năm mới hy vọng gỡ được mấy cái xơ hay giắt răng của Tây. (Mà tăm ta tốt bằng ba tăm ngoại. Không tin các quý anh cứ dùng thử mấy cái tăm nhựa của Tây sẽ biết nó kém cái món tăm tre của ta mấy lần)
Hì hì, các quý anh đừng giận nhé. tại cái món cơm Tây này em cũng đi mót mà có nên nó mới càng khó xơi.
Chúc bác SSG và các quý anh luôn khỏe, đẻ được nhiều cái để em mót.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#18 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 17 March 2008 - 08:37 PM

Thưa bác SSG và các quý anh khác trên diễn đàn,
Em đã đọc và thử bài hướng dẫn của bác SSG, nhưng em chưa hiểu việc bác phải đưa các hàm (setq oldos (getvar "osmode")); (setvar "osmode" 0) và (setvar "osmode" oldos) vào nhằm mục tiêu gì. Em vẫn hiểu là hàm (setq oldos (getvar "osmode")) là dùng để đặt biến oldos về giá trị mode osnap hiện hành, hàm (setvar "osmode" 0) là để đặt giá trị mode osnap về giá tri 0 và hàm (setvar "osmode" oldos) là để trả giá trị mode osnap về giá trị ban đầu của bản vẽ. Song thực tế khi em bỏ cả ba hàm này đi, lisp vẫn chạy tốt và không thấy có dấu hiệu sai lệch gì. Nhà vẫn đẹp và oai phong lẫm lẫm. Hì
Phải chăng việc này chỉ để ngăn chặn việc truy bắt nhầm các point p1, p2, p3, p4, p5 do giá trị mode osnap hiện hành quá lớn so với kích thước nhà định vẽ.
Nếu không phải vậy thì khi nào nên sử dụng các hàm kể trên, lợi ích của nó ra sao? Kính nhờ bác hoặc quý anh nào hiểu rõ bỏ công giải thích giùm vì cái món này em còn hơi lơ mơ lắm.
Ở bài 4 của bác có hướng dẫn cách sử dụng dialog và menu để làm cho chương trình thân thiện hơn với người sử dụng. Về cái thằng dialog em có biết võ vẽ tí chút nhờ mót được củ autolisp của ông Jeff Sander, song thằng menu thì mù tịt. Bác nếu rảnh có thể hướng dẫn giùm em tí chút về thằng cu này với. Em muốn tìm tài liệu để rõ hơn về nó thì tìm ở đâu? Tiếng Anh thì em mới mót được tí chút mà cái thằng Help của AutoCad nó viết thâm quá, đọc nó cứ như gặm xương vậy, mong bác và các quý anh chỉ giúp.
Kính chúc bác và các quý anh trên diễn đàn luôn mạnh giỏi.
  • -1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#19 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4106 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 17 March 2008 - 11:24 PM

Thưa bác SSG và các quý anh khác trên diễn đàn,
Em đã đọc và thử bài hướng dẫn của bác SSG, nhưng em chưa hiểu việc bác phải đưa các hàm (setq oldos (getvar "osmode")); (setvar "osmode" 0) và (setvar "osmode" oldos) vào nhằm mục tiêu gì. Em vẫn hiểu là hàm (setq oldos (getvar "osmode")) là dùng để đặt biến oldos về giá trị mode osnap hiện hành, hàm (setvar "osmode" 0) là để đặt giá trị mode osnap về giá tri 0 và hàm (setvar "osmode" oldos) là để trả giá trị mode osnap về giá trị ban đầu của bản vẽ. Song thực tế khi em bỏ cả ba hàm này đi, lisp vẫn chạy tốt và không thấy có dấu hiệu sai lệch gì. Nhà vẫn đẹp và oai phong lẫm lẫm.

Bạn hiểu đúng bản chất rồi đấy.

Đoạn mã này có tác dụng tắt osnap để lisp chạy đúng trong MỌI trường hợp. Không có đoạn mã đó, lisp vẫn chạy, nhưng bị sai trong nhiều trường hợp người sử dụng bật osnap.
  • 2

#20 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 18 March 2008 - 12:06 PM

Thưa bác NguyenHoanh và các quý anh khác trên diễn đàn,
Cám ơn bác NguyenHoanh lắm lắm vì sự tận tình chỉ dạy của bác. Em đã đọc một số topic của bác trên diễn đàn, thấy rất mê, muốn mót lắm, nhưng bị cái vốn IT hơi lùn nên thú thực là hơi tởn. Sợ leo cao thì té nặng nên đành từ từ mót dần. Hy vọng sẽ có cơ hội được thọ giáo bác để thành người có ích cho cộng đồng CadViet.
Bác nghe có máu không? Bốc tí thôi chứ để làm được điều đó thì e rằng cái cách mót như của em có mà đến đời sang tiểu bác nhỉ? Giờ thì do nhiều cái lý nên em chỉ biết cố để mót được những cái hữu ích cho bản thân và tránh không không làm phiền nhiều tới cộng đồng đã là một công đức rồi phải không bác?
Chúc bác và các quý anh khác trên diễn đàn luôn mạnh khỏe.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.