当前位置: 首页 > news >正文

C# Cad2016二次开发选择csv导入信息(七)

//选择csv导入信息
[CommandMethod("setdata")]
//本程序在AutoCAD的快捷命令是"DLLLOAD"
public void setdata()
{Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();dlg.DefaultExt = ".csv";// Display OpenFileDialog by calling ShowDialog method Nullable<bool> result = dlg.ShowDialog();//判断确认按钮if (result == true){//选择的文件路径string file_dir = dlg.FileName;}
}

 使用Microsoft.Win32.OpenFileDialog注意需要引用 PresentationFramework.dll控件

 [CommandMethod("setdata")]public void SetData(){// 选择CSV文件Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();dlg.DefaultExt = ".csv";Nullable<bool> result = dlg.ShowDialog();if (result != true)return;// 获取当前文档和数据库Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;Database db = doc.Database;Editor ed = doc.Editor;// 打开CSV文件并逐行处理string filePath = dlg.FileName;string[] csvLines = File.ReadAllLines(filePath);CheckAndCreateLayer("qlr权利人");using (Transaction trans = db.TransactionManager.StartTransaction()){BlockTable blockTable = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;BlockTableRecord modelSpace = trans.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;foreach (string csvLine in csvLines){string[] csvData = csvLine.Split(',');if (csvData.Length < 6){ed.WriteMessage("CSV数据格式不正确!");continue;}string layerName = csvData[0];string name = csvData[1];//double x, y, height;int color;if (!double.TryParse(csvData[2], out x) || !double.TryParse(csvData[3], out y) ||!double.TryParse(csvData[4], out height) || !int.TryParse(csvData[5], out color)){ed.WriteMessage("CSV数据类型转换出错!");continue;}// 检查图层是否已存在,不存在创建图层CheckAndCreateLayer(layerName);// 创建实体对象Point3d position = new Point3d(x, y, 0);DBText text = new DBText();text.Position = position;text.TextString = name;text.Height = height;text.Color = Color.FromColorIndex(ColorMethod.ByAci, (byte)color);//text.LayerId = ObjectId(layerName);LayerTableRecord ltr = new LayerTableRecord();text.LayerId = GetLayerId(layerName);// 添加实体到模型空间modelSpace.AppendEntity(text);trans.AddNewlyCreatedDBObject(text, true);//拼接CSV字符串string value = layerName + "," + name + "," + x + "," + y + "," + height + "," + color;ed.WriteMessage("\n" + value);}trans.Commit();}}public ObjectId GetLayerId(string layerName){Document doc = Application.DocumentManager.MdiActiveDocument;Database db = doc.Database;using (Transaction tr = db.TransactionManager.StartTransaction()){LayerTable layerTable = (LayerTable)tr.GetObject(db.LayerTableId, OpenMode.ForRead);if (layerTable.Has(layerName)){LayerTableRecord layerRecord = (LayerTableRecord)tr.GetObject(layerTable[layerName], OpenMode.ForRead);return layerRecord.ObjectId;}}return ObjectId.Null;}public void CheckAndCreateLayer(string layerName){Document doc = Application.DocumentManager.MdiActiveDocument;Database db = doc.Database;Editor ed = doc.Editor;using (Transaction tr = db.TransactionManager.StartTransaction()){LayerTable layerTable = tr.GetObject(db.LayerTableId, OpenMode.ForRead) as LayerTable;if (!layerTable.Has(layerName)){LayerTableRecord layer = new LayerTableRecord();layer.Name = layerName;layerTable.UpgradeOpen();ObjectId layerId = layerTable.Add(layer);tr.AddNewlyCreatedDBObject(layer, true);// 设置新图层的属性layer.Color = Autodesk.AutoCAD.Colors.Color.FromColor(System.Drawing.Color.Red);layer.LineWeight = LineWeight.LineWeight030;tr.Commit();ed.WriteMessage("图层已创建: {0}\n", layerName);}else{tr.Commit();ed.WriteMessage("图层已存在: {0}\n", layerName);}}}

 注意事项 导入csv编码 utf8
导入视图如下


 

相关文章:

C# Cad2016二次开发选择csv导入信息(七)

//选择csv导入信息 [CommandMethod("setdata")] //本程序在AutoCAD的快捷命令是"DLLLOAD" public void setdata() {Microsoft.Win32.OpenFileDialog dlg new Microsoft.Win32.OpenFileDialog();dlg.DefaultExt ".csv";// Display OpenFileDial…...

[陇剑杯 2021]日志分析

[陇剑杯 2021]日志分析 题目做法及思路解析&#xff08;个人分享&#xff09; 问一&#xff1a;单位某应用程序被攻击&#xff0c;请分析日志&#xff0c;进行作答&#xff1a; 网络存在源码泄漏&#xff0c;源码文件名是_____________。(请提交带有文件后缀的文件名&…...

Java面试汇总——jvm篇

目录 JVM的组成&#xff1a; 1、JVM 概述(⭐⭐⭐⭐) 1.1 JVM是什么&#xff1f; 1.2 JVM由哪些部分组成&#xff0c;运行流程是什么&#xff1f; 2、什么是程序计数器&#xff1f;(⭐⭐⭐⭐) 3、介绍一下Java的堆(⭐⭐⭐⭐) 4、虚拟机栈(⭐⭐⭐⭐) 4.1 什么是虚拟机栈&…...

数据结构:完全二叉树(递归实现)

如果完全二叉树的深度为h&#xff0c;那么除了第h层外&#xff0c;其他层的节点个数都是满的&#xff0c;第h层的节点都靠左排列。 完全二叉树的编号方法是从上到下&#xff0c;从左到右&#xff0c;根节点为1号节点&#xff0c;设完全二叉树的节点数为sum&#xff0c;某节点编…...

RK3568 移植Ubuntu

使用ubuntu-base构建根文件系统 1、到ubuntu官网获取 ubuntu-base-18.04.5-base-arm64.tar.gz Ubuntu Base 18.04.5 LTS (Bionic Beaver) 2、将获取的文件拷贝到ubuntu虚拟机,新建目录,并解压 mkdir ubuntu_rootfs sudo tar -xpf u...

C++大学教程(第九版)6.34猜数字游戏 6.35 修改的猜数字游戏

文章目录 6.34题目代码运行截图6.35题目代码运行截图 6.34题目 猜数字游戏)编写一个程序&#xff0c;可以玩“猜数字”的游戏。具体描述如下:程序在1~1000之间的整数中随机选择需要被猜的数&#xff0c;然后显示: 代码 #include <iostream> #include <cstdlib>…...

