發表文章

AutoCAD 匯出圖片方法整理

 有時候會做簡報或是跟業主或同事溝通,想要簡單快速顯示想表達圖面的部分,通常會想用圖片呈現,但是不同方法又有不同優缺點,在此做些列出並比較。 一、指令輸出法(OUT系指令) 使用內建指令輸出圖片檔案。 可選檔案格式:JPG、PNG、BMP、TIF、WMF......等多種。 使用指令: BMPOUT 指令:將選取的物件儲存至獨立設備點陣圖格式(BMP檔)的檔案中。 JPGOUT 指令:將選取的物件儲存為 JPEG 檔案格式的檔案。 TIFOUT 指令:將選取的物件以 TIFF 檔案格式儲存至檔案。 PNGOUT 指令:將選取的物件儲存為可攜式網路圖形格式(PNG檔)的檔案。 WMFOUT 指令:將選取的物件儲存至 Windows 中繼檔(WMF檔)。(背景為透明)(會建立包含向量資料和 TrueType 字體) PSOUT 指令:從 DWG 檔建立 PostScript 檔案。 EXPORT 指令:將選取的物件儲存為其他檔案格式。(在儲存視窗選擇儲存格式) 使用方法:使用指令後,出現視窗選擇儲存位置及檔名後,選取要輸出物件,即可輸出檔案。 優點: 1. 可以快速輸出圖片檔案。             2. 可以選取需要的物件輸出。(未被選取不會輸出)             3. 選擇Windows 中繼檔(WMF檔)可以背景為透明。 缺點: 1. 此方法是類似 CAD 顯示畫面擷取,導致物件大小會跟顯示畫面內的物件相關             2. 匯出圖片長寬比跟顯示畫面相同             3. 匯出圖片會有選取的物件範圍旁容易有留白問題(不會因為選取的物件而裁減)             4. 在模型使用會有背景是黑色問題(WMF檔例外)             5. 無法使用類似出圖型式表(.ctb)來快速轉換替代色(例如:黃色轉黑色) 二、列印輸出法(PLOT指令) 使用...

AutoCAD LISP 無法預覽DCL 因無法建立 DCL 的暫存檔

圖片
 問題: AutoCAD Visual LISP 編輯器中 想要預覽DCL 但顯示錯誤 ; 警告: 無法建立 DCL 的暫存檔: "C:/Program Files/Autodesk/AutoCAD 2024/$vld$.dcl" 下圖為在LISP編輯器預覽DCL方法 解決方法: 方法1:更改暫存檔路徑 選項 → 檔案 → 支援檔搜尋路徑 按"加入"按鈕,再按"瀏覽"進入瀏覽資料夾對話框中 選取 D:\\CAD 即可,建議將加入之路徑移至最上端。 參考: Autocad 論壇 方法2:未有寫入權限(改善方式:增加寫入權限) 在該資料夾新增 $vld$.dcl 檔案 對該檔案 → 右鍵 → 內容 → 安全性 → 選擇使用者 → 新增寫入權限 參考: Autodesk visual-lisp-autolisp-and-general 討論區  

OpenDCL Studio (工作坊) 繁體中文版 下載

