--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-support+unsub...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
--Courage et bonne humeur.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
You received this message because you are subscribed to a topic in the Google Groups "Smoothieware Support" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/smoothieware-support/2r0JLV3G5i8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to smoothieware-sup...@googlegroups.com.
Here's some C++ code I hacked together a while ago to do filter out moves below the set movement and extrusion thresholds. I'm not sure it will work with different S3D settings and startup / ending gcode (it definitely won't work if S3D is set to generate relative gcode).
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
#define RESOLUTION_THRESHOLD .01f
#define EXTRUSION_THRESHOLD .0005f
string removeWhitespace(string s) {
string::iterator end_pos = remove(s.begin(), s.end(), ' ');
s.erase(end_pos, s.end());
return s;
}
bool startsWith(const string &s, const string &prefix) {
return (s.length() >= s.length() && s.find(prefix) == 0);
}
float getParameter(const string &s, char c, bool * found = NULL) {
size_t i = s.find(c);
if (i != string::npos) {
if (found) *found = true;
size_t n = s.find_first_not_of("-0123456789.", i+1);
string valstring = s.substr(i+1, n-i-1);
return atof(valstring.c_str());
} else {
if (found) *found = false;
return 0;
}
}
float xyDistance(const string &a, const string &b) {
bool found = true;
float aX = getParameter(a, 'X', &found);
if (!found) return -1;
float aY = getParameter(a, 'Y', &found);
if (!found) return -1;
float bX = getParameter(b, 'X', &found);
if (!found) return -1;
float bY = getParameter(b, 'Y', &found);
if (!found) return -1;
float dX = bX - aX;
float dY = bY - aY;
return sqrtf(dX*dX + dY*dY);
}
bool isRedundant(const string &a, const string &b) {
if (!startsWith(a, "G1") || !startsWith(b, "G1")) {
return false;
}
bool found = true;
float aE = getParameter(a, 'E', &found);
if (!found) return 0;
float bE = getParameter(b, 'E', &found);
if (!found) return 0;
if (fabsf(aE - bE) < EXTRUSION_THRESHOLD) {
// this distance check is probably unnecessary as travel moves are automatically filtered out (they don't have an E parameter)
float dist = xyDistance(a,b);
if (dist < 0) return false; // no distance data
return dist < RESOLUTION_THRESHOLD;
}
return false;
}
int main(int argc, const char * argv[]) {
if (argc < 2 || argc > 3) {
cout << "usage: gcodefix [input filename] [output filename]\n";
return 0;
}
string filename = argv[1];
cout << "Parsing " << filename.c_str() << ":" << endl;
// output file
bool output = false;
ofstream outstream;
if (argc == 3) {
output = true;
string outfile = argv[2];
outstream.open(outfile);
if (!outstream.is_open()) {
cout << "unable to open output file " << outfile.c_str() << "\n";
return 0;
}
}
// read file
int totalCount = 0;
int duplicateCount = 0;
bool relativeMotion = false;
string line;
string previousLine = "";
ifstream infile(filename);
if (infile.is_open()) {
while (getline (infile,line)) {
totalCount++;
// don't filter relative motion gcode
if (startsWith(line,"G91")) {
relativeMotion = true;
} else if (startsWith(line,"G90")) {
relativeMotion = false;
}
// ignore redundant gcode
if (!relativeMotion && startsWith(line, "G1") && isRedundant(previousLine, line)) {
duplicateCount++;
// cout << totalCount << ": " << line << endl;
continue;
}
if (output) {
outstream << line << endl;
}
previousLine = line;
}
infile.close();
if (output) {
outstream.close();
}
printf("Finished: %d / %d Lines Removed [%f%%]\n", duplicateCount, totalCount, (duplicateCount * 100.0f)/totalCount);
} else {
cout << "Unable to open input file " << filename.c_str() << endl;
}
return 0;
}
> an email to smoothieware-support+unsub...@googlegroups.com
> <mailto:smoothieware-support+unsub...@googlegroups.com>.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-support+unsub...@googlegroups.com.
I'm not sure how this is a bug of any sort on S3D side as even the crappiest, slowest printer boards will work just fine with their code.
Seems kind of arrogant to fix some bugs and act like other bugs aren't your problem because you don't use, or like their software.
Same goes for ignoring the line endings generated by a windows machine like Mac and Linux are the best thing ever and to use smoothie I have to switch over to mac or linux. F that.
Everyone told me how awesome smoothieboard was and how it was the best and most complete firmware ever so I bought one, but in reality it isn't even close to other firmware out there.
End stop calibration doesn't even work most of the time - it diverges from a solution rather than converging.
/rant
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
--Courage et bonne humeur.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
Hey :)
/rant
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-support+unsub...@googlegroups.com.
--Courage et bonne humeur.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-support+unsub...@googlegroups.com.
Its actually your attitude towards everybody and everything not smoothie that turns me off. Not so much others.
Like I said before - regardless how fine the g-code is, it still works on other controllers, I have never had any weird slowdowns on my rambo driven delta and the models I generate frequently have .0001" tolerance(frequently 50-100mb stl files)
Its not a S3D problem, the G-code works fine, its how its handled in smoothie firmware.
The end stop calibration diverges rather than converges. if its .05mm off, the next step will be .1mm off, it bounces around repeatedly until it gets lucky, if it gets lucky. The delta printer I designed and built has been built to a degree of accuracy that very few have been built to so it shouldn't have any issues converging.
Hey :)
/rant
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
--Courage et bonne humeur.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
--Courage et bonne humeur.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
Hey :)
/rant
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-support+unsub...@googlegroups.com.
--Courage et bonne humeur.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-support+unsub...@googlegroups.com.
--Courage et bonne humeur.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-support+unsub...@googlegroups.com.
You're always coming in swinging, read your own posts in regards to alligator board,
all the S3d related posts on the S3d boards(if they weren't deleted), etc.
Extra moves in a g-code file isn't a bug,
it is still functional code.
It suddenly became a "bug" because it doesn't work with your firmware.
I tested my probes accuracy(its actually the same as my end stop switch) and it repeats to .0005"
Hey :)
/rant
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
--Courage et bonne humeur.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
--Courage et bonne humeur.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
--Courage et bonne humeur.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
On Sat, Nov 28, 2015 at 6:27 PM, JFettig <jfe...@gmail.com> wrote:Its actually your attitude towards everybody and everything not smoothie that turns me off. Not so much others.I'm not sure what you are talking about ... Care to elaborate ?
Smoothie is open-source work, none of the developpers ( who do this work for free ) have an obligation to fix anything more than what they want to fix.The developers DO produce a lot of code, and fix a lot of things, and want to make the software as good as it can be. But they do not OWE you anything.This is not the developers being arrogant, this is you unduly feeling you are owed something you are not.
On Saturday, November 28, 2015 at 12:38:53 PM UTC-5, Arthur Wolf wrote:On Sat, Nov 28, 2015 at 6:27 PM, JFettig <jfe...@gmail.com> wrote:Its actually your attitude towards everybody and everything not smoothie that turns me off. Not so much others.I'm not sure what you are talking about ... Care to elaborate ?I know the question wasn't aimed at me, but I feel this is an appropriate location to throw my negligibly small change in. You said in an earlier post that:Smoothie is open-source work, none of the developpers ( who do this work for free ) have an obligation to fix anything more than what they want to fix.The developers DO produce a lot of code, and fix a lot of things, and want to make the software as good as it can be. But they do not OWE you anything.This is not the developers being arrogant, this is you unduly feeling you are owed something you are not.First, I would say that instead of "as good as it can be", the attitude is "as good as the developers want it to be". Secondly, you probably consider this a positive statement-- I consider it a negative one. Am I *owed* for purchasing a Genuine Smoothieboard, and spending time trying to get it to work, and spending time helping other people getting it to work? Probably not, although most people who sell a product understand that supporting that product (and if you don't think the firmware is part of the smoothie purchase, well.... you should put that disclaimer on the box), will lead to future sales and growth.
If you want to benefit from a larger community, you have to drive the growth of that community, and I'm not seeing any interest from the smoothie developers. You seem more interested in a gated community-- do it our way, or get out.
Certainly, you're hostile to anyone who buys an AZSMZ or an MKS SBase... and that's not entirely unreasonable.
But you're not much less hostile towards people who actually bought a Smoothieboard.
Smoothie is not customer driven, it is driven solely by the interests of the hardware and software developers--
That's not necessarily a bad thing, but as soon as you hit an area that the devs aren't interested in fixing, the response is "Fix/Write/Do it yourself"-- a standard Open Source Community response.
The problem is, I have a job. I have a personal life. I occasionally have free time. But I'm not going to take the time to refresh my memory on C++, learn your codebase, and write a module to make (as an example) an LCD panel work, which may break the next time you put out an update. Instead, I'll put the smoothieboard in a box, and ignore it until such a time as I have a project that works for it, or the devs actually decide to have similar interests to mine.Similarly, I won't fork an OSS software package to fix a problem I consider irritating-- because the amount of effort (for me) is completely out of proportion to the amount of benefit (to me).Certainly, I'm sure you, and the other smoothie developers have a similar attitude-- but in theory, you're providing for the community, and maybe, selling hardware. You're the experts on this hardware, and software-- what might take me several weeks to put together the resources to change, you should be able to do in half an hour-- if you cared.
And there's the problem-- the belief in the 3D printing community, from the people I've spoken to, is that the smoothie devs don't really care about user complaints.
As soon as the complaint moves out of the developers' comfort zone, the problem is the user's problem, not smoothie's, and as an end user, the only option is to fix it yourself, or find a product that works better for you.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-support+unsub...@googlegroups.com.
Its pretty clear that the Simplify output is awful and should be fixed on their end, but isn't it also an issue if malformed g-code can cause the board to freeze?
Why not include the solution if it already exists?
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
--Courage et bonne humeur.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
This issue is exactly about freezing atbtandom points.
--
You received this message because you are subscribed to a topic in the Google Groups "Smoothieware Support" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/smoothieware-support/2r0JLV3G5i8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to smoothieware-sup...@googlegroups.com.
To unsubscribe from this group and all its topics, send an email to smoothieware-support+unsub...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
I thought there was some talk above about refactoring step generation for Smoothie 2. I'm not sure how fast they generate steps, and I'm also not sure segmentless is that big a deal. I can't tell the difference between a RRF-dc42 print and a Smoothie print, holding them side by side, although others claim they can see a difference. I was just wondering whether you thought a lambda function would be an OK way to go, so I could help out my users a little. My user is telling me he ran the post-processor and its output produces no motion.Re: probing, I was wondering why my endstop probe was never very repeatable. I have a probe calibration routine that runs the probe a bunch of times, and it would always come back with a range of 3-5 steps - sometimes worse. I theorized that there could be some bad timing between that code and the axis motion interrupt. I figured that if I stored the stepper positions earlier in that method, and then averaged steps for all three axes (for deltas), it would be more accurate. Therefore, the positions are stored as soon as we get into the relevant code block, and then averaged later. Now my probe's range is 0-1 steps EVERY TIME I run the probe calibration, and I'm getting better auto-calibrations as well. I don't have this checked in anywhere yet, but you can see the code here: https://gist.github.com/626Pilot/ca6b2756db8fdb3df78c - you can ignore the stuff about decelerating on trigger, as it has nothing to do with this fix.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-sup...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
...
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-support+unsub...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Smoothieware Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smoothieware-support+unsub...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.