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

MPL-MultiPlot _ in nhiều bản vẽ trong file DWG (Layout + Model)

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

Hôm nay lễ chia sẽ cùng các Bạn lisp in bản vẽ mình đang sử dụng, lips này là bản nâng cấp và có giao diện đơn giản hơn so với lisp trước đây:

 

* Công dụng: in nhiều bản vẽ trong Layout hoặc Model của file dwg với nhiều lựa chọn

* Tên lệnh : MPL

* Hướng dẫn:

2115803104_2019-04-15(1).png.44adcb3debc47113abbf7ab69bfd16e5.png

 

- Phần plotter, paper, plotstyle các Bạn chọn cho phù hợp với nhu cầu

- Nút lệnh kế bên plotstyle là để sửa nét in ctb hiện hữu.

- Phần "Sample", nhấn nút hình cái phểu để chọn mẫu làm điều kiện lọc. Mẫu là tên của các block HOẶC tên layer của các polyline, khi chọn xong thì chữ "sample" sẽ đổi thành block hoặc layer, nếu vẫn còn chữ sample là khi bạn chọn có cả block và polyline hoặc không chọn gì cả.

- L => R, T => B: là chế độ sắp xếp thứ tự các bản vẽ được in ra, chế độ "select order" là cái nào chọn trước thì được in trước. Điểm cơ sở để sắp xếp là góc dưới bên trái của hình chữ nhật bao block hoặc polyline

- Sau khi đã chọn mẫu hợp lệ thì nhấn nút "Select" để chọn các bản vẽ cần in hoặc plotpreview

- Khi đã chọn được các bản vẽ cần in thì tổng số bản vẽ sẽ được in hiện trong danh sách kế bên nút hình kính lúp

- Khi nhấn nút hình kính lúp thì sẽ chuyển qua chế độ plotpreview của bản vẽ đang hiện trong danh sách, nếu thay đổi số thứ tự trrong danh sách thì sẽ plotpreview bản vẽ theo số thứ tự được chọn

- nút "Plot <ALL>" để in các khung in đã chọn. Nếu không có các khung in chọn bởi nút "Select" thì sẽ in tất cả các khung in trong model/layout hiện hữu thỏa mãn điều kiện lọc là block hoặc layer

Nút  "CADVIET" là để đi đến bài viết này trên CadViet.com

Phần Options thì các Bạn tự khám phá nhé

 

@ Lisp này mình viết cho công việc của mình nên các phần in ra file ảnh, PLT, DWF mình không làm. Riêng file PDF thì dùng phần mềm pdfFactory Pro để cài máy in ảo, khi in file pdf thì chọn máy in này, sau khi save thì tất các các bản vẽ sẽ nằm trong 1 file rất dễ quản lý

Cập nhật 01/12/2023: thêm các lựa chọn sắp xếp khi in, lưu cấu hình của giao diện ra file (trước khi in Bạn phải chọn máy in, giấy và nét in cho phù hợp), fix lỗi

MPL 1-12(01Dec2023).rar

 

Cập nhật 11/3/2022: Cho phép thay đổi biên độ để tính Auto scale. In với các block động. Lưu lại đường dẫn khi xuất bản in ra file

MPL1_11-11Mar2022.rar

 

Cập nhật 22/6/2020: Sửa lỗi ghi các file thành dạng *.plt khi chọn thư mục khác với thư mục bản vẽ đang in

MPL1_10-22Jun2020.rar

 

Cập nhật 1/1/2020: Chọn thư mục khi in file, đưa trở lại lệnh "PLC" để in liên tục theo cấu hình in trước đó mà không cần mở giao diện

- khi chọn chức năng "Plot to file" sẽ xuất hiện giao diện chọn thư mục để lưu file, nếu chọn nút nút Cancel thì mặc định sẽ lưu tại thư mục bản vẽ đang in

- lệnh "PLC" sẽ in theo cấu hình của lần in trước trên model hoặc layout( máy in, giấy, nét in, block/layer, ...). Khi được yêu cầu chọn đối tượng để in, nếu enter thì sẽ chọn tất cả các đối tượng block/layer trên model hoặc layout hiện hành thỏa mãn điều lọc để in

MPL-1Jan2020.rar

 

Cập nhật 4/7/2019: sửa lổi in nhiều file khi chọn in ảnh, DWF, PDF của các máy in *.pc3

