LISP Routine to rename multiple drawings while publishing

LISP Routine to rename multiple drawings while publishing

daniel.orourkeUWE7W
Contributor Contributor
1,028 Views
12 Replies
Message 1 of 13

LISP Routine to rename multiple drawings while publishing

daniel.orourkeUWE7W
Contributor
Contributor

I'm looking for a LISP Routine that I could run that will do the following:

 

1. Run the publish command

2. Allow me to select drawings to publish

3. Rename all to something I type in (i.e. a job number shared by each file)

4. Keep the Layout tab as a suffix (like normal)

 

The end result would be publishing multiple sheets with the same prefix followed by the sheet number which is matched by the layout tab:

 

21.0005.00 - E0.01

21.0005.00 - E1.01

21.0005.00 - E1.02

etc.

 

My company has been doing this manually for some time now, and I am very new to figuring out the coding language.  Does anyone know if this can be done?

0 Likes
Accepted solutions (1)
1,029 Views
12 Replies
Replies (12)
Message 2 of 13

ronjonp
Mentor
Mentor

@daniel.orourkeUWE7W 

You could install MS Powertoys and use Power Rename for this.

ronjonp_0-1649367506261.png

 

You can also add a prefix to multiple files like so without installing anything:

ronjonp_0-1649367702955.png

 

0 Likes
Message 3 of 13

daniel.orourkeUWE7W
Contributor
Contributor

From what I understand, this bulk renaming feature will only work to remove or add similar text across several files, is that correct?

 

I need something that can take this list:

 

21.0005.00 - E0.01 - E0.01

21.0005.00 - E1.01 - E1.01

21.0005.00 - E2.01A-B - E2.01A

21.0005.00 - E2.01A-B - E2.01B

21.0005.00 - E2.02 - E2.02

 

Into this list:

 

21.0005.00 - E0.01

21.0005.00 - E1.01

21.0005.00 - E2.01A

21.0005.00 - E2.01B

21.0005.00 - E2.02

 

It wouldn't be an issue, but sometimes the list is 100 files long lol.

0 Likes
Message 4 of 13

ronjonp
Mentor
Mentor

@daniel.orourkeUWE7W 

Give this a try. It will rename a directory of PDF's that match a file pattern of "* - *.pdf"

 

