Đến nội dung


Hình ảnh

[Nhờ chỉnh sửa] Lisp tạo Print Area


  • Please log in to reply
4 replies to this topic

#1 quickandfine

quickandfine

    biết lệnh copy

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

Đã gửi 26 July 2012 - 12:02 PM

Em chào các anh. Em có xin được một đoạn lisp từ một người bạn có chức năng xác định các “Print area”. Cụ thể như sau ạ:
- Gõ lệnh IN, sau đó click chuột vào góc thứ nhất của khung tên, rồi chọn tiếp góc thứ 2 của khung tên, như vậy lisp sẽ xác định một “Print area” tương ứng. Sau đó lisp sẽ tạo thêm một dòng “VIEW” vào mục Plot area (Mặc định bao gồm Display, Extents, Layout, Window –trong Menu Ctlt+P của CAD). Trong mục “VIEW” này sẽ có các Print area tương ứng mà ta đã click chuột chọn lúc trước, được đặt tên là BV1, BV2…
- Khi em muốn in các bản vẽ này, Em Ctlt+P bình thường, rồi chọn mục “VIEW”, chọn tương ứng bản vẽ cần ìn, thiết lập giấy in, nét in… và in bình thường. Nhưng bây giờ có một vấn đề như sau:
- Đoạn lisp trên sẽ Lưu các Print area đó cho các lần in sau. Nhưng giả sử sau đó em lại move hoặc xóa đi phần Print area đó đi mất rồi thì Lisp vẫn ghi nhớ nó, và khi in thì nó ra một vùng trắng xóa chẳng có gì cả.
- Em muốn nhờ các anh viết thêm cho một đoạn lisp xóa các “VIEW” đó đi ạ, để lỡ đâu mình move hoặc xóa Print area đi rồi thì mình có thể làm lại, chứ nếu không , giả sử lúc đầu có 2 view là BV1 và BV2 thôi, nhưng em xóa đi một Print area đi rồi, ấn IN tiếp thì nó lại bắt đầu từ BV3,BV4…Như thế em không kiểm soát được đâu là bản vẽ nào khi VIEW cả.
- Em gửi kèm một bản vẽ lên, trong đó lần trước em có VIEW được 10 bản vẽ rồi, nhưng giờ thì chỉ còn ít hơn, Giờ ý em là muốn xóa mục VIEW đi để lúc nào cần thì mình có thể tạo lại ạ

File lisp:
http://www.cadviet.c..._ban_vein_3.lsp
File Cad em không up được lên đây, em upload qua mediafire:
http://www.mediafire...6j19d342cplboub
Em xin cảm ơn ạ!
  • 0

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 26 July 2012 - 03:18 PM

Em chào các anh. Em có xin được một đoạn lisp từ một người bạn có chức năng xác định các “Print area”. Cụ thể như sau ạ:
- Gõ lệnh IN, sau đó click chuột vào góc thứ nhất của khung tên, rồi chọn tiếp góc thứ 2 của khung tên, như vậy lisp sẽ xác định một “Print area” tương ứng. Sau đó lisp sẽ tạo thêm một dòng “VIEW” vào mục Plot area (Mặc định bao gồm Display, Extents, Layout, Window –trong Menu Ctlt+P của CAD). Trong mục “VIEW” này sẽ có các Print area tương ứng mà ta đã click chuột chọn lúc trước, được đặt tên là BV1, BV2…
- Khi em muốn in các bản vẽ này, Em Ctlt+P bình thường, rồi chọn mục “VIEW”, chọn tương ứng bản vẽ cần ìn, thiết lập giấy in, nét in… và in bình thường. Nhưng bây giờ có một vấn đề như sau:
- Đoạn lisp trên sẽ Lưu các Print area đó cho các lần in sau. Nhưng giả sử sau đó em lại move hoặc xóa đi phần Print area đó đi mất rồi thì Lisp vẫn ghi nhớ nó, và khi in thì nó ra một vùng trắng xóa chẳng có gì cả.
- Em muốn nhờ các anh viết thêm cho một đoạn lisp xóa các “VIEW” đó đi ạ, để lỡ đâu mình move hoặc xóa Print area đi rồi thì mình có thể làm lại, chứ nếu không , giả sử lúc đầu có 2 view là BV1 và BV2 thôi, nhưng em xóa đi một Print area đi rồi, ấn IN tiếp thì nó lại bắt đầu từ BV3,BV4…Như thế em không kiểm soát được đâu là bản vẽ nào khi VIEW cả.
- Em gửi kèm một bản vẽ lên, trong đó lần trước em có VIEW được 10 bản vẽ rồi, nhưng giờ thì chỉ còn ít hơn, Giờ ý em là muốn xóa mục VIEW đi để lúc nào cần thì mình có thể tạo lại ạ