MPL-4Jul2019.rar

 

Cập nhật 3/7/2019

MPL-3Jul2019.rar

- Đưa trở lại tính năng in ảnh, DWF, PDF của các máy in *.pc3

- Đưa trở lại tính năng collated khi in nhiều bộ bản vẽ (in  1,1/2,2/3,3 hoặc 1,2,3/1,2,3)

- Hỗ trợ Auto scale theo scale list của acad ở hệ metric (tên scale có dạng 1:100, 2:1, ...) với biên độ 5%. VD: nếu fit to page có tỉ lệ 1/95 đến 1/105 thì auto scale về tỉ lệ 1/100 đã có trong scale list của acad, nếu không có trong scale list thì sẽ tự động fit to page

- Sửa lỗi để lisp chạy nhanh và ổn định hơn

 

MPL.rar

Nếu giải nén bị lỗi thì tìm Winrar bản mới nhất để giải nén nhé

 

Các bản cũ:

http://www.cadviet.com/upfiles/3/3202_mplmultiplot_1.rar

 

@30/5/2014: Cập nhật:

http://www.cadviet.com/upfiles/3/3202_mplmultiplot_3.rar

 

@11/11/2014: Cập nhật

http://www.cadviet.com/upfiles/4/3202_mplmultiplot.rar

 

MPL.rar

 

 

  • Like 26
  • Vote tăng 14

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

Chào bạn tien2005!

Lisp chưa sử dụng với khung tên là Block Dynamic. Bạn viết thêm mã bổ sung nhé!

Thanks

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

Thanks Tue_NV

 

Khung tên block dynamic có phải là khung ngang và khung đứng? Khi chuyển block dynamic thì boundary của nó có thay đổi tương ứng với khung tên không?

Khi viết lisp mình không nghĩ sẽ có block dynamic. Bạn có khung mẫu nào cho mình tham khảo

Lisp chọn block dynamic theo dxf nào. Mình nhớ không lầm thì chon được tên block dynamic theo vlisp (mất công chuyển ename-> object, object -> ename)

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

Hôm nay cuối tuần chia sẽ cùng các Bạn lisp in bản vẽ mình đang sử dụng:

 

* Công dụng: in nhiều bản vẽ trong file dwg với nhiều lựa chọn

* Tên lệnh : MPL

* Hướng dẫn:

3202_mpl_1.jpg

 

- Phần plotter, paper, plotstyle các Bạn chọn cho phù hợp với nhu cầu

- Nút “Add” là để thêm file plotstyle (*.ctb hoặc *.stb) vào autocad

- Có 3 chế độ chọn đối tượng để xác định khung in:

  +Polyline: chọn 1 polyline có các đoạn thẳng là đường chéo của các khung in, các đoạn thẳng lẻ (1, 2, 3, ..) của polyline sẽ xác định vùng in. Sau khi chọn thì polyline này sẽ được lisp chuyển sang 1 layer không in

  +Block: bấm nút "Pick" rồi chọn block khung tên để lisp xác định tên của block cần chọn sau này

  + Rectangle: bấm nút "Pick" rồi chọn polyline để lisp xác định tên layer của các polyline cần chọn sau này

 

- Sort:

  +Normal: đối ttượng nào chọn trước thì in trước, chọn sau in sau

  + Left to Right  và Top to Bottom: chỉ các tác dụng khi chọn theo Block hoặc Rectangle, sắp xếp các khung in theo thứ tự từ trái qua phải hoặc từ trên xuống dưới

 

- Plot to file: in ra các file *.plt, các file *.plt được tạo sẽ nằm cùng thư mục với file dwg, tên file sẽ là tên của file dwg + số thứ tự (cách đặt tên này tương tự cho các máy in *.pc3 xuất ra các file PDF và DWF)

- Rotation paper: xoay trang giấy 90 độ (giống như Landscape ó Portrait)

- Nút “Select” là để chọn các khung in theo Polyline, Block, Rectangle

 

Sau khi chọn các khung in và plotter, plotstyle hợp lệ thì các nút “Preview” và “Print” sẽ sáng lên đồng thời cũng báo có bao nhiêu khung in đã được chọn

 

Chú ý:

- Lisp sẽ in giữa trang giấy (center the plot)

