004集—— txt格式坐标写入cad(CAD—C#二次开发入门)

news2024/9/30 22:23:01

如图所示原始坐标格式,xy按空格分开,将坐标按顺序在cad中画成多段线:

 坐标xy分开并按行重新输入txt,效果如下:

代码如下 :

using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AcTools;
using Autodesk.AutoCAD.Geometry;
using System.IO;

namespace Acdemo
{

    public class Acdemo
    {
        private void Addl(Entity ent ) 
        {
            Database db = HostApplicationServices.WorkingDatabase;
            using (Transaction tr = db.TransactionManager .StartTransaction ())
            {
                BlockTable bt = (BlockTable)tr.GetObject (db.BlockTableId ,OpenMode .ForRead  );
                BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord .ModelSpace ],OpenMode.ForWrite );
                btr.AppendEntity (ent);
                tr.AddNewlyCreatedDBObject(ent,true );
                tr.Commit ();   
            }
        }
        [CommandMethod("xx")]
        public void Demo()
        {
            Database db = HostApplicationServices.WorkingDatabase;
            string filename = @"E:\d\8.txt";
            string filename1 = @"E:\d\999.txt";
            try
            {
                File.Delete(filename1); 
            string contents = File.ReadAllText(filename);
            List<List<string>> list = new List<List<string>>();
               
                Polyline pl = new Polyline();  
                pl.Closed = true;   
              pl.ColorIndex = 3;
                string[] cont = contents.Split(new char[] { ' ', '\n' });
             
                   
                     double x, y;

                    File.AppendAllLines(filename1, cont);
                for (int i = 0; i < cont.Length / 2; i++)
                {   
                        x = Convert.ToDouble (cont[2*i]);
                        y = Convert.ToDouble(cont[2*i+1]);
                    pl.AddVertexAt(i, new Point2d(x, y),0.0,0.0,0.0);
                }
                      
                        
           
                      
             
           
                
               Addl (pl);
            }
            catch (System.Exception)
            {

                throw;
            }
         
        }  
    }
}

其中有个封装函数addl,为封装事务写入实体到数据库的函。

若输入坐标格式有误,则用以下程序,可在命令行提示错误信息:

using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AcTools;
using Autodesk.AutoCAD.Geometry;
using System.IO;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.ApplicationServices;

namespace Acdemo
{

    public class Acdemo
    {
        private void Addl(Entity ent ) 
        {
            Database db = HostApplicationServices.WorkingDatabase;
            using (Transaction tr = db.TransactionManager .StartTransaction ())
            {
                BlockTable bt = (BlockTable)tr.GetObject (db.BlockTableId ,OpenMode .ForRead  );
                BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord .ModelSpace ],OpenMode.ForWrite );
                btr.AppendEntity (ent);
                tr.AddNewlyCreatedDBObject(ent,true );
                tr.Commit ();   
            }
        }
        [CommandMethod("xx")]
        public void Demo()
        {
            Database db = HostApplicationServices.WorkingDatabase;
            string filename = @"E:\d\8.txt";
            string filename1 = @"E:\d\999.txt";
            try
            {
                File.Delete(filename1); 
            string contents = File.ReadAllText(filename);
            List<List<string>> list = new List<List<string>>();
               
                Polyline pl = new Polyline();  
                pl.Closed = true;   
              pl.ColorIndex = 3;
                string[] cont = contents.Split(new char[] { ' ', '\n' });
             
                   
                     double x, y;

                    File.AppendAllLines(filename1, cont);
                for (int i = 0; i < cont.Length / 2; i++)
                {   
                        //x = Convert.ToDouble (cont[2*i]);
                        //y = Convert.ToDouble(cont[2*i+1]);
                        bool bx = double.TryParse(cont[2*i], out x);
                        bool by = double.TryParse (cont[2*i + 1],out y);
                    if (bx==false ||  by == false ) 
                    {
                        Editor ed = Application .DocumentManager.MdiActiveDocument .Editor ;
                        ed.WriteMessage($"有错误,{cont[2 * i]},{cont[2 * i+1]}");
                    }
                    pl.AddVertexAt(i, new Point2d(x, y),0.0,0.0,0.0);
                }
                      
                        
           
                      
             
           
                
               Addl (pl);
            }
            catch (System.Exception)
            {

                throw;
            }
         
        }  
    }
}

 

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

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

