formerlurker / arcwelderlib Goto Github PK
View Code? Open in Web Editor NEWA collection of projects used to convert G0/G1 commands to G2/G3 commands.
A collection of projects used to convert G0/G1 commands to G2/G3 commands.
Hi!
Using current version (master, efb6c54), I tested to convert a small gcode-file into using arcs, and then back again to replace the arcs by lines. The original gcode uses relative extrusion distances, and the arc-version seems to be correct. However, in the "straightened" gcode, all G1 commands corresponding to former arcs have progressively increasing E-values.
Seems like the ArcWelderStraightener has not picked up that the E-values are relative. The gcode I tested is from PrusaSlicer and uses M83 to switch to relative E-values.
The build artefacts for OSX are not working. This seems to be caused by the buildprocess, because if I create a build on my local system the executable works fine.
Here's the output from lldb
trying to run the ArcWelder command on a simple gcode file:
Aldos-Mac:Desktop aldo$ lldb macOS/bin/ArcWelder test.gcode
(lldb) target create "macOS/bin/ArcWelder"
Current executable set to 'macOS/bin/ArcWelder' (x86_64).
(lldb) settings set -- target.run-args "test.gcode"
(lldb) run
Process 639 launched: '/Users/aldo/Desktop/macOS/bin/ArcWelder' (x86_64)
2021-01-18 11:17:03.002 - arc_welder.gcode_conversion - INFO - Source and target path are the same. The source file will be overwritten. Temporary file path: 719a288e-3d85-c237-7184-f1d585b68792.tmp
2021-01-18 11:17:03.002 - arc_welder.gcode_conversion - INFO - Processing Gcode
Source File Path : test.gcode
Target File Path (overwrite) : 719a288e-3d85-c237-7184-f1d585b68792.tmp
Temporary File Path : 719a288e-3d85-c237-7184-f1d585b68792.tmp
Resolution : 0.0500mm (+-0.02500mm)
Path Tolerance : 5.000%
Maximum Arc Radius : 1000000mm
Min Arc Segments : 0
MM Per Arc Segment : 1000000.000
Allow 3D Arcs : False
Allow Dynamic Precision : False
Default XYZ Precision : 3
Default E Precision : 5
G90/G91 Influences Extruder : False
Log Level : INFO
Hide Progress Updates : False
Process 639 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
frame #0: 0x000000010001c054 ArcWelder`___lldb_unnamed_symbol211$$ArcWelder + 2132
ArcWelder`___lldb_unnamed_symbol211$$ArcWelder:
-> 0x10001c054 <+2132>: movq %rdi, -0x68(%rax)
0x10001c058 <+2136>: movq (%rcx,%rbx,8), %rdi
0x10001c05c <+2140>: movq %rdi, -0x60(%rax)
0x10001c060 <+2144>: movq 0x8(%rdx,%rbx,8), %rdi
Target 0: (ArcWelder) stopped.
(lldb)
Unfortunately, the build artifacts are not debug builds, so it is hard to see what exactly is going wrong.
This is partially implemented currently. Fully implement this.
Dear all,
could somebody please help me how to use the script on MacOS version of PrusaSlicer? Meaning, where to save the ArcWelder file and how exactly to insert the path..
Thanks a lot!
Detect argument errors and output to stderr. Detect potential argument issues and output as warnings to std.
Reject all arcs where both I and J would be 0 based on the current resolution.
You should include a folder here that allows users to easily import your script into their favorite slicer. The console app by itself needs a wrapper essentially to interface with cura for example. Here is something I wrote and which is working for me. I don't know to how to parallelize it however, so that is something someone with better python knowledge can do.
ArcWelder.zip
Some inner loops are calculating tolerance values from precision values. This takes too long. Pre-calculate this when precision is updated.
Hi,
Is this compatible with Cura Arachne where line widths can vary dynamically?
Thanks,
I tried post-processing on a circular part:
but the result is very "noisy"
Original g-Code is attached
CabochonEchelle.zip
Command line is the simplest one :
ArcWelderConsole.exe CabochonEchelle.gcode CabochonEchelle-weld.gcode
Using Simplify3D 4.1.2 to slice, Repetier Server 0.93.1 to render.
As per attached screenshot, AW (command line version for Win64) increases the amount of movements for certain arc groups instead of decreasing them.
Leaving alone the question how this can happen (maybe too many actually straight movements are recognized as an arc?), it is probably better to by default not weld arcs where it would actually increase amount of commands.
I am also attaching the gcode file (before and after conversion) as well as the log, all with added ".txt" (otherwise cannot upload for some reason).
Not an urgent fix, but thought I'd just give you a heads up that Marlin firmware bugfix branch had implemented new arc logic sometime last year.
This is the part of your code that differs from that version:
ArcWelderLib/ArcWelderInverseProcessor/inverse_processor.cpp
Lines 266 to 323 in efb6c54
The equivalent section in marlin branch is lines 79-110 from the G2_G3.cpp file within gcode/motion:
https://github.com/MarlinFirmware/Marlin/blob/e7c711996bd3080f5e343eff5556736cbf2e2416/Marlin/src/gcode/motion/G2_G3.cpp#L79-L110
Basically, they fixed a bug involving precision issues when doing full arcs and also fixed another issue whereby G2 could have more or less segments than an equivalent G3 if over 180 degrees.
Pow is very slow for simple x^2 operations. Find and replace them all.
Please let me know if you've used the new build of ArcWelder or any of the associated libraries. I would love to know what you like, what you don't, what you love, and what you hate. If you have discovered any bugs, please mention those here. I may ask you to create a separate issue for any newly discovered bugs.
Thank you all so much! Without you all I couldn't have done this, and I'm feeling really good about the core algorithm now.
So, I've been copying some of the core logic for this project as a DXF welder for laser cutting/CNC machining from OpenSCAD.
One of the tweaks I've identified that is highly effective in maintaining accuracy, but making longer, sharper-angled arcs is to not track expected length for an entire arc-in-progress, but to calculate the nominal arc length for the angular distance between the last point on an arc and the next proposed point.
Right now we compare (abs((d1 + d2) - (d3 + d4)) < resolution
) where resolution
is something like 0.005
.
I found from my testing this results in a lot of arcs not being formed. Removing this logic led to weird point inclusions due to distance, but coincidentally being in an "arc". I found a modified logic, using the same diagram as above: abs(d1 - d3) < resolution && abs(d3 - d4) < resolution
. This maintains accuracy, but allows large or sharp arcs to properly form. To calculate d3
or d4
, and presently they are calculated for the entire arc, I just modified some logic to get the angular difference from the two points of the corresponding segment.
See analogous removed logic: https://github.com/Protryon/dxf-welder/blob/main/src/dxf_process.rs#L160
Added logic: https://github.com/Protryon/dxf-welder/blob/main/src/dxf_process.rs#L221
This is more of an fyi or very minor issue, but the PrusaSlicer 2.x viewer expects a line that looks something like this at the top of the file:
; generated by PrusaSlicer 2.3.0+win64 on 2021-02-21 at 22:41:55 UTC
ArcWelder puts its own info (for example) at the top:
; Postprocessed by ArcWelder
; Copyright(C) 2020 - Brad Hochgesang
; resolution=0.05mm
; path_tolerance=5%
; max_radius=1000000.00mm
; default_xyz_precision=3
; default_e_precision=5
Even though they are just comments, this results in the viewer producing a popup error message stating:
"Internal error: Not a PrusaSlicer / Slic3r PE generated g-code"
It is a simple cut and paste fix for users, of course, but thought you should know.
Maybe the comments could be appended to the gcode file instead of prepending?
Very cool tool btw.
Output progress so that it can be easily parsed by a calling application.
The previous Arc Welder algorithm created an arc from the middle point when determining if an arc fit the current points. The new algorithm should check all points.
In a future version I hope to check by length and not by the index of the point.
Arc direction detection has been a bit hairy in previous versions. It rarely failed, but the method of verification caused some smaller segments not to be converted. The routine relied on a constant, which limited accuracy.
Alter detection routine so that it can detect more arcs without generating one that has the wrong rotation.
Add a direction test that allows the arc to be repaired if the direction is wrong.
Hi,
I've encountered an issue, with the master branch of ArcWelderLib.
I did not see the problem with the Octroprint plugin (up to date with stable version I think).
Before welding (spacer.gcode):
After welding (spacer.aw.gcode):
Relevant files are here: spacer.zip
$ build/ArcWelderConsole/ArcWelder ~/Desktop/spacer.gcode ~/Desktop/spacer.aw.gcode
2021-02-04 11:54:42.001 - arc_welder.gcode_conversion - INFO - Processing Gcode
Source File Path : /home/gkatev/Desktop/spacer.gcode
Target File File : /home/gkatev/Desktop/spacer.aw.gcode
Resolution : 0.0500mm (+-0.02500mm)
Path Tolerance : 5.000%
Maximum Arc Radius : 1000000mm
Min Arc Segments : 0
MM Per Arc Segment : 0.000
Allow 3D Arcs : False
Allow Dynamic Precision : False
Default XYZ Precision : 3
Default E Precision : 5
G90/G91 Influences Extruder : False
Log Level : INFO
Hide Progress Updates : False
2021-02-04 11:54:42.003 - arc_welder.gcode_conversion - INFO - arc_welder::process - Parameters received: source_file_path: '/home/gkatev/Desktop/spacer.gcode', target_file_path:'/home/gkatev/Desktop/spacer.aw.gcode', resolution_mm:0.05mm (+-0.03mm), path_tolerance_percent: 0.05, max_radius_mm:1000000.00, min_arc_segments:0, mm_per_arc_segment:0, g90_91_influences_extruder: False, allow_3d_arcs: False, allow_dynamic_precision: False, default_xyz_precision: 3, default_e_precision: 5
Progress: percent_complete:0.00, seconds_elapsed:0.00, seconds_remaining:inf, gcodes_processed: 0, current_file_line: 0, points_compressed: 0, arcs_created: 0, num_firmware_compensations: 0, compression_ratio: 0.00, size_reduction: 0.00%
Progress: percent_complete:100.00, seconds_elapsed:0.04, seconds_remaining:0.00, gcodes_processed: 14292, current_file_line: 17723, points_compressed: 6513, arcs_created: 301, num_firmware_compensations: 0, compression_ratio: 1.43, size_reduction: 30.14%
2021-02-04 11:54:42.044 - arc_welder.gcode_conversion - INFO -
Min Max Source Target Change
----------------------------------------------
0.000mm to 0.002mm 0 0 0.0%
0.002mm to 0.005mm 0 0 0.0%
0.005mm to 0.010mm 0 0 0.0%
0.010mm to 0.050mm 0 0 0.0%
0.050mm to 0.100mm 0 0 0.0%
0.100mm to 0.500mm 3321 1317 -60.3%
0.500mm to 1.000mm 5430 2678 -50.7%
1.000mm to 5.000mm 4539 4613 1.6%
5.000mm to 10.000mm 4 77 1825.0%
10.000mm to 20.000mm 0 147 INF
20.000mm to 50.000mm 0 2 INF
50.000mm to 100.000mm 0 0 0.0%
>= 100.000mm 0 0 0.0%
----------------------------------------------
Total distance source:.............10493.418mm
Total distance target:.............11209.758mm
Total count source:...................13294
Total count target:....................8834
Total percent change:..................-33.5%
2021-02-04 11:54:42.044 - arc_welder.gcode_conversion - INFO - Arc Welder process completed successfully.
Hi, this looks great, I am about to try it out... is there a plugin for ideamaker?
Great work1
Unless it's somewhere I forgot to look I couldn't find any build instructions for the source code. I took a stab and I believe this worked: (I downloaded the source (tar.gz) and from within the extracted directory)
mkdir build
cd build
cmake --DCMAKE_INSTALL_PREFIX=/opt/ArcWelder ..
make
make install
Did I miss anything?
Further improve the curve fitting by reducing the maximum deviation in steps. Allow this to be enabled/disabled, and provide an argument for determining the number of steps.
Hi,
I use the arc welder plugin in Cura and well I did a simple round piece, it's a single wall 100mm diameter ring.
I basically wanted to see if this improved the finish on arcs with Marlin 2.0 and my printer.
The piece is basically a circle so I expected almost everything to be replaced by curves but it's not the case. I suppose this come from the pieces STL export or from my settings. Can you help me configuring this ?
circle.zip
CFFFP_circle.gcode.txt
CFFFP_circle_arc.gcode.txt
When arc welding during printing, the print process comes to a stop or starts stutter.
I did no "top" during arc welding, beause ssh does not work on my raspberry anymore, but maybe a "nice" value for the welding process prio would mitigate the problem?
Cheers,
Alex
Both ArcWelder.exe and ArcStraightener.exe exit without producing any output (no error message either) on Windows 10. Is there any special instruction to be followed when launching them?
Add parameters to control allow_dynamic_precision, default_xyz_precision, and default_e_precision to handle issues with bad gcode output producing obscene precision. This was not a problem with the arc welder library, per se, but the resulting gcode could overflow some firmware buffers depending on the precision.
Defaults:
allow_dynamic_precision - false
default_xyz_precision - 3
default_e_precision - 5
The defaults should be fine for 99 percent of use cases.
For my Snapmaker 2.0 I'm using Cura. I made a tiny cylinder but whenever it is printing the gyroid type infills, part of of it is printed at a crawling speed.
Here is the video:
https://user-images.githubusercontent.com/79637793/109184664-85938b80-778f-11eb-8abd-f8253616c4a2.mp4
While writing this down, I just realized that the only difference between the infill and the rest of the cylinder is that it contains G2 commands. Perhaps there is a firmware issue related to G2.
I'll try to check on that and report later on what I find.
I tried version 1.1.0 and version 1.1.1 both with the same result.
I've included the gcode files here (don't know how to send them otherwise yet), but had to rename them to .txt files in order to do so.
no-arc-welder.gcode.txt
arc-welder-1.1.0.gcode.txt
arc-welder-1.1.1.gcode.txt
About 20-25 percent of the processor's time goes to turning doubles into strings. Enhance this by modifying fpconv to produced fixed precision rounded output (similar to std::ostringstream << std::fixed << std::setprecision(x)
).
Note: This has been implemented, and has cut down on processing time by around 20%!
Hello, thanks for this amazing lib.
I'm planning to get the Marlin 2.0.6 feature into Marlin 1.1.9 since I use my board is 8bits and I don't want to update to 2.x.
The idea is to compare the differences between the 2x algorithm with the 1.1x algorithm.
What you mean by greatly enhanced? What is missing on 1.1x?
Marlin 1.1.x ARC implementation: https://github.com/MarlinFirmware/Marlin/blob/1314b31d97bba8cd74c6625c47176d4692f57790/Marlin/Marlin_main.cpp#L14451
Marlin 2.x ARC implementation: https://github.com/MarlinFirmware/Marlin/blob/b9065195f1babf00ee453c39410206af90a525ae/Marlin/src/gcode/motion/G2_G3.cpp#L25
Some differences that I found:
#ifdef MIN_ARC_SEGMENTS
uint16_t min_segments = CEIL((MIN_ARC_SEGMENTS) * (angular_travel / RADIANS(360)));
NOLESS(min_segments, 1U);
#else
constexpr uint16_t min_segments = 1;
#endif
#ifdef MIN_ARC_SEGMENTS
min_segments = MIN_ARC_SEGMENTS;
#endif
const feedRate_t scaled_fr_mm_s = MMS_SCALED(feedrate_mm_s);
// Start with a nominal segment length
float seg_length = (
#ifdef ARC_SEGMENTS_PER_R
constrain(MM_PER_ARC_SEGMENT * radius, MM_PER_ARC_SEGMENT, ARC_SEGMENTS_PER_R)
#elif ARC_SEGMENTS_PER_SEC
_MAX(scaled_fr_mm_s * RECIPROCAL(ARC_SEGMENTS_PER_SEC), MM_PER_ARC_SEGMENT)
#else
MM_PER_ARC_SEGMENT
#endif
);
// Divide total travel by nominal segment length
uint16_t segments = FLOOR(mm_of_travel / seg_length);
NOLESS(segments, min_segments); // At least some segments
seg_length = mm_of_travel / segments;
#18 is also related to it, right?
What do you think about the idea?: I'm a newb about ARC Welder, how could I test the modifications? Do you have an STL file that can be used as a test? I'm using Slic3r
Another part that I'm not sure if it is the same logic or improved:
Marlin 1.1.x
float arc_offset[2] = { 0, 0 };
if (parser.seenval('R')) {
const float r = parser.value_linear_units(),
p1 = current_position[X_AXIS], q1 = current_position[Y_AXIS],
p2 = destination[X_AXIS], q2 = destination[Y_AXIS];
if (r && (p2 != p1 || q2 != q1)) {
const float e = clockwise ^ (r < 0) ? -1 : 1, // clockwise -1/1, counterclockwise 1/-1
dx = p2 - p1, dy = q2 - q1, // X and Y differences
d = HYPOT(dx, dy), // Linear distance between the points
h2 = (r - 0.5f * d) * (r + 0.5f * d), // factor to reduce rounding error
h = (h2 >= 0) ? SQRT(h2) : 0.0f, // Distance to the arc pivot-point
mx = (p1 + p2) * 0.5f, my = (q1 + q2) * 0.5f, // Point between the two points
sx = -dy / d, sy = dx / d, // Slope of the perpendicular bisector
cx = mx + e * h * sx, cy = my + e * h * sy; // Pivot-point of the arc
arc_offset[0] = cx - p1;
arc_offset[1] = cy - q1;
}
}
Marlin 2.x
ab_float_t arc_offset = { 0, 0 };
if (parser.seenval('R')) {
const float r = parser.value_linear_units();
if (r) {
const xy_pos_t p1 = current_position, p2 = destination;
if (p1 != p2) {
const xy_pos_t d2 = (p2 - p1) * 0.5f; // XY vector to midpoint of move from current
const float e = clockwise ^ (r < 0) ? -1 : 1, // clockwise -1/1, counterclockwise 1/-1
len = d2.magnitude(), // Distance to mid-point of move from current
h2 = (r - len) * (r + len), // factored to reduce rounding error
h = (h2 >= 0) ? SQRT(h2) : 0.0f; // Distance to the arc pivot-point from midpoint
const xy_pos_t s = { -d2.y, d2.x }; // Perpendicular bisector. (Divide by len for unit vector.)
arc_offset = d2 + s / len * e * h; // The calculated offset (mid-point if |r| <= len)
}
}
}
This project seems to be missing a license. Is the license the same AGPL as the ArcWelderPlugin?
Add a new argument/parameter to all relevant libraries and applications to set a maximum deviation in path length as a percentage of the original length. This gives one greater control on what is acceptable deviation in terms of path length.
This should not be set too low, since an arc path will always have a different length than a segmented path, and most (all?) firmware will turn the arc back into segments.
This feature will slow down arcwelder a bit (10-15% more time to process), but should prevent many rare but annoying issues that can be caused by the sliced gcode traveling in an arc motion over the same spot one or many times. I honestly didn't think this was possible, but I believe it can happen if the 'overlap' percentage is so high that arcs totally overlap within the selected resolution. As a bonus, it means you can crank the path tolerance percentage way up without any issues. The path tolerance percent is still useful, but now you can increase it without worrying about bad arcs (if I have implemented it correctly).
As originally presented to you on Discord. Faceting on curved surface which doesn't appear to coincide with the patterns on the original CAD file. I have included the original .stp and prusaslicer gcode w/ and w/o ArcWelder. I can confirm the print does contain the faceting I see in the viewer at least the best I can tell. It's a small part. Printed in PEKK which is semi translucent. I cant capture the detail with a camera so I didnt add a picture
aw.zip
Good day. The thought is a request to enable console output to be cached and then written into the output gcode generated by AW. This behavior could triggered by an embedded gcode AW Script Comment - think of how you're catching slicer config by way of comments on Octolapse. The reason for this is that when AW is called from the Cura Plugin, the console output is seemingly lost to the ethers once the tool completes running. It would certainly be nice to be able to see the CLI parameters passed to it by the slicer plugin, and the dialog/debug content normally displayed in the console, when one reviews the final gcode generated by AWL.
Low priority but I would love to have a parameter in ArcWelderConsole that allows us to direct log output to a named file instead of stdout. I use the ArcWelder.exe postprocessor with PrusaSlicer and Prusa does not provide any way (that I've found) to capture the console output. The window opens and closes before I can see the log. I'd like to be able to see what was accomplished.
It might worth adding a branch for G5 interpolation for playing around.
This study compares G1 (linear) / G2_3 (arc) / G5 (cubic spline) movements and concludes:
https://www.sciencedirect.com/science/article/pii/S2351978919311059
The authors already started monetizing on it:
https://www.ulendo.io/
https://www.kickstarter.com/projects/s2a/ulendo-better-faster-3d-printing
Hi,
it would be useful if postprocessed gcode files would reflect the settings used to prostprocess in the comments gcode file, just like slicers add their settings. Something like
; postprocessed by [ArcWelder](https://github.com/FormerLurker/ArcWelderLib)
; arc_welder_resolution_mm = 0.05
; arc_welder_g90_influences_extruder = 0
Hi,
can you rebuild the artifacts as they are expired?
Automatically generate a header file containing version and build information to be included in the repository.
Generated gcode with Cura and ran it through AW command-line.
When I load up the file in the UM2+, it starts printing right away without heating up the build plate and nozzle. The original file doesn't have this problem.
I tried with the Cura plugin and got the same results.
I ran the same STL in Simplify3D and ran AW on the gcode. Everything worked fine so it seems the issue is really with the gcode coming out of Cura.
Both gcode files are available in the aw.zip file.
Original file: UM2_high_side.gcode
Arc Welded file : high_side.aw.gcode
Some firmware, especially those based on an older version of Marlin, have only the MM_PER_ARC_SEGMENT setting to control arc interpolation. The default value is 1mm, which can result in noticeably flat edges on smaller arcs. This can be somewhat compensated for within the arc generation routine at the cost of less compression.
Add two new command line parameters to the console app:
--mm-per-arc-segment (-s) - The value of the MM_PER_ARC_SEGMENT define within the compiled firmware
--min-arc-segments (-a) - This will simulate the MIN_ARC_SEGMENTS firmware parameter
The general idea is that when an arc is created we will check how may segments would be interpolated along a circle of the same radius using the MM_PER_ARC_SEGMENT value. If it is less than MIN_ARC_SEGMENTS, then we will check the length of the current arc and see if that length divided by the circumference of a circle with the same radius would produce MIN_ARC_SEGMENTS arcs. If it does, the arc will be created. If not, the G2/G3 will be left alone.
The effect of this will be that in some cases no arcs will be generated at all for some circles. In other cases, instead of having an individual arc, it will be split up into multiple arcs. This obviously isn't a perfect solution, but it does provide many of the benefits Arc Welder was designed for, while allowing for more accurate prints, even without the fancy new arc interpolation firmware settings. This will be especially useful when a user can't recompile their firmware for various reasons.
Here is an example of two rows of circles, one separated and the other joined. Both rows start with a radius of 0.1mm and end at 4.7mm. This is the gcode produced by Prusa Slicer as visualized by NCViewer:
Here is gcode produced from the standard Arc Welder algorithm:
You can see that arcs are generated even for the smallest circles. These would not look very good on firmware with MM_PER_ARC_SEGMENT = 1, since many of these circles are less than 1MM in radius! Here is what happened when I turned firmware compensation on:
Here I used a value of 12 for Min Arc Segments and 1mm for MM Per Arc Segment You can see that as the circles get smaller and smaller, fewer and fewer arcs are generated. At a radius of about 3.6mm, full arc generation is seen. At 0.1mm, no arcs are generated at all.
Here is a close up of the original gcode with a high number of segments:
And here is the same figure using Arc Welder and the new firmware compensation settings I mentioned above:
Please let me know if you've used the new build of ArcWelder or any of the associated libraries. I would love to know what you like, what you don't, what you love, and what you hate. If you have discovered any bugs, please mention those here. I may ask you to create a separate issue for any newly discovered bugs.
Thank you all so much! Without you all I couldn't have done this, and I'm feeling really good about the core algorithm now.
Previously the inverse processor had hard-coded firmware simulation parameters. This is because that project is primarily used to test either gcode produced by ArcWelder, or to simulate various firmware changes I've been tinkering with. However, I recently found it useful to add the available parameters to the console app, and maybe others will too.
Here is what can currently be controlled (not all of these are standard marlin settings):
mm-per-arc-segment - The default segment length.
min-mm-per-arc-segment - (non-standard) - the smallest any segment can be.
min-arc-segments - The minimum number of interpolated segments in a circle of the same radius as the arc being drawn (restricted by min-mm-per-arc-segment)
arc-segments-per-second - The number of arcs per second that will be produced. Clamped between min-mm-per-arc-segment and mm-per-arc-segment.
OS: Linux
Environment: Cura Version: 4.8 master (Mark Burdon), Cura-mb-master-x86_64-20201121.AppImage
Cura-ArcWelder plugin: https://github.com/5axes/Cura-ArcWelderPlugin
ArcWelderLib: d3376dd
Welding a G-code containing Unicode characters (like 'ยฐC') fails (see also FormerLurker/ArcWelderPlugin#84).
2020-12-18 08:28:30,458 - DEBUG - [MainThread] LocalFileOutputDevice.LocalFileOutputDevice.requestWrite [130]: Writing to [/home/
jorschiedt/Development/3D-Print/Things/Nefertiti/Nefertiti-aw-cooper.3mf]...
2020-12-18 08:28:30,459 - ERROR - [MainThread] PostProcessingPlugin.PostProcessingPlugin.execute [99]: Already post processed
2020-12-18 08:28:30,681 - ERROR - [MainThread] UM.Logger.logException [107]: Exception: Unable to write to file Nefertiti-aw-
cooper: 'ascii' codec can't encode character '\xb0' in position 2814: ordinal not in range(128)
2020-12-18 08:28:30,702 - ERROR - [MainThread] UM.Logger.logException [111]: Traceback (most recent call last):
2020-12-18 08:28:30,716 - ERROR - [MainThread] UM.Logger.logException [111]: File "/home/markb/3dp/cura/cura-build.git/build/
inst/lib/python3/dist-packages/UM/Qt/Bindings/OutputDeviceManagerProxy.py", line 150, in _writeToDevice
2020-12-18 08:28:30,726 - ERROR - [MainThread] UM.Logger.logException [111]: File "/tmp/.mount_Cura-m9VAAmF/usr/bin/plugins/
LocalFileOutputDevice/LocalFileOutputDevice.py", line 137, in requestWrite
2020-12-18 08:28:30,734 - ERROR - [MainThread] UM.Logger.logException [111]: self.writeStarted.emit(self)
2020-12-18 08:28:30,740 - ERROR - [MainThread] UM.Logger.logException [111]: File "/home/markb/3dp/cura/cura-build.git/build/
inst/lib/python3/dist-packages/UM/Signal.py", line 219, in emit
2020-12-18 08:28:30,747 - ERROR - [MainThread] UM.Logger.logException [111]: File "/home/markb/3dp/cura/cura-build.git/build/
inst/lib/python3/dist-packages/UM/Signal.py", line 336, in __performEmit
2020-12-18 08:28:30,759 - ERROR - [MainThread] UM.Logger.logException [111]: File "/home/markb/3dp/cura/cura-build.git/build/
inst/lib/python3/dist-packages/UM/Signal.py", line 219, in emit
2020-12-18 08:28:30,765 - ERROR - [MainThread] UM.Logger.logException [111]: File "/home/markb/3dp/cura/cura-build.git/build/
inst/lib/python3/dist-packages/UM/Signal.py", line 332, in __performEmit
2020-12-18 08:28:30,771 - ERROR - [MainThread] UM.Logger.logException [111]: File "/home/strolch/.local/share/cura/master/
plugins/Cura-ArcWelderPlugin/ArcWelderPlugin.py", line 186, in _filterGcode
2020-12-18 08:28:30,778 - ERROR - [MainThread] UM.Logger.logException [111]: temporary_file.write(joined_gcode)
2020-12-18 08:28:30,786 - ERROR - [MainThread] UM.Logger.logException [111]: UnicodeEncodeError: 'ascii' codec can't encode
character '\xb0' in position 2814: ordinal not in range(128)
2020-12-18 08:28:31,570 - INFO - [MainThread] SliceInfoPlugin.SliceInfo._onRequestFinished [284]: SliceInfo sent successfully
Installing plugin "Arc Welder" from https://github.com/FormerLurker/ArcWelderPlugin/archive/master.zip...
/usr/local/bin/python -m pip --disable-pip-version-check install file:///tmp/tmpo8ts61zl/ArcWelderPlugin-master.zip --no-cache-dir
Processing /tmp/tmpo8ts61zl/ArcWelderPlugin-master.zip
Requirement already satisfied: six in /usr/local/lib/python3.8/site-packages (from Arc-Welder==1.0.0+u.bb71e8f) (1.15.0)
Requirement already satisfied: OctoPrint>1.3.8 in /usr/local/lib/python3.8/site-packages (from Arc-Welder==1.0.0+u.bb71e8f) (1.5.3)
Requirement already satisfied: setuptools>=6.0 in /usr/local/lib/python3.8/site-packages (from Arc-Welder==1.0.0+u.bb71e8f) (53.0.0)
Requirement already satisfied: Flask-Babel<2,>=1.0 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (1.0.0)
Requirement already satisfied: PyYAML<6,>=5.3.1 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (5.4.1)
Requirement already satisfied: wrapt<2,>=1.12.1 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (1.12.1)
Requirement already satisfied: werkzeug<2,>=1.0.1 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (1.0.1)
Requirement already satisfied: netifaces<1,>=0.10.9 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.10.9)
Requirement already satisfied: OctoPrint-FileCheck>=2020.08.07 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (2020.8.7)
Requirement already satisfied: Flask-Login<0.6,>=0.5 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.5.0)
Requirement already satisfied: psutil<6,>=5.7 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (5.8.0)
Requirement already satisfied: flask<2,>=1.1.2 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (1.1.2)
Requirement already satisfied: rsa==4.0 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (4.0)
Requirement already satisfied: feedparser<7,>=6.0.2 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (6.0.2)
Requirement already satisfied: watchdog==0.10.4 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.10.4)
Requirement already satisfied: blinker<2,>=1.4 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (1.4)
Requirement already satisfied: netaddr<1,>=0.7.19 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.8.0)
Requirement already satisfied: markdown<3.2,>=3.1 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (3.1.1)
Requirement already satisfied: frozendict<2,>=1.2 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (1.2)
Requirement already satisfied: zeroconf<0.25,>=0.24 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.24.5)
Requirement already satisfied: markupsafe<2.0,>=1.1 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (1.1.1)
Requirement already satisfied: Flask-Assets<3,>=2.0 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (2.0)
Requirement already satisfied: unidecode<0.05,>=0.04.14 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.4.21)
Requirement already satisfied: itsdangerous<2,>=1.1.0 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (1.1.0)
Requirement already satisfied: Jinja2<3,>=2.11.2 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (2.11.3)
Requirement already satisfied: semantic-version<3,>=2.8.5 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (2.8.5)
Requirement already satisfied: Click<8,>=7.1.2 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (7.1.2)
Requirement already satisfied: filetype<2,>=1.0.7 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (1.0.7)
Requirement already satisfied: future<1,>=0.18.2 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.18.2)
Requirement already satisfied: websocket-client<1,>=0.57 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.57.0)
Requirement already satisfied: pkginfo<2,>=1.5.0.1 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (1.7.0)
Requirement already satisfied: sentry-sdk<1,>=0.15.1 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.20.3)
Requirement already satisfied: tornado==5.1.1 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (5.1.1)
Requirement already satisfied: cachelib<1,>=0.1 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.1.1)
Requirement already satisfied: OctoPrint-FirmwareCheck>=2020.09.23 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (2021.2.4)
Requirement already satisfied: pyserial<4,>=3.4 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (3.5)
Requirement already satisfied: requests<3,>=2.23.0 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (2.25.1)
Requirement already satisfied: regex!=2018.11.6 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (2020.11.13)
Requirement already satisfied: pylru<2,>=1.2 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (1.2.0)
Requirement already satisfied: sarge==0.1.5post0 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.1.5.post0)
Requirement already satisfied: emoji<1,>=0.5.4 in /usr/local/lib/python3.8/site-packages (from OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.6.0)
Requirement already satisfied: pyasn1>=0.1.3 in /usr/local/lib/python3.8/site-packages (from rsa==4.0->OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.4.8)
Requirement already satisfied: pathtools>=0.1.1 in /usr/local/lib/python3.8/site-packages (from watchdog==0.10.4->OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.1.2)
Requirement already satisfied: sgmllib3k in /usr/local/lib/python3.8/site-packages (from feedparser<7,>=6.0.2->OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (1.0.0)
Requirement already satisfied: webassets>=2.0 in /usr/local/lib/python3.8/site-packages (from Flask-Assets<3,>=2.0->OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (2.0)
Requirement already satisfied: pytz in /usr/local/lib/python3.8/site-packages (from Flask-Babel<2,>=1.0->OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (2021.1)
Requirement already satisfied: Babel>=2.3 in /usr/local/lib/python3.8/site-packages (from Flask-Babel<2,>=1.0->OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (2.9.0)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/site-packages (from requests<3,>=2.23.0->OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (1.26.3)
Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/site-packages (from requests<3,>=2.23.0->OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (4.0.0)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/site-packages (from requests<3,>=2.23.0->OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (2020.12.5)
Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/site-packages (from requests<3,>=2.23.0->OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (2.10)
Requirement already satisfied: ifaddr in /usr/local/lib/python3.8/site-packages (from zeroconf<0.25,>=0.24->OctoPrint>1.3.8->Arc-Welder==1.0.0+u.bb71e8f) (0.1.7)
Building wheels for collected packages: Arc-Welder
Building wheel for Arc-Welder (setup.py): started
ERROR: Command errored out with exit status 1:
command: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-3763e_9s/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-3763e_9s/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-4i1uq7s8
cwd: /tmp/pip-req-build-3763e_9s/
Complete output (97 lines):
Unknown Version, falling back to 1.0.0+u.bb71e8f.
Found packages: {'octoprint_arc_welder', 'octoprint_arc_welder_setuptools'}
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.8
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder
copying octoprint_arc_welder/utilities.py -> build/lib.linux-x86_64-3.8/octoprint_arc_welder
copying octoprint_arc_welder/log.py -> build/lib.linux-x86_64-3.8/octoprint_arc_welder
copying octoprint_arc_welder/preprocessor.py -> build/lib.linux-x86_64-3.8/octoprint_arc_welder
copying octoprint_arc_welder/_version.py -> build/lib.linux-x86_64-3.8/octoprint_arc_welder
copying octoprint_arc_welder/__init__.py -> build/lib.linux-x86_64-3.8/octoprint_arc_welder
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder_setuptools
copying octoprint_arc_welder_setuptools/__init__.py -> build/lib.linux-x86_64-3.8/octoprint_arc_welder_setuptools
running egg_info
creating Arc_Welder.egg-info
writing Arc_Welder.egg-info/PKG-INFO
writing dependency_links to Arc_Welder.egg-info/dependency_links.txt
writing entry points to Arc_Welder.egg-info/entry_points.txt
writing requirements to Arc_Welder.egg-info/requires.txt
writing top-level names to Arc_Welder.egg-info/top_level.txt
writing manifest file 'Arc_Welder.egg-info/SOURCES.txt'
reading manifest file 'Arc_Welder.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'README.md'
writing manifest file 'Arc_Welder.egg-info/SOURCES.txt'
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/data
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/arc_welder
copying octoprint_arc_welder/data/lib/c/arc_welder/arc_welder.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/arc_welder
copying octoprint_arc_welder/data/lib/c/arc_welder/segmented_arc.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/arc_welder
copying octoprint_arc_welder/data/lib/c/arc_welder/segmented_shape.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/arc_welder
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/array_list.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/circular_buffer.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/extruder.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/gcode_comment_processor.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/gcode_parser.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/gcode_position.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/logger.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/parsed_command.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/parsed_command_parameter.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/position.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/utilities.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/py_arc_welder
copying octoprint_arc_welder/data/lib/c/py_arc_welder/py_arc_welder.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/py_arc_welder
copying octoprint_arc_welder/data/lib/c/py_arc_welder/py_arc_welder_extension.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/py_arc_welder
copying octoprint_arc_welder/data/lib/c/py_arc_welder/py_logger.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/py_arc_welder
copying octoprint_arc_welder/data/lib/c/py_arc_welder/python_helpers.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/py_arc_welder
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/static
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/css
copying octoprint_arc_welder/static/css/arc_welder.css -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/css
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.delete_source.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.enabled.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.file_processing.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.g90_g91_influences_extruder.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.max_radius_mm.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.overwrite_source_file.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.resolution_mm.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.show_completed_notification.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.show_progress_bar.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.show_started_notification.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.target_postfix.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.target_prefix.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.use_octoprint_settings.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/js
copying octoprint_arc_welder/static/js/arc_welder.js -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/js
copying octoprint_arc_welder/static/js/arc_welder.settings.js -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/js
copying octoprint_arc_welder/static/js/markdown_help.js -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/js
copying octoprint_arc_welder/static/js/pnotify_extensions.js -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/js
copying octoprint_arc_welder/static/js/showdown.min.js -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/js
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/templates
copying octoprint_arc_welder/templates/arc_welder_settings.jinja2 -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/templates
copying octoprint_arc_welder/templates/arc_welder_settings_about.jinja2 -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/templates
copying octoprint_arc_welder/templates/arc_welder_tab.jinja2 -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/templates
UPDATING build/lib.linux-x86_64-3.8/octoprint_arc_welder/_version.py
set build/lib.linux-x86_64-3.8/octoprint_arc_welder/_version.py to '0+unknown'
running build_ext
Compiling PyGcodeArcConverter Extension with <distutils.unixccompiler.UnixCCompiler object at 0x7f5f31ae8730>.
Unable to remove -Wstrict-prototypes or to add -Wno-unknown-pragmas.
Building Extensions for PyArcWelder - extra_compile_args:['-O3', '-std=c++11', '-Wno-unknown-pragmas', '-v'] - extra_link_args:[]
building 'PyArcWelder' extension
creating build/temp.linux-x86_64-3.8
creating build/temp.linux-x86_64-3.8/octoprint_arc_welder
creating build/temp.linux-x86_64-3.8/octoprint_arc_welder/data
creating build/temp.linux-x86_64-3.8/octoprint_arc_welder/data/lib
creating build/temp.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c
creating build/temp.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
creating build/temp.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/arc_welder
creating build/temp.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/py_arc_welder
gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ioctoprint_arc_welder/data/lib/c/arc_welder -Ioctoprint_arc_welder/data/lib/c/gcode_processor_lib -Ioctoprint_arc_welder/data/lib/c/py_arc_welder -I/usr/local/include/python3.8 -c octoprint_arc_welder/data/lib/c/gcode_processor_lib/array_list.cpp -o build/temp.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib/array_list.o -O3 -std=c++11 -Wno-unknown-pragmas -v
unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1
----------------------------------------
ERROR: Failed building wheel for Arc-Welder
Building wheel for Arc-Welder (setup.py): finished with status 'error'
Running setup.py clean for Arc-Welder
Failed to build Arc-Welder
Installing collected packages: Arc-Welder
Running setup.py install for Arc-Welder: started
ERROR: Command errored out with exit status 1:
command: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-3763e_9s/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-3763e_9s/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-x_5096ew/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /octoprint/plugins/include/python3.8/Arc-Welder
cwd: /tmp/pip-req-build-3763e_9s/
Complete output (97 lines):
Unknown Version, falling back to 1.0.0+u.bb71e8f.
Found packages: {'octoprint_arc_welder_setuptools', 'octoprint_arc_welder'}
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.8
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder_setuptools
copying octoprint_arc_welder_setuptools/__init__.py -> build/lib.linux-x86_64-3.8/octoprint_arc_welder_setuptools
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder
copying octoprint_arc_welder/utilities.py -> build/lib.linux-x86_64-3.8/octoprint_arc_welder
copying octoprint_arc_welder/log.py -> build/lib.linux-x86_64-3.8/octoprint_arc_welder
copying octoprint_arc_welder/preprocessor.py -> build/lib.linux-x86_64-3.8/octoprint_arc_welder
copying octoprint_arc_welder/_version.py -> build/lib.linux-x86_64-3.8/octoprint_arc_welder
copying octoprint_arc_welder/__init__.py -> build/lib.linux-x86_64-3.8/octoprint_arc_welder
running egg_info
creating Arc_Welder.egg-info
writing Arc_Welder.egg-info/PKG-INFO
writing dependency_links to Arc_Welder.egg-info/dependency_links.txt
writing entry points to Arc_Welder.egg-info/entry_points.txt
writing requirements to Arc_Welder.egg-info/requires.txt
writing top-level names to Arc_Welder.egg-info/top_level.txt
writing manifest file 'Arc_Welder.egg-info/SOURCES.txt'
reading manifest file 'Arc_Welder.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'README.md'
writing manifest file 'Arc_Welder.egg-info/SOURCES.txt'
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/data
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/arc_welder
copying octoprint_arc_welder/data/lib/c/arc_welder/arc_welder.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/arc_welder
copying octoprint_arc_welder/data/lib/c/arc_welder/segmented_arc.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/arc_welder
copying octoprint_arc_welder/data/lib/c/arc_welder/segmented_shape.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/arc_welder
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/array_list.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/circular_buffer.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/extruder.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/gcode_comment_processor.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/gcode_parser.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/gcode_position.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/logger.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/parsed_command.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/parsed_command_parameter.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/position.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
copying octoprint_arc_welder/data/lib/c/gcode_processor_lib/utilities.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/py_arc_welder
copying octoprint_arc_welder/data/lib/c/py_arc_welder/py_arc_welder.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/py_arc_welder
copying octoprint_arc_welder/data/lib/c/py_arc_welder/py_arc_welder_extension.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/py_arc_welder
copying octoprint_arc_welder/data/lib/c/py_arc_welder/py_logger.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/py_arc_welder
copying octoprint_arc_welder/data/lib/c/py_arc_welder/python_helpers.cpp -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/py_arc_welder
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/static
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/css
copying octoprint_arc_welder/static/css/arc_welder.css -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/css
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.delete_source.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.enabled.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.file_processing.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.g90_g91_influences_extruder.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.max_radius_mm.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.overwrite_source_file.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.resolution_mm.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.show_completed_notification.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.show_progress_bar.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.show_started_notification.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.target_postfix.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.target_prefix.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
copying octoprint_arc_welder/static/docs/help/settings.use_octoprint_settings.md -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/docs/help
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/js
copying octoprint_arc_welder/static/js/arc_welder.js -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/js
copying octoprint_arc_welder/static/js/arc_welder.settings.js -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/js
copying octoprint_arc_welder/static/js/markdown_help.js -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/js
copying octoprint_arc_welder/static/js/pnotify_extensions.js -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/js
copying octoprint_arc_welder/static/js/showdown.min.js -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/static/js
creating build/lib.linux-x86_64-3.8/octoprint_arc_welder/templates
copying octoprint_arc_welder/templates/arc_welder_settings.jinja2 -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/templates
copying octoprint_arc_welder/templates/arc_welder_settings_about.jinja2 -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/templates
copying octoprint_arc_welder/templates/arc_welder_tab.jinja2 -> build/lib.linux-x86_64-3.8/octoprint_arc_welder/templates
UPDATING build/lib.linux-x86_64-3.8/octoprint_arc_welder/_version.py
set build/lib.linux-x86_64-3.8/octoprint_arc_welder/_version.py to '0+unknown'
running build_ext
Compiling PyGcodeArcConverter Extension with <distutils.unixccompiler.UnixCCompiler object at 0x7f5ee6d67940>.
Unable to remove -Wstrict-prototypes or to add -Wno-unknown-pragmas.
Building Extensions for PyArcWelder - extra_compile_args:['-O3', '-std=c++11', '-Wno-unknown-pragmas', '-v'] - extra_link_args:[]
building 'PyArcWelder' extension
creating build/temp.linux-x86_64-3.8
creating build/temp.linux-x86_64-3.8/octoprint_arc_welder
creating build/temp.linux-x86_64-3.8/octoprint_arc_welder/data
creating build/temp.linux-x86_64-3.8/octoprint_arc_welder/data/lib
creating build/temp.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c
creating build/temp.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib
creating build/temp.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/arc_welder
creating build/temp.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/py_arc_welder
gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Ioctoprint_arc_welder/data/lib/c/arc_welder -Ioctoprint_arc_welder/data/lib/c/gcode_processor_lib -Ioctoprint_arc_welder/data/lib/c/py_arc_welder -I/usr/local/include/python3.8 -c octoprint_arc_welder/data/lib/c/gcode_processor_lib/array_list.cpp -o build/temp.linux-x86_64-3.8/octoprint_arc_welder/data/lib/c/gcode_processor_lib/array_list.o -O3 -std=c++11 -Wno-unknown-pragmas -v
unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1
----------------------------------------
ERROR: Command errored out with exit status 1: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-3763e_9s/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-3763e_9s/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-x_5096ew/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /octoprint/plugins/include/python3.8/Arc-Welder Check the logs for full command output.
Running setup.py install for Arc-Welder: finished with status 'error'
Error!
Could not parse output from pip, see plugin_pluginmanager_console.log for generated output
I found the 1.1.1 lib generates random small holes during print (may be because extrusion)
While the same does not for 1.1.0 lib.
printer prusa mk3s all stock
arcwelder parameter arcwelder.exe -s=1.0 -a=14 for both 1.1.1 and 1.1.0
Gcode from prusa slicer
https://gist.github.com/lunartique/b724c94743e5a42ee652a44d8ae40ab6
Gcode from AW 1.1.1
https://gist.github.com/lunartique/cdaa0efaae6755bdaaee63bf06ff1f6d
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.