Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
ssg

Lisp lấy thông tin Printer và PaperSize

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

Bạn philipdn gởi message nhờ ssg một việc:

... mình đang viết 1 cái lisp nhỏ nhỏ để dùng ứng dụng vào việc IN ấn trong công việc của riêng mình và áp dung cho mọi người trong Cty để đỡ nhàm chán và mất thời gian. Mọi người có dùng MPlot của bác Hoành nhưng do không quen và hay bị lỗi gì đó nên ko dùng được nữa. Giờ mình làm lại cái lisp nhỏ nhỏ áp dụng cụ thể vào từng loại máy in ở mỗi phòng (xí nghiệp) nhưng ngoặc nỗi, mỗi loại máy in có từng khổ giấy riêng biệt khác nhau nhưng mình lại ko thể nào viết cho mình đoạn code lấy khổ giấy (paper size) ứng với từng loại máy in đó. SSG có thể giúp đỡ cho 1 đoạn CODE LẤY TẤT CẢ (PaperSizeList) KHỔ GIẤY ỨNG VỚI TỪNG LOẠI MÁY IN KHI ĐƯỢC CHỌN.

Rất chân thành cảm ơn sự giúp đỡ của SSG.

Theo đúng "Tinh thần CADVIET", ssg không trả lời riêng mà post lên đây chia sẻ cùng các bạn:

 

(vl-load-com)
;;;-------------------------------------------------------
(defun ActLay () ;;;get Active Layout
(vla-get-ActiveLayout (vla-get-activedocument (vlax-get-acad-object)))
)
;;;-------------------------------------------------------
(defun PrintersList () ;;;get Printers List
(vla-RefreshPlotDeviceInfo (ActLay))
(vlax-safearray->list (vlax-variant-value (vla-GetPlotDeviceNames (ActLay))))
)
;;;-------------------------------------------------------
(defun CPrinter() ;;;get Current setting Printer
(vla-Get-Configname (ActLay))
)
;;;-------------------------------------------------------
(defun SysPrinter( / prn) ;;;get default System Printer - posted by gia_bach
(setq
 prn "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows"
 prn (vl-registry-read prn "Device")
 prn (substr prn 1 (vl-string-search "," prn))
)
)
;;;-------------------------------------------------------
(defun PaperList( / PLObj PSL) ;;;get Paper Size List
(setq PLObj (vla-GetCanonicalMediaNames (ActLay)))
(foreach i (vlax-safearray->list (vlax-variant-value PLObj))
 (setq PSL (append PSL (list (vla-GetLocaleMediaName (ActLay) i))))
)
)
;;;-------------------------------------------------------
(defun CPaperSize() ;;;get Current Paper Size
(vla-get-CanonicalMediaName (ActLay))
)
;;;-------------------------------------------------------

;;;CAC VI DU AP DUNG
;;;-------------------------------------------------------
(defun C:VD1() 
(alert (strcat
 "May in mac dinh cua he thong: " (SysPrinter) "\n"
 "May in dang chon: " (CPrinter) "\n"
 "Kho giay dang chon: " (CPaperSize)
))
)
;;;-------------------------------------------------------
(defun C:VD2()
(setq S "Danh sach cac kho giay:\n")
(foreach psi (PaperList)  (setq S (strcat S "\t" psi "\n")))
(princ S) (textscr) (princ)
)
;;;-------------------------------------------------------

 

Các functions trên là để "Get...", các bạn muốn "Set..." có thể tham khảo thêm ở đây và phát triển theo ý riêng:

http://www.cadviet.com/forum/index.php?showtopic=10921

 

@philipdn

Ssg lâu lâu mới vào diễn đàn. Nếu bạn post công khai thì có lẽ đã nhận được reply từ rất nhiều bạn khác rồi, chẳng phải chờ ssg!

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

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
Đăng nhập để thực hiện theo  

×