相关文章

新手必知的录屏工具及其使用方法详解

你平常会录屏吗&#xff1f;录屏已经成为了一项非常实用的技能。无论是制作教学视频还是记录游戏精彩瞬间&#xff0c;录屏都可以帮我们记录我们在电脑上看到的精彩瞬间。今天我们就一同来探索在电脑上如何录屏吧。 1.福昕录屏工具 链接&#xff1a;www.foxitsoftware.cn/REC…

N诺计算机考研-错题(DS)

具有线性结构的数据结构是&#xff08; &#xff09;。&#xff08;线性结构就是&#xff1a;在非空有限集合中&#xff0c;存在为一个被称为第一个的数据元素和最后一个元素&#xff0c;有除了第一个元素&#xff0c;集合中每一个元素均只有一个前驱&#xff0c;除了最后一个元…

通过台达ASDA-Soft伺服调试软件导入和导出伺服参数的具体方法示例

通过台达ASDA-Soft伺服调试软件导入和导出伺服参数的具体方法示例 首先,找一根通讯线,如下图所示,打印机通讯线就可以, 通信线连接台达伺服驱动器和电脑后,打开ASDA-Soft软件,如下图所示,勾选On-Line,然后点击开始自动侦测, 如下图所示,正常情况下,软件可以自动侦测…

Oracle 相关的工具使用 SQL Developer , sqlplus

Oracle 相关的工具使用 SQL Developer &#xff0c; sqlplus 一&#xff0c;Oracle SQL Developer 连接数据库 今天在连接sqldeveloper服务器时遇到了很多问题&#xff0c;但最终还是通过网上的博客解决了问题&#xff0c;我就在总结一下我的解决过程。 一.界面 首先&#…

通过 OpenAI API 实测 o1 模型(附源码)

9.11 与 9.9 哪个大? 还记得之前给大家演示的幻觉问题么&#xff1f; 用 gpt4 系列模型提问“9.11 与 9.9 哪个大?” 大家可以回顾一下&#xff0c;即使引导了 COT 的思路&#xff0c;但是 gpt4 还是一本正经的胡说八道。 如今&#xff0c;o1 已经完美解决数学、逻辑推理方…

LampSecurityCTF7 靶机渗透 (sql 注入, 文件上传, 密码喷射)

靶机介绍 LampSecurityCTF7&#xff0c;vulnhub 靶机 主机发现 由于靶机配置问题&#xff0c;扫不到 ip 这里需要特别注意一下&#xff0c;在第一次启动打开靶机的时候&#xff0c;vmware会跳出一个提示框&#xff0c;让你选择我已复制该虚拟机/我已移动该虚拟机&#xff0c…

业绩由盈转亏,全面冲刺大模型的360值得期待吗?

在中国互联网市场上&#xff0c;360无疑是一家大家家喻户晓的公司&#xff0c;从安全软件起家&#xff0c;360的服务已经延展到了市场的方方面面&#xff0c;就在最近360的财报正式公布&#xff0c;很多人都在问360的财报该怎么看&#xff1f;全面冲刺大模型的360值得我们期待吗…

.net Framework 4.6 WebAPI 使用Hangfire

C# 使用 Hangfire 第一章 .net Framework 4.6 WebAPI 使用Hangfire 文章目录 C# 使用 Hangfire前言一、hangfire是什么?二、hangfire的特点三、.net Framework 中hangfire的使用方法第一步:创建WebAPI控制器第二步:添加nuget包第三步 创建startup类新建项目startup类Startu…

企业数据安全从0到1建设方法

随着中国数字经济的不断发展&#xff0c;各行各业都在积极推进数字化转型&#xff0c;数据安全逐渐受到国家和企业的重视。 近年来&#xff0c;国家持续颁布多种行业数据安全管理办法&#xff0c;明确各行业数据安全的建设标准&#xff0c;督促企业进行数据安全建设。 企业应该…

Delphi12 FMX给组件加上一个动画效果

