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

Xin giúp lisp ghi nhớ các biến vừa lập để dùng cho các bản vẽ sau này!

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

Chào các anh chị!

 Xin các anh chị giúp cho em lisp hay code dùng để ghi lại các biến em vừa nhập bản vẽ này để sau khi tắt cad mở lại thì các biến đó được update theo giá trị mới nhập lúc nãy!

 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

Ah, biến riêng của mình, ví dụ như mình làm bên điện muốn vẽ co thang cáp (elbow) có bán kính cong (bán kính này thay đổi được nhé) là 300mm chẳng hạn. Mình viết xong lisp vẽ bằng cách nhập bán kính rồi. nhưng qua bản khác hoặc tắt cad mở lại thì biến đó bị reset về nil rồi. Mình muốn biến này luôn là giá trị sau cùng được nhập

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

Vậy bạn phải có 1 cái lsp đưa biến đó ra 1 file txt để dùng chung cho các bản vẽ cùng thư mục.

Và thêm 1 cái lsp khi mở bản vẽ mới thì load cái file đó vào.

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

Khi đưa ra bạn viết

 

(write-line (strcat (vl-princ-to-string 'bien1) "=" (rtos bien1)) file)

với bien1 là tên biến . Chú ý là có dau ' trước bien1

 

Khi đưa vào bạn viết:

 

 
(set (read (substr dong 1 (vl-string-search "=" dong)))
     (read (substr dong (+ 2 (vl-string-search "=" dong)))))
 

Chú ý là hàm set chứ không phải setq.

Dạng của 1 dòng trong file là 

bien1=300

 

Ở trên là các biến dạng integer, real, còn nếu là string thì hơi khác chút, chắc bạn cũng biết.

(set (read (substr dong 1 (vl-string-search "=" dong)))
     (read (substr dong (+ 2 (vl-string-search "=" dong)))))
  • 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

 

Khi đưa ra bạn viết

 

(write-line (strcat (vl-princ-to-string 'bien1) "=" (rtos bien1)) file)

với bien1 là tên biến . Chú ý là có dau ' trước bien1

 

Khi đưa vào bạn viết:

 

 
(set (read (substr dong 1 (vl-string-search "=" dong)))
     (read (substr dong (+ 2 (vl-string-search "=" dong)))))
 

Chú ý là hàm set chứ không phải setq.

Dạng của 1 dòng trong file là 

bien1=300

 

Ở trên là các biến dạng integer, real, còn nếu là string thì hơi khác chút, chắc bạn cũng biết.

(set (read (substr dong 1 (vl-string-search "=" dong)))
     (read (substr dong (+ 2 (vl-string-search "=" dong)))))

Cám ơn bạn nhiều lắm. Mình hiểu code rồi. Giờ mình đang viết lại hoàn chỉnh xem sao!

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

×