Autolisp 讓文字大小,Mleader比例自動跟著標註設定

複製下程式碼,存成  Mtext.lsp 並載入

(defun c:MaxText (/ dimscal )
  ;;------------- 支援 annotative ---------------------
  (if (= 1 (getvar "DIMANNO"))
    (progn
      (setq dimscal (/ 1 (getvar "cannoscalevalue")))
      (setvar "TextSize" (* dimscal 3))
    )
    (progn
      (setq dimscal (getvar "dimscale"))
      (setvar "TextSize" (* dimscal 3))
    )
  ) ;_if
  ;;------------- 支援 annotative ---------------------
  (setvar "clayer" "text" ;_切換圖層
  (initdia;;強制顯示下個 command 的 dialog box 
  (command "mtext")
  (princ)
) ;_defun


記得在contents 再加入一次,以後AutoCAD 啟動就會自動載入




接著只要在 cui 找到 Multiline Text  將 Macro 改成 ^C^C_MaxText 就可以了



這個程式的好處在於不論你是用傳統的方式或 Annotative  的標註,他都會自動調整文字大小到目前標註設定的大小。

例如 CNS 1:1 時字高為 3~3.5mm
程式會根據標助比例調整字高。

你完全不需要再去調整字型設定,但是要注意的是 TextStyle 的字高一定要設定成 0 。


Mleader 也可以自動設定,完全不必再去調整其大小

上述程式簡單改一改就可以 
(setvar "MLEADERSCALE" dimscal)


(defun c:MaxMleader (/ dimscal )
  ;;------------- 支援 annotative ---------------------
  (if (= 1 (getvar "DIMANNO"))
    (progn
      (setq dimscal (1 (getvar "cannoscalevalue")))
    )
    (progn
      (setq dimscal (getvar "dimscale"))
      (setvar "MLEADERSCALE" dimscal)
    )
  ) ;_if
  ;;------------- 支援 annotative ---------------------
  (setvar "clayer" "dim" ;_切換圖層
  (initdia)  ;;強制顯示下個 command 的 dialog box 
  (command "mleader")
  (princ)
;_defun


如此一來不論是傳統的一個標註型式一個比例的用法,或是Annotative 的用法,都不必再調整字高,或Mleader 形式,只要切換標註比例 (DimScale ),或是Annotative 比例,他就能自動切換。


留言

熱門文章