明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3513|回复: 4

请帮忙看一下在VBA中的页面设置为什么不能把打印范围改成 窗口 型式?

[复制链接]
发表于 2004-8-6 11:01:00 | 显示全部楼层 |阅读模式
  1. Option ExplicitSub addPlotCon()
  2.       
  3.        On Error Resume Next
  4.       
  5.        '删除所有的设置
  6.       
  7.        Call delAllPlotCon
  8.                                                    
  9.        addPlotConfiguration "HP5000LE--A3", "\\Laserjet server\HP5000LE", "acad.ctb", _
  10.                                                    "A3", True, True
  11.                                                    
  12.       
  13. End SubFunction addPlotConfiguration(plotConName As String, configName As String, styleSheet As String, mediaName As String, _
  14.                            isRotate90 As Boolean, ifFit As Boolean) As AcadPlotConfiguration
  15.                            
  16.        'On Error Resume Next      
  17.        Dim PlotConfigurations As AcadPlotConfigurations
  18.        Dim plotCon As AcadPlotConfiguration
  19.       
  20.        Set PlotConfigurations = ThisDrawing.PlotConfigurations
  21.        Set plotCon = PlotConfigurations.Add(plotConName, True)
  22.       
  23.        With plotCon
  24.                
  25.                .configName = configName
  26.                .CanonicalMediaName = mediaName
  27.                .PaperUnits = acMillimeters
  28.                .styleSheet = styleSheet
  29.                .CenterPlot = True
  30.                
  31.                '.PlotHidden = False
  32.                
  33.                If isRotate90 Then
  34.                        .PlotRotation = ac90degrees
  35.                Else
  36.                        .PlotRotation = ac0degrees
  37.                End If
  38.                
  39.                If ifFit Then
  40.                        .StandardScale = acScaleToFit
  41.                Else
  42.                        .StandardScale = ac1_1
  43.                End If
  44.                
  45.                .PlotType = acExtents     '这一步可以运行
  46.                .PlotType = acWindow   '可是这一步就不行了
  47.                                .PlotType = acView
  48.             
  49.                '.PlotViewportBorders = False
  50.                '.PlotViewportsFirst = True
  51.                '.PlotWithLineweights = True
  52.                .PlotWithPlotStyles = True
  53.                '.ScaleLineweights = False
  54.                '.ShowPlotStyles = False
  55.                
  56.                '.UseStandardScale = True
  57.                
  58.        End With
  59.       
  60.        Set addPlotConfiguration = plotCon
  61.       
  62. End Function
  63. Sub delAllPlotCon()
  64.        Dim plotCon As AcadPlotConfiguration
  65.        '删除所有的设置
  66.        For Each plotCon In ThisDrawing.PlotConfigurations
  67.                plotCon.Delete
  68.        Next
  69. End Sub
代码运行到               .PlotType = acExtents     '这一步可以运行
               .PlotType = acWindow   '可是这一步就不行了不知道如何才能把PlotType改成acwindow?请各位高手指点一下。
发表于 2004-8-6 17:29:00 | 显示全部楼层
先设置打印WINDOWS的两个角坐标,再.PlotType = acWindow ,就可以至少我的程序是这样的 ThisDrawing.ModelSpace.Layout.SetWindowToPlot LowerLeft, UpperRight
hisDrawing.ModelSpace.Layout.PlotType = acWindow
 楼主| 发表于 2004-8-6 17:54:00 | 显示全部楼层
谢谢nxy_918,按你的方法已经解决了,下面是改变后的函数,可以满足要求了。
  1. Function addPlotConfiguration(plotConName As String, configName As String, styleSheet As String, mediaName As String, _
  2.                            isRotate90 As Boolean, ifFit As Boolean) As AcadPlotConfiguration
  3.                            
  4.        On Error Resume Next
  5.       
  6.        Dim leftPnt(0 To 1) As Double, rightPnt(0 To 1) As Double
  7.       
  8.        leftPnt(0) = 0: leftPnt(1) = 0
  9.        rightPnt(0) = 1: rightPnt(1) = 1
  10.       
  11.        Dim PlotConfigurations As AcadPlotConfigurations
  12.        Dim plotCon As AcadPlotConfiguration
  13.       
  14.        Set PlotConfigurations = ThisDrawing.PlotConfigurations
  15.        Set plotCon = PlotConfigurations.Add(plotConName, True)
  16.       
  17.        With plotCon
  18.                
  19.                .configName = configName
  20.                .CanonicalMediaName = mediaName
  21.                .PaperUnits = acMillimeters
  22.                .styleSheet = styleSheet
  23.                .CenterPlot = True
  24.                
  25.                '.PlotHidden = False
  26.                
  27.                If isRotate90 Then
  28.                        .PlotRotation = ac90degrees
  29.                Else
  30.                        .PlotRotation = ac0degrees
  31.                End If
  32.                
  33.                If ifFit Then
  34.                        .StandardScale = acScaleToFit
  35.                Else
  36.                        .StandardScale = ac1_1
  37.                End If
  38.                
  39.                .SetWindowToPlot leftPnt, rightPnt
  40.                .PlotType = acWindow
  41.             
  42.                '.PlotViewportBorders = False
  43.                '.PlotViewportsFirst = True
  44.                '.PlotWithLineweights = True
  45.                .PlotWithPlotStyles = True
  46.                '.ScaleLineweights = False
  47.                '.ShowPlotStyles = False
  48.                
  49.                '.UseStandardScale = True
  50.                
  51.        End With
  52.       
  53.        Set addPlotConfiguration = plotCon
  54.       
  55. End Function
发表于 2004-12-3 14:05:00 | 显示全部楼层
正也遇到出图问题,怎样在用 ThisDrawing.Plot.PlotToDevice 语句时让楼上的程序设置起作用,我要输出黑白没有灰度的图,用vb程序实现不了,请帮忙.
发表于 2005-8-12 17:02:00 | 显示全部楼层

 请教老兄帮忙给我解释一下这句是什么意思好吧,谢谢了!

   addPlotConfiguration "HP5000LE--A3", "\\Laserjet server\HP5000LE", "acad.ctb", _
                          "A3", True, True

能详细点最好的啦!!!
                         

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-27 12:38 , Processed in 0.186531 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表