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

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

如图所示,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二开插件定制:↓↓↓


http://www.mrgr.cn/news/50493.html

相关文章:

  • 浅谈Java之接口
  • 【C】分支与循环1----if与switch
  • rust中编译宏控
  • AFSim仿真系统 --- 系统简解_11 行为与行为树
  • 苹果研究员质疑大模型!我们测试了6款,发现了4大真相
  • 病毒感染时间 题解 MarsCode
  • CST软件超表面--- 偏振片- 线圆极化转换,Floquet端口,S参数算轴比AR
  • GestaltMML——用于诊断罕见遗传疾病的多模态模型
  • 网站服务器监控:Lighttpd指标解读
  • numactl 设置 numa 内存分配规则
  • VUE项目基于源码实现可视化编程技术的探索
  • 【C语言教程】【常用类库】(十二)信号处理库 - <signal.h>
  • 【论文速读】字节跳动音乐生成模型 Seed-Music
  • keepalived实现高可用
  • Spark内置函数:字符串、日期和时间函数、聚合函数、数值函数、条件判断函数、窗口函数
  • YOLOv11改进策略【卷积层】| ECCV-2024 Histogram Transformer Block 适用于噪声大,图像质量低的检测任务
  • 学会分享是一种快乐的事情
  • 【保姆级】手把手带你用MyBatis Plus制作代码生成器
  • OpenCV高级图形用户界面(9)更改指定窗口的位置函数moveWindow()的使用
  • 护眼台灯哪个品牌更好?五款目前比较好用的护眼台灯