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

tannguyen291

Thành viên
  • Số lượng nội dung

    449
  • Đã tham gia

  • Lần ghé thăm cuối

  • Ngày trúng

    43

Bài đăng được đăng bởi tannguyen291


  1. 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


  2. Mình là kiến trúc sư quy hoạch đây bạn. Mình viết khá nhiều lisp và VBA để sử dụng cho mục đích cá nhân. Tuy nhiên việc chia lô phải căn ke khá kỹ nên mình chưa nghĩ đến 1 thuật toán nào cho việc này. Nó phụ thuộc quá nhiều yếu tố vô định như diện tích, kích thước mặt tiền chẵn, lô méo... khá là loằng ngoằng.

×