跳到主要內容
Hai 二次開發工作室

CRD-S1 · Legacy macro maintenance

CoCreate 舊巨集維護・Lisp 程式改版

公司用了多年的 CoCreate 巨集,寫的人已經離職、沒有留下文件;平常還能用, 但一遇到錯誤、要改規則或升級版本,就沒人知道該從哪裡改。

我協助盤點既有的 Lisp 程式、整理功能與檔案關係、修正錯誤,並配合新版本或新流程調整, 讓巨集重新變成可以維護的工具。

CoCreate 巨集Lisp 維護版本升級文件整理
舊巨集維護示意圖:巨集報錯、原作者離職、沒有文件而改回手動,經過盤點功能、修正並測試,交付可正常使用的巨集、功能說明文件與版本測試紀錄
示意圖,實際流程與畫面依你們的需求設計。

01

先盤點,再決定怎麼改

舊巨集難處理的地方不是「寫得不好」,而是沒有人知道它完整在做什麼。 直接修改容易牽一髮動全身,所以我會先做盤點:

  • 公司實際在用哪些巨集、各自的功能與使用者
  • 程式之間的呼叫關係、啟動時載入的檔案與設定
  • 依賴的圖框、零件庫、屬性名稱或資料夾路徑
  • 在目前與目標版本上的執行狀況

盤點結果會整理成文件,之後不論修補、改寫或換人維護,都有依據。

升級前,我會對照 PTC 文件列出的不相容變更,確認公司的巨集有沒有用到:

版本變更舊巨集可能遇到的狀況
CoCreate OneSpace Modeling 2007Lisp 的字元改為 16 位元;自訂檔的預設編碼改為 UTF-8 與 UTF-16,檔案開頭有 BOM 才會自動辨識沒有 BOM 的檔案用 legacy 編碼讀取,依執行的語言版本而定,中文可能變成亂碼
CoCreate Modeling 2008loop 改成符合標準的實作在簡單的 loop 裡用 (loop-finish) 會出錯,要改成擴充寫法,例如加上 do
Creo Elements/Direct Modeling 17.0sd-sysid-to-obj 的傳回值從單一物件改成物件清單呼叫這個函式的地方要修改
18.0改成 Fluent UI;Dialog Generator 對話框加進 toolbox 的預設參數也跟著改了自訂對話框在 toolbox 找不到,要在定義加 :toolbox-button t
20.9HELIX_ADD、HELIX_REM 改為 HELIX_DIA;GENERAL_SWEEP_ADD、GENERAL_SWEEP_REM 改為 GENERAL_SWEEP_DIA舊指令找不到,改用新指令,並加 :add_material 或 :remove_material
換主版本編譯過的程式只在同一個主版本內相容只剩編譯檔、沒有原始 .lsp 時,無法重新編譯
不同版本之間Session 檔可能不相容巨集或流程有用到 session 檔時,要在新版本上重新測試

升級後按鈕不見,:toolbox-button 是原因之一,也要檢查自訂檔有沒有從預期的目錄載入。 載入方式、四層自訂目錄與出錯的檢查方式,整理在Creo Elements/Direct 巨集設定。

參考資料(PTC Creo Elements/Direct Modeling 20.9 說明,英文):What's New、Command Syntax Changes and Enhancements、Unicode and String Processing、Customization Guide for Administrators and Advanced Users、Advanced Topics、File types overview。

02

常卡住的地方

  • 原作者離職

    巨集能用但沒人看得懂,出錯時只能繞過或放棄使用。

  • 升級版本後報錯

    想升級 Creo Elements/Direct,卻擔心舊巨集不能用而一直延後。

  • 規則變了改不動

    料號規則、圖框或屬性欄位調整,但巨集裡寫死了舊規則。

  • 檔案散落各處

    同一個功能有好幾個版本的程式檔,不確定哪一個才是正在用的。

03

工具可以怎麼做

  1. 01

    程式盤點

    整理現有巨集清單、功能、呼叫關係與相依檔案。

  2. 02

    功能文件化

    寫成使用者看得懂的操作說明,以及維護者需要的技術說明。

  3. 03

    錯誤修正

    依盤點結果修正錯誤,並在實際使用的圖面上驗證。

  4. 04

    版本相容調整

    在目標版本上測試,對照 PTC 列出的指令與函式變更調整。

  5. 05

    規則參數化

    把寫死在程式裡的料號、路徑、欄位名稱抽成設定,日後改規則不必改程式。

  6. 06

    整併與重寫

    重複或結構混亂的程式,評估整併或重寫成較好維護的版本。

04

開發前會確認的條件

這些條件決定工具能不能穩定運作,也會影響開發範圍與報價。不確定的項目,評估時一起確認即可。

程式檔案

要確認什麼是否還保有原始 .lsp,或只剩編譯過的檔案

為什麼重要決定能否直接修改,或需要依行為重寫

使用中版本

要確認什麼目前與目標的 Creo Elements/Direct 版本

為什麼重要版本差異是測試與調整的重點

實際用法

要確認什麼誰在用、多常用、用在哪些流程

為什麼重要決定盤點與修正的優先順序

相依資源

要確認什麼圖框、零件庫、屬性欄位、網路路徑

為什麼重要換環境時要先確認的地方

測試方式

要確認什麼能否提供可測試的範例模型與環境

為什麼重要修正後需要在實際情境驗證

相關技術筆記

全部筆記 →

05

常見問題

Lisp 自訂(Integration Kit)從 SolidDesigner Rev.4 就有,寫法一路沿用;但 PTC 文件列出幾個會讓舊程式出錯的變更,例如 18.0 起要放進 toolbox 的對話框必須加 :toolbox-button t,20.9 把 HELIX_ADD 換成 HELIX_DIA。我會先盤點公司在用的巨集,對照這些變更,在新版本上逐一測試,再決定修正範圍。

先說明巨集目前的狀況

告訴我使用的版本、巨集大概有幾個、現在遇到什麼問題,就能先判斷盤點的範圍。

LINE諮詢開發需求