• C# CAD 框选pdf输出


    在C#中进行AutoCAD二次开发时,实现框选(窗口选择)实体并输出这些实体到PDF文件通常涉及以下步骤:

    1. public ObjectIdCollection GetSelectedEntities()
    2. {
    3. using (var acTrans = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction())
    4. {
    5. var selSet = new SelectionSet();
    6. Document.Editor.PickObjects(PickObjectMode CrossingWindows, "请选择要输出的对象:", selSet);
    7. ObjectIdCollection ids = new ObjectIdCollection();
    8. foreach (ObjectId id in selSet.GetObjectIds())
    9. {
    10. ids.Add(id);
    11. }
    12. return ids;
    13. }
    14. }

    2. **导出到PDF**:
       AutoCAD本身并不直接提供将选定实体导出为PDF的功能。通常需要借助第三方库或者AutoCAD自身的布局(Layouts)功能配合打印命令将内容输出到PDF打印机。

    使用`.NET`环境下的第三方库如`Autodesk.AutoCAD.PlottingServices`可以创建一个PDF打印作业,并设置其输出范围为选定的实体所在的布局。

    1. using Autodesk.AutoCAD.PlottingServices;
    2. using Autodesk.AutoCAD.DatabaseServices;
    3. public void ExportToPdf(ObjectIdCollection entityIds)
    4. {
    5. using (var acTrans = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction())
    6. {
    7. // 获取PlotterService
    8. Plotter plotter = Plotter.GetPlotter();
    9. // 创建新的打印配置
    10. PublishOptions acadPubOpts = new PublishOptions();
    11. acadPubOpts.SetDefaultPublishJobSettings(true);
    12. acadPubOpts.ExportFormat = PublishFormat.PDF;
    13. // 选择一个布局或模型空间作为输出来源
    14. Layout layout = acTrans.GetObject(Layout.ModelSpace.Id, OpenMode.ForRead) as Layout;
    15. if (entityIds.Count > 0)
    16. {
    17. // 如果有实体ID,可能需要创建临时布局以包含选定实体
    18. // 并将实体复制到该布局,然后使用这个布局进行打印
    19. // 这部分根据具体需求和实现方式会有所不同
    20. }
    21. // 设置输出路径等参数
    22. string pdfPath = @"C:\Output\MyDrawing.pdf";
    23. acadPubOpts.PublishDestinationFile.FullPath = pdfPath;
    24. // 创建并添加打印任务
    25. PublishJob pubJob = plotter.CreatePublishJob(acadPubOpts);
    26. pubJob.LayoutOrModel = layout.ObjectId;
    27. // 执行打印任务
    28. plotter.Execute(pubJob);
    29. ed.WriteMessage($"\n成功将选定实体导出至PDF: {pdfPath}");
    30. }
    31. }
    32. // 示例调用:
    33. ObjectIdCollection selectedEntities = GetSelectedEntities();
    34. ExportToPdf(selectedEntities);

  • 相关阅读:
    保障人脸安全!顶象发布《人脸识别安全白皮书》
    深度分析React源码中的合成事件
    SQL语句中过滤条件放在on和where子句中的区别和联系
    07-预约管理-定时任务组件Quartz和定时任务删除图片
    想要制作照片书的看这里!
    RabbitMQ消息确认机制-可靠抵达
    SQL调优
    【另类加法】
    熟悉使用“Linux中lvm”技术,实现容量管理自由
    聊聊前端鉴权方案
  • 原文地址:https://blog.csdn.net/hb_ljj/article/details/136133210