2011-09-22 73 views
4

我有數百個DWG,AutoCAD文件,我希望搜索並編入MS Access數據庫。從Access 2007中使用VBA搜索AutoCAD(dwg)文件

基本上,我想搜索DWG並提取標題框以及日期中的所有描述,並將所有內容都帶到Access中,使其成爲可搜索的目錄。

例如,我有一個名爲T-25682.DWG的文件,名稱爲Machine Spacer並創建於01/20/2010。

我想提取信息形成DWG文件並將其插入到Access數據庫本身:

== ID == == DESCRIPTION == == CREATED ON == == FILENAME == 

    1  Machine Spacer  01/20/2010   T-25682.dwg 

我怎樣才能接近和解決這個問題?有沒有一個我可以使用Access的AutoCAD庫?我如何在DWG文件中搜索?

+0

顯然你可以得到[Autocad的VBA模塊](http://usa.autodesk.com/adsk/servlet/ps/dl/item?siteID=123112&id=12900036&linkID=9240617),它應該允許自動化,除非你希望看看.Net – Fionnuala

+0

這對於允許您從AutoCAD內運行VBA宏更多,據我所知。我只是像使用簡單的.txt文件一樣使用宏來讀取AutoCAD文件。 –

+0

當我用Word打開文件時,例如編碼中的所有字符都無法讀取。有什麼方法可以讀取內容或搜索內容並找到它 –

回答

3

我會完全避免使用VBA,AutoLISP可以完成這項工作,減輕痛苦。操作方法如下:

在AutoLISP文件內創建「數據提取並寫入Access」功能。免費提供的ADOLisp庫將使它輕而易舉地寫入Access,如果失敗,或者你無法做到,你總是可以只寫一個CSV文件...

一旦你能夠做到對於單個DWG文件,創建一個腳本(使用任何可以複製和打開文件,AutoLisp的作品太)執行以下操作:

  1. 複製口齒不清文件到一個目錄,您的DWG文件,命名文件爲acaddoc.lsp。
  2. 按順序打開目錄中的每個dwg。打開後,acaddoc.lsp將運行並執行其操作。
  3. 從該目錄中刪除acaddoc.lsp(否則它會在您每次打開dwg時運行)。
  4. 重複每個你想要目錄的dwg文件的目錄。

注:

  1. 確保acaddoc.lsp關閉繪圖時,它的完成(或者讓AutoCAD中退出,這取決於你如何打開文件)。
  2. 爲此,您的標題欄需要可靠,請確保您添加了一些錯誤檢查。您可以使用腳本將任何問題記錄到文本文件,因爲他們發現它們...

AutoLisp真的很容易,幫助學習去AutoLISP Beginners' Tutorials

想要提出問題並從以前回答的問題中搜索代碼片段的最佳位置,請參閱Visual LISP, AutoLISP and General Customization

+0

這是我正在尋找的答案。非常感謝... –

1

如果您有完整版本的AutoCAD,則可以嘗試使用數據提取向導。這對於歸檔塊很有效。如果這不好,最好的嘗試是Swamp或AutoCAD論壇或AUGI。

VBA已被棄用,在過去3個版本的AutoCAD贊成.NET API的,FYI

+編輯+ 看一看這個(free) chapter on AutoCAD external database connectivity

+0

數據提取向導,如果它工作,將花費大量時間來獲取大量的文件目錄。根據我的理解,我必須一次打開一個並使用該工具。 我不想在AutoCAD中查找任何內容。我正在尋找一種方法來使用ACCESS/VBA從DWG文件中提取信息。 感謝您的幫助! –

+0

您可以選擇一組文件並保存該集合以及提取參數。您需要使用AutoCAD或AutoCAD API版本來讀取DWG文件。它們是專有格式並且是加密的。 Access沒有本地方式訪問(harhar)AutoCAD圖紙。您需要編寫基於AutoCAD REAL DWG或ODA API的應用程序,或者購買現有的應用程序。即使安裝了AutoCAD,任何使用它的應用程序都必須在AutoCAD過程中運行 - 這是該庫的限制。 –

+0

實際上,我並不完全正確(即錯誤) - ActiveX可能會用完。見http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer's%20Guide/index.html?url=WS73099cc142f48755-5c83e7b1120018de8c0-2202.htm,topicNumber=d0e3474被警告 - 它是狗慢,並且它也處於不贊成使用.NET的過程中。這可能有幫助:http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=3377116 –