Skip to content

Commit

Permalink
couple bug fixes, starting to work as expected on most issue test models
Browse files Browse the repository at this point in the history
reducing code to approach that's working
  • Loading branch information
Mike Sheldrake committed Jun 2, 2013
1 parent 7f4b759 commit 910b1ca
Show file tree
Hide file tree
Showing 2 changed files with 116 additions and 164 deletions.
43 changes: 16 additions & 27 deletions lib/Slic3r/Layer/Region.pm
Original file line number Diff line number Diff line change
Expand Up @@ -198,26 +198,21 @@ sub make_perimeters {
# generate medial axis fragments for thin walls and gaps
my $ma = Slic3r::MedialAxis->new($surface->expolygon);
#my @intervals = $ma->offset_interval_filter($self->perimeter_flow->scaled_spacing, $loop_number + 1, $self->perimeter_flow->scaled_spacing/2, $self->perimeter_flow->scaled_spacing/1.9, $self->perimeter_flow->scaled_spacing, $self->perimeter_flow->scaled_spacing/30);
my @intervals = $ma->offset_interval_filter($self->perimeter_flow->scaled_spacing * 2, # tool diam, or normal offset (used after initial offset)
$loop_number + 1, # how many offsets to do
2 * $self->perimeter_flow->scaled_spacing ,#/2, # initial offset
0, # bracket - added to offset for each level to determine upper MIC radius bound (edges up to that bound are collected)
# when using double wide tool diam, bracket should be zero (was using 1.9 with 1x tool diam)
$self->perimeter_flow->scaled_spacing, # initial offset bracket - not using this yet, maybe don't want to
0, #$self->perimeter_flow->scaled_spacing/30
# use nudge to slightly increase offsets so results end up intersecting Clipper offset loops later
# can use zero nudge when doing double wide fully centered thinwalls
);

# hash args not set up yet in offset_interval_filter()
# my @intervals = $ma->offset_interval_filter(
# offset => $self->perimeter_flow->scaled_spacing,
# count => $loop_number + 1,
# first_offset => $self->perimeter_flow->scaled_spacing / 2,
# nudge => $self->perimeter_flow->scaled_spacing * 0.1,
# max_radius => $self->perimeter_flow->scaled_spacing * 1.1,
# min_radius => $self->perimeter_flow->scaled_spacing / 2,
# );

# There are different strategies to explore with these offset edge
# settings, hence the messy notes.
my @intervals = $ma->offset_interval_filter(
$self->perimeter_flow->scaled_spacing * 2, # tool diam, or normal offset (used after initial offset)
1, # $loop_number + 1, # how many offsets to do - just the first for now
2 * $self->perimeter_flow->scaled_spacing , #/2, # initial offset
0, # bracket - added to offset for each level to determine upper MIC radius bound (edges up to that bound are collected)
# when using double wide tool diam, bracket should be zero (was using 1.9 with 1x tool diam)
$self->perimeter_flow->scaled_spacing, # initial offset bracket - not using this yet, maybe don't want to
0, #$self->perimeter_flow->scaled_spacing/30
# use nudge to slightly increase offsets so results end up intersecting Clipper offset loops later
# (the nudges don't accumulate for deeper offsets - each offset gets it's own nudge)
# can use zero nudge when doing double wide fully centered thinwalls
);

my $medial_fragments = Slic3r::MedialAxis::get_offset_fragments([@intervals], $self->layer->id % 2, $self->perimeter_flow->scaled_spacing);
Slic3r::debugf " %d thin walls detected with medial axis\n", scalar(@{$medial_fragments->[0]}) if @{$medial_fragments} && @{$medial_fragments->[0]};
Expand All @@ -239,18 +234,12 @@ sub make_perimeters {
# Merge medial axis fragments for thin walls into offset loops.
# Limit this to outer perimeter until working as expected,
# then extend this to thin gaps, with variable flow width.
if (1 && $loop == 0 &&
@{$medial_fragments->[$loop]}
#@{$intervals[$loop]}
) {
#my $medfrags;
#$medfrags = Slic3r::MedialAxis::get_offset_fragments([$intervals[$loop]], $self->layer->id % 2);
if ($loop == 0 && @{$medial_fragments->[$loop]}) {
push @new_offsets_with_thins,
@{Slic3r::MedialAxis::merge_expolygon_and_medial_axis_fragments(
$expolygon,
\@offsets,
$medial_fragments->[$loop],
#$medfrags->[0],
$perimeter_spacing,
$self->layer->id % 2
)};
Expand Down
Loading

0 comments on commit 910b1ca

Please sign in to comment.