【发布时间】:2020-01-17 12:53:40
【问题描述】:
我正在尝试获取或计算我的 C# 项目中的 gcode(3D 打印)文件的体积。 要阅读我正在使用这个第三方库的 gcode: https://github.com/gradientspace/gsGCode
可惜作者还没回复。
目前,我是这样读取文件的:
public gs.GCodeFile Load(string path)
{
try
{
GenericGCodeParser parse = new GenericGCodeParser();
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
return parse.Parse(sr);
}
catch(Exception)
{
return null;
}
}
这让我得到了所有 gcode 行的列表。
现在我需要根据这些信息计算体积。 这是我用来读取的 gcode 文件:https://andreas-reitberger.de/wp-content/uploads/2015/12/4x_rod_0.1mm_PET_MK3.zip
附:我知道卷是写在 gcode 文件的 cmets 中的,但这不是必须的,也不可靠。 谢谢,
【问题讨论】:
-
每一行的
parameters数组中有什么内容? -
嗨@krillgar,
parameters包含orig_string参数的值。例如上图中的行“G1 X108.925 Y97.547 E0.47890”,参数为“X = 108925”、“Y = 97547”、“E = 0.47890” -
所用塑料的体积?还是正在制作的物体的体积?前者(塑料的体积)可能比你想象的更复杂。最好的情况是每个块都是 G1。在这种情况下,可以计算每个段的长度,并使用流量(我认为是 E 寄存器)确定该移动的体积,然后将所有移动相加。但也许您也有 G2 和 G3 圆周运动记录,您将不得不处理这些记录。即使对于同一部分,不同的机器也可能具有不同的 gcode“风味”。至于后者(物体的体积)就更复杂了。
-
@CRJohnson 除非它是树脂打印机,在这种情况下,您需要找到所有打印点的面积并将其乘以层的高度。然后添加所有图层。
-
嗨,我基本上需要打印对象的体积,而不是挤出的灯丝。