Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
riengmotgoctroi4you

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

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

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.

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

Chỉnh sửa theo duy782006
  • 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
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 )

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

  • 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

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

Đăng nhập để thực hiện theo  

×