18/11/2025

Lisp miễn phí import nhiều trang PDF vào bản vẽ AutoCAD | Multiple pages import PDF into AutoCAD drawing | AutoLISP Reviewer

Ứng dụng được phát triển/Sưu tầm bởi đội ngũ AutoLISP Thật là đơn giản
   

Thông tin thêm: 👉👉👉

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)



Kết quả: Các trang PDF được import đặt cạnh nhau liên tục



Hướng dẫn sử dụng

Bước 1: Gọi lệnh
Bước 2: Chọn File PDF cần đưa vào Autocad (lưu ý đường dẫn và tên file không được có kí tự đặc biệt và tiếng việt có dấu)
Bước 3: Pick điểm đặt Khung Giấy A3 đầu tiên
Bước 4: Page cell width để mặc định - Bấm Enter
Bước 5 : Nhập đoạn gap giữa mỗi khung A3 , để mặc định 50mm - Bấm Enter
Bước 6: Nhập page bắt đầu - Enter
Bước 7: Nhập trang kết thúc - Enter
Bước 8: Chọn import - Enter
Bước 9: Chọn All - Enter

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!


In nhanh PDF

Ứng dụng in nhanh D2P do AJS phát triển!

    


Mã nguồn


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)



---------------------------------------------------------------------------------------------
Ứng dụng được phát triển bởi đội ngũ AutoLISP Thật là đơn giản - Tác giả ứng dụng in D2P

    

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

sxCAD là gì | Giới thiệu phần mềm sxCAD | AutoLISP Reviewer

Ứng dụng được phát triển/Sưu tầm bởi đội ngũ AutoLISP Thật là đơn giản     Thông tin thêm: 👉👉👉