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

Tạo file nháp cho biến

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

Mình muốn tạo một file nháp các biến của 1 lsp, để tránh các lsp chạy chồng chéo sẽ bị đè biến của nhau, không biết bạn nào biết chỉ dùm mình một chút.

VD: Mình có 1 lsp sử dụng biến a b c d

và 1 lsp nào đó cũng sử dụng chung biến a nhưng không triệt tiêu khi kết thúc lsp. Nên như thế khi chạy sẽ gây ra lỗi chương trình.

Giờ mình muốn tạo 1 file nháp của lsp. Tức khi chạy lisp nó sẽ nháp trong file đấy và các biến không triệt tiêu sau khi kết thúc lệnh chỉ triệt tiêu khi thoát khỏi Cad thôi.

Liệu có được không các bạ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
Mình muốn tạo một file nháp các biến của 1 lsp, để tránh các lsp chạy chồng chéo sẽ bị đè biến của nhau, không biết bạn nào biết chỉ dùm mình một chút.

VD: Mình có 1 lsp sử dụng biến a b c d

và 1 lsp nào đó cũng sử dụng chung biến a nhưng không triệt tiêu khi kết thúc lsp. Nên như thế khi chạy sẽ gây ra lỗi chương trình.

Giờ mình muốn tạo 1 file nháp của lsp. Tức khi chạy lisp nó sẽ nháp trong file đấy và các biến không triệt tiêu sau khi kết thúc lệnh chỉ triệt tiêu khi thoát khỏi Cad thôi.

Liệu có được không các bạn?

 

Theo mình bạn nên dùng các lệnh về key registry mà xài, đảm bảo các biến sẽ không đè lên nhau, thoát Cad nếu bạn không hủy thì các biến này vẫn sống nhăn, miễn sào bạn không đóng băng là OK!!!

 

VD:

(defun EX_regedit(str_key str_value)

(vl-registry-write "HKEY_CURRENT_USER\0_DNPP_ULT" str_key str_value)

)

 

(defun IM_regedit(str_key / tam)

(setq tam (vl-registry-read "HKEY_CURRENT_USER\0_DNPP_ULT" str_key))

tam

)

  • 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
Mình muốn tạo một file nháp các biến của 1 lsp, để tránh các lsp chạy chồng chéo sẽ bị đè biến của nhau, không biết bạn nào biết chỉ dùm mình một chút.

VD: Mình có 1 lsp sử dụng biến a b c d

và 1 lsp nào đó cũng sử dụng chung biến a nhưng không triệt tiêu khi kết thúc lsp. Nên như thế khi chạy sẽ gây ra lỗi chương trình.

Giờ mình muốn tạo 1 file nháp của lsp. Tức khi chạy lisp nó sẽ nháp trong file đấy và các biến không triệt tiêu sau khi kết thúc lệnh chỉ triệt tiêu khi thoát khỏi Cad thôi.

Liệu có được không các bạn?

Thì cứ làm như những gì bạn đã nghĩ vậy. Các biến sẽ đuợc lưu vào 1 file text nào đó trước khi kết thúc lệnh. tất nhiên bạn vẫn fải giải phóng biến ra khỏi bộ nhớ khi kết thúc lệnh. khi gọi lệnh hãy thêm đoạn code đọc nội dung của file text này. cách này có thể giữ được giá trị của biến cho các phiên làm việc sau mỗi khi bật cad

VD biến a của bạn. có thể viết 1 file text có nội dung (setq a x b Y d Z....) vào 1 file text nào đó rồi đọc file này mỗi khi lệnh đc goi

Cách khác: bạn có thể gộp chung tất cả các biến cần cần thiết của 1 lệnh vào 1 list

VD: (setq Lst (list a b c d)) và định nghĩa duy nhất biến Lst là biến toàn cục và giải phóng các biến a b c d. lấy giá trị a từ lst như thế nào thì chắc bạn biết rồi

Cách khác nữa: Hãy viết code làm sao để tránh việc tự đưa mình vào thế khù khoằm như trên (Vlide cung cấp cho bạn công cụ project rất hữu dụng để quản lý các lisp của bạn) :iluvyousmiley:

  • 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
Thì cứ làm như những gì bạn đã nghĩ vậy. Các biến sẽ đuợc lưu vào 1 file text nào đó trước khi kết thúc lệnh. tất nhiên bạn vẫn fải giải phóng biến ra khỏi bộ nhớ khi kết thúc lệnh. khi gọi lệnh hãy thêm đoạn code đọc nội dung của file text này. cách này có thể giữ được giá trị của biến cho các phiên làm việc sau mỗi khi bật cad

