-KarL- 发表于 2022-7-6 11:53:45

使用VBA打印

我在VBA中创建了一个批处理程序,可以从列表中打开图形,并对图形执行一系列操作,以准备发布。最后一件事,我希望它做的是打印一个11X17副本的图纸为我们的活页夹,但我不能想出如何在VBA中做到这一点。
 
任何帮助都将不胜感激!

ML0940 发表于 2022-7-6 11:59:37

卡尔
 
您研究过VBA中的绘图配置吗?
 
我没有一个很好的例子,但如果你去VBA帮助并键入它,很可能会有一个例子让你继续
 
毫升

ML0940 发表于 2022-7-6 12:03:22

好的,我刚刚查看了VBA中的帮助
 
您可能需要添加plotconfig,或者可能只将此方法应用于现有plotconfig
 
此代码来自VBA帮助屏幕
 

Sub Example_GetPaperSize()
'This example gets the width and height of the default paper size for 'your system.

Dim PaperWidth As Double, PaperHeight As Double

ThisDrawing.ActiveLayout.GetPaperSize PaperWidth, PaperHeight

MsgBox "The default paper size is " & vbCrLf & _
"Width: " & PaperWidth & vbCrLf & _
"Height: " & PaperHeight
End Sub


 
毫升

-KarL- 发表于 2022-7-6 12:03:55

我的帮助菜单没有列出AutoCAD命令,只有基本的VBA命令。
我正在寻找一种方法来创建一个新的绘图配置,然后使用该配置而不是图形中已有的配置打印图形,但我还无法找出该部分。

CmdrDuh 发表于 2022-7-6 12:07:14

这应该让你开始。你是想硬编码你的纸张尺寸还是把它作为一个参数传递?

Public Sub SetupAndPlot(ByRef Plotter As String, CTB As String, SIZE As String, PSCALE As String, ROT As String)
   Dim Layout As AcadLayout
   On Error GoTo Err_Control
   Set Layout = ThisDrawing.ActiveLayout
   Layout.RefreshPlotDeviceInfo
   Layout.ConfigName = Plotter    ' CALL PLOTTER
   Layout.PlotType = acExtents
   Layout.PlotRotation = ROT    ' CALL ROTATION
   Layout.StyleSheet = CTB    ' CALL CTB FILE
   Layout.PlotWithPlotStyles = True
   Layout.PlotViewportBorders = False
   Layout.PlotViewportsFirst = True
   Layout.CanonicalMediaName = SIZE    ' CALL SIZE
   Layout.PaperUnits = acInches
   Layout.StandardScale = PSCALE    'CALL PSCALE
   Layout.ShowPlotStyles = False
   ThisDrawing.Plot.NumberOfCopies = 1

   Layout.CenterPlot = True
   If SIZE = "ARCH_expand_C_(24.00_x_18.00_Inches)" Then
         Layout.ScaleLineweights = True
   End If
   ThisDrawing.Regen acAllViewports
   ZoomExtents
   Set Layout = Nothing
   ThisDrawing.Save
Exit_Here:
   Exit Sub
Err_Control:
   Select Case Err.Number
   Case "-2145320861"
         MsgBox "Unable to Save Drawing- " & Err.Description
   Case "-2145386493"
         MsgBox "Drawing is setup for Named Plot Styles." & (Chr(13)) & (Chr(13)) & "Run CONVERTPSTYLES command", vbCritical, "Change Plot Style"
   Case Else
         MsgBox "Unknown Error " & Err.Number
   End Select
End Sub

CmdrDuh 发表于 2022-7-6 12:10:27

我正在将纸张大小、ctb、旋转、pc3等传递给这个设置和打印的函数。
 
这是传递信息的函数

Public Sub Vendor1117()
   Call SetupAndPlot("11x17Draft.pc3", "11X17-CHECKSET.ctb", "ANSI_B_(11.00_x_17.00_Inches)", acScaleToFit, ac90degrees)
   ThisDrawing.Plot.PlotToDevice
         ThisDrawing.Close (True)
End Sub

-KarL- 发表于 2022-7-6 12:14:07

CmdrDuh公司
 
这看起来像是我需要的,不过有几个问题:
1、是否需要。pc3文件还是网络打印机名称?
2.它将打印图纸中的所有布局还是仅打印活动布局?

CmdrDuh 发表于 2022-7-6 12:16:56

它可以是网络打印机的名称,并且正如所写的那样,只有活动布局。但是,它可以修改为打印所有布局,但是,您必须知道所有布局都很好。我的意思是,启动新图形时,默认模板(至少在我的机器上)有两个布局选项卡。我通常不使用第二个布局,我会删除它。但是,如果要打印所有布局,则可能会将空白页发送到打印机

CmdrDuh 发表于 2022-7-6 12:20:45

如果你看这张图片,你可以看到我突出显示了一个网络打印机。我打开“局部变量”窗口,查看代码的当前配置。
 
 
我可以附加PNG文件吗?

ML0940 发表于 2022-7-6 12:23:11

嘿,指挥官,
 
很高兴再次见到你。
 
卡尔,在VBA编辑器帮助中,有一个用于对象浏览器的按钮;单击该按钮后,将出现一个文本框。在那里,键入plotconfig,即您将看到代码示例和方法。
我并不是说你需要的每一样东西都在那里,但它会消失。让你从正确的方向开始;不仅是为了这个,还有很多其他的事情。
 
酷,我想我以后也可以用这个了。
 
Cmd,如果你要使用这个函数,你会在第一个子函数的哪个部分调用它?
 
Cmd,你没有设置默认打印机的代码吗?
这个也可以用吗?
 
阐述卡尔的问题;Karl CMD在他的代码中使用了活动布局,您有特定的布局名称吗?
如果是这样,可以将此代码设置为该布局。我想这可能就是你想要的?
 
毫升
页: [1] 2
查看完整版本: 使用VBA打印