【立创EDA-PCB设计基础】5.布线设计规则设置

前言&#xff1a;本文详解布线前的设计规则设置。经过本专栏中的【立创EDA-PCB设计基础】前几节已经完成了布局&#xff0c;接下来开始进行布线&#xff0c;在布线之前&#xff0c;要设置设计规则。 目录 1.间距设置 1.1 安全间距设置 1.2 其它间距设置 2.物理设置 2.1 导…...

ElementUI简介以及相关操作

ElementUI是一套基于Vue.js的桌面端组件库&#xff0c;提供了丰富的组件帮助开发人员快速构建功能强大、风格统一的页面。以下是ElementUI的简介以及相关操作&#xff1a; 简介&#xff1a;ElementUI是一套为开发者、设计师和产品经理准备的基于Vue 2.0的桌面端组件库&#xff…...

内存耗尽排查思路

内存耗尽排查思路 – WhiteNights Site 标签&#xff1a;日志 内存间断性耗尽问题的排查思路 先简单说下背景。排查了两天给我整麻了。 找了个镜像模板做虚拟机。但是发现只要一开机&#xff0c;内存每隔几秒就会被耗尽。看内存的波形图就和坐过山车一样&#xff0c;一会占…...

OpenCV书签 #差值哈希算法的原理与相似图片搜索实验

1. 介绍 差值哈希算法&#xff08;Difference Hash Algorithm&#xff0c;简称dHash&#xff09; 是哈希算法的一种&#xff0c;主要可以用来做以图搜索/相似图片的搜索工作。 2. 原理 差值哈希算法通过计算相邻像素的差异来生成哈希&#xff0c;即通过缩小图像的每个像素与平…...

Unity中URP下获取主灯信息

