Đến nội dung


Hình ảnh
- - - - -

Giúp em về autolisp. cách input giá trị.


  • Please log in to reply
2 replies to this topic

#1 riengmotgoctroi4you

riengmotgoctroi4you

    biết pan

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

Đã gửi 18 January 2011 - 03:18 PM

Chào các anh em trong cadviet.
Em có câu hỏi này về lisp mong các anh em giải đáp giùm. Em mới tìm hiểu về lisp nên còn rất ngây ngô. Các anh cho hỏi ta phải làm thế nào để giá trị input vào còn lưu lại đến lần gọi lệnh sau. ví dụ:
Trong Cad, lệnh offset với giá trị là 5. Lấn sau ta gọi lại lệnh sẽ thấy giá trị 5 ở trong ngoặc. nếu Enter là ta chấp nhận giá trị 5 này. ( offset <5>)
Em muốn sau em nhập giá trị lần 1 và chạy thử. Nếu lần sau gọi lại lệnh thì giá trị đó cũng lưu ở trong dấu ngoặc <> và chỉ cần enter để chấp nhận giá trị đó. Nếu như vậy thì trong lisp em phải viết thêm những cái gì để làm đc điều đó.
Có thể em nói hơi tối nghĩa. Mong các anh em giải đáp giùm. Xin cảm ơn.
  • 0

#2 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 18 January 2011 - 03:56 PM

Chào các anh em trong cadviet.
Em có câu hỏi này về lisp mong các anh em giải đáp giùm. Em mới tìm hiểu về lisp nên còn rất ngây ngô. Các anh cho hỏi ta phải làm thế nào để giá trị input vào còn lưu lại đến lần gọi lệnh sau. ví dụ:
Trong Cad, lệnh offset với giá trị là 5. Lấn sau ta gọi lại lệnh sẽ thấy giá trị 5 ở trong ngoặc. nếu Enter là ta chấp nhận giá trị 5 này. ( offset <5>)
Em muốn sau em nhập giá trị lần 1 và chạy thử. Nếu lần sau gọi lại lệnh thì giá trị đó cũng lưu ở trong dấu ngoặc <> và chỉ cần enter để chấp nhận giá trị đó. Nếu như vậy thì trong lisp em phải viết thêm những cái gì để làm đc điều đó.
Có thể em nói hơi tối nghĩa. Mong các anh em giải đáp giùm. Xin cảm ơn.

Có 2 trường hợp lưu giá trị số và giá trị chử. Mình viết 2 lệnh bạn chạy thử và cứ thế áp dụng nhé:
-LSO: lưu giá trị số (dùng tính toán được).
-LCHU: Lưu giá trị chử.

(Defun C:lso ( )
(if (= giatri nil)
(setq giatri1 5.0)
(setq giatri1 giatri)
)
(setq giatri (GETREAL (strcat "\nNhap so can luu: <" (rtos giatri1 2 2) ">")))
(if (= giatri nil)
(setq giatri giatri1)
)
(alert (rtos giatri 2 2))
(princ))
;;;;;;;;;
(Defun C:lchu ( )
(if (= giatric nil)
(setq giatric1 "mau")
(setq giatric1 giatric)
)
(setq giatric (GETSTRING (strcat "\nNhap chu can luu: <" giatric1 ">")))
(if (= giatric "")
(setq giatric giatric1)
)
(alert giatric)
(princ))

Bài viết đã được chỉnh sửa nội dung bởi duy782006: 19 January 2011 - 09:23 AM

  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#3 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 18 January 2011 - 08:25 PM

Chào các anh em trong cadviet.
Em có câu hỏi này về lisp mong các anh em giải đáp giùm. Em mới tìm hiểu về lisp nên còn rất ngây ngô. Các anh cho hỏi ta phải làm thế nào để giá trị input vào còn lưu lại đến lần gọi lệnh sau. ví dụ:
Trong Cad, lệnh offset với giá trị là 5. Lấn sau ta gọi lại lệnh sẽ thấy giá trị 5 ở trong ngoặc. nếu Enter là ta chấp nhận giá trị 5 này. ( offset <5>)
Em muốn sau em nhập giá trị lần 1 và chạy thử. Nếu lần sau gọi lại lệnh thì giá trị đó cũng lưu ở trong dấu ngoặc <> và chỉ cần enter để chấp nhận giá trị đó. Nếu như vậy thì trong lisp em phải viết thêm những cái gì để làm đc điều đó.
Có thể em nói hơi tối nghĩa. Mong các anh em giải đáp giùm. Xin cảm ơn.

Đây là 1 kỹ thuật rất hay được áp dụng để giảm thiểu thao tác cho user khi phải lặp đi lại lệnh.Bạn có thể tham khảo bài viết sau của bác ssg:
Nghệ thuật lập trình Lisp
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC