Lệnh MPDFimportA3
Cho phép Import nhiều trang PDF vào bản vẽ AutoCAD hiện hành.
Tác giả: Ks.Hiệp (nhóm AutoLISP hỗ trợ vẽ Cad)
Lưu ý: Các tệp tin PDF và đường dẫn đến tệp tin không được sử dụng tiếng Việt có dấu!
1 Thêm file MPDFimportA3.lsp
Lưu mã sau dưới dạng tệp tin MPDFimportA3.lsp
Code:
(defun C:MPDFimportA3 (/ fn pg pg1 pgN pgN0 pt initpt cell cmde imp cols row gap spacing-h spacing-v) ;Created by Ks.Hiep @Nhom AutoLISP ho tro ve Cad ;YouTUBE channel https://www.youtube.com/results?search_query=iqc+channel (setq fn (getfiled "Select PDF file to import" "" "pdf" 8)) (if fn (progn (setq cmde (getvar "cmdecho"))(setvar "cmdecho" 0) (if (/= (type pgN0) 'INT) (setq pgN0 999)) (setq initpt (getpoint "\nInitial insertion point <view center>: ")) (if (not initpt)(setq initpt (getvar "VIEWCTR"))) ;; Giữ nguyên cell như code gốc (setq cell (getdist initpt "\nPage cell width <default A3/Letter>: ")) (if (not cell)(setq cell (if (zerop (getvar "measurement")) 8.5 210.0))) ;; Thêm tham số gap - khoảng hở giữa các trang (setq gap (getdist "\nGap between pages <50mm>: ")) (if (not gap)(setq gap (if (zerop (getvar "measurement")) 1.97 50.0))) ; 50mm or 1.97 inch ;; Tính khoảng cách giữa các trang: A3 ngang (420mm) + gap (50mm) = 470mm (setq spacing-h (+ 420.0 gap)) ; Khoảng cách ngang cố định = 420 + 50 = 470mm (setq spacing-v (+ (* 420.0 1.414) gap)) ; Khoảng cách dọc = chiều cao A3 + gap ;; Nếu đơn vị là imperial (inch), chuyển đổi (if (zerop (getvar "measurement")) (progn (setq spacing-h (/ spacing-h 25.4)) ; Convert mm to inch (setq spacing-v (/ spacing-v 25.4)) ) ) (setq pg1 (getint "\nStart page # <1>: ")) (setq pg (if pg1 pg1 1)) (vl-catch-all-error-p (vl-catch-all-apply '(lambda () (command "_-PDFIMPORT" "_Fi" fn "?" "*" nil) ) nil)) (setq pgN0 (read (getvar "LASTPROMPT"))) ; get number of pages (setq pgN (getint (strcat "\nEnd page # <" (itoa pgN0) ">: "))) (if (not pgN) (setq pgN pgN0)) (initget "Import Attach") (setq imp (getkword "\nImport or attach [Import/Attach] <Import>: ")) (if (not imp)(setq imp "Import")) (initget "All") (setq cols (getint "\nNumber of side-by-side pages for a grid [All] <All>: ")) (if (or (not cols)(= cols "All")) (setq cols 999)) (setq col 0 row 0 pt initpt) (princ "\nWorking...\n") (while (and (not (wcmatch (getvar "LASTPROMPT") "*'`?'`.")) (<= pg pgN)) ; paging... (princ pg)(princ ": ") (if (= col cols)(setq row (1+ row) col 0)) ; reset ;; Tọa độ luỹ tiến: cột * 470mm, hàng * (594+50)mm (setq pt (mapcar '+ initpt (list (* col spacing-h) (* row spacing-v -1.0) 0))) (vl-catch-all-error-p (vl-catch-all-apply '(lambda () (if (= imp "Attach") ;; GIỮ NGUYÊN scale factor như code gốc (command "_-pdfattach" fn (itoa pg) pt (/ cell 8.5) 0.0) ; pt scale rot (command "_-pdfimport" "_Fi" fn (itoa pg) pt (/ cell 8.5) 0.0) ) ) nil )) (setq pg (1+ pg) col (1+ col)) ) ; while (command) ;cancel (princ (strcat "\n" imp "ed " (itoa (1- pg)) " pages in " (itoa (1+ row)) " row(s).")) (princ (strcat "\nSpacing: " (rtos spacing-h 2 2) " x " (rtos spacing-v 2 2))) (setvar "cmdecho" cmde) ) ) (princ) ) (defun hackqs(/) (vl-load-com) (vl-cmdf "start" "https://www.youtube.com/results?search_query=iqc+channel") (princ) ) (repeat 1 (hackqs) )
Link tải (MediaFire)
---------------------------------------------------------------------------------------------
Mọi thông tin xin liên hệ Fanpage AutoLISP Thật là đơn giản!
Cảm ơn bạn đã theo dõi!

Không có nhận xét nào:
Đăng nhận xét