导出cad实体所有信息到txt并打开(生成唯一文件名) ——c#cad二次开发

效果如下:

建议在保存时指定编码为UTF-8:

using (StreamWriter sw = new StreamWriter(filePath, false, Encoding.UTF8))

     {

         // 写入内容

     }

最终

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Text;
using Path = System.IO.Path;
namespace EnhancedEntityPropertyExporter
{public class ExportCommands{[CommandMethod("xx")]public void 属性查询(){List<Entity> ents = SelectEntities<Entity>();if (ents is null || ents.Count == 0){Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("未选择!\n");return;}try{// 获取桌面路径string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);// 生成基础文件名(格式:图元属性20231010)string baseFileName = $"图元属性{DateTime.Now:yyyyMMddhhmmss}";string fullPath = "";int copyNumber = 0;// 生成唯一文件名do{string suffix = copyNumber > 0 ? $"复件{copyNumber}" : "";string fileName = $"{baseFileName}{suffix}.txt";fullPath = Path.Combine(desktopPath, fileName);copyNumber++;} while (File.Exists(fullPath)); // 循环直到找到不存在的文件名// 构建属性字符串using (StreamWriter sw = new StreamWriter(fullPath, false, System.Text.Encoding.UTF8)){foreach (var obj in ents){sw.WriteLine($"AutoCAD 实体属性导出 - {DateTime.Now}");sw.WriteLine("====================================");sw.WriteLine($"实体类型: {obj.GetType().Name}");sw.WriteLine($"句柄(Handle): {obj.Handle}");sw.WriteLine($"图层(Layer): {obj.Layer}");sw.WriteLine("====================================");sw.WriteLine();string str = "";str += "对象全部属性:  >\n";str += $"类型:    {obj.GetType()}\n";PropertyInfo[] pis = obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);foreach (var pi in pis){try{var value = pi.GetValue(obj, null);str += $"{pi.Name} :    {(value != null ? value.ToString() : "Null")}\n";}catch{str += $"{pi.Name} :    获取失败\n";}}str += "\n";sw.Write(str); // 写入文件}}// 用记事本打开文件Process.Start("notepad.exe", fullPath);}catch (Exception ex){MessageBox.Show($"导出失败:{ex.Message}");}}public List<T> SelectEntities<T>() where T : Entity{List<T> result = new List<T>();Editor editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;var pso = new PromptSelectionOptions();pso.MessageForAdding = "\n请选择:";PromptSelectionResult psr = editor.GetSelection(pso);if (psr.Status == PromptStatus.OK){ObjectId[] objectids = psr.Value.GetObjectIds();Database database = HostApplicationServices.WorkingDatabase;using (Transaction tran = database.TransactionManager.StartTransaction()){foreach (var item in objectids){Entity entity = item.GetObject(OpenMode.ForRead) as Entity;if (entity is T){result.Add(entity as T);}}}}return result;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/75261.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 源码硬核解析系列专题 - 第一篇:Redis源码入门与整体架构

1. 引言 Redis作为一个高性能的内存键值数据库,其源码以简洁高效著称。通过解析Redis源码,我们可以深入理解其单线程模型、事件驱动机制以及模块化设计的精髓。本篇将从Redis的源码目录结构入手,剖析其整体架构,并聚焦启动流程和事件循环的核心实现。 2. Redis源码目录结构…

异步加载+内存分析

异步加载 Resources和AB包的同步加载与异步加载对比代码&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class AsyncLoad : MonoBehaviour {// Start is called before the first frame updatev…

将视频m4s文件转换为mp4格式

将视频m4s文件转换为mp4格式 一般情况&#xff1a;偏大的文件为视频&#xff0c;偏小的文件为音频。 环境要求&#xff1a;下载并安装ffmpeg&#xff0c;并配置好环境变量&#xff0c;如下图&#xff1a; 转换代码&#xff1a; import subprocessdef merge_m4s_to_mp4(vide…

EXCEL报错:无法共享此工作薄,因表包含excel表或xml映射的解决方法

在分享工作薄是&#xff0c;如果出现了“无法共享此工作薄&#xff0c;因表包含excel表或xml映射”的报错&#xff0c;那么有两个原因&#xff1a; 1.包含Excel表格&#xff0c;这个也是相对比较常见的原因。 首先选中表格。如果你不知道表的位置在哪&#xff0c;那么在Excel左…

w2ui 水平滚动移动 虚拟列 数据丢失

https://w2ui.com/web/docs/1.5/w2grid.disableCVS https://github.com/vitmalina/w2ui/issues/1398 解决方案来源 问题现象: 窗口缩小 导致多列 出现水平滚动,滚动时触发本地样式重绘,导致record undefined,从而引发多列报错 解决方案: 使用 disableCVS : true 一次加载到d…

在ensp进行OSPF+RIP+静态网络架构配置

一、实验目的 1.Ospf与RIP的双向引入路由消息 2.Ospf引入静态路由信息 二、实验要求 需求&#xff1a; 路由器可以互相ping通 实验设备&#xff1a; 路由器router7台 使用ensp搭建实验坏境&#xff0c;结构如图所示 三、实验内容 1.配置R1、R2、R3路由器使用Ospf动态路由…

基于mediapipe深度学习和限定半径最近邻分类树算法的人体摔倒检测系统python源码

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 Mediapipe人体姿态检测原理 4.2 限定半径最近邻分类树算法原理 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 人工智能算法python程序运行环…

deep-sync开源程序插件导出您的 DeepSeek 与 public 聊天

一、软件介绍 文末提供下载 deep-sync开源程序插件导出您的 DeepSeek 与 public 聊天&#xff0c;这是一个浏览器扩展&#xff0c;它允许用户公开、私下分享他们的聊天对话&#xff0c;并使用密码或过期链接来增强 Deepseek Web UI。该扩展程序在 Deepseek 界面中添加了一个 “…

苹果签名是否一定安全呢?

苹果签名是一种数字签名技术&#xff0c;用于验证应用程序的来源和完整性。当开发者将应用程序提交到苹果应用商店时&#xff0c;苹果会对应用进行签名&#xff0c;这个签名包含了开发者的身份信息以及应用的相关数据。用户安装应用时&#xff0c;设备会验证签名的有效性&#…

Outlook客户端无法连接到服务器,添加账户显示“无网络连接,请检查你的网络设置,然后重试。[2603]”

1、先切换一下到手机热点或者其他网络&#xff0c;判断是不是现在所连接的网络的问题。如果有VPN代理软件&#xff0c;网银软件&#xff0c;加密软件在后台运行&#xff0c;麻烦退出一下。 2、打开电脑上的 控制面板——网络和Internet——Internet选项——高级——先点击还原…

Laravel 中使用 JWT 作用户登录,身份认证

什么是JWT&#xff1a; JWT 全名 JSON Web Token&#xff0c;是一种开放标准 (RFC 7519)。 用于在网络应用环境间安全地传输信息作为 JSON 对象。 它是一种轻量级的认证和授权机制&#xff0c;特别适合分布式系统的身份验证。 核心特点 紧凑格式&#xff1a;体积小&#x…

51. “闲转易”交易平台小程序(基于springbootvue)

目录 1.系统的受众说明 2 关键技术介绍 2.1 SSM框架 2.2 Java技术及架构介绍 2.3 MYSQL数据库 2.4微信小程序框架 2.5 B/S架构 3 需求分析与可行性分析 3.1功能需求分析 3.2 性能需求分析 3.3系统设计规则与运行环境 3.4系统流程分析 3.5 可行性分析 4 系统设计 …

【STM32】GPIO输入(按键)

目录 一、如何分辨GPIO输入使用什么电频二、输入抖动问题如何消抖三、示例代码 一、如何分辨GPIO输入使用什么电频 先看原理图 即可知道他的初始输入状态需要高电平 判断可知使用上拉输入 二、输入抖动问题如何消抖 电路图中, 按键输入有额外的电容电阻, 是为了消抖 消抖方…

【Android Studio】配置教程以及解决过程中的问题(详细版本)

目录 前言 一、下载安装 二、配置 三、简单使用 新建项目 创建默认项目 四、解决过程中的问题 前言 如果你目前不是第一次安装&#xff0c;那需要完全卸载它。 因为一般电脑卸载 Android Studio 时容易落下一堆配置文件没删&#xff0c;卸载不干净导致无用文件占用空间…

EtherNet/IP转ProfiNet协议转换网关驱动西门子PLC与流量计的毫秒级压力同步控制

一、案例背景 汽车涂装线的静电喷涂工艺对压缩空气流量稳定性要求极高。原系统中Alicat流量计与西门子PLC因协议差异无法联动&#xff0c;导致涂料浪费率高达8%。通过JM-EIPM-PN网关实现供气系统与PLC的深度集成。从而实现了EtherNet/IP转ProfiNet的通讯。 二、设备连接与配置…

如何从0-1的建设云上稳定性?

一、系统架构 整个系统包含了私有云和公有云两个节点。前端和服务端存在私有云和公有云两套系统交互&#xff0c;公有云上的系统为三方黑盒系统。 带着上面的五点风险和挑战&#xff0c;我们从前后端的视角整体制定优化策略和方案。 二、前端策略 作为钉钉的合作产品&#xff…

【学Rust写CAD】17 通用2D仿射变换矩阵结构体(matrix/generic.rs)

源代码 // matrix.rs use std::ops::{Add, Mul};use std::ops::{Add, Mul};/// 通用2D仿射变换矩阵&#xff08;元素仅需Copy&#xff09; #[derive(Clone, Copy, Debug, PartialEq)] pub struct Matrix<X, Y, Xx, Xy, Yx, Yy> {pub x: X, pub y: Y,pub xx: Xx, pub xy:…

Spring Boot @RequestParam 解析参数时的常见问题及解决方案

1&#xff0c;遇到的问题&#xff1a;将后端接口写完后我想通过PostMan进行简单的测试一下&#xff0c;一不小心就遇到了这样的情况&#xff1a; org.springframework.web.bind.MissingServletRequestParameterException: Required Integer parameter contractId is not prese…

Golang中间件的原理与实现

一. 什么是 Middleware&#xff1f; 中间件&#xff08;Middleware&#xff09; 是一种 高阶函数&#xff0c;它接受一个函数作为输入&#xff0c;并返回一个经过增强的函数。它的核心思想是通过函数的递归嵌套&#xff0c;动态地为函数添加功能。在 Golang 中&#xff0c;中间…

算法设计学习3

实验目的及要求&#xff1a; 1.加强对结构体的应用。 2.熟悉字符计数排序。 实验设备环境&#xff1a; 1.微型计算机 2.DEV C(或其他编译软件) 实验步骤&#xff1a; 任务&#xff1a;要求使用自定义函数来实现 输入一段文本&#xff0c;统计每个字符出现的次数&#xff0c;按…