autolisp 青黃交接的時代

 現在的程式交給過去的軟體執行

autolisp 是一個 autocad 長期支援的開發程式,把以前寫過的程式通常可以拿到新版的 autocad 上執行;相對的把現在寫的程式以之前的版本執行應該也沒有什麼問題。但是在 autocad 版本 2020 之後會發現出現一些問題,因為其之後的 autolisp 支援了 Unicode 字碼,而現在的文字編輯器或是 Visual Studio Code 預設的字碼就是 Unicode ,所以也沒有什麼問題。然而在 autocad 2020 之前的 autolisp 只支援 ASCII ,所以用現在的開發工具寫的程式交給以前的版本執行時,會造成亂碼或是無法執行 的問題。

過去的程式交給現在的軟體執行

由於字碼支援了 Unicode 後, (strlen ...) 函數計算字數時,中文字碼計算由每一個中文字 2 字節,改為每一個中文字 1 字節。這造成了有些應用到這個函數的程式獲得的結果與從前的不同。

如何解決 autolisp 中文亂碼的問題

  1. 單一使用支援某一個字碼。設定  lispsys 系統變數為 AutoLISP 原始 (LSP) 檔在儲存並編譯時會使用 ASCII (MBCS) 字元集。)
  2. 使用支援 Unicode 字碼版本的軟體。
  3. 將 autolisp 檔案  .lsp 使用 Big5 字碼用於舊版的 autocad 。例如在程式開頭加上 ;;;; -*- encoding:big5 -*-
    。 

如何解決 strlen 數字數的問題

可以借用 《Autocad/ BricsCAD 的 autolisp 支援了 UTF-8》中提到的 (cs-to-strlen ...)來處理舊的程式,以適應新的變化。

 

各申機械設計工作室; Each Application Mechanical Design Studio 

聯絡方式 

相關資炓

壓力容器設計 各申機械設計工作室

 

留言