首页 > 编程语言 >012集——CAD图中线段坐标导出到txt(CAD—C#二次开发入门)

012集——CAD图中线段坐标导出到txt(CAD—C#二次开发入门)

时间:2024-10-19 09:49:36浏览次数:7  
标签:pline db ent str 二次开发 txt data datas CAD

如图所示,CAD图中line和pline坐标和图层数据导出到txt文本。

 程序运行后导出如下文件:

附部分源代码:

public static void DwgToTxt(this Database db)
{
   // var db = Z.db;
    var ed = Z.ed;
    //Point3d pt ;  
    BlockData data = new BlockData();
    List<BlockData> datas = new List<BlockData>();
    List<string> str = new List<string>();
    using (var tr = db.TransactionManager.StartTransaction())
    {
        var bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
        var btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForRead) as BlockTableRecord;
        int i = 0;
        int linenum = 1;
        int plinenum = 1;
        foreach (var obj in btr)
        {
            //Double x;
            //double y;
            //Point3d pt = new Point3d(x, y, 0);
            Entity ent = obj.GetObject(OpenMode.ForRead) as Entity;
            if (ent != null)
            {
                if (ent is Curve)
                {
                    if (ent is Line)
                    {
                        str.Add("\n" + linenum + ": Line:\n");
                        Line line = (Line)ent;
                        data.layerName = "图层:" + line.Layer + "\n";
                        data.X = line.StartPoint.X.ToString("F3");
                        data.Y = line.StartPoint.Y.ToString("F3");
                        datas.Add(data);
                        str.Add(datas[i].layerName + datas[i].X + "," + datas[i].Y);
                        i = i + 1;
                        linenum = linenum + 1;
                    }
                    else if (ent is Polyline)
                    {
                        str.Add("\n" + plinenum + "PLine:\n");
                        Polyline pline = (Polyline)ent;
                        for (int k = 0; k < pline.NumberOfVertices; k++)
                        {
                            // Polyline pline = (Polyline)ent;
                            data.layerName = "图层:" + pline.Layer + "\n";
                            data.X = pline.GetPoint3dAt(k).X.ToString("F3") ;
                            data.Y = pline.GetPoint3dAt(k).Y.ToString("F3");
                            datas.Add(data);
                            str.Add(datas[i].layerName + datas[i].X + "," + datas[i].Y);
                            i = i + 1;
                        }
                        plinenum = plinenum + 1;
                    }
                }
            }

        }
    }

    SaveFileDialog savefd;
    DialogResult saveDlgRes;
    db.Sfd(out savefd, out saveDlgRes);
    if (saveDlgRes == Wform.DialogResult.OK)
    {
        string[] contents = new string[str.Count];
        for (int j = 0; j < datas.Count; j++)
        {
            contents[j] = str[j];//datas[j].layerName + ",\n" + datas[j].X + "\n" + datas[j].Y;
        }

        File.WriteAllLines(savefd.FileName, contents);
    }
}

 部分方法为个人封装方法,如打开文件对话框,保存文件对话框。部分字段也进行了封装,如定义数据库database db等。

CAD二开插件定制:↓↓↓

标签:pline,db,ent,str,二次开发,txt,data,datas,CAD
From: https://blog.csdn.net/yongshiqq/article/details/142938411

相关文章

  • 013集——txt格式坐标转为dwg图(CAD—C#二次开发入门)
    如上图类似格式坐标(上图为随机输入数字,不涉及真实坐标数据) 加载dll文件,输入netload加载此插件,根据对话框提示打开txt文件,即可生成多段线,如下图:附部分代码:publicstaticvoidTxtToDwg(thisDatabasedb){Editored=Z.ed;OpenFileDialogofd;DialogResu......
  • IoT平台软件:Google Cloud IoT二次开发_JavaSDK使用指南
    JavaSDK使用指南1.环境准备在开始使用GoogleCloudIoT的JavaSDK之前,需要确保您的开发环境已经配置好相关的依赖和工具。以下是环境准备的步骤:1.1安装Java确保您的系统中安装了最新版本的Java开发工具包(JDK)。您可以通过以下命令检查Java版本:java-vers......
  • IoT平台软件:Google Cloud IoT二次开发_Node.jsSDK使用指南
    Node.jsSDK使用指南在本节中,我们将详细介绍如何使用GoogleCloudIoTNode.jsSDK进行二次开发。GoogleCloudIoT提供了丰富的API和SDK,使得开发者可以轻松地与IoT设备进行交互,实现设备管理、数据传输、消息处理等功能。Node.jsSDK是其中一种常用的开发工具,特......
  • IoT平台软件:Google Cloud IoT二次开发_PythonSDK使用指南
    PythonSDK使用指南1.安装GoogleCloudIoTPythonSDK在开始使用GoogleCloudIoTPythonSDK之前,需要先安装相关的依赖库。GoogleCloudIoTCore提供了官方的Python客户端库,这将帮助我们更方便地与GoogleCloudIoTCore进行交互。以下是安装步骤:1.1安装......
  • IoT平台软件:Google Cloud IoT二次开发_RESTfulAPI与gRPC
    RESTfulAPI与gRPCRESTfulAPI原理RESTfulAPI是一种基于HTTP协议的架构风格,用于构建分布式系统中的网络应用程序。它通过一组规则和约束来定义客户端和服务器之间的交互方式,使得系统更加简洁、可扩展和易于理解。RESTfulAPI的设计原则包括:无状态性:每个请求都必......
  • vue实战指南 vue中使用fetch读取本地txt文件
    vue实战指南vue中使用fetch读取本地txt文件基本概念与作用fetchAPI本地文件读取技术实现示例一:基本的fetch请求示例二:处理异步加载状态示例三:使用生命周期钩子示例四:读取多个文件示例五:使用Vuex管理文件内容实际工作中的一些技巧在Vue.js应用开发中,有时我们需要......
  • txtai: 一个强大的开源嵌入式数据库和语言模型工作流框架
    txtaitxtai:强大的开源嵌入式数据库和语言模型工作流框架txtai是一个功能强大的开源嵌入式数据库和语言模型工作流框架,由NeuML团队开发。它为构建语义搜索、大语言模型(LLM)应用和智能工作流提供了一站式解决方案。主要特性txtai具有以下主要特性:......
  • el-cascader 级联选择器清空初始化
    解决方案判断输入框为空值之后做以下操作恢复到初始化状态: this.$refs.myCascader.$refs.panel.checkedValue=[];//清空选中值this.$refs.myCascader.$refs.panel.clearCheckedNodes();//清空级联选择器选中状态this.$refs.myCascader.$refs.panel.activePath=[]......
  • [20241016]Oracle C functions annotations补充.txt
    [20241016]OracleCfunctionsannotations补充.txt--//网站orafun.info可以查询oraclecfunctions.CreatedbyFritsHooglandwithalittlehelpfromKamilStawiarski.--//可以通过它了解oracle内部C函数.实际上可以直接下载相关文件,在本地使用.https://gitlab.com/Frits......
  • MP4 转 TXT 项目与 M3U8 下载脚本
    项目背景在当今信息社会,视频学习已成为一种重要的知识获取方式。然而,许多用户在观看视频的过程中,效率往往低于预期。为了提升学习效率,我们决定开发一个将MP4视频转换为TXT文稿的项目。此外,很多视频在微信网页上播放,无法直接下载,主要采用M3U8格式进行流式传输。这促使我们寻......