File lisp:
http://www.cadviet.c..._ban_vein_3.lsp
File Cad em không up được lên đây, em upload qua mediafire:
http://www.mediafire...6j19d342cplboub
Em xin cảm ơn ạ!

Hề hề hề,
Gửi bạn một đoạn lisp dùng để xóa sạch các view trong bản vẽ mà bạn đã tạo ra bởi cái lisp bạn gửi. Mình không muốn ghép nó vào trong lisp củ vì e rằng nhỡ bạn làm lộn thì lại mất công làm lại.
Nếu bạn muốn ghép hai cái lisp với nhau thì mình sẽ chỉ bạn ghép sau nhé.
Hãy thử và cho ý kiến.


(defun c:xv (/ a b )
(setq a (tblnext "view" T))
(while a
(setq b (cdr (assoc 2 a)) )
(if (wcmatch b "BV*")
(command "view" "d" B)
)
(setq a (tblnext "view"))
)
)
Chúc bạn vui.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 quickandfine

quickandfine

    biết lệnh copy

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

Đã gửi 26 July 2012 - 03:53 PM

Em dùng được rồi. Đúng ý em rồi anh Bình ạ. Thôi, em cũng muốn để nó riêng ra cho đỡ rắc rối kẻo em lại không kiểm soát được. Cảm ơn anh nhiều nhiều nhé!
  • 0

#4 quickandfine

quickandfine

    biết lệnh copy

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

Đã gửi 28 July 2012 - 10:01 PM

Chào anh Bình và toàn thể các anh em trên diễn đàn.
Anh Bình và các anh cho em hỏi thêm một chút về vấn đề này ạ.
Khi em dùng đoạn lisp tạo View in mà em nói ở trên ấy, sau khi tạo được hết các View in từ BV1 - BVi (i là số bản vẽ), em đã thiết lập hết các thông số như máy in, nét in, kiểu in (Center plot, Scale thường là 1:1 (1mm=1unit), rất ít khi em in theo kiểu Fit trừ trường hợp khung tên của dự án không chuẩn thì bắt buộc phải it Fit)...Thì có thể viết thêm một đoạn lisp nữa để in một lần toàn bộ các BV đó không ạ? Em xin cảm ơn ạ!
  • 0

#5 quickandfine

quickandfine

    biết lệnh copy

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

Đã gửi 29 July 2012 - 07:17 PM

Chào các anh ạ.
Em mới nghĩ ra là yêu cầu trước của em có chỗ không được ổn cho lắm. Theo em thì chắc là tuần tự phải thế này ạ:
1- Tạo các View in để được các BV1-BVi ( cái này lisp của em sưu tầm đã làm được)
Các bước tiếp theo (Em nhờ các anh viết lisp giúp) là:
2- Thiết lập các thông số in ấn:
a/- Máy in: Sẽ hỏi và chọn một trong số các máy in đang được cài đặt trong máy tính
b/- Nét in: Sẽ hỏi và chọn một trong số các Plot style có trong Plot stype manager.
c/- Plot are: là các BV em đã tạo trước đó (BV1-BVi)
d/- Plot offset: Center Plot
e/-Plot Scale: Sẽ hỏi 2 dạng là (1) 1mm=1unit (ưu tiên cái này trước) và (2) Fit to paper.
f/ Khổ giấy là A3, Landscape
3- In ấn: Sẽ in theo thứ tự từ BV1 đến BVi
Em xin cảm ơn ạ!
  • 0