Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
Thaistreetz

[Thảo luận] - Gán code lisp vào bản vẽ và tự động tải code khi mở bản vẽ

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

Thaistreetz    515

Vấn đề này mình vướng mắc cũng khá lâu rồi nhưng chưa có cách nào giải quyết được, hôm nay đành post lên đây mong các bác cùng thảo luận giải quyết vấn đề này giúp mình.

 

Nó ngắn gọn thế này thôi: Mình muốn lưu vào dữ liệu của 1 bản vẽ 1 đoạn code lisp, và khi đem bản vẽ đó mở ở bất kì máy nào, với bất kỳ đời cad nào có thể mở bản vẽ đó từ 2004 trở lên (thấp hơn nữa thì càng tốt) thì đoạn code lưu trong bản vẽ đó tự động được tải.

nôm na thì nó giống i xì như cách thức mà con virus Acad.lsp đã làm, nhưng mình không muốn bất kì file nào được tạo ra cùng bản vẽ. tất nhiên là không phải mình định viết 1 em virus phá anh em đâu nhé ^^

 

Mình tin chắc các bác cũng nhận thấy được rằng nếu thực hiện được công việc này thì ứng dụng của nó là rất lớn. Hiện tại thì mình mới chỉ giải quyết được 1/2 công việc, đó là lưu đoạn code đó vào Xrecord hoặc vào 1 trong các biến hệ thống Users# dưới dạng 1 chuỗi.

1/2 vấn đề khó khăn còn lại là mình không làm sao để cad có thể tự động đọc và tải đoạn code đó vào bản vẽ khi mở bản vẽ.

 

Trên đây là hướng đi của mình và đang gặp ngõ cụt. Nếu các bác có cách nào thông cái ngõ này ra hoặc có đường khác để đi xin hãy mách nước cho mình. Mình mong muốn có thể giải quyết vấn đề này thuần lisp vì mình chỉ biết mỗi lisp và mình áp dụng cái này cho 1 vài chương trình mình viết bằng lisp, nhưng nếu không thể thì bằng các ngôn ngữ khác cũng được. Cảm ơn các bác trước :D

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
ketxu    2.652

Hãy tưởng tượng đoạn code của bác gắn mã gọi Shell format ổ hiện hành ^^

  • 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
TRUNGNGAMY    91

Vấn đề này mình vướng mắc cũng khá lâu rồi nhưng chưa có cách nào giải quyết được, hôm nay đành post lên đây mong các bác cùng thảo luận giải quyết vấn đề này giúp mình.

 

Nó ngắn gọn thế này thôi: Mình muốn lưu vào dữ liệu của 1 bản vẽ 1 đoạn code lisp, và khi đem bản vẽ đó mở ở bất kì máy nào, với bất kỳ đời cad nào có thể mở bản vẽ đó từ 2004 trở lên (thấp hơn nữa thì càng tốt) thì đoạn code lưu trong bản vẽ đó tự động được tải.

nôm na thì nó giống i xì như cách thức mà con virus Acad.lsp đã làm, nhưng mình không muốn bất kì file nào được tạo ra cùng bản vẽ. tất nhiên là không phải mình định viết 1 em virus phá anh em đâu nhé ^^

 

Mình tin chắc các bác cũng nhận thấy được rằng nếu thực hiện được công việc này thì ứng dụng của nó là rất lớn. Hiện tại thì mình mới chỉ giải quyết được 1/2 công việc, đó là lưu đoạn code đó vào Xrecord hoặc vào 1 trong các biến hệ thống Users# dưới dạng 1 chuỗi.

1/2 vấn đề khó khăn còn lại là mình không làm sao để cad có thể tự động đọc và tải đoạn code đó vào bản vẽ khi mở bản vẽ.

 

Trên đây là hướng đi của mình và đang gặp ngõ cụt. Nếu các bác có cách nào thông cái ngõ này ra hoặc có đường khác để đi xin hãy mách nước cho mình. Mình mong muốn có thể giải quyết vấn đề này thuần lisp vì mình chỉ biết mỗi lisp và mình áp dụng cái này cho 1 vài chương trình mình viết bằng lisp, nhưng nếu không thể thì bằng các ngôn ngữ khác cũng được. Cảm ơn các bác trước :D

Muốn vậy, bạn phải cài một con "virus" vào máy bạn muốn thực thi công việc đó. Ví dụ : bạn đã lưu đoạn mã sau vào bản vẽ

(defun c:aaa() (setq a 1) (print a))

