# LianDung - AutoCAD x GPT 程式說明 ## 操作簡略流程 目的是將來源多張圖面中的指定物件複製至成品圖面 故根據來源及成品欲呈現的方式不同 需做部分變數修改 ``` main.py 設定圖片路徑、keyword、目標位置 pictool.py 根據該圖設定座標轉換公式(calculate_x_coordinate ...) copy_tool.py 因目標圖面位置不同,需前往確認check_center_cood ``` 設定完成後,程式流程應為: ``` 連接GPT-API 進行圖片判斷及圖片座標回傳 -> 進行座標轉換得出需複製的區域 -> 讀取source檔案判斷並僅複製區域內物件 ``` ## 目前程式架構 ``` autocad_tool_gpt_complete/ ├── main.py # 🚀 入口主程式 ├── anotate.py # 手動標註程式 ├── core/ │ ├── __init__.py │ ├── autocad_io.py # AutoCAD 文件打開與連線處理 │ ├── copytool.py # 主複製與過濾邏輯(結合所有條件) │ ├── entity_copier.py # 各類型圖元複製方式 │ ├── entity_filter.py # should_copy / is_entity_in_range 判斷 │ ├── gpt_inference.py # GPT 圖像推理 + bbox 萃取 │ ├── notes.py # 加註/標註與文字處理 │ ├── pictool.py # 座標轉換與圖形處理 │ ├── transform.py # 移動/縮放/旋轉工具 │ └── __pycache__/ # 編譯快取(可忽略) ``` --- # AutoCAD DWG 圖面操作工具 ## 程式功能簡介 此 Python 程式利用 AutoCAD API 操作 DWG 圖面,旨在自動化處理和轉換圖元。此工具方便用戶完成對 CAD 圖檔的批量處理,像是篩選特定圖元、轉換圖元格式,以及對圖檔進行自動化修改。 ## 主要邏輯流程 1. **初始化 AutoCAD API 連接:** - 使用 Python 建立與 AutoCAD 的 COM 介面連線,準備進行圖檔操作。 2. **讀取 DWG 檔案:** - 開啟並載入指定的 DWG 檔案以進行處理。 3. **圖元篩選:** - 根據預設條件篩選出需要處理的目標圖元,例如特定圖層的所有線段。 4. **圖元轉換或修改:** - 根據需求將選取出的圖元轉換為另一種格式,或對其進行具體的屬性修改。 5. **儲存及結束:** - 將修改後的結果儲存回檔案系統或導出為新檔案。最後,清理資源並結束程式。 ## 各步驟說明 ### 初始化 AutoCAD API 連接 - **功能:** 建立與 AutoCAD 的通訊介面。 - **說明:** 使用 `win32com.client` 模組來創建連接,確保已安裝 AutoCAD 並正確配置 Python 環境。 ### 讀取 DWG 檔案 - **功能:** 載入使用者指定的 DWG 圖檔。 - **說明:** 使用 API 的方法打開圖檔,進入編輯模式。 ### 圖元篩選 - **功能:** 篩選出指定圖層和類型的圖元。 - **說明:** - 使用 `SelectionSet` 建立篩選條件。 - 範例:篩選出在 "Layer1" 的所有 `LINE` 物件。 ### 圖元轉換或修改 - **功能:** 對篩選出的圖元進行轉換或修改。 - **說明:** - 如將 `LINE` 轉換為 `POLYLINE`。 - 更改圖元的顏色或其他屬性。 - 使用 API 提供函數執行具體的轉換邏輯。 ### 儲存及結束 - **功能:** 儲存修改並結束。 - **說明:** - 使用 API 的 `Save` 或 `SaveAs` 方法將圖檔存檔。 - 關閉文件和清理所有使用的資源。 ## 函數功能與參數說明 1. **connect_to_autocad()** - **功能:** 建立與 AutoCAD 的連接。 - **參數:** 無 - **返回:** AutoCAD Application 的對象。 2. **open_dwg_file(filename)** - **功能:** 開啟指定的 DWG 檔案。 - **參數:** `filename` (字串) - 圖檔路徑。 - **返回:** 打開的 Document 對象。 3. **filter_entities(document, layer, entity_type)** - **功能:** 按照圖層和圖元類型篩選圖元。 - **參數:** - `document` - Document 物件。 - `layer` (字串) - 要篩選的圖層名稱。 - `entity_type` (字串) - 圖元類型(例如 "LINE")。 - **返回:** 篩選後的圖元集合。 4. **convert_entities(entities)** - **功能:** 對選定的圖元集進行轉換。 - **參數:** `entities` - 需要進行轉換的圖元集。 - **返回:** 無,直接修改圖元。 5. **save_and_close(document, new_filename)** - **功能:** 儲存文件並關閉。 - **參數:** - `document` - 已編輯的 Document 物件。 - `new_filename` (字串) - 新的檔案儲存路徑(可選)。 - **返回:** 無。 ## 流程示意圖 ```plaintext +---------------------+ | Connect to AutoCAD | +---------------------+ | v +---------------------+ | Open DWG File | +---------------------+ | v +---------------------+ | Filter Entities | +---------------------+ | v +---------------------+ | Convert Entities | +---------------------+ | v +---------------------+ | Save and Close | +---------------------+ ```