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))
      (progn ;_確保 ObjectDBX 可用
(if (> (setq versn (atoi (getvar "AcadVer"))) 15)
  (setq oDBX (vla-GetInterfaceObject
       *acad* (strcat "ObjectDBX.AxDbDocument." (itoa versn))))
  (progn
    (if (not (vl-registry-read
       "HKEY_CLASSES_ROOT\\ObjectDBX.AxDbDocument\\CLSID"))
      (startapp "regsvr32.exe"
(strcat "/s \"" (findfile "axdb15.dll") "\""))
      );_if
    (setq oDBX (vla-GetInterfaceObject
*acad* "ObjectDBX.AxDbDocument"))
    );_progn
  );_if
(vla-open oDBX source);_打開來源檔案
(setq lays (vla-get-layouts oDBX));_來源配置集合
(if (> (vla-get-count lays) 1);_確保有配置要匯入
  (progn
    (vlax-for x lays ;_循環配置集合並檢查名稱
;; 如此圖面中存在則省略
      (if (not (or (= "Model" (vla-get-name x))
   (member (vla-get-name x) (layoutlist))))
(setq l_list (append (list x) l_list )
      b_list (append (list (vla-get-block x)) b_list))
);if
      );for
    (setvar "ctab" "Model")
    (if l_list
      (progn
(setq l_import (vlax-safearray-fill
(vlax-make-safearray vlax-vbObject
  (cons 0 (- (length l_list) 1))
  ) l_list)
      b_import (vlax-safearray-fill
(vlax-make-safearray vlax-vbObject
  (cons 0 (- (length b_list) 1))
  ) b_list)
      );_建立用於 ActiveX 方法的 safearray
(vla-copyobjects oDBX l_import (vla-get-layouts doc))
(vla-copyobjects oDBX b_import (vla-get-blocks doc))
    (foreach x (layoutlist)
      (cond ((= x "Layout1")(vla-delete (vla-item (vla-get-layouts doc) x)))
    ((= x "Layout2")(vla-delete (vla-item (vla-get-layouts doc) x)))
    )
      )
(princ (strcat "\n配置導入成功: "
       (itoa (length l_list))))
;; 導入佈局
);_progn
      (princ "\n沒有要從來源圖面匯入的新版面配置...")
      );_if
    );_progn
  (princ "\n抱歉,在來源圖面中找不到配置,請重試。")
  );_if
(vlax-release-object oDBX);_釋放物件
);_progn
    (progn
      (if doctest
(princ "\n您嘗試使用 Autocad 正在使用的文件,請關閉它並重試...")
(princ "\n找不到原始文件,請重試......")
);_if
      );_progn
    );_if
  (princ);_悄悄退出
  );_defun


  

參考資料




留言

這個網誌中的熱門文章

AutoCAD 填充線(剖面線)樣式簡易製作產生器

AutoCAD 如何自訂線型教學

AutoCAD 動態圖塊-如何在所有可見性顯示或隱藏