Skip to content

Commit

Permalink
bridges no longer fill holes
Browse files Browse the repository at this point in the history
  • Loading branch information
hurzl committed Mar 10, 2012
1 parent d58e1a8 commit e3cfecd
Show file tree
Hide file tree
Showing 17 changed files with 537 additions and 213 deletions.
150 changes: 75 additions & 75 deletions doc/manual.asciidoc
Expand Up @@ -65,91 +65,91 @@ Although RepSnapper is not generally tested outside of windows/linux/mac you may
===== Install dependencies =====

Ubuntu 11.10:
----
--------------------------
sudo apt-get install git-core build-essential intltool libtool libgtkglext1-dev libgtkmm-2.4-dev gtk2-engines-pixbuf freeglut3-dev
----
--------------------------

Ubuntu 11.04:
----
--------------------------
sudo apt-get install git-core build-essential intltool libtool libgtkglext1-dev libgtkmm-2.4-dev libglut3-dev
----
--------------------------

Ubuntu 10.10:
----
--------------------------
sudo apt-get install git-core build-essential automake intltool libtool libgtkmm-2.4-dev libgtkglext1-dev libglut3-dev
----
--------------------------

Ubuntu 10.04:
----
--------------------------
sudo apt-get install git-core build-essential TODO
----
--------------------------

===== Acquire source and compile =====
----
git clone git://github.com/timschmidt/repsnapper.git +
cd repsnapper +
./autogen.sh +
--------------------------
git clone git://github.com/timschmidt/repsnapper.git
cd repsnapper
./autogen.sh
make
----
--------------------------
Executable (repsnapper) will be left in the top folder. Install with "sudo make install-strip"

==== Fedora ====
===== Installing from yum =====
Repsnapper was packaged by jebba for Fedora 14 at this repository: http://repos.fedorapeople.org/repos/jebba/reprap/
----
su +
wget -P /etc/yum.repos.d/ http://repos.fedorapeople.org/repos/jebba/reprap/fedora-reprap.repo +
yum install repsnapper-gtk2 +
exit +
repsnapper +
----
--------------------------
su
wget -P /etc/yum.repos.d/ http://repos.fedorapeople.org/repos/jebba/reprap/fedora-reprap.repo
yum install repsnapper-gtk2
exit
repsnapper
--------------------------

===== Installing from sources =====
Install dependencies: TODO only tested with Fedora 14
----
--------------------------
yum install git gtk2-devel gcc-c++ gcc binutils make cmake gtkglextmm gtkglextmm-devel gtkmm*
----
--------------------------
For Fedora 15 (tested on x86_64)
----
--------------------------
yum install git gtk2-devel gcc-c++ gcc binutils make cmake gtkglextmm gtkglextmm-devel freeglut-devel libusb1-devel intltool gtkmm*
----
--------------------------

Install repsnapper:
----
git clone git://github.com/timschmidt/repsnapper.git +
cd repsnapper +
su +
echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf +
ldconfig +
exit +
./autogen.sh +
make -j3 +
----
--------------------------
git clone git://github.com/timschmidt/repsnapper.git
cd repsnapper
su
echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf
ldconfig
exit
./autogen.sh
make -j3
--------------------------

Run the program:
----
--------------------------
./repsnapper
----
--------------------------

Install and run:
----
sudo make install-strip +
--------------------------
sudo make install-strip
repsnapper
----
--------------------------

==== OpenSuse 11.2 / SLED 11 SP1 ====
----
--------------------------
sudo zypper install TODO
----
--------------------------

==== Generic installation instructions ====

----
git clone git://github.com/timschmidt/repsnapper.git +
cd repsnapper +
./autogen.sh +
--------------------------
git clone git://github.com/timschmidt/repsnapper.git
cd repsnapper
./autogen.sh
make -j3
----
--------------------------
Executable (repsnapper) will be left in the top folder. Install with "sudo make install-strip"

=== Windows ===
Expand All @@ -162,17 +162,17 @@ Install http://developer.apple.com/technologies/xcode.html[XCode].
Install http://www.macports.org/[MacPorts]

Run from a terminal window:
----
--------------------------
sudo port install intltool boost gtkmm gtkglext
----
--------------------------

Acquire source and compile:
----
git clone git://github.com/timschmidt/repsnapper.git +
cd repsnapper +
./autogen.sh +
--------------------------
git clone git://github.com/timschmidt/repsnapper.git
cd repsnapper
./autogen.sh
make -j3
----
--------------------------
Executable (repsnapper) will be left in the top folder. Currently there is no install rule.


