Đến nội dung


Hình ảnh
- - - - -

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!


  • Please log in to reply
6 replies to this topic

#1 kame2211982

kame2211982

    biết zoom

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

Đã gửi 21 August 2014 - 10:43 AM

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


  • 0

#2 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 21 August 2014 - 11:08 AM

Biến bạn nói là biến của cad hay biến riêng của bạn.?

Bạn có thể cho ví dụ được không?


  • 0

#3 kame2211982

kame2211982

    biết zoom

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

Đã gửi 21 August 2014 - 11:25 AM

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


  • 0

#4 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 21 August 2014 - 11:29 AM

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.


  • 0

#5 kame2211982

kame2211982

    biết zoom

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

Đã gửi 21 August 2014 - 11:34 AM

Mình cũng nghĩ vậy nhưng không biết viết như thế nào! bạn giúp mình nhé!


  • 0

#6 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 21 August 2014 - 12:14 PM

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

  • 1

#7 kame2211982

kame2211982

    biết zoom

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

Đã gửi 21 August 2014 - 02:20 PM

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!


  • 0