读取点坐标简单地制作dxf文件(C#)

有时候我们需要在测量的小程序中加入一个功能,就是生成dxf文件。除了调用各种库,就是要自己看过dxf文件的组码,如果不能使用第三方的东西,那我们就可以用组码中最简单直接的部分来完成生成dxf文件的工作

  1. 这是我们读入的‘控制点.dat’,用datagridview控价展示出了它们的xyz坐标
    在这里插入图片描述
  2. 我们还可以在程序界面中画出来,但这个不是关键了,就不管了,主要看看生成的dxf文件。这个点我没瞄准,左下方的坐标是54.9的6.几的0,就是对应上面读入的kz2的坐标,应该是没问题了
    在这里插入图片描述
  3. 简单生成dxf的代码如下,就是用savefiledialog选择保存位置,然后弄个文本往这个里面写简单的组码就行了,最后保存的时候存为dxf就好了
// 利用.dxf的lisp组码来保存txt为dxf文件
public static void SaveDxf(List<PointInfo> points, string filepath)
{
	StreamWriter sw = new StreamWriter(filepath);  // 打开文件流
	// 这上面都可以看成设置
	sw.WriteLine("0");  // 0在lisp组码中表示开始组码
	sw.WriteLine("SECTION");  // 与后面的ENDSEC对应,类似于{}
	sw.WriteLine("2");
	sw.WriteLine("HEADER");
	sw.WriteLine("0");
	sw.WriteLine("ENDSEC");
	for (int i = 0; i < LevelPro.Points.Count - 1; ++i)
	{
		sw.WriteLine("0");
		sw.WriteLine("SECTION");
		sw.WriteLine("2");
		sw.WriteLine("ENTITIES");
		sw.WriteLine("0");
		sw.WriteLine("LINE");
		sw.WriteLine("100");
		sw.WriteLine("AcDbEntity");
		sw.WriteLine("8");
		sw.WriteLine("0");
		sw.WriteLine("100");
		sw.WriteLine("AcDbLine");
		sw.WriteLine("10");  // 起点X坐标
		sw.WriteLine(points[i].startx);
		sw.WriteLine("20");  // 起点Y坐标
		sw.WriteLine(points[i].starty);
		sw.WriteLine("11");  // 终点X坐标
		sw.WriteLine(points[i].endx);
		sw.WriteLine("21");  // 终点Y坐标
		sw.WriteLine(points[i].endy);
		sw.WriteLine("0");
		sw.WriteLine("ENDSEC");  // 对应SECTION
	}
	sw.WriteLine("0");
	sw.WriteLine("EOF");  // 文件结束
	sw.Close();  // 关闭文件流
}

这个dxf文件的组码如下,比起查看cad自己生成的dxf文件,这个组码理解下已经非常好记了

0 
SECTION
2
HEADER
0
ENDSEC
0
SECTION
2
ENTITIES
0
LINE
100
AcDbEntity
8
0
100
AcDbLine
10
55.0
20
33.0
11
55.0
21
7.0 
0
ENDSEC
0
SECTION
2
ENTITIES
0
LINE
100
AcDbEntity
8
0
100
AcDbLine
10
45.0
20
63.0
11
45.0
21
13.0 
0
ENDSEC
0
EOF
  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值