ZWCAD 2020 // łączenie wielu plików DWG w jeden


Recommended Posts

Witam serdecznie,

jestem nowy na tym forum więc serdecznie witam wszystkich. 

Opisze w kilku słowach mój problem, mam np. 100 plików DWG z elementami, które musze następnie obrobić w programie CAM.

Chciałbym się zapytać czy zna ktoś jakiś sposób żeby te 100 rysunków umieścić w 1 pliku ??

Link to comment
Share on other sites

moze taki lisp 

(defun c:InsertAll ( / cmd dir extn pt vec )

   (setq extn "dwg") ;; Extension of files to Insert e.g "dwg"

   (if
       (and
           (setq dir (LM:DirectoryDialog (strcat "Select Directory of " (strcase extn) " Files to Insert") nil 512))
           (setq vec (getpoint "\nPick Spacing Vector: " '(0 0 0)))
       )
       (progn
           (setq cmd (getvar 'CMDECHO))
           (setvar 'CMDECHO 0)
           (setq pt '(0 0 0))
           (foreach file (vl-directory-files dir (strcat "*." extn) 1)
               (vl-cmdf "_.-insert" (strcat dir "\\" file) "_S" 1.0 "_R" 0.0 "_non" pt)
               (setq pt (mapcar '+ pt vec))
           )
           (setvar 'CMDECHO cmd)
       )
       (princ "\n*Cancel*")
   )
   (princ)
)

;;-------------------=={ Directory Dialog }==-----------------;;
;;                                                            ;;
;;  Displays a dialog prompting the user to select a folder   ;;
;;------------------------------------------------------------;;
;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
;;------------------------------------------------------------;;
;;  Arguments:                                                ;;
;;  msg  - message to display at top of dialog                ;;
;;  dir  - root directory (or nil)                            ;;
;;  flag - bit coded flag specifying dialog display settings  ;;
;;------------------------------------------------------------;;
;;  Returns:  Selected folder filepath, else nil              ;;
;;------------------------------------------------------------;;

(defun LM:DirectoryDialog ( msg dir flag / Shell Fold Self Path )
   (vl-catch-all-apply
       (function
           (lambda ( / ac HWND )
               (if
                   (setq Shell (vla-getInterfaceObject (setq ac (vlax-get-acad-object)) "Shell.Application")
                         HWND  (vl-catch-all-apply 'vla-get-HWND (list ac))
                         Fold  (vlax-invoke-method Shell 'BrowseForFolder (if (vl-catch-all-error-p HWND) 0 HWND) msg flag dir)
                   )
                   (setq Self (vlax-get-property Fold 'Self)
                         Path (vlax-get-property Self 'Path)
                         Path (vl-string-right-trim "\\" (vl-string-translate "/" "\\" Path))
                   )
               )
           )
       )
   )
   (if Self  (vlax-release-object  Self))
   (if Fold  (vlax-release-object  Fold))
   (if Shell (vlax-release-object Shell))
   Path
)

(vl-load-com) (princ)

 

Link to comment
Share on other sites

  • 2 weeks later...

Ciekawy pomysł, skrypt wstawia kolejne pliki przesunięte o początkowy wektor.

Żeby było łatwiej zapisałem lispa w pliku dwg i zapisałem na serwerze, można go pobrać tutaj.

Sposób działania:

  1. Pobrany plik przeciągamy na obszar roboczy programu CAD.
  2. Wpisujemy polecenie INSERTALL.
  3. W oknie eksploratora wybieramy katalog z plikami dwg - do rysunku zostaną wstawione wszystkie pliki z tego katalogu.
  4. Definiujemy odstęp pomiędzy kolejnymi plikami dwg (można wskazać myszką lub wpisać na klawiaturze).

 

Poniżej film przedstawiający sposób działania lispa (jako plików dwg użyłem kilku bloków ze znakami drogowymi z nakładki ZWTraffic ).

image.gif

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share