×
Menu
Index

API Sample - VBA

 
This sample will create 2 different files of the current layout.  The first one will be named after the drawing and will use the AcroPlot Jr. defaults.  The second one will be in Monochrome, 11x17, Scaled-To-Fit and will be named after the drawing and Tabloid-Monochrome.
 

Sample VB/VBA Application Using the AcroPlotJ Methods

Sub TestCurrentLayout()
   On Error Resume Next
   Dim oAcroPlotApp As Object
   Dim oAcadApp As AcadApplication
   Dim sSettingName As String
   Dim sOutputFile As String
  'First try to get the AcroPlot Application Interface
  'We'll use late binding to make it easier
   Set oAcroPlotApp = CreateObject("AcroPlot.AcroPlotApplication")
   If oAcroPlotApp Is Nothing Then
       MsgBox "Unable to get the AcroPlot Application Interface"
       Exit Sub
   End If
  'Get the current AutoCAD.Application Object
   Set oAcadApp = ThisDrawing.Application
  'Set the Settings Name use "AcroPlotJunior." for the last used settings in AcroPlot Jr.
   sSettingName = "AcroPlotJunior"
  'Set the output filename equal to the drawing name .pdf
   sOutputFile = ThisDrawing.FullName
   sOutputFile = Strings.Left$(sOutputFile, Len(sOutputFile) - 4) & ".pdf"
  'Now we should set the Undo mark because if the layout was set to a printer that does
  'not exist we cannot restore that due to AutoCAD limitations.  But the Undo can.
   ThisDrawing.StartUndoMark
   'Now let convert the current layout
   oAcroPlotApp.Init
 ***************VERY IMPORTANT***************
   'Provide the AcroPlot Auto unlock code here so the filename dialog does not popup.
   'Other users will have the filename dialog popup per our standard licensing for the AcroPlot Suite, and will need to select the “Save As” button for each file created.
  ***************VERY IMPORTANT***************
   oAcroPlotApp.RestoreSettings sSettingName
   oAcroPlotApp.SetOutputFilename sOutputFile
   oAcroPlotApp.AcroPlotJCurrent oAcadApp
  'Now let's change the papersize to tablod, monochrome, and scaled to fit
   sOutputFile = ThisDrawing.FullName
   sOutputFile = Strings.Left$(sOutputFile, Len(sOutputFile) - 4) & "-Tabloid-Monochrome" & ".pdf"
   oAcroPlotApp.SetOutputFilename sOutputFile
   oAcroPlotApp.SetSetting "DwgPaperSize", 3
   oAcroPlotApp.SetSetting "Grayscale", 1
   oAcroPlotApp.SetSetting "PlotScale", 0
   Err.Clear
   oAcroPlotApp.AcroPlotJCurrent oAcadApp
  'Release the AcroPlot Application
   oAcroPlotApp.Quit
   Set oAcroPlotApp = Nothing
  'Now let's undo the changes
   ThisDrawing.EndUndoMark
   ThisDrawing.SendCommand "_u "
End Sub
 
 

Sample VB/VBA Application Using the Convert Method

To create or convert files using the command line mode API or ActiveX automation mode interface, it is required to purchase a license of AcroPlot Auto for each server running the process. If there will be additional PC's running AcroPlot Suite licenses or any of its components, then it is also required to purchase the number licenses needed in addition to the AcroPlot Auto server license.
 
Private Sub ConvertFile(ByVal sInputFile As String, ByVal sOutputFile As String, ByVal sSettingName As String)
 On Error Resume Next
 Dim oAcadObject As Object
 Dim oAcroPlotApp As Object
 Dim sFilesCreated As String
 Dim bResults As Boolean
 Dim lWait As Long
 Dim lFilesOpened As Long
 Dim lLoop As Long
 Dim sConversionFinished As String
 Set oAcroPlotApp = CreateObject("AcroPlot.AcroPlotApplication")
       If oAcroPlotApp Is Nothing Then
                     MsgBox "Unable to get the AcroPlot Application Interface"
                     Exit Sub
         End If
 oAcroPlotApp.RestoreSettings sSettingName
 'Now maybe we want to override the settings and make the output grayscale
 oAcroPlotApp.SetSetting "Grayscale", 1
 'Since we do not want to append to the end of the existing file we should delete it first if it exists.  There should of coarse be some error checking here.
 Kill sOutputFile
 'Lets use our own internal converter for this first one.
 oAcroPlotApp.SetSetting "UseInternalViewerForPlotting", -1
 'Now we want to do the conversion modal so it will not return control to our application until it finishes.
 Call oAcroPlotApp.Convert(sInputFile, sOutputFile, True, 0, False)
 sFilesCreated = oAcroPlotApp.GetFilesCreatedAsString
 
 'For the next ones let's use AutoCAD for the conversion.
 oAcroPlotApp.SetSetting "UseInternalViewerForPlotting", 0
 'Now let's say we want to test running it 200 times and having it close AutoCAD after 100 files
 'We will also do this conversion modeless so we would need to have a loop to wait and check every second if the conversion is finished.
 For lLoop = 0 to 199
         'Since we do not want to append to the end of the existing file we should delete it first if it exists.  There should of coarse be some error checking here.
         Kill sOutputFile
         Call oAcroPlotApp.Convert(sInputFile,sOutputFile, False, 0, False)
         'Here now we want to wait until we write a value other than 0 to the HKEY_CURRENT_USER\Software\CADzation\ACROPLOT\API.ConversionFinished
         'The ReadRegVal would be a wrapped function in VB or VBA to read a registry value
         For lWait = 0 to 300
                 Sleep 1000 'Windows API function to wait specified number of milliseconds
                 sConversionFinished = ReadRegVal(HKEY_CURRENT_USER, "Software\CADzation\ACROPLOT", "API.ConversionFinished")
                 If sConversionFinished = "1" then
                         'Created the output file
                         Exit For
                 Else if sConversionFinished = "-1"
                         'Failed to create the output file
                         Exit For
                 End if
         Next
         If lFilesOpened < 100 then
                 lFilesOpened = lFilesOpened + 1
         Else
                 lFilesOpened = 0
                 oAcroPlotApp.EndAutoCAD
         End if
 Next
 'Now let's properly exit AcroPlot.Application
 oAcroPlotApp.Quit
 Set oAcroPlotApp = Nothing
End Sub