找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3568|回复: 6

[求助] c#或VB.net怎么设置打印样式才不出错呢?

[复制链接]
发表于 2014-9-6 14:15:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
’设置打印样式(与原样式相同时出错)
acPlSetVdr.SetCurrentStyleSheet(acPlSet, "monochrome.ctb")
‘全路径也有时可以,有时出错。
acPlSetVdr.SetCurrentStyleSheet(acPlSet, "C:\Documents and Settings\Administrator\Application Data\Autodesk\AutoCAD 2008\R17.1\chs\Plot Styles\monochrome.ctb")
那位老大能帮帮我,谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2014-9-17 13:26:31 | 显示全部楼层
本帖最后由 quwang2000 于 2014-9-17 13:33 编辑

  '模型空间PDF打印设置(不启动打印进度跟踪框)
    Public Sub PDFPlotmodle(ByRef cldoc As Document, ByRef tukuanghao As String, ByRef acplextents As Extents2d, ByRef tuzhifilename As String, ByRef bili As Double)
        Dim acCurDb As Database = cldoc.Database
        Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
            '' 引用布局管理器LayoutManager
            Dim acLayoutMgr As LayoutManager
            acLayoutMgr = LayoutManager.Current
            '' 获取当前布局,在命令行窗口显示布局名字
            Dim acLayout As Layout
            acLayout = acTrans.GetObject(acLayoutMgr.GetLayoutId(acLayoutMgr.CurrentLayout), OpenMode.ForRead)
            '' 从布局中获取PlotInfo
            Dim acPlInfo As PlotInfo = New PlotInfo()
            acPlInfo.Layout = acLayout.ObjectId
            '' 复制布局中的PlotSettings
            Dim acPlSet As PlotSettings = New PlotSettings(acLayout.ModelType)
            acPlSet.CopyFrom(acLayout)
            '' 更新PlotSettings对象
            Dim acPlSetVdr As PlotSettingsValidator = PlotSettingsValidator.Current
            '' 设置打印区域(以下两句顺序不能反)
            acPlSetVdr.SetPlotWindowArea(acPlSet, acplextents)
            acPlSetVdr.SetPlotType(acPlSet, Autodesk.AutoCAD.DatabaseServices.PlotType.Window)
            '' 设置打印比例
            acPlSetVdr.SetUseStandardScale(acPlSet, True)
            acPlSetVdr.SetStdScaleType(acPlSet, StdScaleType.ScaleToFit)
            '' 居中打印
            acPlSetVdr.SetPlotCentered(acPlSet, True)
            '' 设置使用的打印设备
            Select Case tukuanghao
                Case "A4"
                    '' 设置打印方向
                    acPlSetVdr.SetPlotRotation(acPlSet, PlotRotation.Degrees000)
                    acPlSetVdr.SetPlotConfigurationName(acPlSet, "DWG To PDF.pc3", "ISO_A4_(210.00_x_297.00_MM)")
                Case "A3"
                    '' 设置打印方向
                    acPlSetVdr.SetPlotRotation(acPlSet, PlotRotation.Degrees000)
                    acPlSetVdr.SetPlotConfigurationName(acPlSet, "DWG To PDF.pc3", "ISO_A3_(420.00_x_297.00_MM)")
                Case "A2"
                    '' 设置打印方向
                    acPlSetVdr.SetPlotRotation(acPlSet, PlotRotation.Degrees000)
                    acPlSetVdr.SetPlotConfigurationName(acPlSet, "DWG To PDF.pc3", "ISO_A2_(594.00_x_420.00_MM)")
                Case "A1"
                    '' 设置打印方向
                    acPlSetVdr.SetPlotRotation(acPlSet, PlotRotation.Degrees000)
                    acPlSetVdr.SetPlotConfigurationName(acPlSet, "DWG To PDF.pc3", "ISO_A1_(841.00_x_594.00_MM)")
                Case "A0"
                    '' 设置打印方向
                    acPlSetVdr.SetPlotRotation(acPlSet, PlotRotation.Degrees270)
                    acPlSetVdr.SetPlotConfigurationName(acPlSet, "DWG To PDF.pc3", "ISO_A0_(841.00_x_1189.00_MM)")
            End Select
            '刷新设备列表(重要,不刷新不能正确设置打印样式)
            acPlSetVdr.RefreshLists(acPlSet)
            '设置打印尺寸单位(mm)
            acPlSetVdr.SetPlotPaperUnits(acPlSet, PlotPaperUnit.Millimeters)
            '' 设置打印样式
            acPlSetVdr.SetCurrentStyleSheet(acPlSet, "monochrome.ctb")
            '' 用上述设置信息覆盖PlotInfo对象,
            '' 不会将修改保存回布局
            acPlInfo.OverrideSettings = acPlSet
            '' 验证打印信息
            Dim acPlInfoVdr As PlotInfoValidator = New PlotInfoValidator()
            acPlInfoVdr.MediaMatchingPolicy = MatchingPolicy.MatchEnabled
            acPlInfoVdr.Validate(acPlInfo)
            '' 检查是否有正在处理的打印任务
            If PlotFactory.ProcessPlotState = Autodesk.AutoCAD.PlottingServices.ProcessPlotState.NotPlotting Then
                Using acPlEng As PlotEngine = PlotFactory.CreatePublishEngine()
                    acPlEng.BeginPlot(Nothing, Nothing)
                    '' 定义打印输出                    
                    Dim File As String = cldoc.Name
                    Dim fileinfo As FileInfo = New FileInfo(File)
                    Dim path As String = fileinfo.DirectoryName

                    Dim outtuzhifilename As String = Replace(tuzhifilename, "/", "-")
                    If Not Directory.Exists(path & "pdf图纸") Then
                        FileIO.FileSystem.CreateDirectory(path & "pdf图纸")
                    End If
                    Dim outfilename As String = path & "pdf图纸\" & outtuzhifilename
                    If FileIO.FileSystem.FileExists(outfilename & ".pdf") Then
                        cmfilecount += 1
                        outfilename = outfilename & "(" & cmfilecount.ToString() & ")"
                        acPlEng.BeginDocument(acPlInfo, cldoc.Name, Nothing, 1, True, outfilename)
                    Else
                        acPlEng.BeginDocument(acPlInfo, cldoc.Name, Nothing, 1, True, outfilename)
                    End If
                    '' 打印第一张图/布局
                    Dim acPlPageInfo As PlotPageInfo = New PlotPageInfo()
                    acPlEng.BeginPage(acPlPageInfo, acPlInfo, True, Nothing)
                    acPlEng.BeginGenerateGraphics(Nothing)
                    acPlEng.EndGenerateGraphics(Nothing)
                    '' 结束第一张图/布局的打印
                    acPlEng.EndPage(Nothing)
                    '' 结束文档局的打印
                    acPlEng.EndDocument(Nothing)
                    '' 打印结束
                    acPlEng.EndPlot(Nothing)
                End Using
            End If
            acTrans.Commit()
            '释放资源
            acPlInfo.Dispose()
            acPlSet.Dispose()
        End Using
    End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