sau đó, khi mở file, bạn đọc lại nó, nó sẽ được lưu trong một st, tương tự như bạn làm công việc sau (việc này bạn cài vào file virus của bạn) :

(setq st "(defun c:aaa() (setq a 1) (print a))")

tiếp theo, cũng trong file virus, bạn thực hiện : (eval (read st))

bạn sẽ có hàm c:aaa. Để thực hiện, trong file virus bạn gọi (c:aaa)

Việc này tuy kg ghi code của bạn ra file nhưng phải có đoạn code thực thi trong file virus, còn nếu kg có cả file virus thì mình cũng chịu

Chúc bạn thành công

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
hochoaivandot    108

Vấn đề này mình vướng mắc cũng khá lâu rồi nhưng chưa có cách nào giải quyết được, hôm nay đành post lên đây mong các bác cùng thảo luận giải quyết vấn đề này giúp mình.

 

Nó ngắn gọn thế này thôi: Mình muốn lưu vào dữ liệu của 1 bản vẽ 1 đoạn code lisp, và khi đem bản vẽ đó mở ở bất kì máy nào, với bất kỳ đời cad nào có thể mở bản vẽ đó từ 2004 trở lên (thấp hơn nữa thì càng tốt) thì đoạn code lưu trong bản vẽ đó tự động được tải.

nôm na thì nó giống i xì như cách thức mà con virus Acad.lsp đã làm, nhưng mình không muốn bất kì file nào được tạo ra cùng bản vẽ. tất nhiên là không phải mình định viết 1 em virus phá anh em đâu nhé ^^

 

Mình tin chắc các bác cũng nhận thấy được rằng nếu thực hiện được công việc này thì ứng dụng của nó là rất lớn. Hiện tại thì mình mới chỉ giải quyết được 1/2 công việc, đó là lưu đoạn code đó vào Xrecord hoặc vào 1 trong các biến hệ thống Users# dưới dạng 1 chuỗi.

1/2 vấn đề khó khăn còn lại là mình không làm sao để cad có thể tự động đọc và tải đoạn code đó vào bản vẽ khi mở bản vẽ.

 

Trên đây là hướng đi của mình và đang gặp ngõ cụt. Nếu các bác có cách nào thông cái ngõ này ra hoặc có đường khác để đi xin hãy mách nước cho mình. Mình mong muốn có thể giải quyết vấn đề này thuần lisp vì mình chỉ biết mỗi lisp và mình áp dụng cái này cho 1 vài chương trình mình viết bằng lisp, nhưng nếu không thể thì bằng các ngôn ngữ khác cũng được. Cảm ơn các bác trước :D

 

Khi qua máy khác đó cũng phải load 1 code để thực hiện chứ? Nếu thế thì làm như vầy được không nhỉ?

1. Đọc dữ liệu lưu của bản vẽ.

2. Lưu 1 file lsp nội dung đó (có defun C:tenlenh()...) tại đường dẫn C:\\cadviet.lsp

3. (load C:\\cadviet.lsp)

4. (C:tenlenh)

 

Xin lỗi mọi người vì nội dung trả lời của mình trùng của TRUNGNGAMY . Vì mới đọc xong bài #1 mình bấm trả lời mà không đọc mấy #>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
Tue_NV    3.841

Vấn đề này mình vướng mắc cũng khá lâu rồi nhưng chưa có cách nào giải quyết được, hôm nay đành post lên đây mong các bác cùng thảo luận giải quyết vấn đề này giúp mình.

 

Nó ngắn gọn thế này thôi: Mình muốn lưu vào dữ liệu của 1 bản vẽ 1 đoạn code lisp, và khi đem bản vẽ đó mở ở bất kì máy nào, với bất kỳ đời cad nào có thể mở bản vẽ đó từ 2004 trở lên (thấp hơn nữa thì càng tốt) thì đoạn code lưu trong bản vẽ đó tự động được tải.

nôm na thì nó giống i xì như cách thức mà con virus Acad.lsp đã làm, nhưng mình không muốn bất kì file nào được tạo ra cùng bản vẽ. tất nhiên là không phải mình định viết 1 em virus phá anh em đâu nhé ^^

 

Mình tin chắc các bác cũng nhận thấy được rằng nếu thực hiện được công việc này thì ứng dụng của nó là rất lớn. Hiện tại thì mình mới chỉ giải quyết được 1/2 công việc, đó là lưu đoạn code đó vào Xrecord hoặc vào 1 trong các biến hệ thống Users# dưới dạng 1 chuỗi.

