3DScene load_object method moved to c++

This commit is contained in:
Enrico Turri 2018-06-06 10:16:58 +02:00
parent a8254e0053
commit c6e44509e0
11 changed files with 142 additions and 55 deletions

View file

@ -237,8 +237,13 @@ sub reload_scene {
$self->{objects_volumes_idxs} = [];
foreach my $obj_idx (0..$#{$self->{model}->objects}) {
my @volume_idxs = $self->load_object($self->{model}, $self->{print}, $obj_idx);
push(@{$self->{objects_volumes_idxs}}, \@volume_idxs);
#==============================================================================================================================
my $volume_idxs = Slic3r::GUI::_3DScene::load_model($self, $self->{model}, $obj_idx, [0]);
push(@{$self->{objects_volumes_idxs}}, \@{$volume_idxs});
# my @volume_idxs = $self->load_object($self->{model}, $self->{print}, $obj_idx);
# push(@{$self->{objects_volumes_idxs}}, \@volume_idxs);
#==============================================================================================================================
}
$self->update_volumes_selection;

View file

@ -115,11 +115,12 @@ sub new {
my $canvas;
if ($Slic3r::GUI::have_OpenGL) {
$canvas = $self->{canvas} = Slic3r::GUI::3DScene->new($self);
$canvas->load_object($self->{model_object}, undef, undef, [0]);
#==============================================================================================================================
Slic3r::GUI::_3DScene::load_model_object($self->{canvas}, $self->{model_object}, 0, [0]);
Slic3r::GUI::_3DScene::set_auto_bed_shape($canvas);
Slic3r::GUI::_3DScene::set_axes_length($canvas, 2.0 * max(@{ Slic3r::GUI::_3DScene::get_volumes_bounding_box($canvas)->size }));
# $canvas->load_object($self->{model_object}, undef, undef, [0]);
# $canvas->set_auto_bed_shape;
#==============================================================================================================================
$canvas->SetSize([500,500]);
@ -261,14 +262,13 @@ sub _update {
}
#==============================================================================================================================
Slic3r::GUI::_3DScene::reset_volumes($self->{canvas});
# $self->{canvas}->reset_objects;
#==============================================================================================================================
$self->{canvas}->load_object($_, undef, undef, [0]) for @objects;
#==============================================================================================================================
Slic3r::GUI::_3DScene::reset_volumes($self->{canvas});
Slic3r::GUI::_3DScene::load_model_object($self->{canvas}, $_, 0, [0]) for @objects;
Slic3r::GUI::_3DScene::set_cutting_plane($self->{canvas}, $self->{cut_options}{z}, [@expolygons]);
Slic3r::GUI::_3DScene::update_volumes_colors_by_extruder($self->{canvas});
Slic3r::GUI::_3DScene::render($self->{canvas});
# $self->{canvas}->reset_objects;
# $self->{canvas}->load_object($_, undef, undef, [0]) for @objects;
# $self->{canvas}->SetCuttingPlane(
# $self->{cut_options}{z},
# [@expolygons],

View file

@ -165,18 +165,16 @@ sub new {
# convert scene volume to model object volume
$self->reload_tree(($volume_idx == -1) ? undef : $canvas->volumes->[$volume_idx]->volume_idx);
});
Slic3r::GUI::_3DScene::load_model_object($canvas, $self->{model_object}, 0, [0]);
Slic3r::GUI::_3DScene::set_auto_bed_shape($canvas);
Slic3r::GUI::_3DScene::set_axes_length($canvas, 2.0 * max(@{ Slic3r::GUI::_3DScene::get_volumes_bounding_box($canvas)->size }));
# $canvas->on_select(sub {
# my ($volume_idx) = @_;
# # convert scene volume to model object volume
# $self->reload_tree(($volume_idx == -1) ? undef : $canvas->volumes->[$volume_idx]->volume_idx);
# });
#==============================================================================================================================
$canvas->load_object($self->{model_object}, undef, undef, [0]);
#==============================================================================================================================
Slic3r::GUI::_3DScene::set_auto_bed_shape($canvas);
Slic3r::GUI::_3DScene::set_axes_length($canvas, 2.0 * max(@{ Slic3r::GUI::_3DScene::get_volumes_bounding_box($canvas)->size }));
# $canvas->load_object($self->{model_object}, undef, undef, [0]);
# $canvas->set_auto_bed_shape;
#==============================================================================================================================
$canvas->SetSize([500,700]);
@ -514,14 +512,13 @@ sub _parts_changed {
$self->reload_tree;
if ($self->{canvas}) {
#==============================================================================================================================
Slic3r::GUI::_3DScene::reset_volumes($self->{canvas});
# $self->{canvas}->reset_objects;
#==============================================================================================================================
$self->{canvas}->load_object($self->{model_object});
#==============================================================================================================================
Slic3r::GUI::_3DScene::reset_volumes($self->{canvas});
Slic3r::GUI::_3DScene::load_model_object($self->{canvas}, $self->{model_object}, 0, [0]);
Slic3r::GUI::_3DScene::zoom_to_volumes($self->{canvas});
Slic3r::GUI::_3DScene::update_volumes_colors_by_extruder($self->{canvas});
Slic3r::GUI::_3DScene::render($self->{canvas});
# $self->{canvas}->reset_objects;
# $self->{canvas}->load_object($self->{model_object});
# $self->{canvas}->zoom_to_volumes;
# $self->{canvas}->update_volumes_colors_by_extruder($self->GetParent->GetParent->GetParent->{config});
# $self->{canvas}->Render;
@ -567,10 +564,11 @@ sub _update_canvas {
if ($self->{canvas}) {
#==============================================================================================================================
Slic3r::GUI::_3DScene::reset_volumes($self->{canvas});
Slic3r::GUI::_3DScene::reset_volumes($self->{canvas});
Slic3r::GUI::_3DScene::load_model_object($self->{canvas}, $self->{model_object}, 0, [0]);
# $self->{canvas}->reset_objects;
# $self->{canvas}->load_object($self->{model_object});
#==============================================================================================================================
$self->{canvas}->load_object($self->{model_object});
# restore selection, if any
if (my $itemData = $self->get_selection) {
@ -607,13 +605,12 @@ sub _update {
my @objects = ();
push @objects, $self->{model_object};
#==============================================================================================================================
Slic3r::GUI::_3DScene::reset_volumes($self->{canvas});
# $self->{canvas}->reset_objects;
#==============================================================================================================================
$self->{canvas}->load_object($_, undef, [0]) for @objects;
#==============================================================================================================================
Slic3r::GUI::_3DScene::reset_volumes($self->{canvas});
Slic3r::GUI::_3DScene::load_model_object($self->{canvas}, $_, 0, [0]) for @objects;
Slic3r::GUI::_3DScene::update_volumes_colors_by_extruder($self->{canvas});
Slic3r::GUI::_3DScene::render($self->{canvas});
# $self->{canvas}->reset_objects;
# $self->{canvas}->load_object($_, undef, [0]) for @objects;
# $self->{canvas}->update_volumes_colors_by_extruder($self->GetParent->GetParent->GetParent->{config});
# $self->{canvas}->Render;
#==============================================================================================================================