文章目录 前言一、计算BulinnPhone的函数有两个重载1、 目前最新使用的是该方法&#xff08;这是我们之后主要分析的函数&#xff09;2、 被淘汰的老方法&#xff0c;需要传入一堆数据 二、GetMainLight1、Light结构体2、GetMainLight具有4个方法重载3、1号重载干了什么&#x…...

尝试着在Stable Diffusion里边使用SadTalker进行数字人制作

首先需要标明的是&#xff0c;我这里是图片说话类型&#xff0c;而且是看了知识星球AI破局俱乐部大航海数字人手册进行操作的。写下这篇文章是防止我以后遗忘。 我使用的基础软件是Stable Diffusion&#xff0c;SadTalker是作为插件放进来的&#xff0c;需要注意的是这对自己的…...

链路聚合原理与配置

链路聚合原理 随着网络规模不断扩大&#xff0c;用户对骨干链路的带宽和可靠性提出了越来越高的要求。在传统技术中&#xff0c;常用更换高速率的接口板或更换支持高速率接口板的设备的方式来增加带宽&#xff0c;但这种方案需要付出高额的费用&#xff0c;而且不够灵活。采用…...

第8章 通信网络安全

文章目录 8.1 信息系统安全概述8.1.1 信息系统的构成和分类8.1.2 信息系统安全1、信息系统中的安全概念2、信息系统安全问题的发展演变3、信息系统的安全结构 8.1.3 信息系统的安全保护等级1.TCSEC&#xff08;可信计算机系统评估准则&#xff09;2. 我国信息安全标准 8.1.4 通…...

L1-092 进化论(Java)

在“一年一度喜剧大赛”上有一部作品《进化论》&#xff0c;讲的是动物园两只猩猩进化的故事。猩猩吕严说自己已经进化了 9 年了&#xff0c;因为“三年又三年”。猩猩土豆指出“三年又三年是六年呐”…… 本题给定两个数字&#xff0c;以及用这两个数字计算的结果&#xff0c;…...

SpringBoot 源码解析5:ConfigurationClassPostProcessor整体流程和@ComponentScan源码分析

SpringBoot 源码解析5&#xff1a;ConfigurationClassPostProcessor整体流程和ComponentScan源码分析 1. 知道以下几点&#xff0c;读ConfigurationClassPostProcessor源码会更轻松2. 源码解析 ConfigurationClassPostProcessor#postProcessBeanDefinitionRegistry2.1 Configur…...

一.初识Linux 1-3操作系统概述Linux初识虚拟机介绍

目录 一.初识Linux 1.操作系统概述 计算机组成 硬件&#xff1a; 软件&#xff1a; 操作系统&#xff1a; 操作系统工作流程 操作系统作用 常见的操作系统 PC端&#xff1a; 移动端&#xff1a;&#xff08;掌上操作系统&#xff09; 一.初识Linux 2.Linux初识 linu…...

Eureka整合seata分布式事务

文章目录 一、分布式事务存在的问题二、分布式事务理论三、认识SeataSeata分布式事务解决方案1、XA模式2、AT模式3、SAGA模式4.SAGA模式优缺点&#xff1a;5.四种模式对比 四、微服务整合Seata AT案例Seata配置微服务整合2.1、父工程项目创建引入依赖 2.2、Eureka集群搭建2.3、…...

华为云磁盘性能指标(参考)

MD[华为云磁盘性能指标(参考)] 云硬盘&#xff08;Elastic Volume Service, EVS&#xff09; 根据性能&#xff0c;磁盘可分为极速型SSD V2、极速型SSD、通用型SSD V2、超高IO、通用型SSD、高IO、普通IO。 性能指标(参考)&#xff0c;测速说明&#xff1a;操作系统-windows …...

利用OpenGL图形库实现人物动画移动效果

使用OpenGL库实现人物动画移动效果需要涉及到更复杂的图形编程和事件处理。以下是一个简单的例子&#xff0c;使用OpenGL和GLUT库实现人物的基本动画移动效果。 确保你已经安装了OpenGL和GLUT。你可以使用包管理器或者从官方网站下载并安装。 一、如果你已经安装过了OpenGL和…...

Anthropic泄露新一代Claude Mythos 模型,具备网络安全漏洞检测优势