1/2 vấn đề khó khăn còn lại là mình không làm sao để cad có thể tự động đọc và tải đoạn code đó vào bản vẽ khi mở bản vẽ.

 

Trên đây là hướng đi của mình và đang gặp ngõ cụt. Nếu các bác có cách nào thông cái ngõ này ra hoặc có đường khác để đi xin hãy mách nước cho mình. Mình mong muốn có thể giải quyết vấn đề này thuần lisp vì mình chỉ biết mỗi lisp và mình áp dụng cái này cho 1 vài chương trình mình viết bằng lisp, nhưng nếu không thể thì bằng các ngôn ngữ khác cũng được. Cảm ơn các bác trước :D

để cad có thể tự động đọc và tải đoạn code đó vào bản vẽ khi mở bản vẽ

-> Bạn chép mã lệnh để Load Lisp vào file acad2008doc.lsp (2008 là phiên bản của CAD)

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
Doan Van Ha    2.676

Ý của bác Thái thế này cơ mà:

Mình muốn lưu vào dữ liệu của 1 bản vẽ 1 đoạn code lisp, và khi đem bản vẽ đó mở ở bất kì máy nào, với bất kỳ đời cad nào có thể mở bản vẽ đó từ 2004 trở lên (thấp hơn nữa thì càng tốt) thì đoạn code lưu trong bản vẽ đó tự động được tải.

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
nataca    553

Tự động load lisp (có sẵn trong bản vẽ hoặc bên ngoài) thì sẽ được coi là virut dù code có vì mục đích hòa bình hay phá hoại đi chăng nữa. Do vậy, phần mềm diệt virut nó cũng khử ngay thôi. Bỏ qua ý định này đi.

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
Tue_NV    3.841

Ý của bác Thái thế này cơ mà:

Mình muốn lưu vào dữ liệu của 1 bản vẽ 1 đoạn code lisp, và khi đem bản vẽ đó mở ở bất kì máy nào, với bất kỳ đời cad nào có thể mở bản vẽ đó từ 2004 trở lên (thấp hơn nữa thì càng tốt) thì đoạn code lưu trong bản vẽ đó tự động được tải.

Tue_NV bổ sung tiếp :

nôm na thì nó giống i xì như cách thức mà con virus Acad.lsp đã làm, nhưng mình không muốn bất kì file nào được tạo ra cùng bản vẽ

Đoạn code chép vào acad####doc.lsp sẽ là: kiểm tra và đọc code mà bạn ấy đã lưu trong bản vẽ sẽ open

acad####doc.lsp không phải là file được tạo ra mà nó có sẵn trong CAD

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
nataca    553

Tue_NV bổ sung tiếp :

Đoạn code chép vào acad####doc.lsp sẽ là: kiểm tra và đọc code mà bạn ấy đã lưu trong bản vẽ sẽ open

acad####doc.lsp không phải là file được tạo ra mà nó có sẵn trong CAD

nếu chép vào autocad của máy cần thực hiện thì cũng không khác mang file lisp theo là mấy. Ý của Thaistreetz là không cần mang theo bất cứ file nào theo ngoài file .dwg.

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
ketxu    2.652

VBA gán được trực tiếp vào file dwg - Nhưng các vấn đề của nó thì bác biết rồi đó ^^

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
Thaistreetz    515

Bác DVH, Ketxu và bác Nataca hiểu 9xác ý mình.

số là mình có 1 số ứng dụng sử dụng reactor, khổ một nỗi thằng reactor nó đòi hỏi phải có hàm callback để gọi đến cho 1 sự kiện.

Như đã biết, với object reactor thì các sự kiện được gán trực tiếp vào đối tượng trên bản vẽ. và khi gửi bản vẽ đi mình nhận được 1 số lời than phiền của đồng nghiệp rằng bản vẽ của mình hay bị báo lỗi lạ. sở dĩ có những lỗi này là do ở máy của người ta không có các hàm callback.

Ngoài ra thì nếu làm được việc này thì mình có thể viết được 1 ứng dụng bảo mật bản vẽ được nhúng luôn trong cơ sở dữ liệu bản vẽ, vấn đề này cũng khiến anh em tư vấn đau đầu từ khá lâu rồi.

 

Bác Nataca: bác cũng xem lại mấy ứng dụng sử dụng reactor trong lisp bác viết cho anh em cty mình đê, cũng rất hay bị báo lỗi kiểu vậy đấy, nó gây tâm lý rứt là khó chịu :lol:

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  

×