Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics

Tool feature suggestions

A topic by tomsolar created May 15, 2019 Views: 220 Replies: 13
Viewing posts 1 to 4

Just getting started with PixelCNC and loving it so far. 

Is there a way to define a tool library and reuse it, or do we have to redefine each tool every time we make a new project?  I know I've only got a few tools that I typically use and it would be awesome to be able to just import a tool library instead of redefining them.

Also tool-related:  how about adding a tapered ball end cutter?  It looks like the "Tapered" tool type only supports flat end currently. 

Thanks for your hard work!


Thanks for your interest in PixelCNC! It's great to hear whenever someone is able to put it to good use :)

A few different users have inquired about a tool library/persistence type feature and so it has definitely been in the "adding-for-sure" section of the planned features list, for a few months now in fact. The situation is coming up with a clean and yet simple-to-implement means of achieving the desired result. There are still other big features that are going to take a bit of effort to get done so finding a solution for achieving a tool library system that is the easiest to do without totally sacrificing usability and intuitiveness is the goal.

I've been wrestling with a few ideas and for a while nothing seemed like it would work great in all situations, particularly when the user loads a project that has its own tool definitions which deviate from their library. At that point it seemed that having a legitimate tool library that the user can add/remove/edit the tools in is necessary. From there users can create a new project and either just directly load their library as a whole into their project, or individual tools into the project's tool slots. If they need to define a new tool that isn't in their library they can simply define it within their project and on the tool parameters panel.

The situation is that the tool library would consist of a list of tool definitions stored in their config file. When you're in the tools mode of PixelCNC you could click on a slot and there would be two buttons that appear on the tool slot itself: Load Tool and Save Tool. Clicking the load tool button would just pop up a dialog or menu of the user's saved tools which they could select a tool from to fill the project's tool slot. Alternatively, when they select the tool slot they'd still be able to define a tool on the right pane where the tool definition parameters are, after hitting apply to put the defined tool in the selected slot they could then click the Save Tool button and select a slot in their library to save the tool to - either an empty blank one or overwrite an existing one.

Lastly, there would be a button at the top of the tools list "Load Saved Tools" which would just fill the project's tool list with all of the saved tools. The only limitation to this system, as a whole, would be a finite number of tools that could be saved to the library - unless I took it a step further and had "primary" and "secondary" tools in the library, for power users (hehe). The primary tools would be the tools that a project's tool slots gets filled with when the user clicks "Load Saved Tools" to automatically fill the project's tool slots. The secondary tools would be backup, and they could swap those around with the primary tools as needed. The primary tools list would have the same number of tool slots as projects (10 tools) but the secondary tools list would be larger, if not unlimited. Just an idea.

I think that I'll be going with just having a tool library that is the same size as a project's tools list though, because it seems like it would make 99% of users happy that would prefer some kind of tool librar.y/persistence feature. It also is something I should be able to hammer out within a day, so that's a plus too.

Right now I'm hacking away at the new layer/canvas system and so far I have being able to load multiple images and position/scale/rotate them while changing how they are  each blended into the final 'canvas' off which toolpaths are generated. Next up I'm going to get support for models  working, so that users can load a 3D model into PixelCNC and actually see the geometry and rotate it around to whatever orientation and have it blend with the other layers. Somewhere in there I will get the tool library system setup too and then get another update out. After that I'll be adding more layer types for drawing 2D paths and placing OTF/TTF based text off which various contours and modeling operations can be generated. Then I have a handful of new cool new operations/toolpaths to add as well that I'm itching to get running and test out.

It's getting really exciting now! Thanks again for the feedback :)

What about having the ability to import a Vectric tool database? I've got a bunch of tools already defined in there with optimized feeds and speeds for my machine, as does anyone else that uses VCarve, Aspire, Cut3D, etc.  Amana Tool is steadily adding Vectric compatible bit information to their product pages (like this:


I can't find a file format specification that details how the data is laid out in .tool files with a cursory Google search but if one is out there then I don't see why I wouldn't allow loading tool definitions. PixelCNC only represents tools in a very simple way, however, and so there are tools which would not be possible to import - basically anything that performs an undercut or that has very unusual geometry. Otherwise most tools should be able to import just fine once I get all these other features implemented and can dig up a spec sheet on the ".tool" file format.


I can send you a sample tool database, and ping Vectric if you'd like.


Oh I already found a bunch of .tool files, but they are not some kind of easy-to-decipher and/or modify text format, like say a post-processor usually is for some CAM software. They are some kind of special format for which a specification sheet might not have been released to the public yet. You could shoot an email off to Vectric though asking if they have a file format spec for .tool files though.


I emailed them last night, but all I got was a non answer...

"At this time we do not have any information regarding the .tool format.
It is just used to store tool information when exported from our software."

I'm going to try again today with a more specific question.


Interesting. I am curious as to whether or not they are intentionally keeping it a secret, as a proprietary format, like some software companies do with their unique file types. That's hard to believe though with other programs also supporting the format, but there could be a monetary compensation aspect involved there. I could possibly reverse engineer the format if I were seriously determined to but I am inclined to think that the payoff would not justify the effort - especially when there are much more valuable features and functionality I could be hacking away at with my time. I'll do some more rigorous Googling after the v1.34a build goes out and see what I can come up with. I can't be the only developer interested in using an already existing tool definition format, someone might have already done the hard part of deciphering it. There also might just be an official spec explaining the layout of the parameters in the .tool file that is just harder to dig up because 'tool' is a pretty common word in search results.

I'll keep at them so you focus your efforts on more important things.


Thanks, much appreciated. Let me know what you're able to dig up. Surely there's a conversation on a forum or messageboard somewhere between some other people who were interested to either generate or read .tool files into their own projects.


Oh, I totally forgot: I didn't even know a tapered ball-nose existed! I'll add that to the todo list and it should be in a future update - probably not this next one which will introduce the initial form of the canvas system but hopefully the one after that, along with some of the new carving operations and contour modeling stuff for creating projects from scratch directly in PixelCNC.



Just thought I'd let you know that v1.34a is coming August 1st and includes a tapered ball-nose cutter and simple tool-library that users can load/save tool definitions into.



Can I suggest it pre loads the tool library on new project.   Also more tools . :)


Great feedback! I was definitely considering an "auto-fill" button or option under CNC/CAM Settings that would just fill new projects with the first 10 cutters found in the library. Alternatively each tool in the library could just have a toggle for auto-adding to new projects, so that you can have a library of tools but only a few regularly-used ones that you want to be included in a new project by default. Glad to hear confirmation that it's worth pursuing :)

What other tool types are you thinking should be added? Be forewarned: PixelCNC won't be able to do any kind of under-cutters just by the nature of it's core algorithms that everything is built upon - and all the stuff that is built out of them them would need a re-write. This was by design from the outset because it enables fast toolpath generation and CNC simulation by simplifying everything down to just a 2D field of height/depth values that conventional (and some custom-engineered) image-processing algorithms operate on.

So if you have any other cutter geometries in mind that I haven't included, or that can't be achieved with the existing tool types, I'd love to hear about them!