Delphi12 FMX给组件加上一个动画效果 Delphi12 FMX 已经能编写windows&#xff0c;android平台下运行的应用&#xff0c;这里来体验一下 实现非常简单&#xff0c;使用IDE自带的动画组件轻松实现 效果图 这里用TCircle及 TImage来进行演示 首选拖入两个 TCircle及TImage …

安达发|太阳能设备行业APS计划排程软件能解决哪些问题

在当今快速发展的太阳能设备行业中&#xff0c;高级计划与排程&#xff08;APS&#xff09;软件成为了企业优化生产流程、提高生产效率和满足市场需求的关键工具。APS软件通过集成先进的算法和数据分析技术&#xff0c;为企业提供了一个全面的生产计划和排程解决方案。本文将探…

T5打卡-运动鞋识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 1.导入及查看数据&#xff1a; from tensorflow import keras from tensorflow.keras import layers,models import os,PIL,pathlib import matplotlib.pyplo…

AI与大数据的结合:如何从海量数据中提取价值

引言 在当今数字化时代&#xff0c;数据如同新石油&#xff0c;成为推动社会与商业进步的重要资源。随着物联网、社交媒体和企业运营中数据生成的激增&#xff0c;我们正处在一个数据爆炸的时代。然而&#xff0c;面对海量且复杂的数据信息&#xff0c;仅依靠传统的分析方法已经…

Python入门:asyncio异步编程结果处理

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 处理异步任务的基本概念📝 获取第一个结果📝 添加回调函数📝 使用`return_exceptions`处理异常📝 判断任务完成情况📝 获取结果详情⚓️ 相关链接 ⚓️📖 介绍 📖 在Python编程中,异步并发可能…

钉钉H5微应用Springboot+Vue开发分享

文章目录 说明技术路线注意操作步骤思路图 一、创建钉钉应用二、创建java项目三、创建vue项目&#xff08;或uniapp项目&#xff09;&#xff0c;npm引入sdk的依赖四、拥有公网域名端口。开发环境可以使用&#xff08;贝锐花生壳等工具&#xff09;五、打开钉钉开发者平台&…

【YashanDB知识库】客户端字符集与数据库字符集兼容问题

本文转自YashanDB官网&#xff0c;具体内容请见https://www.yashandb.com/newsinfo/7352675.html?templateId1718516 问题现象 客户端yasql配置字符集为GBK&#xff0c;服务端yasdb配置字符集为UTF8&#xff0c;之后执行语句&#xff1a; 会发现&#xff1a; 期望是两个都…

【LeetCode】每日一题 2024_9_29 买票需要的时间(模拟)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动&#xff01; 昨天的每日一题是线段树二分&#xff0c;题目难度远超我的能力范围&#xff0c;所以更不出来了 题目&#xff1a;买票需要的时间 代码与解题思路 func timeRequiredToBuy(tickets []int, k int) (sum in…

【Kubernetes知识点】 解读 Service 和 EndpointSlice 之间的关系

【Kubernetes知识点】 解读 Service 和 EndpointSlice 之间的关系 目录 1 概念 1.1 Service的概念1.2 Endpoint 的概念1.3 EndpointSlice 的引入 1.3.1 EndpointSlice支持的地址1.3.2 EndpointSlice的状态1.3.3 EndpointSlice的拓扑信息 1.4 Service 、Endpoint和 EndpointSl…

Beyond Compare 比较CRC值、二进制比较、关联规则比较,有何区别?(CRC比较、CRC值比较)

文章目录 Beyond Compare文件比较方法深入分析CRC值比较定义及工作原理应用场景优点和缺点 二进制比较定义及工作原理应用场景优点和缺点 关联规则比较定义及工作原理应用场景优点和缺点 比较示例 性能差异CRC值比较的性能影响优点缺点 二进制比较的性能影响优点缺点 关联规则比…

C项目--带权限的图书管理系统(1000多行代码,代码数据可下载,极其适合初学练手)

本专栏目的 更新C/C的相关的项目 前言 C语言的图书权限管理系统完结(进阶的一点后面更新)&#xff0c;1000多行代码(核心代码5、600行&#xff09;&#xff1b;本设计是一个比较综合的练习&#xff0c;用到数据结构&#xff08;顺序表、链表、静态链表&#xff09;、文件、排…