nguyendan81985 发表于 2022-7-6 22:05:49

VBA设置打印机

大家好
我有马可自动发布许多图纸,现在我想设置打印机,让他们打印得更快。因此,请帮助我将VBA写入autocad绘图的设置打印机,如下所示:
 
1.更改布局,并将视口添加到图纸框架中(每个图纸中的框架应按比例缩放)
2、打印机/绘图仪:默认打印机
3、纸张尺寸:A3
4、绘图区域:窗口(在布局中获取所有图纸)
5、打印偏移:将打印居中
6、比例:适合纸张
7、打印样式表:单色。
 
谢谢

BIGAL 发表于 2022-7-6 22:14:40

检查它的lisp而不是vba,但做你想要的
 
http://www.cadtutor.net/forum/showthread.php?69132-正在打印LISP帮助&高亮显示=打印LISP

nguyendan81985 发表于 2022-7-6 22:21:49

 
谢谢,但我需要VBA来添加我的marco。

BIGAL 发表于 2022-7-6 22:28:29

这是一个如何在VBA中重写的方法示例,你知道如何编写VBA吗?

nguyendan81985 发表于 2022-7-6 22:32:49

 
你好我只知道VBA,不是LISP。你能帮我用VBA编程吗。谢谢
例如:在模型中绘制矩形,然后移动到布局并将打印机设置为以下设置:
 
1.在布局中,将视口添加到矩形
2、打印机/绘图仪:PC默认打印机
3、纸张尺寸:A3
4、绘图区域:窗口(在布局中获取所有图纸)
5、打印偏移:将打印居中
6、比例:适合纸张
7、打印样式表:单色。

BIGAL 发表于 2022-7-6 22:40:55

你需要在VBA中理解一些基本原则,我不是专家,但知道足够做基本编程。您是否查看了Autocad中的开发者帮助?
 
详细的Vlisp版本将作为VBA提供所有这些步骤的文档
打开autocad文档(vla get activedocument(vlax get acad object))
从文档中以组的形式获取布局(vla get layouts(vla get activedocument(vlax get acad object)))
一次遍历一个布局(vlax for lay(vla get layouts(vla get activedocument(vlax get acad object)))
返回布局编号(vla get taborder lay)
通过检索布局名称(setvar“ctab”(vla get name lay))打开当前布局ctab
(命令“Plot”…可以通过调用绘图脚本VBA thisdrawing.Plot来完成http://forums.autodesk.com/t5/visual-basic-customization/automated-print-from-vba-using-a-saved-page-setup/m-p/2250520
 
一个快速的谷歌,这是在这里发现的Cadtutor解决了一个问题Cadtutor不是一个为我写代码的服务,如果你想要的话,那么你要么付钱给别人,要么等待可能的帮助。

Sub FindLayouts()
   Dim oLay As AcadLayout
       For Each oLay In ThisDrawing.Layouts
         MsgBox oLay.Name
       Next
End Sub

nguyendan81985 发表于 2022-7-6 22:51:21

谢谢BIGAL
我完成了我的计划。下面是我的程序
 
Sub Example_PlotType()
   
   Dim ACADLayout As ACADLayout
   Dim originalValue As Integer
   Dim Print1 As String
   Dim Paper1 As String

   Set ACADLayout = ThisDrawing.ActiveLayout
   
   Print1 = "HP LaserJet 5200 Series PCL 5" ' name of my printer
   Paper1 = "A3" 'type of paper size
   
   ACADLayout.PlotType = acExtents
   ACADLayout.CenterPlot = True
   ThisDrawing.ActiveLayout.StyleSheet = "monochrome.ctb"
   ThisDrawing.ActiveLayout.StandardScale = acScaleToFit
   ThisDrawing.ActiveLayout.ConfigName = Print1
   ThisDrawing.ActiveLayout.CanonicalMediaName = Paper1

End Sub

BlackBox 发表于 2022-7-6 22:56:58

FWIW-
 
我认为导入命名页面设置并将其应用于布局是一种更简单的实现。
 
如果/当你决定进入。NET API,这个旧帖子可能有用。
 
干杯

SLW210 发表于 2022-7-6 23:03:07

请阅读代码发布指南并编辑您的帖子,将代码包含在代码标签中。

nguyendan81985 发表于 2022-7-6 23:11:38

 
知名度高
页: [1]
查看完整版本: VBA设置打印机