Jump to content

Recommended Posts

Posted

Hi Everyone, Good day to all,

 

I'm trying to customize a LISP routine to create PDFs using my own .pc3 and ctb file — specifically, I'm using "Foxit PDF Editor Printer.pc3". I tried replacing the default printer and setting a custom paper size, but the code isn’t working as expected.

 

(defun c:PDF ( / cm )
   (setq cm (getvar 'CMDECHO))
   (setvar 'CMDECHO 0)
   (command "_.-plot" "_y"
       (if (= 1 (getvar 'TILEMODE)) "Model" (getvar 'CTAB))
       "AutoCAD PDF (High Quality Print).pc3" "ARCH D (24.00 x 36.00 Inches)"
       "_M" "_L" "_N" "_E" "_F" "_C" "_Y" "monochrome.ctb" "_Y"
   )
   (if (= 1 (getvar 'TILEMODE))
       (command "_A")
       (command "_N" "_Y")
   )
   (command "_N" (strcat (getvar 'DWGPREFIX) (vl-filename-base (getvar 'DWGNAME))) "_Y" "_Y")
   (setvar 'CMDECHO cm)
   (princ)
)
(vl-load-com) (princ)

 

When I replace the default .pc3 file in the LISP code with my own (Foxit PDF Editor Printer.pc3), instead of plotting automatically, it starts asking for every input again — like paper size, plot area, etc

 

Command: PDF
Yes or No, please.
Don't use Esc while using a Lisp commandWrite the plot to a file [Yes/No] <N>: y
Command: MOPRINT
Yes or No, please.
Don't use Esc while using a Lisp commandWrite the plot to a file [Yes/No] <N>:
Save changes to page setup [Yes/No]? <N>
Proceed with plot [Yes/No] <Y>:
Effective plotting area:  903.11 wide by 603.25 high
Plotting viewport 1.
Effective plotting area:  792.73 wide by 577.98 high
Plotting viewport 2.

 

Also, it would be awesome if we could add a feature where each layout gets plotted using a name format and save location pulled from an Excel file. That would seriously save a ton of time and effort. Thanks in advance, friends!

 

 

 

Posted

Did you try to hard code the full path to the .pc3? i.e. C:PathtoPC3folder/Foxit PDF Editor Printer.pc3

  • Funny 1
Posted

No I just entered the name of .pc3. let me try that too. But both custom .pc3 and DWG to pdf .pc3 are located in same folder.

Posted (edited)

For PC3 files, if I remember, I couldn't get LISP to create one so you'll need to set them all up and save the configuration files. It would help if you save them in the default file location

 

A couple of snippets I have,

This gives the default PC3 file location:

 

(defun PC3Loc ( / PCP PC3LOC)
;;Location of custom Print Configuration PC3 files
;;modify if you want a different location from the default AutoCAD location
;;Note standard and no preview PC3 files are to be in the same location for it to work well.
  (setq PC3Loc (vla-get-PrinterConfigPath (vla-get-Files (vla-get-Preferences (vlax-get-acad-object)))))
  PC3LOC
)

 

This one checks that the PC3 file exists - defined in the PC3NAME lisp

 

(defun PC3Name ( / )
;;Name of custom Plot Configuration PC3 File
;;This is the Plot Configutation PC3 file used when you check the 'Preview PDF' checkbox
;;otherwise it uses 'DWG to PDF.pc3'
"DWG to PDF.pc3"
)

(defun PDFgetplottername( pdfpreview / pname)
;;this needs to be set up in pagesetup settings
  (setq pname "DWG to PDF.pc3") ;;Default DWG to PDF plotter

  (if (findfile (setq PC3FilePath (strcat (PC3Loc) "\\" (PC3Name))) )
    (setq pname (PC3Name))
  );;end if


  (if (= pdfpreview "N") ;;get custom PC3 file name
    (if (findfile (setq PC3FilePath (strcat (PC3Loc) "\\" (PC3NameNP))) )
      (setq pname (PC3NameNP))
    );;end if
  );;end if
  pname
)

 

 

where my Dwg to PDF.PC3 is my PDF plotter setting file

Edited by Steven P
  • Agree 1
Posted

@SLW210 I have paste the file path instead paste the "Foxit PDF Editor Printer.pc3". No difference. And also custom.pc3 file were saved in same location as default.

Posted

@Steven P Hi bro, I have tried this and modified but I don't know is this right.

 

(defun PC3Name ( / )
  ;; Name of custom Plot Configuration PC3 File
  ;; This is the Plot Configuration PC3 file used when you check the 'Preview PDF' checkbox
  ;; otherwise it uses 'DWG to PDF.pc3'
  "Foxit PDF Editor Printer.pc3"
)

(defun PC3Loc ( / PCP PC3LOC )
  ;; Location of custom Print Configuration PC3 files
  ;; Note standard and no preview PC3 files are to be in the same location
  (setq PC3Loc
        (vla-get-PrinterConfigPath
          (vla-get-Files
            (vla-get-Preferences
              (vlax-get-acad-object)))))
  PC3LOC
)

(defun PDFgetplottername ( pdfpreview / pname PC3FilePath )
  ;; Get the correct plotter name based on preview or not
  (setq pname "DWG to PDF.pc3") ;; Default fallback

  (if (findfile (setq PC3FilePath (strcat (PC3Loc) "\\" (PC3Name))))
    (setq pname (PC3Name))
  )

  (if (= pdfpreview "N")
    (if (findfile (setq PC3FilePath (strcat (PC3Loc) "\\" (PC3NameNP))))
      (setq pname (PC3NameNP))
    )
  )

  pname
)

(defun PC3Exists (pc3name / fullpath)
  (setq fullpath (strcat (PC3Loc) "\\" pc3name))
  (findfile fullpath)
)

(defun C:PDF1 ( / cm pc3name paperName )
  (vl-load-com)
  (setq cm (getvar 'CMDECHO))
  (setvar 'CMDECHO 0)

  ;; Define your desired PC3 file and paper size
  (setq pc3name "Foxit PDF Editor Printer.pc3")
  (setq paperName "ARCH D") ;; or exact size from your PC3

  ;; Only proceed if the PC3 file exists
  (if (PC3Exists pc3name)
    (progn
      (command "_.-plot" "_y"
        (if (= 1 (getvar 'TILEMODE)) "Model" (getvar 'CTAB))
        pc3name paperName
        "_M" "_L" "_N" "_E" "_F" "_C" "_Y"
        "Free State.ctb" "_Y"
      )
      (if (= 1 (getvar 'TILEMODE))
        (command "_A")
        (command "_N" "_Y")
      )
      (command "_N"
        (strcat (getvar 'DWGPREFIX) (vl-filename-base (getvar 'DWGNAME)) ".pdf")
        "_Y" "_Y"
      )
    )
    (prompt (strcat "\nPC3 file not found: " pc3name))
  )

  (setvar 'CMDECHO cm)
  (princ)
)

 

But after that it shows like 

"Command:  PDF1
PC3 file not found: Foxit PDF Editor Printer.pc3"

 

The custom.pc3 file were saved in same as the default file/location. I don't know what I did wrong.

 

  • Like 1
Posted (edited)

(defun PDFgetplottername ( pdfpreview / pname PC3FilePath ) ;; Get the correct plotter name based on preview or not (setq pname "DWG to PDF.pc3") ;; Default fallback

(defun PDFgetplottername ( pdfpreview / pname PC3FilePath )
  ;; Get the correct plotter name based on preview or not
  (setq pname "DWG to PDF.pc3") ;; Default fallback

 

 

This will need to change as well I think

 

Does PC3Loc return the correct folder? 

Edited by Steven P
Posted

Just a maybe, if you have used PLOT then selected a installed windows printer, then opened the custom settings to add sheet sizes etc it should save the pc3 to correct location. Ok the important bit, you should not need the pc3 in the printer name, for Autocad only use "Plot To Pdf".  So for your custom plotter don't have the PC3. Same with sheet size must be an exact match.

 

An example.

(COMMAND "-PLOT"  "Y"  "" "Plot To PDF"
	       "Iso full bleed A3 (420.00 x 297.00 MM)" "m" "LANDSCAPE"  "N"   "W"  "-6,-6" "807,560" "1=2"  "C"
	       "y" "Acad.ctb" "Y"	"n" "n" "n" pdfName "N" "y"
    )

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  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.

×
×
  • Create New...