Giter Site home page Giter Site logo

thatch / cammill Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cammill/cammill

0.0 0.0 0.0 4.8 MB

2D CAM tool for Linux, BSD, Windows, Mac

Home Page: http://cammill.github.io

License: GNU General Public License v3.0

Makefile 9.78% Lua 0.49% Python 0.85% C 87.09% C++ 0.04% Tcl 0.22% Shell 0.79% Dockerfile 0.73%

cammill's People

Contributors

caiotizio avatar deusyss avatar gitter-badger avatar greyltc avatar koppi avatar multigcs avatar onekk avatar thatch avatar

Watchers

 avatar  avatar

cammill's Issues

Treeview calls in batchmode

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

Helix for just holes

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.

Ability to select by layer

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.

The Dynamic Array Project

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.

Number editing in treeview

Some minor issues here:

  1. validation -- requires deleting before typing anew. only one decimal point and limits the number of digits after decimal point. (is the double-click behavior odd here?)
  2. spinner + mousewheel results in gui lag. See cammill#52
  3. display shows more decimal digits than you can input

Trapezoidal tabs

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.

Unnecessary moves

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

Segfault while editing treeview

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 ()

Postprocessor can only be selected by "number"

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.

File load after first is sometimes wrong

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.

Better pocketing strategy

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.

Limited holding tabs

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.

Tiny segment offsetting problem

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.

Touch off on table option

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)

A way to reference the last object

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.

Documentation fixes

There is both a commandline '-bm 1' parameter as well as cfg:Misc-Batchmode. This is missing from the wiki and --help.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.