diff --git a/lib/Slic3r/GUI/MainFrame.pm b/lib/Slic3r/GUI/MainFrame.pm index ddf67a28fb..390ab2edb9 100644 --- a/lib/Slic3r/GUI/MainFrame.pm +++ b/lib/Slic3r/GUI/MainFrame.pm @@ -249,7 +249,7 @@ sub _init_menubar { $self->_append_menu_item($self->{plater_menu}, "Export plate as STL...", 'Export current plate as STL', sub { $plater->export_stl; }, undef, 'brick_go.png'); - $self->_append_menu_item($self->{plater_menu}, "Export plate as AMF...", 'Export current plate as AMF', sub { + $self->_append_menu_item($self->{plater_menu}, "Export plate with modifiers as AMF...", 'Export current plate as AMF, including all modifier meshes', sub { $plater->export_amf; }, undef, 'brick_go.png'); $self->_append_menu_item($self->{plater_menu}, "Open DLP Projector…\tCtrl+L", 'Open projector window for DLP printing', sub { diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index 74078f76d0..7f6c215983 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -1539,6 +1539,23 @@ sub export_object_stl { $self->statusbar->SetStatusText("STL file exported to $output_file"); } +# Export function for a single AMF output +sub export_object_amf { + my $self = shift; + + my ($obj_idx, $object) = $self->selected_object; + return if !defined $obj_idx; + + my $local_model = Slic3r::Model->new; + my $model_object = $self->{model}->objects->[$obj_idx]; + # copy model_object -> local_model + $local_model->add_object($model_object); + + my $output_file = $self->_get_export_file('AMF') or return; + $local_model->write_amf($output_file); + $self->statusbar->SetStatusText("AMF file exported to $output_file"); +} + sub export_amf { my $self = shift; @@ -2032,6 +2049,9 @@ sub object_menu { $frame->_append_menu_item($menu, "Export object as STL…", 'Export this single object as STL file', sub { $self->export_object_stl; }, undef, 'brick_go.png'); + $frame->_append_menu_item($menu, "Export object and modifiers as AMF…", 'Export this single object and all associated modifiers as AMF file', sub { + $self->export_object_amf; + }, undef, 'brick_go.png'); return $menu; }