xiguao 发表于 2012-3-2 14:30:40

关于打印设置

Sub 添加打印设置()
      Dim configname() As String = {"HP DesignJet 500 mono 24", "\\PRINT-SERVER\HP DesignJet 430 (E/A0) by HP", "HP LaserJet 5200 PCL 6"}
      Dim CanonicalMediaName() As String = {"User621", "User1644", "User622", "User1645", "User1644", "A3", "A4"} 'A1,A2,,A0,A1,A2,,A3,A4
      Dim plotname() As String = {"moA1", "moA2", "430A0", "430A1", "430A2", "LJA3", "LJA4"}
      Dim plotconfigname As String = "cxb_plt.ctb"
      Dim i As Integer
      Dim acdoc As Document = Application.DocumentManager.MdiActiveDocument
      Dim acCurDb As Database = acdoc.Database
      ''启动一个事务   Start a transaction
      Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
            Dim acLayoutMgr As LayoutManager
            acLayoutMgr = LayoutManager.Current

            '' Get the current layout and output its name in the Command Line window
            Dim acLayout As Layout
            acLayout = acTrans.GetObject(acLayoutMgr.GetLayoutId(acLayoutMgr.CurrentLayout), _
                                       OpenMode.ForRead)
            Dim acPlSet As PlotSettings
            '' Update the PlotConfigurationName property of the PlotSettings object
            Dim acPlSetVdr As PlotSettingsValidator = PlotSettingsValidator.Current '这个东西与打印设置有什么关系?
            For i = 0 To UBound(plotname)
                acPlSet = New PlotSettings(acLayout.ModelType) '打印设置还能用什么办法添加?
                acPlSet.PlotSettingsName = plotname(i)
                Select Case i
                  Case 0, 1
                        acPlSetVdr.SetPlotConfigurationName(acPlSet, configname(0), CanonicalMediaName(i))
                  Case 2, 3, 4
                        acPlSetVdr.SetPlotConfigurationName(acPlSet, configname(1), CanonicalMediaName(i))
                  Case 5, 6
                        acPlSetVdr.SetPlotConfigurationName(acPlSet, configname(2), CanonicalMediaName(i))
                End Select
                acPlSetVdr.SetPlotCentered(acPlSet, True)
                acPlSetVdr.SetCurrentStyleSheet(acPlSet, "cxb_plt.ctb")
                acPlSetVdr.SetPlotPaperUnits(acPlSet, PlotPaperUnit.Millimeters)
                If i = 6 Then
                  acPlSetVdr.SetPlotRotation(acPlSet, PlotRotation.Degrees000)
                Else
                  acPlSetVdr.SetPlotRotation(acPlSet, PlotRotation.Degrees090)
                End If
                acPlSetVdr.SetPlotWindowArea(acPlSet, New Extents2d(0, 0, 5, 9))
                acPlSetVdr.SetPlotType(acPlSet, Autodesk.AutoCAD.DatabaseServices.PlotType.Window)
                acPlSetVdr.SetUseStandardScale(acPlSet, True)
                acdoc.Editor.WriteMessage(vbLf & "New settings name: " & _
                        acPlSet.PlotSettingsName)
                acdoc.Editor.WriteMessage(vbLf & "New device name: " & _
                                             acPlSet.PlotConfigurationName)

                '' 添加新对象到块表记录和事务中   Add the new object to the block table record and the transaction
                '----------------------------------------------------------------------------------------------------------------------------
                acPlSet.AddToPlotSettingsDictionary(acCurDb)
                acTrans.AddNewlyCreatedDBObject(acPlSet, True)
                '--------------------------------------------------------------------------------------------------------------------------------
            Next
            '如何设置默认的打印设置?
            '如何删除某个打印设置?
            acTrans.Commit()
            'acTrans.Dispose()
      End Using
    End Sub

请高手梳理一下这一块的对象模型?

页: [1]
查看完整版本: 关于打印设置