- Danh sách các loại giấy mình đã lọc ra các loại thường dùng. Nếu có các loại giấy do người dùng tự định nghĩa thì chú ý đặt tên giấy phải có các ký tự A0, A1, A2, A3, A4, A5 , khi đó loại giấy này mới thể hiện trong danh sách

 

http://www.cadviet.com/upfiles/3/3202_mplmultiplot_1.rar

 

Chúc các Bạn cuối tuần vui vẽ.

 

Cám ơn bạn tien2005 đã chia sẻ, trước trên diễn đàn có 1 lisp in tương tự như của bạn nhưng tỉ lệ in của lisp đó chưa chuẩn, lisp này của bạn mình đã thử thấy tỉ lệ thế là ok rồi tuy nhiên mình có mấy ý kiến với lisp này nữa:

   - phần tỉ lệ: thiếu tỉ lệ 1:150, cái tỉ lệ này cũng hay dùng mà. bạn bổ sung thêm tỉ lệ này hoặc cho thêm phần tự gõ tỉ lệ thì tốt

   - chưa in được bên layout: thử in bên layout thì nó toàn tự nhảy về model.

   - khi mở 1 bản vẽ khác thì những lựa chọn khung tên (block hay rectang) không còn được lưu, lại phải chọn lại, điều này làm hơi mất công 1 chút

 

Đó là những ý kiến của mình về lisp in này. hi vọng bạn có thể sửa được để lisp hoàn thiện hơ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

Làm mình liên tưởng đến MPlot của bác Hoành :D . Cảm ơn bạn đã chia sẻ. Voted ^^

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

Cám ơn bạn tien2005 đã chia sẻ, trước trên diễn đàn có 1 lisp in tương tự như của bạn nhưng tỉ lệ in của lisp đó chưa chuẩn, lisp này của bạn mình đã thử thấy tỉ lệ thế là ok rồi tuy nhiên mình có mấy ý kiến với lisp này nữa:

   - phần tỉ lệ: thiếu tỉ lệ 1:150, cái tỉ lệ này cũng hay dùng mà. bạn bổ sung thêm tỉ lệ này hoặc cho thêm phần tự gõ tỉ lệ thì tốt

   - chưa in được bên layout: thử in bên layout thì nó toàn tự nhảy về model.

   - khi mở 1 bản vẽ khác thì những lựa chọn khung tên (block hay rectang) không còn được lưu, lại phải chọn lại, điều này làm hơi mất công 1 chút

 

Đó là những ý kiến của mình về lisp in này. hi vọng bạn có thể sửa được để lisp hoàn thiện hơn

 

Mình là rất kết khoản in nhanh và tỉ lệ chính xác của lisp này, bác tien2005 hoàn thiện một số điểm cho ngon đi bạn. Thanks

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

@30/5/2014: Cập nhật:

- Chọn được các block dynamic

- Thêm tùy chỉnh tỉ lệ khi in

- Lấy lại cấu hình in lần trước (khi đóng autocad thi không lấy được cấu hình cũ)

 

Link download cập nhật ở bài #1

  • 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

@30/5/2014: Cập nhật:

- Chọn được các block dynamic

- Thêm tùy chỉnh tỉ lệ khi in

- Lấy lại cấu hình in lần trước (khi đóng autocad thi không lấy được cấu hình cũ)

 

Link download cập nhật ở bài #1

Bạn có thể lưu lại được giá trị đã dùng ở lần trước kể cả khi đóng và mở lại cad, nếu muốn. Tìm 2 hàm LM:WriteConfig và LM:ReadConfig của Lee Mac.

  • 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

@30/5/2014: Cập nhật:

- Chọn được các block dynamic

- Thêm tùy chỉnh tỉ lệ khi in

- Lấy lại cấu hình in lần trước (khi đóng autocad thi không lấy được cấu hình cũ)

 

Link download cập nhật ở bài #1

 

Lisp này khá ngon rồi, chỉ còn mỗi chưa dùng được bên layout thôi.

Nếu dùng được cho cả layout là tuyệt vời :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

Chức năng down của CV dạo này sao í!


;--------------------------------------------------------------------------- §äc vµ Ghi file CFG --------------------------------- Xem file "Cang_day.lsp" + "Khoang_cot_so_bo.lsp" sÏ râ b¶n chÊt.
;Xem thªm ë folder "SKCT_2012" ®Ó hiÓu râ h¬n.
;----- Ghi vµo file cfg.
(defun LM:WriteConfig (filename ValList / ofile)
 (if (setq ofile (open filename "w")) 
  (progn
   (foreach x ValList (write-line (vl-prin1-to-string x) ofile))
   (setq ofile (close ofile))
   T)))
