Copy Folder Lee Mac

Copy Folder Lee Mac

C.Utzinger
Collaborator Collaborator
1,297 Views
2 Replies
Message 1 of 3

Copy Folder Lee Mac

C.Utzinger
Collaborator
Collaborator

 

HI

 

I'm trying to copy the folder with a Ribbonmenu from one place to another (simulating a user making update).

 

But i get nil, i think because AutoCAD is still open and of the .dll files.

 

Is there a possibility to know why it gets nil?

 

I use the Lee Mac function for copy the folder:

 

(defun LM:copyfolder ( src des )
    (vl-mkdir des)
    (apply 'and
        (append
            (mapcar
                (function
                    (lambda ( file )
                        (vl-file-copy (strcat src "\\" file) (strcat des "\\" file))
                    )
                )    
                (vl-directory-files src nil 1)
            )
            (mapcar
                (function
                    (lambda ( dir )
                        (LM:copyfolder (strcat src "\\" dir) (strcat des "\\" dir))
                    )
                )
                (vl-remove "." (vl-remove ".." (vl-directory-files src nil -1)))
            )
        )
    )
)

 

Thank you

0 Likes
Accepted solutions (1)
1,298 Views
2 Replies
Replies (2)
Message 2 of 3

C.Utzinger
Collaborator
Collaborator

Or is it possible to define some files to be ignored (.dll)?

0 Likes
Message 3 of 3

C.Utzinger
Collaborator
Collaborator
Accepted solution

 

OK! This way it works

 

(vl-load-com)

(defun LM:copyfolder ( src des ovr / fso rtn )
    (if (setq fso (vlax-create-object "scripting.filesystemobject"))
        (progn
            (setq rtn
                (not
                    (or (zerop (vlax-invoke fso 'folderexists src))
                        (vl-catch-all-error-p
                            (vl-catch-all-apply 'vlax-invoke
                                (list fso 'copyfolder src des (if ovr :vlax-true :vlax-false))
                            )
                        )
                    )
                )
            )
            (vlax-release-object fso)
            rtn
        )
    )
)


(defun spi:update ( / FSO localfolder oldfolder)

      (setq localfolder (findfile "SPI_Ribbon.cuix")
            localfolder (vl-filename-directory localfolder)
            oldfolder (strcat localfolder "_alt"))

      (cond (*akttoday*
              (alert "Bitte AutoCAD neustarten und nochmals aktualisieren!")
              (exit))
            ((vl-file-directory-p oldfolder)
              (setq FSO (vlax-create-object "Scripting.FileSystemObject"))
              (vlax-invoke FSO "DeleteFolder" oldfolder :vlax-true)
              (vlax-release-object FSO))  
      )

      (cond ((and (not *akttoday*)(vl-file-directory-p localfolder))
              (setq *akttoday* 1)
              (vl-file-rename (strcat localfolder "\\") (strcat oldfolder "\\"))
              (LM:copyfolder "P:\\CAD\\AutoCAD\\AutoCAD_SPI_Ribbon" localfolder T)
              (alert "Ribbon erfolgreich aktualisiert! \n\nMenüänderungen erst nach AutoCAD-Neustart vorhanden."))
            (*akttoday*)
            (T (alert "Ordner -->  \"AutoCAD_SPI_Ribbon\" \nwurde nicht gefunden!"))
      )

  (prin1)
) ; end of defun