VD biến a của bạn. có thể viết 1 file text có nội dung (setq a x b Y d Z....) vào 1 file text nào đó rồi đọc file này mỗi khi lệnh đc goi

Cách khác: bạn có thể gộp chung tất cả các biến cần cần thiết của 1 lệnh vào 1 list

VD: (setq Lst (list a b c d)) và định nghĩa duy nhất biến Lst là biến toàn cục và giải phóng các biến a b c d. lấy giá trị a từ lst như thế nào thì chắc bạn biết rồi

Cách khác nữa: Hãy viết code làm sao để tránh việc tự đưa mình vào thế khù khoằm như trên (Vlide cung cấp cho bạn công cụ project rất hữu dụng để quản lý các lisp của bạn) :iluvyousmiley:

Ừm mình định viết 1 chương trình nhỏ sử dụng nhiều biến nhưng biến không thể bị triệt tiêu, và sợ khi đang dùng chương trình thì sử dụng lsp khác dẫn đến thêm biến bất hợp lý ghi đè vào làm cho chương trình mình chạy là sai. Mình cũng nghĩ sẽ ghi nháp ra file txt nhưng có một vấn đề đối với các biến đơn thì việc đó rất hiệu quả nhưng đối với các biến là list thì mình vẫn nghĩ chưa thông.

VD file txt có dạng tên biến giá trị

a 12

b h15

c là list thì mình vẫn chưa nghĩ ra cách ghi và gọi lại biến này.

Mong các bạn chỉ thêm cho mình hiểu rõ hơn.

@Thaistreets mình đang dùng vlide để viết mà, cảm ơn bạn gó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
Ừm mình định viết 1 chương trình nhỏ sử dụng nhiều biến nhưng biến không thể bị triệt tiêu, và sợ khi đang dùng chương trình thì sử dụng lsp khác dẫn đến thêm biến bất hợp lý ghi đè vào làm cho chương trình mình chạy là sai. Mình cũng nghĩ sẽ ghi nháp ra file txt nhưng có một vấn đề đối với các biến đơn thì việc đó rất hiệu quả nhưng đối với các biến là list thì mình vẫn nghĩ chưa thông.

VD file txt có dạng tên biến giá trị

a 12

b h15

c là list thì mình vẫn chưa nghĩ ra cách ghi và gọi lại biến này.

Mong các bạn chỉ thêm cho mình hiểu rõ hơn.

@Thaistreets mình đang dùng vlide để viết mà, cảm ơn bạn góp ý.

Bạn nên ghi các biến vào trong file script trước khi dùng lisp thì run file script này là được. Nội file script dùng hàm (setq ....) bình thường.

  • Vote tăng 2

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
Ừm mình định viết 1 chương trình nhỏ sử dụng nhiều biến nhưng biến không thể bị triệt tiêu, và sợ khi đang dùng chương trình thì sử dụng lsp khác dẫn đến thêm biến bất hợp lý ghi đè vào làm cho chương trình mình chạy là sai. Mình cũng nghĩ sẽ ghi nháp ra file txt nhưng có một vấn đề đối với các biến đơn thì việc đó rất hiệu quả nhưng đối với các biến là list thì mình vẫn nghĩ chưa thông.

VD file txt có dạng tên biến giá trị

a 12

b h15

c là list thì mình vẫn chưa nghĩ ra cách ghi và gọi lại biến này.

Mong các bạn chỉ thêm cho mình hiểu rõ hơn.

@Thaistreets mình đang dùng vlide để viết mà, cảm ơn bạn góp ý.

Giả sử mình muốn lưu các biến A giá trị là (list X Y..) vào 1 file tạm nào đó tên là tempfile.xxx chẳng hạn.

- Đầu tiên ta xác định luôn là nó sẽ đc ghi vào 1 thư mục support nào đó của cad để dễ dàng sử dụng nó. ở đây mình lấy thư mục có chứa file acad.dcl nhé

(setq tempfile (open (strcat (acet-filename-directory (findfile "acad.dcl")) "tempfile.xxx") "W") i 0)

- giờ ta sẽ ghi vào tempfile.xxx nội dung như sau: (setq A (list X Y ...))

(princ "(setq A (list \n" tempfile)

(repeat (length A)

(write-line (strcat "\""(nth i A)"\"") tempfile)

(setq i (1+ i)))

(close tempfile)

- OK, đã xong cái file tạm. giờ chỉ việc load nội dung của nó vào lisp. vì file này đã được tạo ra trong thư mục support của cad lên bạn chỉ cần sử dụng 1 câu thần chú đơn giản là bạn đã có cái bạn cần

(if (setq tempfile.xxx (findfile "tempfile.xxx")) (load tempfile.xxx) (prompt "Khong tim thay file tempfile.xxx"))

  • 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  

×