Optimized and improved rectilinear fill.

This commit is contained in:
bubnikv 2016-04-13 20:45:44 +02:00
parent 3b81bf0e33
commit f767ce816b
11 changed files with 62 additions and 6 deletions

View File

@ -40,6 +40,7 @@ use Wx 0.9901 qw(:bitmap :dialog :icon :id :misc :systemsettings :toplevelwindow
:filedialog :font); :filedialog :font);
use Wx::Event qw(EVT_IDLE EVT_COMMAND); use Wx::Event qw(EVT_IDLE EVT_COMMAND);
use base 'Wx::App'; use base 'Wx::App';
#use base 'Wx::AppConsole';
use constant FILE_WILDCARDS => { use constant FILE_WILDCARDS => {
known => 'Known files (*.stl, *.obj, *.amf, *.xml)|*.stl;*.STL;*.obj;*.OBJ;*.amf;*.AMF;*.xml;*.XML', known => 'Known files (*.stl, *.obj, *.amf, *.xml)|*.stl;*.STL;*.obj;*.OBJ;*.amf;*.AMF;*.xml;*.XML',

View File

@ -284,8 +284,13 @@ sub _init_menubar {
$self->_append_menu_item($helpMenu, "&About Slic3r", 'Show about dialog', sub { $self->_append_menu_item($helpMenu, "&About Slic3r", 'Show about dialog', sub {
wxTheApp->about; wxTheApp->about;
}); });
if (Slic3r::GUI::debugged()) {
$self->_append_menu_item($helpMenu, "&Debug", 'Break to debugger', sub {
Slic3r::GUI::break_to_debugger();
});
}
} }
# menubar # menubar
# assign menubar to frame after appending items, otherwise special items # assign menubar to frame after appending items, otherwise special items
# will not be handled correctly # will not be handled correctly

View File

@ -28,7 +28,7 @@
"name": "xs & run", "name": "xs & run",
"working_dir": "$project_path/xs", "working_dir": "$project_path/xs",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"shell_cmd": "perl Build install & perl ..\\slic3r.pl --gui \"..\\..\\Slic3r-tests\\star3-big2.stl\"" "shell_cmd": "perl Build install & cd .. & perl slic3r.pl --gui \"..\\Slic3r-tests\\star3-big2.stl\""
} }
], ],
"folders": "folders":
@ -36,5 +36,26 @@
{ {
"path": "." "path": "."
} }
] ],
"settings":
{
"sublimegdb_workingdir": "${folder:${project_path:run}}",
// NOTE: You MUST provide --interpreter=mi for the plugin to work
// "sublimegdb_commandline": "D:\\Qt\\Tools\\mingw492_32\\bin\\gdb.exe --interpreter=mi -ex 'target localhost:2345'",
// "sublimegdb_commandline": "D:\\Qt\\Tools\\mingw492_32\\bin\\gdb.exe --interpreter=mi perl --args perl slic3r.pl",
// "sublimegdb_commandline": "D:\\Qt\\Tools\\mingw492_32\\bin\\gdb.exe --interpreter=mi perl --args slic3r.pl ",
// "sublimegdb_commandline": "D:\\Qt\\Tools\\mingw492_32\\bin\\gdb.exe --interpreter=mi -e C:\\Strawberry\\perl\\bin\\perl.exe -s C:\\Strawberry\\perl\\site\\lib\\auto\\Slic3r\\XS\\XS.xs.dll --args perl slic3r.pl -j 1 --gui D:\\src\\Slic3r-tests\\star3-big.stl",
"sublimegdb_commandline": "D:\\Qt\\Tools\\mingw492_32\\bin\\gdb.exe --interpreter=mi perl.exe --args perl slic3r.pl -j 1 --gui", // D:\\src\\Slic3r-tests\\star3-big.stl",
// "sublimegdb_commandline": "D:\\Qt\\Tools\\mingw492_32\\bin\\gdb.exe --interpreter=mi -x slic3r.gdb",
// "arguments": "slic3r -j 1 --gui ../Slic3r-tests/star3-big.stl",
// "arguments": "../slic3r.pl -j 1 --gui",
// "sublimegdb_exec_cmd": "-exec-continue",
// Add "pending breakpoints" for symbols that are dynamically loaded from
// external shared libraries
"debug_ext" : true,
"run_after_init": false,
"close_views": false
}
} }

