從 AutoCAD 文字中移除重複行的最快方式,是將「一行一個值」的清單貼到一個以瀏覽器為基礎的去重工具,該工具會保留每個比對鍵的第一次出現,包括其原本的大小寫與空白。AutoCAD 圖面會產生大量重複的文字值清單——圖層名稱、圖塊名稱、屬性標籤、標註樣式與文字樣式——在重複使用、稽核、匯入其他圖面或餵入腳本之前,通常需要先清理。移除重複行完全在瀏覽器中執行,因此 AutoCAD 的圖層名稱、屬性標籤或擷取出的圖塊參考清單絕不會離開您的裝置。該工具會將每一行拆成一個比對鍵,檢查已看過鍵的 Set,只保留第一個未出現過的行,並以 LF 串接保留下來的結果。您可以自行決定要比對完全相同,還是忽略英文字母大小寫與邊緣空白,工具並會回報輸入、輸出與移除數量,以便讓清理步驟可被稽核。

how to remove duplicate lines in autocad
how to remove duplicate lines in autocad

為什麼 AutoCAD 工作流程會產生大量重複行的清單

AutoCAD 文字密集的工具會在多種日常情境下產生重複值,而軟體本身並沒有內建指令可以把這些重複值折疊成乾淨的唯一行清單:

  • 跨多張圖面進行圖層稽核時,相同的圖層名稱會出現在數十個檔案中。
  • 來自共用圖庫的圖塊定義,在依名稱列出圖塊時會反覆出現。
  • 由 ATTOUT 或資料擷取匯出的屬性標籤,會在多列中重複相同的值。
  • DXF 區段傾印中會包含重複的標頭項目與表格列。
  • 樣式清單——文字樣式、標註樣式、表格樣式——在合併後經常含有重複項目。
  • 由腳本產生的圖層或圖塊名稱,常因字串串接而帶有多餘的尾端空白。

即使是中等複雜度的專案,也可能產生數百或數千個值的清單;而當清理步驟本身需要可被稽核時,以人工方式把這些重複項整理成去重清單並不實際。

Remove Duplicate Lines 對 AutoCAD 文字的作用

Remove Duplicate Lines 可接受最多一百萬個 UTF-16 碼位的貼上文字,在每個 Windows CRLF、傳統 CR 與 LF 邊界處將輸入拆成行,並依原始順序處理每一行。每個比對鍵的第一行會以原本的大小寫與空白完整保留,之後任何鍵與已見鍵相符的行都會被捨棄。輸出是重新產生的純文字字串,以 LF 串接,輸入、保留與移除的數量會顯示在結果旁邊。

有兩個選項開關會改變比對鍵,但不會改變被保留的文字。「忽略英文字母大小寫」會以瀏覽器的英文語系小寫運算來衍生鍵。「忽略邊緣空白」則在取鍵前先修剪兩端。當兩者同時開啟時,會先套用修剪,再套用英文語系小寫。嚴格模式(預設)會逐行進行完全比對,因此大小寫、內部空格、定位點、標點、Unicode 字元以及首尾空白都會參與比對。

演算法使用一個已見鍵的 Set,將每一行新內容與該 Set 進行比對,只附加第一個未出現過的行,並以 LF 串接保留下來的值。它不會排序輸入、不會再次搜尋輸出、不會合併相似值、不會計算詞頻,也不會推測標頭。對於輸入與所選選項而言,運作是確定性的,因此同一份 AutoCAD 清單在相同設定下處理,必定會產生相同的輸出。

逐步從 AutoCAD 文字中移除重複行

以下步驟將走完完整的 AutoCAD 專屬工作流程,從在 AutoCAD 內擷取清單,到把清理後的結果複製回您的專案中。

  1. 產生或複製您想去除重複的 AutoCAD 文字清單。可用的來源包括 LAYER 對話方塊的名稱清單、BLOCK 或 BCOUNT 輸出、ATTOUT 屬性欄、資料擷取表格,或匯出成文字的 DXF 區段。
  2. 在瀏覽器中開啟 Remove Duplicate Lines。不需安裝任何東西,也不會上傳任何內容;網頁本身就是整個工作區。
  3. 將 AutoCAD 文字貼到輸入區,每行一個值。如果清單來自 CSV 或試算表的某一欄,請先把逗號替換成換行,或先透過「欄位轉清單」輔助工具處理。
  4. 選擇比對規則。對於 AutoCAD 圖層名稱、圖塊名稱以及文字或標註樣式,「忽略英文字母大小寫」通常是最合適的選擇,因為 AutoCAD 本身在資料層就以不區分大小寫的方式處理這些值。若是屬性標籤或需要精確字串的 DXF 碼,請保留「嚴格模式」。若來源可能帶有多餘的首尾空白(這在腳本產生的輸出中很常見),也請一併啟用「忽略邊緣空白」。
  5. 執行工具。保留下來的行會依原始順序出現,以 LF 串接,並會顯示輸入、輸出與移除數量,方便您稽核清理步驟。
  6. 檢查數量。若「移除」為零,代表比對規則過於嚴格,至少漏掉了一個重複項;請放寬規則並重新執行。若「移除」數量高於預期,代表規則過於寬鬆,把外觀不同的值合併在一起了。
  7. 把保留下來的行複製回 AutoCAD、腳本或試算表。該工具不會更動任何圖面檔;它會產生一份乾淨的純文字結果,讓您可以貼到任何地方。

