【问题标题】:Calculate volume of a gcode file in C#在 C# 中计算 gcode 文件的体积
【发布时间】: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 除非它是树脂打印机,在这种情况下,您需要找到所有打印点的面积并将其乘以层的高度。然后添加所有图层。
  • 嗨,我基本上需要打印对象的体积,而不是挤出的灯丝。

标签: c# volume g-code


【解决方案1】:

您是否有任何理由为此使用 gcode?如果您想要对象的体积而不是挤出的塑料体积,那么您将在 gcode 中这样做,因为您必须从 gcode 中对模型进行大量推断,这很容易出错。大概 gcode 是从 stl 文件生成的?如果是这种情况,那么您最好根据 stl 文件计算体积。见How do I calculate the volume of an object stored in STL files?

【讨论】:

  • 嗨!谢谢你的评论。基本上你是对的。使用 stl 而不是 gcode 是更简单的方法,但是我正在编写一个工具来计算打印成本。大多数用户已经有了他们的 gcode,最好使用它。我已经通过计算挤出灯丝的体积来修复它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
  • 2013-01-09
  • 1970-01-01
  • 2011-09-24
相关资源
最近更新 更多