Expand Down Expand Up @@ -382,28 +382,28 @@ code options to set at the beginning of the print process, like 0-position, defa
You will almost certainly want to change the value on the line that sets temperature, or remove it if you set the temperature before starting your print.

When you first open RepSnapper this is what is in the tab:
----
; GCode generated by RepSnapper by Kulitorum +
G21 ;metric is good! +
G90 ;absolute positioning +
T0 ;select first extruder +
G28 ;go home +
G92 E0 ;set extruder home +
M104 S200.0 ;set temperature to 200.0 +
--------------------------
; GCode generated by RepSnapper by Kulitorum
G21 ;metric is good!
G90 ;absolute positioning
T0 ;select first extruder
G28 ;go home
G92 E0 ;set extruder home
M104 S200.0 ;set temperature to 200.0
G1 X20 Y20 F500 ;Move away from 0.0, so we use the same reset (in the layer code) for each layer
----
--------------------------

In Labitat.dk the Workhorse Mendel uses this in the Start tab
----
; GCode generated by RepSnapper by Kulitorum +
G21 ;metric is good! +
G90 ;absolute positioning +
T0 ;select new extruder +
;G28 ;go home - does not work with current version of Tonokip Firmware (oct 2010) +
G92 X0 Y0 Z0 E0 ;set home to current location of the nozzle +
M104 S215 ;set temperature (heating units - NOT actual degree centigrade) +
--------------------------
; GCode generated by RepSnapper by Kulitorum
G21 ;metric is good!
G90 ;absolute positioning
T0 ;select new extruder
;G28 ;go home - does not work with current version of Tonokip Firmware (oct 2010)
G92 X0 Y0 Z0 E0 ;set home to current location of the nozzle
M104 S215 ;set temperature (heating units - NOT actual degree centigrade)
G1 X20 Y20 F500 ;Move away from 0.0, so we use the same reset (in the layer code) for each layer
----
--------------------------

==== Next layer tab ====
something to do in between printing the next layer
Expand All @@ -413,10 +413,10 @@ something to do at the end of a print, like turning the heater off

When you first open RepSnapper this is what is in the tab:

----
G1 X0 Y0 F2000.0 ;feed for start of next move +
M104 S0.0 ;Heater off +
----
--------------------------
G1 X0 Y0 F2000.0 ;feed for start of next move
M104 S0.0 ;Heater off
--------------------------

==== Result tab ====
shows you the final complete GCode generated.
Expand Down
5 changes: 3 additions & 2 deletions src/model.h
Expand Up @@ -32,13 +32,12 @@
/*#include "slicer/layer.h"*/
#include "settings.h"
#include "progress.h"
#include "slicer/poly.h"

#ifdef WIN32
# pragma warning( disable : 4244 4267)
#endif

class Clipping;
class Layer;

