小编ped*_*llo的帖子

使用Slic3r进行3D打印时,Perl对挤出顺序的小改动

一种名为Slic3r的流行的开源3D打印切片软件是用Perl编写的.我需要对大学项目的源代码进行一些小改动,但我对Perl完全不熟悉.

这是一个很好的双挤压图像.基本上,当您更换喷嘴/材料时,会产生问题.你需要一个擦拭塔来消除喷嘴上的流口水,你必须处理再加热/冷却和其他耗时的任务.

这就是为什么我所知道的所有切片程序都试图最小化挤出机的变化.例如,如果第3层和第4层需要两种材料,则第3层将打印挤出机/材料1,然后是挤出机/材料2.在第4层,您将打印挤出机2,然后打印挤出机1.

但是,我需要始终以与挤出机编号相同的顺序打印; 每层应从挤出机1开始,然后是挤出机2,然后是3,等等.

我相信我在Slic3r源代码中找到了重要的代码片段.它是在LIB/Slic3r /打印/ GCode.pm,也是在Github 这里,开始对线622.

这是代码:

    # tweak extruder ordering to save toolchanges
    my @extruders = sort { $a <=> $b } keys %by_extruder;
    if (@extruders > 1) {
        my $last_extruder_id = $self->_gcodegen->writer->extruder->id;
        if (exists $by_extruder{$last_extruder_id}) {
            @extruders = (
                $last_extruder_id,
                grep $_ != $last_extruder_id, @extruders,
            );
        }
    }
Run Code Online (Sandbox Code Playgroud)

我猜@extruders只是一个列表,可以是[1],[1,2],[1,2,3]或更多.我想修改这个块,以便我们总是按数字顺序(1,2,3)编写挤出机命令.

如果您想了解更多有关"为什么?"的详细信息,我很高兴告诉您关于FFF打印,印刷换热器等的信息.

编辑 事实上,评论if语句是完美的.重新编译后,slic3r工作正常,Gcode似乎是正确的.因此,我想这是软件中唯一提到订单的地方.具有此更改的Slic3r代码可以在Github上的fork中找到,以防任何人遇到同样的问题.谢谢zdim的反馈意见!

perl 3d-printing

5
推荐指数
0
解决办法
120
查看次数

标签 统计

3d-printing ×1

perl ×1