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
导入视图如下


 

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

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

相关文章

什么样的宣传才能对消费者起效?

品牌离不开宣传&#xff0c;宣传又直接面向消费者&#xff0c;然后面对铺天盖地的宣传&#xff0c;除了从业人员&#xff0c;相信大部分用户都会有抵触心理&#xff0c;今天媒介盒子就来和大家聊聊&#xff0c;什么样的宣传能够提高消费者的接受度&#xff0c;让宣传不白宣传。…

RabbitMQ中交换机的应用 ,原理 ,案例的实现

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是平顶山大师&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《RabbitMQ中交换机的应用及原理&#xff0c;案…

TCP服务器最多支持多少客户端连接

目录 一、理论数值 二、实际部署 参考 一、理论数值 首先知道一个基础概念&#xff0c;对于一个 TCP 连接可以使用四元组&#xff08;src_ip, src_port, dst_ip, dst_port&#xff09;进行唯一标识。因为服务端 IP 和 Port 是固定的&#xff08;如下图中的bind阶段&#xff0…

Pytest中conftest.py的用法

Pytest中conftest.py的用法 ​ 在官方文档中&#xff0c;描述conftest.py是一个本地插件的文件&#xff0c;简单的说就是在这个文件中编写的方法&#xff0c;可以在其他地方直接进行调用。 注意事项 只能在根目录编写conftest.py 插件加载顺序在搜集用例之前 基础用法 这里…

NebulaGraph is nothing without you | 社区 2023 年度人物合集

在去年的年度人物 回顾中&#xff0c;我们看到了形形色色的人们&#xff0c;他们当中有帮 NebulaGraph 捉 bug 的小能手&#xff0c;也有通过用回复来解答他人疑惑的启蒙者…在今年&#xff08;2023 年&#xff09;&#xff0c;我们这个整点不一样的&#xff0c;将镜头推进&…

新版idea创建spring boot项目

目录 前言 汉化教程 项目模板初始化 1.点击新建项目 2.配置初始化信息 3.初始依赖选择 配置Maven 1.打开maven设置 2.重写maven配置文件 3.选择你创建的配置文件 4.重启项目 spring boot配置并测试 1.修改配置文件后缀 2.启动项目 3.编写测试控制类 4.重启项目…

【Go面试向】defer与time.sleep初探

【Go面试向】defer与time.sleep初探 大家好 我是寸铁&#x1f44a; 总结了一篇defer传参与time.sleep初探的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 请大家看下面这段代码&#xff0c;看运行结果会出现什么&#xff0c;为什么&#xff1f; 问题 demo package mainim…

性能优化-HVX架构简介

来自 「发表于知乎专栏《移动端算法优化》」 本文主要介绍Hexagon DSP的HVX技术&#xff0c;旨在通过简单的语言讲清HVX技术。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09;开…

数据管理平台Splunk Enterprise本地部署并结合内网穿透实现远程访问

文章目录 前言1. 搭建Splunk Enterprise2. windows 安装 cpolar3. 创建Splunk Enterprise公网访问地址4. 远程访问Splunk Enterprise服务5. 固定远程地址 前言 本文主要介绍如何简单几步&#xff0c;结合cpolar内网穿透工具实现随时随地在任意浏览器&#xff0c;远程访问在本地…

【书生·浦语大模型实战】“PDF阅读小助手”学习笔记

1 模型部署 在InternStudio平台中选择A100 (1/4)的配置&#xff0c;镜像选择Cuda11.7-conda&#xff0c;可以选择已有的开发机langchain&#xff1b; 1.1 创建工作空间 mkdir /root/pdf_project1.2 Clone项目 git clone https://gitee.com/tcexeexe/pdf-reading-assistant.…

HCIA——23DNS层次域名空间、域名服务器、域名解析的原理的选择、解答

学习目标&#xff1a; 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议&#xff0c;了解典型网络设备的组成和特点&#xff0c;理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

项目解决方案: 视频融合(实时监控视频和三维建模进行融合)设计方案

目 录 一、需求描述 1、视频接入和控制要求 2、视频播放需求 3、提供其他应用的调用 二、方案设计 &#xff08;一&#xff09;系统设计图 &#xff08;二&#xff09;产品实现方案 三、产品和功能描述 &#xff08;一&#xff09;总体描述 &#xf…

QuestDB时序数据库快速入门

简介 QuestDB是一个开源的高性能时序数据库&#xff0c;专门用于处理时间序列相关的数据存储与查询&#xff1b; QuestDB使用列式存储模型。数据存储在表中&#xff0c;每列存储在其自己的文件和其自己的本机格式中。新数据被附加到每列的底部&#xff0c;以便能够按照与摄取…

uniapp中打包Andiord app,在真机调试时地图以及定位功能可以正常使用,打包成app后失效问题(高德地图)

踩坑uniapp中打包Andiord app&#xff0c;在真机调试时地图以及定位功能可以正常使用&#xff0c;打包成app后失效问题_uniapp真机调试高德地图正常 打包apk高德地图就不加载-CSDN博客 问题&#xff1a; 目前两个项目&#xff0c;一个项目是从另一个项目里面分割出来的一整套…

10个常考的前端手写题,你全都会吗?(下)

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 今天接着上篇再来分享一下10个常见的JavaScript手写功能。 目录 1.实现继承 ES5继…

【快刊录用】15天录用!含中科院1区TOP-4区,投必中!

2024年1月13日-20241月19日 进展喜讯 经核实&#xff0c;由我处Unionpub学术推荐的论文中&#xff0c;新增2篇论文录用、2篇上线见刊、5篇数据库检索&#xff1a; 录用通知 FA20977 FA20479 — 见刊通知 FA20245 FA20885 — 检索通知 FA20924 FA20799 FA20790 FA2…

【IEEE会议征稿】2024年第九届智能计算与信号处理国际学术会议(ICSP 2024)

2024年第九届智能计算与信号处理国际学术会议&#xff08;ICSP 2024&#xff09; 2024年第八届智能计算与信号处理国际学术会议&#xff08;ICSP 2024&#xff09;将在西安举行&#xff0c; 会期是2024年4月19-21日&#xff0c; 为期三天, 会议由西安科技大学主办。 欢迎参会&…

4G物联网LED智慧路灯杆显示屏产品介绍

4GLED显示屏是一种具有4G网络连接功能的LED显示屏。它可以通过4G网络连接到互联网&#xff0c;实现远程管理和控制&#xff0c;方便进行内容更新和管理。同时&#xff0c;4GLED显示屏具有高亮度、高清晰度和高对比度的特点&#xff0c;可以提供清晰明亮的图像和视频展示效果。它…

【蓝桥杯EDA设计与开发】立创开源社区分享的关于蓝桥被EDA真题与仿真题的项目分析

立创开源社区内有几个项目分享了往年 EDA 设计题目与仿真题&#xff0c;对此展开了学习。 【本人非科班出身&#xff0c;以下对项目的学习仅在我的眼界范围内发表意见&#xff0c;如有错误&#xff0c;请指正。】 项目一 来源&#xff1a;第十四届蓝桥杯EDA赛模拟题一 - 嘉立…

C++笔记(二)

函数的默认参数 如果我们自己传入数据&#xff0c;就用自己的数据&#xff0c;如果没有&#xff0c;就用默认值 语法&#xff1a; 返回值类型 函数名&#xff08;形参默认值&#xff09;{} int func&#xff08;int a&#xff0c;int b20&#xff0c;int c30&#xff09;{} …