Trước đây mình khá đau đầu về việc khoá bản vẽ, có thể khoá bằng MINSERT, tuy nhiên có khoá thì có phá.
Theo như tìm hiểu thì có một đơn vị nào đó bán chương trình khoá bản vẽ và phải load lisp mới xem được file. Nếu không load lisp thì các object sẽ nhảy lung tung lệch toạ độ. Từ đó mình nảy sinh ý tưởng về việc này. Nói là đánh cắp ý tưởng nhưng trên thực tế lisp hoàn toàn do mình viết ra.
Thuật toán chia làm 2 phần.
Phần 1: Khoá Bản vẽ
Đưa toàn bộ đối tượng về layer Defpoint, gán màu đối tượng theo layer trước đó.
Từng đối tượng trong bản vẽ được tạo block MINSERT và đưa về toạ độ (0 0), (nếu có bẻ khoá được thì cũng rất mất công trong việc phá MINSERT cho từng đối tượng trong bản vẽ và gán lại layer phù hợp)
Lập danh sách tên đối tượng và toạ độ cũ để ghi vào phần 2
Lưu file lisp dạng FAS để gửi cho người xem bản vẽ.
Tên Lệnh LOCKDWG
Lưu ý. Sử dung VLISP sẵn của Autocad. Nếu Đang sử dụng Visual studio Code thì đổi variable LISPSYS về 0 trước khi sử dụng
Phần 2: Xem bản vẽ.
Thuật toàn bắt nguồn từ việc sử dụng Reactor để nhận diện những hành động không cho phép như Copy, Cut, Wblock, Save, Save As…
Trước mỗi hành động đó sảy ra Toàn bộ đối tượng tự động đưa về toạ độ (0 0)
Khi load lisp Xem Bản vẽ các đối tượng sẽ được đưa về toạ độ chính xác theo danh sách đã lập từ phần 1.
Tên Lệnh: “tự động khi load lisp” và ViewDWGLOCK
Mình gửi kèm file VLX ở cuối bài và sẽ không công khai lisp vì sẽ làm lộ mã nguồn dẫn đến việc crack bản vẽ bị khoá 1 cách dễ dàng. Anh em Code chuyên nghiệp thì không cần lisp vẫn phá khoá được thôi. :)) Nếu bạn nào thực sự muốn xin lisp để nghiên cứu có thể để lại email mình sẽ chọn lọc và gửi riêng.
LOCDWGTANADS.rar