發表文章

AutoCAD 表格(Table)像Excel下拉自動遞增減數字

圖片
        其實AutoCAD 表格(Table)可以像Excel的儲存格那樣下拉自動填滿並遞增減其中的數字。         不管是純數字、文字加數字的組合或是數字加文字的組合,都可對其中的數字進行遞增減,方式其實也像是Excel那樣在選取的右下角的點進行拖拉動作,也有顯示拖拉過程中對拖拉的數值模擬。 下拉自動填滿並遞增減其中的數字 備註:資料格式是數字的話,只需要一個儲存格就可以遞增值,但如果資料格式是文字的話,下拉遞增減需要至少兩個儲存格,否則只會複製原有的值。 而且遞增減的值不限於1,會比較兩個儲存格差值來進行遞增減。 遞增值不等於1 其中"-" 會當作文字,而非負號 "-" 會當作文字,而非負號 測試-在數字與文字交錯之下 在AutoCAD 2015下 結果在數字與文字交錯的組合中 只有開頭是數字的可以進行遞增減的動作 在數字與文字交錯之下

AutoCAD LISP 讓ssget顯示自訂提示字串

ssget與entsel相比沒有自訂提示字串,固定顯示選取物件。 但還是有方法可以類似顯示自訂提示字串 應用 nomutt(系統變數) 來抑制通常不會被抑制的訊息顯示 介紹Lee Mac寫的ssget ;; ssget - Lee Mac ;; A wrapper for the ssget function to permit the use of a custom selection prompt ;; msg - [str] selection prompt ;; arg - [lst] list of ssget arguments (defun LM:ssget ( msg arg / sel )     (princ msg)     (setvar 'nomutt 1)     (setq sel (vl-catch-all-apply 'ssget arg))     (setvar 'nomutt 0)     (if (not (vl-catch-all-error-p sel)) sel)  )

AutoCAD LISP 解決VVC: Internal Error 錯誤

原因 在 mapcar 中使用 command 或 vl-cmdf 。 解決方法 將 mapcar 中使用的 command 或 vl-cmdf 改成 command-s 。 這發生在AutoCAD 2015/2016的情形。

AutoCAD 匿名圖塊(Anonymous Blocks)的類型

類型 *U###  一般匿名圖塊 (anonymous blocks) *E###   匿名非均勻縮放圖塊 (anonymous non-uniformly scaled blocks) *X###   匿名填充線 (anonymous hatch) *D###   匿名尺寸標註 (anonymous dimensions) *A###   匿名群組、DGN線型 (anonymous groups, DGN linetype blocks) *T###   表格中的匿名圖塊 (anonymous blocks in tables) *S###   三維視圖的匿名圖塊 (anonymous blocks of 3D views) (Fusion360) LISP Unanon.lsp - 將帶有* U前綴的匿名圖塊轉換為普通的autocad圖塊 DelGrpA.lsp - 刪除所有*A匿名群組

AutoCAD LISP 建立配置與設置配置相關設定

快速介紹: 1.刪除已有"Test"的配置 2.增加一個叫"Test"的配置 3.設置出圖型式表(圖筆指定) 4.設置繪圖機 5.設置紙張大小 6.指定為當前配置 7.返回當前的出圖型式表(圖筆指定)和繪圖機 程式碼: (defun c:addTheLayout ( / acadApp acadDoc layouts layoutObj currPStyle currConfig) (vl-load-com) (setq acadApp (vlax-get-Acad-object)) (setq acadDoc (vla-get-ActiveDocument acadApp)) (setq layouts (vla-get-Layouts acadDoc)) ;; Delete the layout named "Test" if it exists ;; 刪除已有"Test"的配置 (vlax-for objLayout layouts (if (= (vla-get-name objLayout) "Test") (progn (princ (strcat "\n 刪除已有配置 " (vla-get-name objLayout) " ..." ) ) (vla-delete objLayout) ;_刪除配置 (vlax-release-object objLayout) ;_ 釋放配置物件 ) ;_progn ) ;_if ) ;_vlax-for ;; 增加一個叫"Test"的配置 (setq layoutObj (vla-add layouts "Test")) ;; Assign Grayscale.CTB to the Layout ;; 給配置設置出圖型式表(圖筆指定) (vla-put-StyleSheet layoutObj ...

AutoCAD LISP 複製圖塊中物件

功能類似Express Tools內的NCOPY命令 (defun c:CopyBlockEname (/ e new) (if (and (setq e (nentselp "\n選取要複製的圖塊中物件:")) (eq (length e) 4) (setq new (entmakex (entget (car e)))) );_and (vla-transformby (vlax-ename->vla-object new) (vlax-tmatrix (caddr e)) ) );_if (princ) );_結束 相關連結 AutoCAD 如何載入LISP

AutoCAD LISP 獲取PDF的頁數

在這裡介紹 Lee Mac 所寫的函數。 來源至 Re: PDF Page Count 程式碼如下: (defun _PDFPageCount ( filename / fob fso mat reg res str ) ;; Translation by Lee Mac of the VBScript code by Chanh Ong ;; found at http://docs.ongetc.com/?q=content/pdf-pages-counting-using-vb-script ;; ;; Call with fully qualified filename of PDF file: ;; (_PDFPageCount "C:\\Folder\\Filename.pdf") ;; ;; Returns integer describing number of pages in specified PDF file (if (and (setq filename (findfile filename)) (eq ".PDF" (strcase (vl-filename-extension filename))) ) (vl-catch-all-apply (function (lambda ( / _ReadAsTextFile _CountPage ) (defun _ReadAsTextFile ( fso fn / fob str res ) (setq fob (vlax-invoke fso 'getfile fn) str (vlax-invoke fso 'opentextfile fn 1 0) res (vlax-invoke str 'read (vlax-get fob 'size)) ) (vlax-invoke str 'close) ...