thatch / cammill Goto Github PK
View Code? Open in Web Editor NEWThis project forked from cammill/cammill
2D CAM tool for Linux, BSD, Windows, Mac
Home Page: http://cammill.github.io
License: GNU General Public License v3.0
This project forked from cammill/cammill
2D CAM tool for Linux, BSD, Windows, Mac
Home Page: http://cammill.github.io
License: GNU General Public License v3.0
The postprocessors actually have filenames, e.g. /usr/lib/cammill/posts/EMC.scpost and the numbers it uses aren't stable between multiple installs (on my laptop, EMC=2, desktop EMC=0).
My usecase is in (cfg:Machine-Post: 0)
which I'm using from a makefile, but it's also possible to specify as -mpt
on command line.
Nice-to-have would be a way to list selectable postprocessors and/or reference them using a relative path to include in a git repo.
This tends to not happen when reloading the same file, but I don't have a good repro. The symptom is that lines will sometimes be in the wrong place, or be skipped entirely.
It appears to operate as if Zero: 0 is used; that is, the lower-left grid line is always even with the lower-left object edge.
There is both a commandline '-bm 1' parameter as well as cfg:Misc-Batchmode. This is missing from the wiki and --help.
Right now helix is an all-or-nothing option. When doing a combined holes+outline, would be nice to remove a step and simply select helix-holes or helix-interior.
Some minor issues here:
Right now it's hard-coded that 0 is the work top, and it does set down until the configured (negative) depth. This is near the comment "offset for each depth-step" in calc.c (although the calls are to object_draw_offset_depth, it handles both opengl and postcam moves).
This same piece of code is responsible for #14
I think we should add another parameter here, maybe even called work top, and start there instead of zero. This is because we can't just repurpose depth (I typically cut until somewhat below zero, so we'd need a separate param)
Basically, convert all the staticly allocated arrays into using malloc/realloc to grow them as necessary. This would let you load an arbitrary size dxf file, reduce the overall memory footprint (6GB!) and speed up a few of the worst netsted-loop algorithms.
I started on this, but it doesn't yet produce the correct output.
This is from a pocketing operation on pipe_hanger. object 1 moves to near origin before cutting (and also doesn't include the full comment preamble):
(Object: #1)
(Layer: 0)
(Pocket-Operation)
(--------------------------------------------------)
G00
G00 X-11.000000 Y-13.175000
G00
G00 X4.080000 Y224.605000
G00 Z1.000000
G01 Z-1.000000 F500
G01 X6.620000 F2500
G01 Y229.685000
G01 X4.080000
Similar to object-<n>-use
, I'd like something layer-<name>-use
to choose based on layer. This is probably an input-only param, and doesn't need to be recorded in the output file.
Nice to have would be a way to have a default of off, then include just the one layer I want, rather than disabling them individually. I will provide a sample dxf that includes layers.
Right now there's
(cfg:object-0-use: 0)
to ignore the first object. I'd like to find the last, or maybe next-to-last, but don't have a good syntax for it.
For example, you could follow the same path at some stepdown angle -- similar to helix, but not spread over the whole cut.
There are already square (cfg:Holding-Tabs-Triangle-Type: 0)
and triangular (cfg:Holding-Tabs-Triangle-Type: 1)
; this should probably use the value 2, and will need an additional parameter for ramp angle. The code near P_T_TYPE
in calc.c
is where most of the changes will be.
There are two major deficiencies right now -- only doing X-major moves, and doing a full retract when passes don't line up exactly. We could do analysis of the angles and pick a better direction, even if it's just Y instead of X.
For example, here's some valgrind output from a sample run: valgrind_errors.txt
Using valgrind or some other tool, try to find many of these and adjust loop conditions/have default values to avoid undefined behavior.
Would be nice to specify an initial offset to holding tabs, e.g. right now we have X-Grid
for their spacing starting from zero. If I have two of the same part horizontally each 100mm wide, and want tabs right in the middle, I would ideally like X-Offset
50 then X-Grid
of 100.
Nice to have would be specifying exactly where I want the tabs by position.
When using batchmode, the stderr is full of messages like
(process:10359): Gtk-CRITICAL **: 12:13:56.637: IA__gtk_tree_store_set_valist: assertion 'GTK_IS_TREE_STORE (tree_store)' failed
(process:10359): Gtk-CRITICAL **: 12:13:56.637: IA__gtk_tree_model_foreach: assertion 'GTK_IS_TREE_MODEL (model)' failed
I've gotten stack traces in gdb, this seems fairly straightforward unless the sort has a side effect that is being relied upon. Hint for gdb: https://stackoverflow.com/questions/5785902/how-do-i-get-gdb-to-break-on-a-glib-assertion-failure
I think the left mouse orbit, right mouse pan works well on a trackpad. If this works well enough it could be made the default.
For example, where these circles don't quite intersect properly:
Lobes(5, 16, 6, 11, $fn=128);
Results in moves into the workpiece when it shouldn't.
I don't have a good repro, just clicking around sometimes causes it. This build is too optimized to easily tell what the line of code is.
#0 0x00007ffff56a4eec in g_type_check_instance_cast () at /usr/lib/libgobject-2.0.so.0
#1 0x00005555555605b3 in gui_cell_renderer_param_editing_done ()
#2 0x0000555555573a17 in ()
#3 0x00007ffff642a7cc in () at /usr/lib/libgtk-x11-2.0.so.0
#4 0x00007ffff5680475 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#5 0x00007ffff569377d in () at /usr/lib/libgobject-2.0.so.0
#6 0x00007ffff569c045 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#7 0x00007ffff569d030 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#8 0x00007ffff6545235 in () at /usr/lib/libgtk-x11-2.0.so.0
#9 0x00007ffff65515e2 in gtk_widget_send_focus_change () at /usr/lib/libgtk-x11-2.0.so.0
#10 0x00007ffff6551871 in () at /usr/lib/libgtk-x11-2.0.so.0
#11 0x00007ffff655bef0 in () at /usr/lib/libgtk-x11-2.0.so.0
#12 0x00007ffff655c140 in () at /usr/lib/libgtk-x11-2.0.so.0
#13 0x00007ffff642a7cc in () at /usr/lib/libgtk-x11-2.0.so.0
#14 0x00007ffff5680475 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#15 0x00007ffff5692f97 in () at /usr/lib/libgobject-2.0.so.0
#16 0x00007ffff569c045 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#17 0x00007ffff569d030 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#18 0x00007ffff6545235 in () at /usr/lib/libgtk-x11-2.0.so.0
#19 0x00007ffff6428f1b in gtk_main_do_event () at /usr/lib/libgtk-x11-2.0.so.0
#20 0x00007ffff60a1d5e in () at /usr/lib/libgdk-x11-2.0.so.0
#21 0x00007ffff55a3ca7 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#22 0x00007ffff55a3f59 in () at /usr/lib/libglib-2.0.so.0
#23 0x00007ffff55a4272 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#24 0x00007ffff6427df3 in gtk_main () at /usr/lib/libgtk-x11-2.0.so.0
#25 0x0000555555571e10 in main ()
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.