View File

@ -42,6 +42,8 @@ src/libslic3r/Fill/FillPlanePath.cpp
src/libslic3r/Fill/FillPlanePath.hpp src/libslic3r/Fill/FillPlanePath.hpp
src/libslic3r/Fill/FillRectilinear.cpp src/libslic3r/Fill/FillRectilinear.cpp
src/libslic3r/Fill/FillRectilinear.hpp src/libslic3r/Fill/FillRectilinear.hpp
src/libslic3r/Fill/FillRectilinear2.cpp
src/libslic3r/Fill/FillRectilinear2.hpp
src/libslic3r/Flow.cpp src/libslic3r/Flow.cpp
src/libslic3r/Flow.hpp src/libslic3r/Flow.hpp
src/libslic3r/GCode.cpp src/libslic3r/GCode.cpp

View File

@ -6,6 +6,7 @@
#include "Fill3DHoneycomb.hpp" #include "Fill3DHoneycomb.hpp"
#include "FillPlanePath.hpp" #include "FillPlanePath.hpp"
#include "FillRectilinear.hpp" #include "FillRectilinear.hpp"
#include "FillRectilinear2.hpp"
namespace Slic3r { namespace Slic3r {
@ -18,7 +19,8 @@ Fill* Fill::new_from_type(const std::string &type)
if (type == "3dhoneycomb") if (type == "3dhoneycomb")
return new Fill3DHoneycomb(); return new Fill3DHoneycomb();
if (type == "rectilinear") if (type == "rectilinear")
return new FillRectilinear(); // return new FillRectilinear();
return new FillRectilinear2();
if (type == "line") if (type == "line")
return new FillLine(); return new FillLine();
if (type == "grid") if (type == "grid")

View File

@ -12,6 +12,8 @@ class Surface;
struct FillParams struct FillParams
{ {
FillParams() { memset(this, 0, sizeof(FillParams)); }
coordf_t width; coordf_t width;
// Fraction in <0, 1> // Fraction in <0, 1>
float density; float density;

View File

@ -34,7 +34,7 @@ Polylines FillRectilinear::fill_surface(const Surface *surface, const FillParams
bounding_box.min.x - (bounding_box.min.x % this->_line_spacing), bounding_box.min.x - (bounding_box.min.x % this->_line_spacing),
bounding_box.min.y - (bounding_box.min.y % this->_line_spacing))); bounding_box.min.y - (bounding_box.min.y % this->_line_spacing)));
} }
// generate the basic pattern // generate the basic pattern
coord_t x_max = bounding_box.max.x + SCALED_EPSILON; coord_t x_max = bounding_box.max.x + SCALED_EPSILON;
Lines lines; Lines lines;

View File

@ -13,7 +13,7 @@
#include <assert.h> #include <assert.h>
#ifdef SLIC3R_DEBUG #ifdef SLIC3R_DEBUG
#define SLIC3R_TRIANGLEMESH_DEBUG // #define SLIC3R_TRIANGLEMESH_DEBUG
#include "SVG.hpp" #include "SVG.hpp"
#endif #endif

View File

@ -36,4 +36,19 @@ enable_screensaver()
#endif #endif
} }
bool
debugged()
{
return IsDebuggerPresent();
}
void
break_to_debugger()
{
#ifdef _WIN32
if (IsDebuggerPresent())
DebugBreak();
#endif /* _WIN32 */
}
} } } }

View File

@ -5,6 +5,8 @@ namespace Slic3r { namespace GUI {
void disable_screensaver(); void disable_screensaver();
void enable_screensaver(); void enable_screensaver();
bool debugged();
void break_to_debugger();
} } } }

View File

@ -13,3 +13,9 @@ void disable_screensaver()
void enable_screensaver() void enable_screensaver()
%code{% Slic3r::GUI::enable_screensaver(); %}; %code{% Slic3r::GUI::enable_screensaver(); %};
bool debugged()
%code{% RETVAL=Slic3r::GUI::debugged(); %};
void break_to_debugger()
%code{% Slic3r::GUI::break_to_debugger(); %};