簡易cad匯出pdf程式原始碼

2021-10-03 04:51:38 字數 2655 閱讀 4372

由於工作關係時常用到cad轉pdf

(defun c:pdf (/ all-boxlst boxlst i maxpt minpt n out-id print-device print-front print-***** print-space print-style print-unit)

(princ 「/n此程式只能應用於簡易的pdf列印,需要安裝pdffactory虛擬印表機,預設圖紙尺寸為a3,列印樣式為全黑,打比例為布滿圖紙」)

(vl-load-com)

(setq print-space 「model」)

(setq print-device 「pdffactory pro」)

(setq print-style 「monochrome.ctb」)

(setq print-***** 「a3」)

(setq print-unit 「millimeters」)

(setq all-boxlst (all-boxlst-get))

(setq i 0)

(setq n (length all-boxlst))

(while (< i n)

(setq boxlst (nth i all-boxlst))

(setq minpt (car boxlst))

(setq maxpt (cadr boxlst))

(setq print-front (judge-print-front boxlst))

(setq out-id (file-path/name-get))

(command 「plot」 「y」 print-space print-device print-***** print-unit print-front 「n」 「w」 minpt maxpt 「f」 「c」 「y」 print-style 「y」 「w」 「y」 out-id 「n」 「y」)

(setq i (1+ i))))

;;取得檔案路徑檔名

(defun file-path/name-get (/ file-name file-path mycad mydoc myms)

(setq mycad (vlax-get-acad-object))

(setq mydoc (vla-get-activedocument mycad))

(setq myms (vla-get-modelspace mydoc))

(setq file-path (vlax-get-property mydoc 'path))

(setq file-name (vlax-get-property mydoc 'name))

(setq file-name (substr file-name 1 (- (strlen file-name) 4)))

(strcat file-path file-name)

);;取得圖框最大最小點

(defun all-boxlst-get (/ all-boxlst box-name i n ss-box)

(setq all-boxlst nil)

(princ 「\n請選擇矩形框或圖塊框」)

(setq ss-box (ssget))

(setq n (sslength ss-box))

(setq i 0)

(while (< i n)

(setq box-name (ssname ss-box i))

(setq all-boxlst (cons (minpt/maxpt-get box-name) all-boxlst))

(setq i (1+ i))

)(setq all-boxlst (mapcar '(lambda (x) (list (3vp->2vp (car x)) (3vp->2vp (cadr x)))) all-boxlst))

(vl-sort all-boxlst '(lambda (e1 e2) (< (car (car e1)) (car (car e2)))))

);;從圖元物件取得最大最小點

(defun minpt/maxpt-get (obj / maxpt minpt)

(setq obj (vlax-ename->vla-object obj))

(vla-getboundingbox obj 'minp 'maxp)

(setq minpt (vlax-safearray->list minp))

(setq maxpt (vlax-safearray->list maxp))

(vlax-release-object obj)

(list minpt maxpt)

);;判斷列印方向

(defun judge-print-front (boxlst / maxpt minpt print-front)

(setq minpt (car boxlst))

(setq maxpt (cadr boxlst))

(if (>= (- (car maxpt) (car minpt)) (- (cadr maxpt) (cadr minpt)))

(setq print-front 「l」)

(setq print-front 「p」)))

;;三維點轉二維點

(defun 3vp->2vp (pt) (list (car pt) (cadr pt)))

vuex 原始碼分析 vuex原始碼解讀 簡易實現

原始碼解讀 開始之前,先貼個大綱 首先,我們從使用方法入手,一步步來看 store.js import vue from vue import vuex from vuex vue.use vuex export default new vuex.store data 2000 main.js im...

c 下 簡易C S持續網路程式原始碼

define win32 lean and mean 避免早期的庫對現有的庫的影響 函式過載出問題 define winsock deprecated no warnings include include 包含windows api 標頭檔案 include 最新的windows socket 標...

學生管理系統(簡易)(附原始碼)

1.介面 2.資料結構的設計 需求和資料結構設計糅合在一起 3.互動 include mylist.h void menu 資料的設計 學生資訊抽象出來,選單設計 struct node list void keydown 使用者的互動 根據所選選單項,執行問題 intmain int argc,c...