使用VBA打印
我在VBA中创建了一个批处理程序,可以从列表中打开图形,并对图形执行一系列操作,以准备发布。最后一件事,我希望它做的是打印一个11X17副本的图纸为我们的活页夹,但我不能想出如何在VBA中做到这一点。任何帮助都将不胜感激! 卡尔
您研究过VBA中的绘图配置吗?
我没有一个很好的例子,但如果你去VBA帮助并键入它,很可能会有一个例子让你继续
毫升 好的,我刚刚查看了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
毫升 我的帮助菜单没有列出AutoCAD命令,只有基本的VBA命令。
我正在寻找一种方法来创建一个新的绘图配置,然后使用该配置而不是图形中已有的配置打印图形,但我还无法找出该部分。 这应该让你开始。你是想硬编码你的纸张尺寸还是把它作为一个参数传递?
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
我正在将纸张大小、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
CmdrDuh公司
这看起来像是我需要的,不过有几个问题:
1、是否需要。pc3文件还是网络打印机名称?
2.它将打印图纸中的所有布局还是仅打印活动布局? 它可以是网络打印机的名称,并且正如所写的那样,只有活动布局。但是,它可以修改为打印所有布局,但是,您必须知道所有布局都很好。我的意思是,启动新图形时,默认模板(至少在我的机器上)有两个布局选项卡。我通常不使用第二个布局,我会删除它。但是,如果要打印所有布局,则可能会将空白页发送到打印机 如果你看这张图片,你可以看到我突出显示了一个网络打印机。我打开“局部变量”窗口,查看代码的当前配置。
我可以附加PNG文件吗?
嘿,指挥官,
很高兴再次见到你。
卡尔,在VBA编辑器帮助中,有一个用于对象浏览器的按钮;单击该按钮后,将出现一个文本框。在那里,键入plotconfig,即您将看到代码示例和方法。
我并不是说你需要的每一样东西都在那里,但它会消失。让你从正确的方向开始;不仅是为了这个,还有很多其他的事情。
酷,我想我以后也可以用这个了。
Cmd,如果你要使用这个函数,你会在第一个子函数的哪个部分调用它?
Cmd,你没有设置默认打印机的代码吗?
这个也可以用吗?
阐述卡尔的问题;Karl CMD在他的代码中使用了活动布局,您有特定的布局名称吗?
如果是这样,可以将此代码设置为该布局。我想这可能就是你想要的?
毫升
页:
[1]
2