Hypack数据在CAD中导出航迹线及水深的过程及对应软件设计

不同版本的HYPACK 单波束编辑器得到的数据格式有所差异。在处理之前需要将格式统一,或者根据不同格式制定不同的处理方法。这里选择统一格式后,统一处理。格式选择与HYPACK 4.3 单波束编辑器得到的数据格式(后简称单波束数据格式)保持一致。

HYPACK4.3 单波束数据格式

如下图为HYPACK4.3 单波束数据格式,生成航迹线所需的数据已经被充填为黄色,即日期,文件名,和X,Y的数据。

问题解决思路

Python文件处理
AutoCAD中执行脚本
HYPACK4.3单波束数据
CAD脚本Script
生成航迹线

准备

做好准备工作,新建项目, 把我要转化的文件放入项目用于测试。

+GetTrackLine
  • 示例文件
    – 003_0826.EDT
  • 001.py

开干

Step One Python文件处理

此次的文本处理主要涉及Python知识点有:

  1. 打开文件 open()方法
  2. 字符串处理方法, split(), replace(), format() 格式化
  3. 列表的操作, 列表索引, 列表迭代

首先来练习下Python 字符串的处理

#Open 003_0826.EDT
file_path = './示例文件/003_0826.EDT'
f = open(file_path, 'r')
#读取文件
lines = f.readlines()
#之前说过我们需要第一行的数据中的日期与文件名, 接下来先得到这两个数
print(lines[0].splilt(' ').index('003_0826.EDT'))#通过split()分割第一行的字符串,得到一个列表,然后检索到目标的位置
print(lines[0].split(' ').index('11/16/2019'))#同上

#最后我们得到
date_data = lines[0].split(' ')[40]
file_name = lines[0].split(' ')[42]
''' 
日期和文件名已经得到了, 但是在航迹线中的数据格式是不同的,
这两个数据用来控制航迹线的线名, 线名格式为 191116003AA
所以在这两个数据还需要进行格式化处理。
'''
#航迹线线名 track_line_name
track_line_name = '{}{}{}{}AA'.format(date_data.split('/')[-1][-2:], date_data.split('/')[0[, date_data.split('/')[1], file_name.split('_')[0])

#接下来获取X,Y数据, 并把数据存储到一个列表中list_x_y
list_x_y = []
''' 从文件第一行到有X,Y 数据的第一行中间的数据是无用的所以来筛选以下'''
use_state = False
for line in lines:
	if use_state :
		x = line.split(' ')[5]
		y = line.split(' ')[7]
		list_x_y.append(x,y)
		
	if '@@@@@' in line:
		use_state = True
print(list_x_y)

然后将上述代码整理,并出为脚本文件,然后加上GUI窗口,即可。不想写了。。。。。

Step two 在AutoCAD中加载脚本文件

打开CAD 新建一个文件,然后在命令行输入script后回车,选择刚才生成的脚本即可。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值