配置错误曝光新模型Anthropic PBC 内容管理系统的一处配置错误意外泄露了其正在测试的新型大语言模型 Claude Mythos。该公司周四向《财富》杂志证实&#xff0c;工程师已完成该模型的训练工作&#xff0c;目前正与早期客户进行试点测试。Anthropic 强调这是其"迄今为止构…...

GEO数据整合实战:跨越批次效应的多队列联合分析

1. GEO数据整合的核心挑战 当你手头有多个GEO数据集时&#xff0c;就像收集了来自不同实验室的实验笔记。我处理过GSE83521和GSE89143的联合分析&#xff0c;发现最大的障碍就是批次效应——就像不同厨师用相同菜谱做菜&#xff0c;味道总会有些差异。这种差异可能来自实验时间…...

TM1651驱动LED条形图模块原理与嵌入式驱动开发

1. Whadda LED Bar Graph 模块技术解析与嵌入式驱动开发实践1.1 模块硬件架构与核心芯片特性Whadda WPI471 是一款基于 TM1651 驱动 IC 的 10 段 LED 条形图显示模块&#xff0c;广泛应用于嵌入式系统中的模拟量可视化指示场景&#xff0c;如电池电量、信号强度、温度梯度、音频…...

从F1 90到62 F1 90:用Wireshark和CANoe‘解剖’一次完整的UDS 0x22数据读取会话

从F190到62F190&#xff1a;用Wireshark和CANoe解剖UDS 0x22数据读取会话 当你第一次在Wireshark中看到22服务请求和62响应报文时&#xff0c;那些十六进制字节可能就像天书一样难以理解。但正是这些看似杂乱的数据流&#xff0c;承载着现代汽车电子系统最核心的诊断信息交换。…...

2026指纹浏览器与Web端设备识别技术的对抗与协同:从风控博弈到合规共生

在 2026 年的 Web 生态中&#xff0c;指纹浏览器与 Web 端设备识别技术始终处于 “对抗与协同” 的动态平衡中 —— 平台通过设备识别技术构建风控体系&#xff0c;防范恶意注册、批量操作、账号盗用等违规行为&#xff1b;指纹浏览器通过技术手段重构设备特征&#xff0c;实现…...

iOS折叠动画终极指南:用Popping打造惊艳视觉效果

iOS折叠动画终极指南&#xff1a;用Popping打造惊艳视觉效果 【免费下载链接】popping A collection of animation examples for iOS apps. 项目地址: https://gitcode.com/gh_mirrors/po/popping 想要为你的iOS应用添加令人惊艳的折叠动画效果吗&#xff1f;Popping项目…...

双目视觉实战:从标定参数到深度图的完整OpenCV实现指南

双目视觉实战&#xff1a;从标定参数到深度图的完整OpenCV实现指南 在计算机视觉领域&#xff0c;双目立体视觉一直是获取三维环境信息的重要技术手段。与激光雷达等主动传感器相比&#xff0c;基于双相机的立体视觉系统具有成本低、数据丰富、易于部署等优势。本文将深入探讨如…...

AMD GPU大模型部署与优化指南:基于ollama-for-amd的本地AI解决方案

AMD GPU大模型部署与优化指南&#xff1a;基于ollama-for-amd的本地AI解决方案 【免费下载链接】ollama-for-amd Get up and running with Llama 3, Mistral, Gemma, and other large language models.by adding more amd gpu support. 项目地址: https://gitcode.com/gh_mir…...

FRCRN命令行工具使用详解:从音频文件到降噪输出的完整流程

FRCRN命令行工具使用详解&#xff1a;从音频文件到降噪输出的完整流程 你是不是也遇到过这种情况&#xff1f;手头有一堆录音文件&#xff0c;背景里混杂着各种杂音——可能是空调的嗡嗡声、键盘的敲击声&#xff0c;或者是窗外的车流声。手动处理这些音频不仅费时费力&#x…...

南北阁Nanbeige 4.1-3B Git版本控制实战:从入门到团队协作

南北阁Nanbeige 4.1-3B Git版本控制实战&#xff1a;从入门到团队协作 本文面向刚接触版本控制的开发者&#xff0c;手把手教你用南北阁Nanbeige 4.1-3B掌握Git核心技能&#xff0c;从基础命令到团队协作全流程。 1. 为什么你需要Git版本控制&#xff1f; 刚开始写代码时&…...