Bryco 发表于 2006-8-3 07:45:43

布局空间和印刷,一些启示和一些问题

您好,我一直在为一些工程公司工作,以更新其内部VBA工具,以满足现代的需求。我实现的大多数更改现在都可以工作了,但由于我对VBA I编程相对较新;我想知道我的选择是否明智。我想我的老板会反对完全泄露我写的所有代码(函数有荷兰语名称和荷兰语注释,所以它们对你来说没有多大用处),但全局设置可能很有趣,或者完全错误,但这取决于你自己决定
内部工具的旧版本只是将边界和缩放应用于模型空间。在R14时代,这可能是做事的方式,但现在这就是布局的目的
我做的第一件事是编程一个菜单,提供有限的纸张尺寸、比例和边框样式选择,这些都是从配置文件中读取的。它设置了一个适合边框的pviewport,即使工程师决定不在布局中使用边框,它仍然是一种很好的定义边距的方法。这篇论文是建立了一个自定义的pc3文件,我们可以重新分发与我们的自定义安装程序,这是选择,因为它是快速的。该驱动程序的纸张大小没有边距,因为设置起来很麻烦
对于打印,也有一个自定义例程(主要是因为旧版本的autocad不提供线宽缩放,而且它们有一个漂亮的扩展名,有助于多文件打印。他们要求我把它留在那里,所以我做到了。初始化打印时,它会检查活动布局的纸张大小是否与配置的打印机之一兼容。在打印之前,会保存布局设置,因为所有的布局都已保存打印到“时,可以更改设置”;适合;。他们在退出对话时恢复。这一切都很好,效果也很好,除了修复只有在我不'不要退出对话太快,否则我会被安装在我系统上的打印机设置而不是我精心呵护的PC3文件中的设置所困扰
你们知道有什么方法可以检测到绘图仪已经完成了它吗;然后用它来触发恢复激活例程?现在也可以随意指出任何不好的想法,这样我以后可以避免它们。

紫灵梦雪 发表于 2006-8-3 07:58:32

可以使用ENDPLOT事件
在VBA ide中,查看THISDRAWING模块。在左侧的下拉列表中选择ACADDOCUMENT,在右侧下拉列表中,您将有一个您可以访问的所有事件的列表

vicky 发表于 2006-8-3 09:27:41

我简要介绍了打印机api#039;但是从来没有惹过他们,http://support.microsoft.com/kb/q282474/似乎它们都在那里
Declare Function DocumentProperties Lib“;winspool。drv“;别名;文件属性A“;(ByVal hwnd As Long,ByVal hPrinter As Long、ByVal pDeviceName As String、pdevmode输出作为DEVMODE、pDevModeInput作为devmodes、ByVal fMode As Long)As Long

☆紫色爱情☆ 发表于 2006-8-4 05:10:20

关于一个相关但完全不同的注意事项:它现在几乎可以工作,除了PlotToFile只需要花费相当长的时间(比如>30秒),而如果我只是从(原始)打印对话框打印到文件,它几乎可以立即工作。有人知道为什么会这样吗?

树屋酒吧 发表于 2006-8-4 09:51:54

它是在后台打印吗 你能发代码吗?

汪洋大海 发表于 2006-8-4 11:14:05

它是在后台打印的,我已经做了一个测试项目来确保,甚至我的测试代码Sub test()
    ThisDrawing.Plot.PlotToFile "c:\test2.plt", ThisDrawing.ActiveLayout.ConfigName
End Sub
运行需要很长时间,而打印机运行它没有问题
It'这段代码并不复杂。
页: [1]
查看完整版本: 布局空间和印刷,一些启示和一些问题