圖片
  OpenDCL Studio (工作坊) 繁體中文版 OpenDCL 是一個開源應用程式平台,專為希望以一組豐富的現代 Windows 使用者介面元素取代 AutoCAD 有限的 DCL(對話控制語言)使用者介面語言的 AutoLISP 程式設計師。  AutoCAD 應用程式開發人員和客製化人員可以使用 OpenDCL Studio 以互動方式設計現代、專業的使用者介面元素,以供 AutoCAD 中的 AutoLISP 程式碼使用。  OpenDCL Runtime 元件與應用程式一起部署,並為 OpenDCL 應用程式的最終使用者提供 AutoCAD 內部必要的執行時間框架。 這是AutoCAD對話框外掛,經由模組化後不用像舊的DCL一樣用程式碼做對話框, 而是像VBA一樣可以視覺化去設計版面。 下載分兩個部分 OpenDCL Studio    <--- 這是版面設計程式,只有設計者要安裝 OpenDCL Runtime <--- 這是 AutoCAD 外掛安裝檔,用來加載 OpenDCL 檔案,沒有這個無法執行(因為 OpenDCL 提供了 原本 DCL 更多的功能) OpenDCL Studio 繁體中文版 v9.1.5.2(翻譯版本14) 下載 協助中文版翻譯(目前翻譯未完全完成) Google 文件翻譯對照檔案 我是用簡體中文版進行翻譯(但看到裡面還有很多英文,所以心血來潮就進行翻譯) 所以有些可能會是對面用語 因為個人語言能力有限,有些還沒翻譯或不知道該如何翻就沒有翻譯 上面Google文件翻譯檔案只有介面翻譯檔案,沒有說明檔(因為原本官方提供是HTML檔,我還在想要怎麼處理) 回報翻譯問題

AutoCAD LISP 分享K函數庫