AutoCAD 資料的嚴格比對與正規化比對

AutoCAD 以不區分大小寫的方式處理圖層、圖塊、標註樣式、表格樣式與文字樣式名稱,因此 "WALL"、"wall" 與 "Wall" 在圖面內指的是同一個物件。嚴格比對規則會把這三個視為三個不同的鍵,這通常不是 AutoCAD 使用者對「去除重複的圖層或圖塊清單」所期望的結果。啟用「忽略英文字母大小寫」可讓比對方式與 AutoCAD 本身解讀名稱的方式一致,並移除嚴格模式下會保留下來的表面重複項。

內部空格、定位點與標點仍然重要。AutoCAD 允許圖層與圖塊名稱內含空格——"A-WALL"、"A WALL" 與 "A WALL" 是三個不同的圖層——因此只修剪邊緣、不修剪內部,才能保留正確的對應、捨棄錯誤的對應。「邊緣空白修剪」是「不區分大小寫比對」的安全搭檔,因為它能移除清單透過腳本匯出或從試算表複製時常出現的多餘空白。

同時啟用這兩個選項時,會先套用修剪,再套用英文語系小寫。保留下來的文字不會被任一開關改寫——除了輸出的行尾會被正規化為 LF 之外,第一筆出現的內容會逐字元保留。對於同時混用識別字串與顯示字串的 AutoCAD 文字清單而言,這項區分很重要:識別字串會依正確的鍵被折疊,而顯示字串則保留原本的空格與大小寫。

AutoCAD 文字來源與各自適合的比對規則

AutoCAD 文字來源建議比對方式原因
LAYER 指令取得的圖層名稱忽略英文字母大小寫 + 忽略邊緣空白AutoCAD 以不區分大小寫的方式處理圖層名稱;複製出來的清單中常有多餘空白。
BLOCK 或 BCOUNT 輸出取得的圖塊名稱忽略英文字母大小寫圖塊名稱在 AutoCAD 中不區分大小寫;名稱內的空白具有意義。
ATTOUT 匯出的屬性標籤欄嚴格模式標籤字串是區分大小寫的識別字,任何空白差異通常代表實質上的不同。
STYLES 對話方塊中的文字樣式名稱忽略英文字母大小寫樣式名稱在 AutoCAD 中不區分大小寫。
DXF 標頭或表格區段的傾印內容嚴格模式DXF 區段標記與碼必須是精確字串;除非有特殊理由,否則不要進行正規化。
由腳本產生的圖層或圖塊名稱忽略邊緣空白串接出來的字串常帶有尾端空白;內部的大小寫與空格是刻意安排的。

清理匯出 AutoCAD 資料的實用訣竅

在刪除來源資料之前請先確認比對規則,並在結果核對完之前保留原始輸入。這套瀏覽器工具只負責處理文字,不會更動任何 DWG、DXF 或外部資料庫。

如果匯出的 AutoCAD 內容帶有 Windows CRLF 行尾,工具會自動處理,因為它會先切分 CRLF,再處理獨立的 CR 或 LF。產生的輸出會被正規化為 LF,因為結果是一個新建立出來的字串。這對於貼入腳本或 CSV 欄位沒有問題,但如果目標端預期使用 CRLF,請另外以換行轉換器對保留文字進行後處理。

空白行是有效的值。第一個空白行會被保留,後續的空白行會依同一規則被移除。在啟用「邊緣空白修剪」的情況下,只含空白的行與完全空白的行會共用同一個空白的比對鍵,因此只會保留第一個。若最終的 AutoCAD 清單不應包含任何空白值,請在去重之後再額外執行一輪空白行移除。

對商業紀錄而言,以可見的 AutoCAD 文字值進行去重,效果可能不如以穩定的資料庫識別字來去重。這個工具適合用來清理複製出來的試算表欄位、白名單、檔名與 SKU 匯出,但請勿將它視為主鍵解析器。編輯輸入或任一選項都會清除先前的結果,因此過時的輸出不會與目前設定混淆。

對於超出「去重」範圍的 AutoCAD 文字編輯工作——例如在圖面物件中尋找並取代文字——相關的 AutoCAD 尋找與取代工作流程 會逐步說明比對步驟。

如果您正在權衡各種做法,在 VS Code 中移除空白:內建與瀏覽器方法 有更深入的介紹。