CADVBA(一)、開啟連接的大門
前言
一般提到CAD大多數都以為是AutoCAD,但其實CAD版本有好多好多種,只是因為學校通常都先教AutoCAD進行使用,透過教育版的免費制度培養一票AutoCAD的粉絲,在習慣介面之後跳往其他版本的CAD會有點障礙,但因為AutoCAD在後期大多改成訂閱制,導致很多公司行號轉往其他管道使用,筆者所在的機關目前也是使用ProgeCAD作為主力使用。
關於CAD的版本:
- AutoCAD(訂閱制)
- ZWCAD(中資成分被禁用)
- ProgeCAD(買斷制)
如果基本的操作功能不敷使用導致效率低落時,可以透過CAD本身提供的套件進行額外強化,而VBA則是提供套件之一,筆者自2018年起便開始進行AutoCADVBA相關開發,特別介紹啟蒙導師為馬克的營建與電腦,當初就是被他的Excel自動繪製縱坡圖表吸引到,而開始一系列的研究之路。
本系列文主要是介紹筆者在CADVBA上的心路歷程,希望能夠由淺入深,期待各位讀者吸收後也能具備修改VBA程式碼的能力,優化自身工作流程,藉由節省下來的時間來開發更多好用的工具,良性循環。
VBA環境建立
AutoCAD
自2012年起,不再預設安裝於AutoCAD,如果需要使用時要到官網下載安裝。
ProgeCAD
內建於裡面,但屬性及方法仍不像AutoCAD那麼完整,有時候請原廠修復時也比較會拖,需要透過修改演算法進行問題排除。
Excel與CAD連接方法
Excel是大部分工程人員最常接觸的工具,Excel作為資料進出的主要操作媒介,同時也具備VBA的功能,能夠將CAD作為引用項目進行連動,資料就能透過Excel與CAD連接,驅動CAD進行圖說繪製。
先期引用
Excel>檔案>選項>自訂功能區>開發人員勾選

開發人員>檢視程式碼>工具>設定引用項目>找到相關的套件勾選

若以ProgeCAD2021版為例,會找到ProgeCAD 2021 Object Library,這個就是引用對象,不同年代版本對應到的名稱會不同,這是他比較麻煩的地方。
後期引用
如欲進行後期引用需要先執行下列CADInit後將CAD參數代入後生成全域對象,才能進行後續使用,好處是可以不用管CAD年代版本就能直接使用,對於不同環境的電腦只要確保VBA安裝成功基本上就能使用。
全域對象是指在同一專案中即便不同模組也能使用的物件
1 | public mo '模型空間 |
舊文參考
踩雷過程
- AutoCAD用先期引用時,會因為各主機安裝版本不同導致出現錯誤,需要進入程式碼編輯器中勾選正確版本的引用項目,並取消遺漏的引用項目,不然會導致程式碼出現不可解釋的錯誤行為。
- ProgeCAD只能透過先期引用,後期引用會失效,操作部分物件內容時會失效,我遇到的是Library物件的操作會出現問題,Library物件的CreatePoint方法與點資料密切關連,不可避免,後來透過明確的先期引用引入就可以了。
- 物件瀏覽是在查詢對象的屬性及方法必備工具,需要有引用才有辦法顯示ProgeCAD相關物件,引用的名稱叫做IntelliCAD,如要採用後期引用時,傳送給其他人時要記得取消勾選。