圖片
 理念     在學習或是開發AutoCAD LISP的時候,經常因為需要的功能沒有在內部函數中,而需要自行寫出相對的功能,在重複使用相同功能下,則自行定義成函數會方便重複使用,但同時在初期學習或是開發階段,這個過程會花上許多時間,所以我嘗試分享自己寫的函數。     寫成函數的好處: 1. 方便重複利用,可以減少寫得程式碼 2. 解讀程式碼方便,因為對應函數是對應功能,進而快速理解程式碼是做什麼 下載:(內含有說明) K函數庫V1.3.2 K函數庫V1.3.1 (修正部分函數沒有載入) K函數庫V1.3 K函數庫V1.2 AutoCAD 如何載入LISP檔案 範例: ;;;輸出點座標到TXT檔案 ;;;作者:夜源 ;;;時間:2024/10/20 ;;;需載入K函數庫 (defun C:output-point-coordinates ( / ss file)     (princ "\n 選取點物件:")     (cond ((not (setq ss (ssget '((0 . "POINT"))))) (princ "\n 沒有選取點物件") );_ ((not(setq file (getfiled "輸出資料到" "" "txt" 1))) (princ "\n 沒有選擇儲存檔案。") );_ (T (k:file_write      file      (mapcar '(lambda (x)       (K:list-str-combine   (mapcar 'rtos (cdr (assoc 10 (entget x))))   ",")       ) (K:ss->list ss))) );_T );_cond   (princ)   );_end ;;;載入TXT檔案的點座標到圖面繪製點 ;;;作者:夜源 ;;;時間:2024/10/20 ;;;需載入K函數庫 (defun...

AutoCAD 將配置複製到另一個檔案

圖片
     很多時候會需要製作多個設定相同配置的檔案,而減少重複製作時間,就是從別的檔案複製過來。 方法一:設計中心(指令ADCENTER) 此方法優點:可以一次複製多個配置到目前檔案 而缺點:必須打開要從位置來源的檔案 另外,此方法也可以適用複製圖層、文字型式、線型....等 方法二:配置的從樣板 1.指令: layout 輸入配置選項 [複製(C)/刪除(D)/新建(N)/樣板(T)...... 選取[ 樣板(T) ] 或是對配置按 右鍵 -> 從樣板 2.選取複製來源檔案 3.選取要複製的配置(可複選) 此方法優點:可以一次複製多個配置到目前檔案,並不用打開來源檔案 而缺點: 方法三:LISP 此方法優點:可以一次複製多個配置,並不用打開來源檔案 而缺點:不能打開來源檔案 此程式修改一小部分也可以變成將配置複製到其他檔案 (defun c:layouts (/ fname)   (and (setq fname (getfiled "選取匯入配置來源的圖面" "" "dwg" 0))        (imp_layouts fname)        )   (princ)   ) (defun imp_layouts (source / *acad* doc l_import odbx Doctest       path lays l_list)   (vl-load-com)   (setq *acad* (vlax-get-acad-object) doc (vla-get-activedocument *acad*))   ;;**** 檢查來源檔案是否開啟   (vlax-for oDoc (vla-get-documents *acad*)     (if (= (vla-get-fullname oDoc) source)       (setq Doctest t)))   (if (and (not Doctest) (findfile source)) ...

AutoCAD LISP 列示輸出所有圖層名稱等資訊

圖片
利用函數 tblnext 指定 LAYER 來遍歷所有圖層 利用函數 while 循環到沒有圖層 不過要注意要修改圖層資料需要另外用函數 tblobjname  來得到圖層實體 因為函數 tblnext 只會得到簡短資訊,如下: _$ (tblnext "LAYER" T) ((0 . "LAYER") (2 . "0") (70 . 0) (62 . 7) (6 . "Continuous")) 用函數 tblobjname  來得到圖層實體,如下: _$ (tblobjname  "LAYER" "0") <圖元名稱: 240c7544870> 程式碼範例: 1.在命令列顯示所有圖層名稱、顏色號碼、線型名稱 動畫展示 程式碼: (defun c:promptlayers ( / lay layname laycolor layLTYPE) ;;;https://eakyle.blogspot.com/   (prompt "\n圖層名稱,顏色索引,線型名稱") ; 寫入標題列   (while (setq lay (tblnext "LAYER" (not lay))) ; 遍歷所有圖層     (setq layname (cdr (assoc 2 lay))) ; 取得圖層名稱     (setq laycolor (cdr (assoc 62 lay))) ; 取得圖層顏色索引       (setq layLTYPE (cdr (assoc 6 lay))) ;線型名稱     (prompt (strcat "\n" layname "," (itoa laycolor) "," layLTYPE)) ; 寫入圖層資料   );_while   (princ) );_end 2.將所有圖層名稱、顏色號碼、線型名稱輸出到CSV檔 動畫展示 程式碼: (defun c:exportlayers ( / csvpath csvfile lay layname laycolor layLTYPE) ;;;;;;https://eak...

AutoCAD LISP 模型或配置出圖設定

  1. 使用"-plot"指令(前面有" - "是隱藏視窗) ;;;使用-PLOT指令出圖-詳細設定 (defun C:tt ( / ) (command "-PLOT" "Y" ;_詳細出圖規劃?[是(Y)/否(N)]: "" ;_輸入配置名稱或 [?] <模型>: "DWG To PDF.pc3" ;_輸入輸出設備名稱或 [?] <無>: "" ;_輸入圖紙大小或 [?] <ANSI A (11.00 x 8.50 英吋)>: "M" ;_輸入圖紙單位 [英吋(I)/公釐(M)] <公釐>: "L" ;_輸入圖面方位 [直式(P)/橫式(L)] <橫式>: "N" ;_上下顛倒出圖?[是(Y)/否(N)] <否>: "W" ;_輸入出圖範圍 [顯示(D)/實際範圍(E)/圖面範圍(L)/視圖(V)/視窗(W)] <顯示>: ;;下面點座標為選取出圖範圍是視窗的窗選才有 (getpoint) ;_輸入視窗的左下角點 <0.000000,0.000000>: (getpoint) ;_輸入視窗的右上角點 <0.000000,0.000000>: "F" ;_輸入出圖比例 (出圖 公釐=圖面單位) 或 [佈滿(F)] <佈滿>: "C" ;_輸入出圖偏移 (x,y) 或 [中心點(C)] <0,0>: "Y" ;_以出圖型式出圖?[是(Y)/否(N)] <是>: "" ;_輸入出圖型式表名稱或 [?] (輸入 . 代表無) <>: "Y" ;_以線粗出圖?[是(Y)/否(N)] <是>: "A" ;_輸入描影出圖設定 [依顯示(A...