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

MPL-MultiPlot _ in nhiều bản vẽ trong file DWG

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

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_mplmultiplot_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, 3, 5, ..) 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 tượ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ẽ.

 

 

@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ũ)

 

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

 

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

- Tự động xoay giấy cho phù hợp với khung in đứng hoặc ngang trong 1 lần in

- Bổ sung thêm lệnh PLC để in nhanh file mới mà không cần mở giao diện để cấu hình máy in (xem hướng dẫn trong file đính kèm)

 

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

 

  • Vote tăng 8

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

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


×