39
39
} elsif ($data->{LocalName} eq 'material') {
40
40
my $material_id = $self->_get_attribute($data, 'id') // '_';
41
41
$self->{_material} = $self->{_model}->set_material($material_id);
42
} elsif ($data->{LocalName} eq 'metadata' && $self->{_tree}[-1] eq 'material') {
43
$self->{_material_metadata_type} = $self->_get_attribute($data, 'type');
44
$self->{_material}->attributes->{ $self->{_material_metadata_type} } = "";
42
} elsif ($data->{LocalName} eq 'metadata') {
43
$self->{_metadata_type} = $self->_get_attribute($data, 'type');
44
$self->{_metadata_value} = '';
45
45
} elsif ($data->{LocalName} eq 'constellation') {
46
46
$self->{_constellation} = 1; # we merge all constellations as we don't support more than one
47
47
} elsif ($data->{LocalName} eq 'instance' && $self->{_constellation}) {
63
63
$self->{_vertex}[ $xyz_index{$self->{_coordinate}} ] .= $data->{Data};
64
64
} elsif ($self->{_triangle} && defined $self->{_vertex_idx}) {
65
65
$self->{_triangle}[ $self->{_vertex_idx} ] .= $data->{Data};
66
} elsif ($self->{_material_metadata_type}) {
67
$self->{_material}->attributes->{ $self->{_material_metadata_type} } .= $data->{Data};
66
} elsif ($self->{_metadata_type}) {
67
$self->{_metadata_value} .= $data->{Data};
68
68
} elsif ($self->{_instance_property}) {
69
69
$self->{_instance}{ $self->{_instance_property} } .= $data->{Data};
96
96
$self->{_vertex_idx} = undef;
97
97
} elsif ($data->{LocalName} eq 'material') {
98
98
$self->{_material} = undef;
99
} elsif ($data->{LocalName} eq 'metadata' && $self->{_material}) {
100
if ($self->{_material_metadata_type} =~ /^slic3r\.(.+)/) {
99
} elsif ($data->{LocalName} eq 'metadata') {
100
my $value = $self->{_metadata_value};
101
if ($self->{_metadata_type} =~ /^slic3r\.(.+)/) {
101
102
my $opt_key = $1;
102
103
if (exists $Slic3r::Config::Options->{$opt_key}) {
103
$self->{_material}->config->set_deserialize($opt_key, $self->{_material}->attributes->{"slic3r.$opt_key"});
105
if ($self->{_material}) {
106
$config = $self->{_material}->config;
107
} elsif ($self->{_volume}) {
108
$config = $self->{_volume}->config;
109
} elsif ($self->{_object}) {
110
$config = $self->{_object}->config;
113
$config->set_deserialize($opt_key, $value) if defined $config;
114
} elsif ($opt_key eq 'modifier' && $self->{_volume}) {
115
$self->{_volume}->set_modifier($value);
117
} elsif ($self->{_material}) {
118
$self->{_material}->set_attribute($self->{_metadata_type}, $value);
106
$self->{_material_metadata_type} = undef;
120
$self->{_metadata_type} = undef;
121
$self->{_metadata_value} = undef;
107
122
} elsif ($data->{LocalName} eq 'constellation') {
108
123
$self->{_constellation} = undef;
109
124
} elsif ($data->{LocalName} eq 'instance') {