乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 144|回复: 9

[编程交流] VBA设置打印机

[复制链接]

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

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

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 22:14:40 | 显示全部楼层
检查它的lisp而不是vba,但做你想要的
 
http://www.cadtutor.net/forum/showthread.php?69132-正在打印LISP帮助&高亮显示=打印LISP
回复

使用道具 举报

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 22:21:49 | 显示全部楼层
 
谢谢,但我需要VBA来添加我的marco。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 22:28:29 | 显示全部楼层
这是一个如何在VBA中重写的方法示例,你知道如何编写VBA吗?
回复

使用道具 举报

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

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

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 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不是一个为我写代码的服务,如果你想要的话,那么你要么付钱给别人,要么等待可能的帮助。
  1. Sub FindLayouts()
  2.    Dim oLay As AcadLayout
  3.        For Each oLay In ThisDrawing.Layouts
  4.            MsgBox oLay.Name
  5.        Next
  6. End Sub
回复

使用道具 举报

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 22:51:21 | 显示全部楼层
谢谢BIGAL
我完成了我的计划。下面是我的程序
 
  1. Sub Example_PlotType()
  2.    
  3.    Dim ACADLayout As ACADLayout
  4.    Dim originalValue As Integer
  5.    Dim Print1 As String
  6.    Dim Paper1 As String
  7.    Set ACADLayout = ThisDrawing.ActiveLayout
  8.    
  9.    Print1 = "HP LaserJet 5200 Series PCL 5" ' name of my printer
  10.    Paper1 = "A3" 'type of paper size
  11.    
  12.    ACADLayout.PlotType = acExtents
  13.    ACADLayout.CenterPlot = True
  14.    ThisDrawing.ActiveLayout.StyleSheet = "monochrome.ctb"
  15.    ThisDrawing.ActiveLayout.StandardScale = acScaleToFit
  16.    ThisDrawing.ActiveLayout.ConfigName = Print1
  17.    ThisDrawing.ActiveLayout.CanonicalMediaName = Paper1
  18. End Sub
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 22:56:58 | 显示全部楼层
FWIW-
 
我认为导入命名页面设置并将其应用于布局是一种更简单的实现。
 
如果/当你决定进入。NET API,这个旧帖子可能有用。
 
干杯
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 23:03:07 | 显示全部楼层
请阅读代码发布指南并编辑您的帖子,将代码包含在代码标签中。
回复

使用道具 举报

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 23:11:38 | 显示全部楼层
 
知名度高
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 11:19 , Processed in 0.650822 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表