发表于 2014-9-6 20:15:45 | 显示全部楼层
一直没有接触打印这一块 因为平时也没有这一块的需求 呵呵
只能提下建议 如果有式样 应该就不用设置了吧?

PS 可以看看kean的打印部分
或者这里有mj 水手的一个总结
http://bbs.mjtd.com/forum.php?mo ... %3D83%26typeid%3D83

点评

感谢你的回复,这个更应该叫做调用已有的设置,可是一直有一些问题,又不是每次都不行,有时又可以。看当前的样式状态。 不知怎么样好些。  详情 回复 发表于 2014-9-8 19:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-8 19:17:35 | 显示全部楼层
雪山飞狐(lzh) 发表于 2014-9-6 20:15
一直没有接触打印这一块 因为平时也没有这一块的需求 呵呵
只能提下建议 如果有式样 应该就不用设置了吧? ...

感谢你的回复,这个更应该叫做调用已有的设置,可是一直有一些问题,又不是每次都不行,有时又可以。看当前的样式状态。
不知怎么样好些。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-11 12:37:59 | 显示全部楼层
这个问题已解决,页面设置前要先更新设备列表。然后才能正确设置打印样式。搞了几天,终于在autocad2015.net的官方说明中找到了解决办法。

点评

非常感谢,这个正是我想要的,很棒  详情 回复 发表于 2020-2-19 14:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-9-11 14:05:07 来自手机 | 显示全部楼层
恭喜 最好把打印相关的内容总结下 呵呵 最近正准备用teigha做个批打印
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 104个

财富等级: 日进斗金

发表于 2020-2-19 14:51:14 | 显示全部楼层
quwang2000 发表于 2014-9-11 12:37
这个问题已解决,页面设置前要先更新设备列表。然后才能正确设置打印样式。搞了几天,终于在autocad2015.ne ...

非常感谢,这个正是我想要的,很棒
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 20:28 , Processed in 0.261533 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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