(defun c:foo (/ dir fls n p pf str)
  ;; RJP » 2022-04-07
  (cond	((and (setq p (getvar 'dwgprefix))
	      (setq dir (getfiled "\nPick a folder to process..." p "pdf" 16))
	      (setq fls (vl-directory-files (setq dir (vl-filename-directory dir)) "*-*.pdf" 1))
	      (/= "" (setq pf (getstring "\nEnter prefix: " t)))
	 )
	 (foreach f fls
	   (setq n (substr f (vl-string-position (ascii "-") f 0 t)))
	   (or (vl-file-rename (strcat dir "\\" f) (strcat dir "\\" (strcat pf (+ 2 n))))
	       (princ (strcat "\nERROR RENAMING: " f))
	   )
	 )
	)
  )
  (princ)
)

 

 

Not a ton of error checking so test it out!

Message 5 of 13

pbejse
Mentor
Mentor
Accepted solution

@daniel.orourkeUWE7W wrote:

1. Run the publish command

2. Allow me to select drawings to publish

3. Rename all to something I type in (i.e. a job number shared by each file)

4. Keep the Layout tab as a suffix (like normal)

What you're saying is by skipping item # 3 the result is just a pdf with the layout names YES?

E0.01

E1.01

E1.02

..

 

You can piggy-back a lisp with publish, however it may require a bit of setup on your end.

As an alternative, You can run a program to rename the resulting pdfs from publish similar to @ronjonp contribution and as originally suggested.

 

(defun c:AddprefixToPDF ( /  prefix  path pdfs)
  (if (and
	(setq prefix (getstring "\nEnter prefix: "))
	(setq path (strcat (acet-ui-pickdir "Select Folder" (getvar 'dwgprefix))))
	(setq pdfs (vl-directory-files path "*.pdf" 1))
	(setq path (strcat path "\\"))
	)
    (foreach itm pdfs
      (cond
	((vl-string-search  prefix itm)		);<-- to avoid accidentally doubling up
	((vl-file-rename  (strcat path  itm)
	   	(strcat path prefix " - " itm))
	   )
	 )
      )      
    )
  (princ)  
  )

 

I'm pretty sure you are aware of the  options in  publish command 

 

pbejse_0-1649401746239.png

 

Otherwise use @ronjonp code to "correct" the existing pdfs.

 

 

HTH

 

 

Message 6 of 13

ВeekeeCZ
Consultant
Consultant

@daniel.orourkeUWE7W wrote:

From what I understand, this bulk renaming feature will only work to remove or add similar text across several files, is that correct?

 

I need something that can take this list:

 

21.0005.00 - E0.01 - E0.01

21.0005.00 - E1.01 - E1.01

21.0005.00 - E2.01A-B - E2.01A

21.0005.00 - E2.01A-B - E2.01B

21.0005.00 - E2.02 - E2.02

 

Into this list:

 

21.0005.00 - E0.01

21.0005.00 - E1.01

21.0005.00 - E2.01A

21.0005.00 - E2.01B

21.0005.00 - E2.02

 

It wouldn't be an issue, but sometimes the list is 100 files long lol.


 

Easy peasy.

Total/Windows Commander HERE. Total must-have.

 

BeekeeCZ_1-1649403793444.png

 

 

0 Likes
Message 7 of 13

daniel.orourkeUWE7W
Contributor
Contributor

This program looks like it does exactly what I am looking for, but it seems to only be a month trial version that later requires a paid license to use.  I'd like to avoid additional subscriptions if at all possible.  Thanks for the suggestion, though!

0 Likes
Message 8 of 13

daniel.orourkeUWE7W
Contributor
Contributor

This comes incredibly close to what I'm looking for!  Here are my results from running the script:

 

Original Files:

Pre-FOO.png

 

Renamed Files:

Post-FOO.png

 

As you can see, an extra character is being generated at the end of the job number.

For this example, I need the list to read as shown here:

 

danielorourkeUWE7W_0-1649420160845.png

 

0 Likes
Message 9 of 13

daniel.orourkeUWE7W
Contributor
Contributor

My friend, you have done it!  Thank you so much!  I did not notice the check box earlier to not use the sheet title with file name.  After simply unchecking that box, I can just enter the job number with your script.  Perfect!

0 Likes
Message 10 of 13

ВeekeeCZ
Consultant
Consultant

No subscription, just a 27 euro lifetime license.

Even if you exceed the monthly trial, the program continues to work without further restrictions. 

Just try it and you'll see. 

The productivity of working with multiple files cannot be compared with MS Explorer.

0 Likes
Message 11 of 13

ronjonp
Mentor
Mentor

@daniel.orourkeUWE7W wrote:

This comes incredibly close to what I'm looking for!  Here are my results from running the script:

 

Original Files:

Pre-FOO.png

 

Renamed Files:

Post-FOO.png

 

As you can see, an extra character is being generated at the end of the job number.

For this example, I need the list to read as shown here:

 

danielorourkeUWE7W_0-1649420160845.png

 


Try my code above again. All I changed was:

 

;; This
(strcat pf n)
;; to this
(strcat pf (+ 2 n))

;; Test example
(SETQ STR "22.0001.00 - E0.1-E0.1.pdf")
(strcat "22.0001.000 - " (substr STR (+ 2 (vl-string-position (ascii "-") STR 0 t))))
;; "22.0001.000 - E0.1.pdf" 

 

0 Likes
Message 12 of 13

ronjonp
Mentor
Mentor

@pbejse 

If you use the method below you don't need to check for an existing prefix as it will always strip everything before the last "-" 😎

(setq n (substr f (vl-string-position (ascii "-") f 0 t)))
Message 13 of 13

maratovich
Advisor
Advisor

It is much easier and more convenient to type and immediately get the desired file name than to rename it later.

Is not it ?

---------------------------------------------------------------------
Software development
Automatic creation layouts and viewport. Batch printing drawings from model.
www.kdmsoft.net
0 Likes