class Model
{
Expand Down Expand Up @@ -94,6 +93,8 @@ class Model
void MakeUncoveredPolygons(bool make_decor, bool make_bridges=true);
vector<Poly> GetUncoveredPolygons(const Layer *subjlayer,
const Layer *cliplayer);
vector<ExPoly> GetUncoveredExPolygons(const Layer * subjlayer,
const Layer * cliplayer);
void MakeFullSkins();
void MultiplyUncoveredPolygons();
void MakeSupportPolygons(Layer * subjlayer,
Expand Down
43 changes: 30 additions & 13 deletions src/model2.cpp
Expand Up @@ -148,13 +148,13 @@ void Model::MakeRaft(GCodeState &state, double &z)
P1 = HitsBuffer[0].p;
P2 = HitsBuffer[1].p;

state.MakeAcceleratedGCodeLine (Vector3d(P1.x,P1.y,z),
Vector3d(P2.x,P2.y,z),
Vector3d(0,0,0),0,
settings.Hardware.MaxPrintSpeedXY,
extrusionfactor, 0,
z,
settings.Slicing, settings.Hardware);
state.MakeGCodeLine (Vector3d(P1.x,P1.y,z),
Vector3d(P2.x,P2.y,z),
Vector3d(0,0,0), 0,
settings.Hardware.MaxPrintSpeedXY,
extrusionfactor, 0,
z,
settings.Slicing, settings.Hardware);
reverseLines = !reverseLines;
}
// Set startspeed for Z-move
Expand Down Expand Up @@ -324,16 +324,17 @@ void Model::MakeUncoveredPolygons(bool make_decor, bool make_bridges)
{
//cerr << "layer " << i << endl;
if (i%10==0) m_progress->update(count + count - i);
vector<Poly> bridges = GetUncoveredPolygons(layers[i],layers[i-1]);
//make_bridges = false;
// no bridge on marked layers (serial build)
bool mbridge = make_bridges && (layers[i]->LayerNo != 0);
if (mbridge) {
layers[i]->addBridgePolygons(bridges);
vector<ExPoly> uncovered = GetUncoveredExPolygons(layers[i],layers[i-1]);
layers[i]->addBridgePolygons(uncovered);
layers[i]->calcBridgeAngles(layers[i-1]);
}
else {
layers[i]->addFullPolygons(bridges,make_decor);
vector<Poly> uncovered = GetUncoveredPolygons(layers[i],layers[i-1]);
layers[i]->addFullPolygons(uncovered,make_decor);
}
}
m_progress->update(2*count+1);
Expand All @@ -346,6 +347,22 @@ void Model::MakeUncoveredPolygons(bool make_decor, bool make_bridges)
// find polys in subjlayer that are not covered by any filled polygons of cliplayer
vector<Poly> Model::GetUncoveredPolygons(const Layer * subjlayer,
const Layer * cliplayer)
{
Clipping clipp;
clipp.clear();
clipp.addPolys(subjlayer->GetFillPolygons(),subject);
clipp.addPolys(subjlayer->GetFullFillPolygons(),subject);
clipp.addPolys(subjlayer->GetBridgePolygons(),subject);
clipp.addPolys(cliplayer->GetOuterShell(),clip); // have some overlap
//clipp.addPolys(cliplayer->GetInnerShell(), clip); // have some more overlap
//clipp.addPolys(cliplayer->GetPolygons(),clip);
//clipp.addPolys(cliplayer->GetFullFillPolygons(),clip);
vector<Poly> uncovered = clipp.subtract();
return uncovered;
}
// find polys in subjlayer that are not covered by any filled polygons of cliplayer
vector<ExPoly> Model::GetUncoveredExPolygons(const Layer * subjlayer,
const Layer * cliplayer)
{
Clipping clipp;
clipp.clear();
Expand All @@ -356,7 +373,7 @@ vector<Poly> Model::GetUncoveredPolygons(const Layer * subjlayer,
clipp.addPolys(cliplayer->GetInnerShell(), clip); // have some more overlap
//clipp.addPolys(cliplayer->GetPolygons(),clip);
//clipp.addPolys(cliplayer->GetFullFillPolygons(),clip);
vector<Poly> uncovered = clipp.subtract();
vector<ExPoly> uncovered = clipp.ext_subtract();
return uncovered;
}

Expand All @@ -372,7 +389,7 @@ void Model::MultiplyUncoveredPolygons()
if (i%10==0) m_progress->update(i);
vector<Poly> fullpolys = layers[i]->GetFullFillPolygons();
vector<Poly> decorpolys = layers[i]->GetDecorPolygons();
vector<Poly> bridgepolys = layers[i]->GetBridgePolygons();
vector<ExPoly> bridgepolys = layers[i]->GetBridgePolygons();
vector<Poly> skinfullpolys = layers[i]->GetSkinFullPolygons();
for (s=1; s < shells; s++)
if (i-s > 1) {
Expand All @@ -387,7 +404,7 @@ void Model::MultiplyUncoveredPolygons()
{
if (i%10==0) m_progress->update(count + count -i);
vector<Poly> fullpolys = layers[i]->GetFullFillPolygons();
vector<Poly> bridgepolys = layers[i]->GetBridgePolygons();
vector<ExPoly> bridgepolys = layers[i]->GetBridgePolygons();
vector<Poly> skinfullpolys = layers[i]->GetSkinFullPolygons();
vector<Poly> decorpolys = layers[i]->GetDecorPolygons();
for (int s=1; s < shells; s++)
Expand Down
2 changes: 1 addition & 1 deletion src/repsnapper.cpp
Expand Up @@ -119,7 +119,7 @@ Glib::RefPtr<Gio::File> find_global_config() {
int main(int argc, char **argv)
{
Glib::thread_init();
//gdk_threads_init(); // excludes OMP threads?
// gdk_threads_init(); // locks everything at least on freebsd
Gtk::Main tk(argc, argv);

gchar *locale_dir;
Expand Down

0 comments on commit e3cfecd

Please sign in to comment.