CLI
英文全称:COMMON LAYER INTERFACE
中文名称:通用层接口。
推荐从官方网址看一下其完整的内容:
(COMMON LAYER INTERFACE (CLI))
简介
通用层接口 (CLI) 是一种通用格式,用于将几何数据输入到基于层制造技术 (LMT) 的制造系统模型。适用于树脂的逐层光固化、粉末的烧结或粘合、片材的切割、熔融材料的固化以及任何其他逐层构建模型的系统。
格式
有二进制数据格式与ASCII数据格式,本文主要是介绍二进制格式,ASCII格式给出官网的例子。两种格式的异如下:
相同点:二者头文件是相同的。
不同点:ASCII格式有几何信息开始标志,二进制没有开始标志,头信息结束之后直接就是数据。
1.ASCII数据格式
下面是官网给的例子
2.二进制数据格式
给一个我已经读出来的例子,例子中是一个简单的立方体,编号0.01.cli
其中的换行是我人为换的,并不是开始就是这样。
代码
python
此代码是我从该网站得来的,非常感谢宝哥的开源。python源码
但是由于他的代码是一行显示的,后面我经过排版,修复其中几个小问题才能跑起来,不过也存在一个问题。直接运行报错,代码为:
byt_int, = struct.unpack("h", byts)
报错原因是
struct.error: unpack requires a buffer of 2 bytes
但是在报错地方打上断点,程序就能运行了,并且能准确读出信息,由于我对python代码不是很熟悉,简单搜一下没有解决这个问题,就暂时先搁置了,如果有大佬知道还望不吝赐教。下面给出具体代码。
import struct
class Que: # 定义一个队列的类
def __init__(self):
self.L = []
def creat_que(self, num): # 创建队列
for i in range(0, num):
self.L.append(str(b'x')) #
return self.L
def push(self, item): # 在末尾增加一个,开头删除一个,实现栈操作
self.L.append(item)
if self.L.__len__() > 11:
self.L.pop(0)
return self.L
def str_head(self):
st = [item.replace("b'", '') # 从链表L中将b'删去
for item in self.L]
st = [item.replace("'", '') # 从链表L中将'删去
for item in st]
st = ''.join(st) # 连接字符串
return st # 返回一个字符串
def b2int(self): # 将读取到的二进制字节转化为 unsign int (2个字节)
un_int, = struct.unpack("h", self.L[0]) # h在python中是整型
return un_int
que_headerend = Que() # 实例化一个对象来处理$$HEADEREND
que_headerend.creat_que(11) # 创建一个包含11个元素的队列,用于判断是不是头部信息结束
que_layer = Que() # 实例化一个对象来
que_layer.creat_que(2) # 队列,用于寻找128/129
class Structure:
def __init__(self, f_dir, f_w): # CI,id,dir,n,p1x,p1y,... pnx,pny
self.UNIT = 0 # 单位
self.LAYERS = 0 # 多少层
self.f = f_dir # 二进制文件???
self.f_ascii = f_w # 输出文件???
self.head = {}
self.CI_start = 0 # 128/129???
self.layer_thick = 0 # 层厚
self.CI_layer = 0 # 128/129???
self.id &#