C# CAD 框选pdf输出

2024-02-17 03:44
文章标签 c# 输出 pdf .net cad netcore 框选

本文主要是介绍C# CAD 框选pdf输出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

public ObjectIdCollection GetSelectedEntities()
{using (var acTrans = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction()){var selSet = new SelectionSet();Document.Editor.PickObjects(PickObjectMode CrossingWindows, "请选择要输出的对象:", selSet);ObjectIdCollection ids = new ObjectIdCollection();foreach (ObjectId id in selSet.GetObjectIds()){ids.Add(id);}return ids;}
}

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

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

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

这篇关于C# CAD 框选pdf输出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/716578

相关文章

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

C# Where 泛型约束的实现

《C#Where泛型约束的实现》本文主要介绍了C#Where泛型约束的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用的对象约束分类where T : structwhere T : classwhere T : ne

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

C#中DrawCurve的用法小结

《C#中DrawCurve的用法小结》本文主要介绍了C#中DrawCurve的用法小结,通常用于绘制一条平滑的曲线通过一系列给定的点,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 如何使用 DrawCurve 方法(不带弯曲程度)2. 如何使用 DrawCurve 方法(带弯曲程度)3.使用Dr

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

详解如何通过Python批量转换图片为PDF

《详解如何通过Python批量转换图片为PDF》:本文主要介绍如何基于Python+Tkinter开发的图片批量转PDF工具,可以支持批量添加图片,拖拽等操作,感兴趣的小伙伴可以参考一下... 目录1. 概述2. 功能亮点2.1 主要功能2.2 界面设计3. 使用指南3.1 运行环境3.2 使用步骤4. 核