發表文章

目前顯示的是 7月, 2023的文章

同時支援新舊版本的 autolisp

圖片
emacs org mode 導出原始碼 使用 emacs 的 org mode 可以用源代碼塊 ( Structure of Code Blocks ) 導出 Big5 和 Unicode (UTF-8) 二個程式。加上文學編程可以同時編二個程式。再加上可以直接編寫程式的說明文件,所以使用 emacs 的 org-mode 可以一舉三得。 舉例如 autolisp-export-example ,原始碼顯示一次可以導出 org-export-big5.lsp 和 org-export-utf-8.lsp ,其中 org-wxport-big5.lsp 支援 Big-5 碼,而 org-export-utf-8.lsp 支援 UTF-8 碼。我們可以另外寫一個 acaddoc.lsp 來判斷以何時載入適合的程式。例如在程式中判定 (defun load-file-mode ()   (if (eql "24.1s (LMS Tech)" (getvar "acadver"))     (load "org-export-utf-8.lsp")     (load "org-export-big5.lsp")) 其中以 AutoCAD 2022 與 AutoCAD 2017 為例。在 (getvar "acadver") 返回  "24.1s (LMS Tech)" 時是 AutoCAD 2022 的版本,它的 autolisp 支援 UTF-8 版本;如果 (getvar "acadver") 返回 "21.0s (LMS Tech)" 它代表 Autocad 2017 ,其 autolisp 支援 Big-5 碼。如此可以依企業中使用新舊版本的 AutoCAD 時,依狀況載入合適的程式碼。     聯絡方式   相關資炓 壓力容器設計 各申機械設計工作室

autolisp 青黃交接的時代

圖片
 現在的程式交給過去的軟體執行 autolisp 是一個 autocad 長期支援的開發程式,把以前寫過的程式通常可以拿到新版的 autocad 上執行;相對的把現在寫的程式以之前的版本執行應該也沒有什麼問題。但是在 autocad 版本 2020 之後會發現出現一些問題,因為其之後的 autolisp 支援了 Unicode 字碼,而現在的文字編輯器或是 Visual Studio Code 預設的字碼就是 Unicode ,所以也沒有什麼問題。然而在 autocad 2020 之前的 autolisp 只支援 ASCII ,所以用現在的開發工具寫的程式交給以前的版本執行時,會造成亂碼或是無法執行 的問題。 過去的程式交給現在的軟體執行 由於字碼支援了 Unicode 後, (strlen ...) 函數計算字數時,中文字碼計算由每一個中文字 2 字節,改為每一個中文字 1 字節。這造成了有些應用到這個函數的程式獲得的結果與從前的不同。 如何解決 autolisp 中文亂碼的問題 單一使用支援某一個字碼。設定  lispsys 系統變數為 AutoLISP 原始 (LSP) 檔在儲存並編譯時會使用 ASCII (MBCS) 字元集。) 使用支援 Unicode 字碼版本的軟體。 將 autolisp 檔案  .lsp 使用 Big5 字碼用於舊版的 autocad 。例如在程式開頭加上 ;;;; -*- encoding:big5 -*- 。  如何解決 strlen 數字數的問題 可以借用  《Autocad/ BricsCAD 的 autolisp 支援了 UTF-8》 中提到的 (cs-to-strlen ...)來處理舊的程式,以適應新的變化。     聯絡方式   相關資炓 壓力容器設計 各申機械設計工作室