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

布局空间和印刷,一些灵感和一些问题

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

hendie 发表于 2006-8-3 07:58:32

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

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

我简要地看过打印机api,但从未弄乱过它们,http://support.microsoft.com/kb/q282474/ 似乎都在那里
声明函数文档属性库“winspool.drv”别名“DocumentPropertiesA”(ByVal hwnd As Long,ByVal hPrinter As Long,ByVal pDeviceName As String,pDevModeOutput As DEVMODE,pDevModeInput As DEVMODE,ByVal fMode As Long)

Blikkie 发表于 2006-8-4 05:10:20

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

Blikkie 发表于 2006-8-4 09:51:54

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

Blikkie 发表于 2006-8-4 11:14:05

它是在后台打印的,我做了一个测试项目来确保,即使这样,我的测试代码
Sub test()
    ThisDrawing.Plot.PlotToFile "c:\test2.plt", ThisDrawing.ActiveLayout.ConfigName
End Sub
也需要很长时间才能运行,而打印机运行它没有问题。
这几乎不像是这个代码很复杂或任何东西。
页: [1]
查看完整版本: 布局空间和印刷,一些灵感和一些问题