ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

20210905

2021-09-05 11:02:01  阅读:190  来源: 互联网

标签:打印机 参考 打印 subkey printManager 20210905 cad


revit 打印 api

最近开始实现revit打印功能,记录一下踩的坑

  • 官方文档:主要是用到 PrintManager这个类来实现打印设置

  • 打印设置:PrintManager.PrintSetup设置成InSession,修改其PrintParameters Properties后,需要 SaveAs() 后才能生效,打印完成后再删除保存的临时打印设置(参考
    1.参考中对 ViewSheetSetting 也做了类似的处理,但我并没有采用SubmitPrint()进行打印,因为这个方法无法直接覆盖已有pdf,而改为采用doc.Print()方法,因而无需清除临时的ViewSheet;
    2.参考中获取PrintSetup采用的是FilteredElementCollector(doc).OfClass(typeof(PrintSetting))方法,还有GetPrintSettingIds方法(链接)

  • 获取所有的ViewSheetSet:链接

  • printManager.SelectNewPrintDriver(comboBox_Printers.SelectedItem.ToString());
    printManager.PrintRange = PrintRange.Select;
    printManager.CombinedFile = true;
    这上面的顺序不能乱,如果先选择打印范围,再更改打印机,会出现打印范围又被自动修正为Current,导致printManager.CombinedFile = true;出错

  • 在执行doc.Print(viewSetToBePrinted)之前,必须在transaction中执行以下代码,否则会报错
    printManager.ViewSheetSetting.CurrentViewSheetSet = printManager.ViewSheetSetting.InSession;
    printManager.ViewSheetSetting.CurrentViewSheetSet.Views = viewSetToBePrinted;

  • C#获取系统的打印机名称列表:System.Drawing.Printing.PrinterSettings.InstalledPrinters
    获取打印机详细信息:链接
    获取打印机对应的图纸尺寸,直接调用PrintManager.PaperSizes即可

  • GitHub上有现成的实现Revit打印选项框的项目:链接

  • pdf打印时,PrintManager.PrintToFileName 属性只能决定pdf的名称,不能决定打印到哪个路径;
    只能通过修改pdf打印机的默认输出文件夹来实现打印路径的选择;
    以adobe pdf打印机为例,通过修改注册表来修改默认输出文件夹:
    var key = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default);
    var subkey = key.OpenSubKey(@"SOFTWARE\Adobe\Acrobat Distiller\DC\AdobePDFOutputFolder", true);
    var pathKey = subkey.GetValue("").ToString();
    originPath = subkey.GetValue(pathKey).ToString(); //subkey.GetValueNames();
    subkey.SetValue(pathKey, plotDir, RegistryValueKind.String);
    subkey.Close();
    key.Close();
    打印完了再把注册表恢复成原始值即可

cad.net

  • 最近客户反映,插完图框设置布局,布局设置无法适用于本地发布,猜测是布局设置时,直接对layout进行操作,应该新建PlotSettings,并将其设置为layout的布局样式,于是采用了官方文档里的布局设置方法:参考,果然OK了

  • 好东西! 如何绕过cad直接对pc3、pmp文件进行操作:参考 通过这个方法,对项目的打印机配置代码进行了迭代,直接自动化配置pc3、pmp,稳定多了!
    发现了一个宝藏博主!进而发现了更多:
    跃动方程gitee库:除了包含上面的cad打印配置解析外,还有其他几个项目,以后有时间可以测试测试
    cad.net dll动态加载和卸载--还未测试
    cad.net 脱离cad读取dwg的方法A-TeiGhaForDrawing配置教程--还未测试

  • 一般来说,cad加载、卸载cuix文件,直接用acApp.LoadPartialMenu(menuPath); acApp.UnloadPartialMenu(menuPath);即可;
    但要实现cad退出时自动卸载cuix文件,使用acApp.UnloadPartialMenu(menuPath)方法会失效;
    解决办法:链接

  • 获取图框块边界报错,参考:链接
    一般还是图框原文件有问题,图框外有乱七八糟的东西

  • winform中若涉及与cad的交互操作,应该用Application.ShowModelessDialog(form);,而不是直接form.ShowDialog()

  • 之前完成模型空间指定点插图框的时候,坐标问题搞了好久,最后算是慢慢试出了转换的办法,总的来说,不正常的插入图框效果,主要跟ucs坐标系、target变量、doc.Inbase、doc.base等等有关
    找了一个关于cad开发中坐标的系列博客:参考

WinForm

  • 实现treeview和面板的布局:参考

  • 实现treeview部分节点添加checkbox:参考

标签:打印机,参考,打印,subkey,printManager,20210905,cad
来源: https://www.cnblogs.com/hayilee/p/15228718.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有