;----- §äc tõ file cfg.
(defun LM:ReadConfig (filename SymList / ofile)
 (if (and (setq filename (findfile filename)) (setq ofile (open filename "r")))
  (progn
   (foreach x SymList (set x (read (read-line ofile))))
   (setq ofile (close ofile))
   T))) 
;----- Hµm lÊy Path cña file l­u.
(defun LM:GetSavePath ( / tmp)
 (cond      
  ((setq tmp (getvar 'ROAMABLEROOTPREFIX))
   (or (eq "\\" (substr tmp (strlen tmp))) (setq tmp (strcat tmp "\\")))
   (strcat tmp "Support"))
  ((setq tmp (findfile "ACAD.pat"))
   (setq tmp (vl-filename-directory tmp))
   (and (eq "\\" (substr tmp (strlen tmp))) (setq tmp (substr tmp (1- (strlen tmp)))))
   tmp)))
;-----Example1: nªu biªt 1 sè val mÆc ®inh cña vallst.
(defun C:TEST1()
 (setq fcfg (strcat (LM:GetSavePath) "\\Cang_day.cfg")) ;§Æt tªn file cfg trong th­ môc gèc ®Ó ghi.
 (setq keylst '(tldai tlcao tmcon)) ;List c¸c Key trong Dialoge.
 (setq vallst (list "1" "10" 'nil "DZ_XYZ"))   ;Set c¸c Val ban ®Çu t­¬ng øng c¸c Key (mÆc ®Þnh lóc ®Çu).
 (or (findfile fcfg) (LM:WriteConfig fcfg vallst)) ;Neu ch­a co file cfg th× ghi c¸c Val ban ®Çu.
 (LM:ReadConfig fcfg keylst) ;§äc c¸c Val trong file cfg.
 (mapcar '(lambda (key val) (or (boundp key) (set key val))) keylst vallst) ;G¸n c¸c Val vµo c¸c Key trong Dialoge.
;Lµm nh÷ng viÖc g× ®ã ë ®©y!!! ;Ho¹t ®éng cña ch­¬ng tr×nh
 (LM:WriteConfig fcfg (mapcar 'eval keylst))) ;Ghi c¸c Val lÊy ®­îc tõ Dialoge ra file cfg (ghi mÆc ®Þnh míi). §Æt cuèi c.tr×nh
;-----Example2: nªu kh«ng biªt tÊt c¶ mÆc ®inh cña vallst.
(defun C:TEST2()
 (setq fcfg (strcat (LM:GetSavePath) "\\Cang_day.cfg")) ;§Æt tªn file cfg trong th­ môc gèc ®Ó ghi.
 (setq keylst '(tldai tlcao tmcon)) ;List c¸c Key trong Dialoge.
 (LM:ReadConfig fcfg keylst) ;§äc c¸c Val trong file cfg.
 (mapcar '(lambda (key val) (or (boundp key) (set key val))) keylst vallst) ;G¸n c¸c Val vµo c¸c Key trong Dialoge.
;Lµm nh÷ng viÖc g× ®ã ë ®©y!!! ;Ho¹t ®éng cña ch­¬ng tr×nh
 (LM:WriteConfig fcfg (mapcar 'eval keylst))) ;Ghi c¸c Val lÊy ®­îc tõ Dialoge ra file cfg (ghi mÆc ®Þnh míi). §Æt cuèi c.tr×nh
 

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

Thanks Doan Van Ha

- Mình lưu cấu hình in cũ với tên list "dị" 1 chút chắc sẽ không ảnh hưởng đến các lisp khác của người dùng

- Mình mới cài lại Windown7 pro thì cũng dùng cách lưu file rồi đọc lại rất OK, tuy nhiên sau đó W7 update thì bị lỗi, kiểm tra thì thấy dòng lệnh (setq ofile (open filename "w")) báo string nil. Đến bây giờ chưa biết được W7 update phần nào mà gây ra lỗi trên mong rằng trong tương lai các Bạn không gặp phải lỗi trên. Nếu biết cách khắc phục lỗi trên thì hãy cùng chia sẽ (đừng nói là không update Windown :)  )

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ôi chưa gặp lỗi và cũng không biết bạn ghi và đọc theo kiểu gì nên khó phán đoán.

Cách của tôi là: tìm file "A", nếu chưa có thì tạo file "A" rồi ghi vào, nếu có file "A" rồi thì đọc nó để lấy giá trị default. Bằng cách đó tôi nghĩ việc báo filename nil là khá vô lý (xem hàm C:TEST1).

P/S: hoặc bạn ghi vào thư mục của bạn để khỏi bị quấy rầy khi update Window?

 

 (setq fcfg (strcat (LM:GetSavePath) "\\Cang_day.cfg")) ;§Æt tªn file cfg trong th­ môc gèc ®Ó ghi.
 (setq keylst '(tldai tlcao tmcon)) ;List c¸c Key trong Dialoge.
 (setq vallst (list "1" "10" 'nil "DZ_XYZ"))   ;Set c¸c Val ban ®Çu t­¬ng øng c¸c Key (mÆc ®Þnh lóc ®Çu).
 (or (findfile fcfg) (LM:WriteConfig fcfg vallst)) ;Neu ch­a co file cfg th× ghi c¸c Val ban ®Çu.
 
 (setq fcfg (strcat (LM:GetSavePath) "\\Cang_day.cfg")) ;§Æt tªn file cfg trong th­ môc gèc ®Ó ghi.
 (setq keylst '(tldai tlcao tmcon)) ;List c¸c Key trong Dialoge.
 (setq vallst (list "1" "10" 'nil "DZ_XYZ"))   ;Set c¸c Val ban ®Çu t­¬ng øng c¸c Key (mÆc ®Þnh lóc ®Çu).
 (or (findfile fcfg) (LM:WriteConfig fcfg vallst)) ;Neu ch­a co file cfg th× ghi c¸c Val ban ®Çu.

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 cũng biết tí lisp nên cũng từng gặp lỗi này, lỗi này hình như là do Win không cho tạo file bằng lên đó mà chưa có quyền administrator, nếu chuyển sang tạo file ở ổ khác ở cài win thì không sao. Ngày xưa mình toàn tạo file DCL trong lisp rồi load lisp để tạo DCL nên bị lỗi khi lên Win7 và Win8, giờ chuyển sang ổ D, E thì Oke. Không biết mình nói đúng không, nếu đúng thì bác nào biết cách chiếm quyền admin để cho phép ghi và sửa file thì chia sẽ. Thanks.

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

Nếu Bạn không có quyền admin thì ghi chép lên ổ hệ thống nó sẽ không cho. User của mình có quyền admin nên mới cài đặt được chương trình lên máy nhưng với câu lệnh trên thì lỗ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

Ái dà! Mình cũng từng tạo DCL trong LSP, rồi load LSP để tạo DCL. Cũng như thường ghi như đã nói với bạn tien05 nhưng không hề bị lỗi.

Không biết lỗi do đâu? Hy vọng có ai đó biết rõ bản chất.

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 không sử dụng được, các bước đã chọn như trong hình không thấy được preview và print.

Lisp có in được ở layout không? Khi ở layout mình chọn block in là tự nhảy về model.

Thanks

 

http://i1374.photobucket.com/albums/ag428/Hokudai/Untitled_zps9e8aabe9.png

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 không sử dụng được, các bước đã chọn như trong hình không thấy được preview và print.

Lisp có in được ở layout không? Khi ở layout mình chọn block in là tự nhảy về model.

Thanks

 

Bạn phải nhấn nút "Select" để chọn các khung in, đồng thời plotter, plotsrtyle phải hợp lệ thì các nút "preview" và "print" mới sáng lên. Nếu không được thì hãy gửi bản vẽ lên

  • 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

Bạn phải nhấn nút "Select" để chọn các khung in, đồng thời plotter, plotsrtyle phải hợp lệ thì các nút "preview" và "print" mới sáng lên. Nếu không được thì hãy gửi bản vẽ lên

 

Mình làm được rồi, thiếu bước nhấn nút "select"

 

Còn in ở layout làm không được. Khi chọn "block" là nó tự nhảy về model không chọn đuợc block.

Thêm 1 vấn đề nữa là mình muốn thêm plot stamp nhưng không biết cách

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

Plot stamp Bạn thể hiện những gì?

Sao không dùng Insert/field vào block khung tên. Viết thêm rất phức tạp và làm rối giao diện

  • Like 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

×