Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Deftware

369
Posts
10
Topics
63
Followers
11
Following
A member registered May 30, 2015 · View creator page →

Creator of

Recent community posts

Hi tdomask,

Would you mind sending G-code output by PixelCNC, EstlCAM, and the OpenBuilds CAM to us support@deftware.org? We should be able to get to the bottom of this by comparing the output of each. The situation is likely that the machine is expecting a tool Z offset which their CAM includes a command for in generated G-code.

 - Charlie

Hi tdomask,

Where the machine origin is shown in the 3D view is where you must set to be the coordinate 0,0,0 on your machine - and you'll likely also want to make sure any kind of work coordinate offsets are disabled as well. If you set the top surface of your canvas to be the project's Z origin then you should be zeroing your machine's Z-axis with the cutter touching the top surface of your workpiece. If there is any kind of tool Z offset this will affect things as well.

Keep us posted!

 - Charlie

Hi Geoff,

Hrm, that's very interesting that the Stamp Size value knob doesn't behave properly for you. I'll have to do some more investigating. In the meantime I'll make sure that increment buttons are included on there, and look into what changes need to be made to include an editbox button on value knobs - or an equivalent solution of some kind.

Thanks for the feedback! :]

 - Charlie

Hi Geoff,

Left-click-drag the value knob up/down to change the value. The faster you move the mouse the more the value will change for a given cursor travel distance. If you look at the GIF animation I shared previously I am just dragging the Stamp Size parameter up and down, and when holding SHIFT it changes from 0.0mm to 250.0mm very quickly with a single quick mouse motion.

There is a possibility that your mouse cursor speed is set extremely low in Windows, which will require moving the mouse very fast and far to get a cursor speed that will produce the exponential value change - but then interacting with the 3D view and manipulating layers by their handles would also be very slow I would imagine.

PixelCNC's UI assumes that your cursor can be moved from one side of your screen to the other without picking up the mouse, with a single wrist motion. If your cursor sensitivity is turned down I can also add an option to the UI Settings dialog for tuning the sensitivity when interacting with everything, if you think that would help.

Let me know what you think. :]

 - Charlie

Hi Geoff,

I forgot to mention that the value knobs also change value in a non-linear fashion with mouse movement speed. If you drag the value knob quickly it will change value at an exponentially faster rate. This is to allow slow careful adjustment while also making it possible to change the value quickly at the same time. Holding SHIFT and moving the mouse quickly can cover the whole range of the Stamp Size value knob in a single motion:




Adding a popup editbox is a neat idea. I will take a look at what needs to be done to make that happen and see if I can squeeze it into the value knob logic. Off the top of my head I imagine that it will probably appear as a little button on the right side of value knobs that you can click to popup a little editbox for typing a knob's value. :]

- Charlie

Hi Geoff,

We tried to keep the value knobs where they made the most sense, and use editboxes and sliders where those make the most sense but there's surely room for improvement in that regard. You can also drag the knobs to change values more quickly, instead of using the mousewheel. Can you share which value knobs you would like to be easier/faster to set values with?

 - Charlie

Sounds good Russ! :]

Hi Russ,

That looks really good! I know that using the Depth Offset parameter on the Medial-Axis Carving operation allows you to apply a Z offset to where the operation considers the top of the canvas to be, or rather the top of the material's surface, so if you were to say mill out a pocket 0.25" deep but wanted to add a V-carve inside of it, you can just set a 0.25" depth offset to the V-carving operation to shift all of the cuts downward to the bottom of the pocket. Just remember that this Depth Offset parameter is separate from the cut/min/max depth parameters (at least for the moment), so that a Max Depth of 0.1" and a Depth Offset of 0.25" will result in cuts that can reach 0.35" below the top of the canvas. This is something I've been looking to resolve so that it's less confusing.

The Depth Offset parameter might be useful if your end-goal is to figure out how to have different heights for features, and still use the medial-axis carving operation to cut the finer lines. The caveat is that it likely won't work well if the V-carving cutpaths must travel between two different heights, unless you don't mind a chamfer being formed along the side of a higher area.

There's also the possibility of manually picking and choosing which features that the V-carving operation actually applies to, by selecting and creating a separate new paths-layer from just the paths that you want the V-carve to occur around, inside of, or between, and use that as the contour input for the V-carve.

For example, if you wanted just the king to be lower, you could mill out a small cut depth from him, but not the large diamonds, and then generate a V-carving toolpath that excludes the large diamonds, and set the Depth Offset to the Max Depth that was used to clear the area of the king.

 - Charlie

Hi Joe,

First I inverted the diamonds and the area around them and the area on the back of the king's head, using the wand tool and Adjust Levels to flip the height values. Then I went ahead and first just used the wand again to select the sleeves with the tolerance turned down all the way, and because it also selected the border around there I put the view into 2D mode and used the rectangle selection tool with the selection mode set to intersection (the last mode on the right), then manually selected a rectangle that included the sleeves but excluded the outer edge that was selected.

Then I did a little touchup to deselect any other areas that the original sleeve selection leaked into using the remove-from-selection mode and the polygon selection tool.

Let me know if that gets you where you want to go. If not I can make up some screenshots to better show what I did on there :]

 - Charlie

Hi Russ,

It's definitely tricky trying to invert specific areas. I went ahead and attempted to re-create what you did here and just the design of the card itself doesn't lend itself well to only inverting the diamonds and the area behind them. It definitely requires some fudging stuff around to get those sleeves up!

Personally, I like to V-carve most things with the medial-axis carving operation, maybe even just a shallow cut and fill the rest of the inner areas with the profile milling operation and a Cut Width that reaches the center of large areas with a tiny stepover - or come in with a small flat endmill to clear an area flat.

With the unmodified card image, here's the medial-axis carving operation with a 90deg V-bit down to 0.05" deep:



...and then follow up with a Profile Milling operation with the same V-bit, and a contour Offset of 0.05" to match how far from the edges that the V-carve cut reached in its deepest cuts for a 90deg bit angle, and a 0.015" cut stepover, which could be smaller if I wanted to make the ridges less apparent:



Trying to replicate what you did, with the inverted diamond area, and then I created a Parallel Carving operation with a 0.5mm tapered ballnose, it looks more like the result you ended up with:

I think that it's just not a good strategy to carve something like this as a relief!


Trying again, but using the previous strategy:



It took a little bit of a Smooth factor on the modified raster-layer, and raising the Contour Z on the m-axis carving and profiling operations so they could get good contours, but I think the result speaks for itself! Granted, you won't have varying heights for things, like a relief, but any time there are fine lines it's very difficult to get them to come out nice with something like a parallel carving operation.

Hope this helps! :]

 - Charlie

Hi Pluto,

Right now the only real way to scale something uniformly across all 3 axes is by using a multiplier on all three dimensions in their editboxes. If you want to double the size of something just add "*2" after each dimension and it will calculate double that value. If you want to manually scale something you can preserve the aspect ratio for the XY axes by holding CTRL+SHIFT while dragging the handles in the view. If you want to scale the Z by an equal amount you'll need to calculate the scale factor that resulted by dividing the original X size of the layer by its manually scaled size which will give you a value you can multiply the Z size by to scale it up by the same amount that the XY axes were manually scaled.

It's been on the todo list for a while to add some means of locking the aspect ratio for layer dimensions so that if any of them change the others will update to retain the relationship between all three dimensions, but we haven't quite figured out what that should look like in the UI just yet. With all of the other buttons all over the origin/size property edit boxes we're concerned about things becoming cluttered on there :P  If you have any ideas/suggestions, something like a checkbox somewhere, we're all ears! I'm partial to perhaps having a menu with options in it for locking the aspect ratio of different combinations of axes, i.e. "Lock XY Aspect", "Lock XZ Aspect", "Lock YZ Aspect", "Lock XYZ Aspect", etc...

 - Charlie

Hi Pluto,

Very cool! I imagine you could get more detail out of PixelCNC just by manipulating the CNC/CAM Settings with the Toolpath Simplify and Min/Max Segment length, and the project's canvas resolution. Remember that the canvas resolution controls the absolute maximum detail and precision that's possible! If the resulting G-code overwhelms your CNC controller (can't churn through commands to keep up with feedrate) it can help to turn up the Toolpath Simplify setting a bit, to get the overall number of moves down - or by increasing the Min Segment length from its default. Remember to re-generate toolpaths after changing the CNC/CAM settings before exporting G-code.

Looks good Pluto, thanks for sharing :]

 - Charlie

That's good to know Pluto. Thanks for sharing!

 - Charlie

Hi Geoff,

I'm still not clear what the problem is that you're seeing. As long as your view is aligned straight-down the snapping-to-grid should be working for moving the machine origin, layer origins, and path nodes, in both inch/metric projects. Can you show me what it is that you're seeing or at least explain how to re-create the issue?

Thanks!

 - Charlie

Hi Geoff,

Are you referring to the origin of a layer or a paths-layer's path nodes? Remember that the machine origin's Z is where the grid is positioned so anything that is not sitting directly on the grid will appear offset if you're viewing at an angle. I do see a regression in v1.81b, however, which is causing the grid plane to not move to the XY plane that paths are lying on when path-editing is enabled. This would be caused by v1.81b fully decoupling the machine origin from generated toolpaths. Is this what you're referring to?

The quick-fix is to click the 2D/3D toggle at the top of the screen to switch to 2D mode so that the grid is always overlaid onto everything below.

Also, when scaling a layer, its handles will not snap to the grid, but instead adjust the size of a layer in grid-subdivision increments.

Thanks! :]

 - Charlie

Hi Russ,

Yes, I've discovered the same issue using VNC as well. This is apparently a bug in SDL, which is the platform-abstraction library that PixelCNC uses, and it results in the mouse motion messages from the OS being read incorrectly when there is a remote control application sending event messages to PixelCNC, like Virtual Desktop/VNC/etc. If there has been a fix in a newer version of SDL we'll be updating everything to that. Right now we're just working on getting v1.81b out for the moment, which the build for is pretty much locked for any major changes, and we should have it out by the end of the day :]

Thanks!

 - Charlie

(1 edit)

Hi GettingRusty,

Looking good! The main thing to keep in mind is that an image's pixels are interpreted as height values. An image with lighting on it is going to have raised parts where the light is mostly hitting the surface. For example, an image like this:


...results in a canvas like this:



...when you're probably hoping for something more like what originally created the lighting-rendered image, which would be something more like this:




The key is having proper height/depth data if you're using an image, or using a 3D model. Or, if you at least have a black-and-white image you can load it as a raster-layer and trace to a paths-layer and then use Shapes From Paths to generate a 3D shape. You can do the same directly from a 2D vector, like an SVG or DXF that's loaded as a paths-layer. In this instance, you'd want the actual 3D model of the dragonfly from which the image was rendered - that will allow you to generate toolpaths that actually conform to the shape and details of the model itself, effectively turning your carving itself into the 3D model that is naturally "rendered" by surrounding illumination sources. This is what a relief carving is supposed to be.

Having a photograph or lit rendering (like your dragonfly image) is good though if you want to make a halftone or lithopane, but to create a relief carving - a 3D carving of the thing - you'll want a proper heightmap and/or 2D form to generate toolpaths from, or trace to paths that you can then generate 3D shapes from for toolpathing off of.


( EDIT: I thought I'd also include what the actual heightmap for the above example looks like here, just so you can compare with the original image at the beginning of my comment that is only a 3D rendering of this heightmap )


I do think the wood is also of poorer quality than you would want for such a small detailed carving. Of all the woods I've cut so far I've found red oak to be the worst thus, not that I know what kind of wood you're cutting here but it definitely reminds me of red oak's stubbornness. It has really coarse fibers and ends up being very stringy on the edges of cuts. A harder wood like maple or oak is much better for small detailed projects and cuts.

For relief carvings, the best way to go, toolpath-wise, is to use a flat-end cutter with a 2.5D milling toolpath and a Leave Stock that prevents it from exactly approaching the canvas' form. Then come in with a ballnose cutter and a Parallel Carving toolpath with a very small stepover to remove everything else and clean it up. Here is an example project that uses the Rest-Machining option to restrict cuts to the relief carving itself, after removing a bunch of material around it: 5x7x0.5 Deer Relief.pnc Note how the 2D/2.5D milling operations have a smaller border so that more material is cleared, and then the re-roughing/finishing parallel carving operations that employ the rest-machining option are using a different Layer Group that has a larger border so that no vertical cuts are generated at the edges/walls/corners due to using a smaller cutter. We're working on a way to use a paths-layer as a boundary for clipping an operation's cutpaths to in lieu of using the rest-machining option the way that this project does to minimize total cut time.

As long as you have no immediate plunge cuts in your relief, and it gradually enters down into the material with each successive cutpath, you can usually get away with just having a single parallel carving operation and a small stepover that's shaving material with each cut, and as long as you have no vertical walls in the cut while you're using a tapered ballnose it will be fine. Here's an example project where the whole thing is done in one pass that cuts all the way down: 8x8 Tree Of Life 1-Pass.pnc

In a situation where it's unrealistic to do the thing in one pass, it's best to use a 2.5D operation with a larger flat endmill cutter to hog out most of the material, and then come in with your ballnose cutter(s) to go the full depth in one pass afterward.

We're working on getting v1.81b out ASAP right now, which is largely a bugfix update, but the next update we're aiming to include several new features - including some new toolpath types and capabilities! :]

 - Charlie

Hi Geoff,

Go ahead and email that DXF over to us at support@deftware.org and we'll get a fix in ASAP for the v1.81b bugfix update that we're working to put out as quickly as possible!

Thanks :]

 - Charlie

Hi Chris,

It looks like we had a problem with our email servers for the last few weeks that were causing some emails to get stuck! Thanks for the headsup. I have some catching up to do on emails now so look for my reply :]

 - Charlie

Hi Pluto,

Ah, I believe there is some interference between how the platform abstraction library that PixelCNC uses, SDL, and Virtual Desktop. When a layer handle is grabbed the mouse cursor is no longer actually being used and mouse motion itself is the only input that is being interpreted until the handle is released. Then the mouse cursor is positioned on top of where the handle was released.

I will do some digging to see if I can find anything about this being a known issue with SDL and Virtual Desktop.

Thanks for the headsup! :]

 - Charlie

Hi Pluto,

This is the first we've heard of this issue - with thousands of users over the last several years since the canvas system was implemented. We'd like to figure out what the situation is and resolve it ASAP.

Does the camera control work normally using the left-click-drag to move the view around and right-click-drag to rotate the view?

 - Charlie

Hi Chris,

That looks like it came out great! 1.5 hours isn't bad at all, that's about what I would expect for something like this with such a fine bit, if not a bit longer (~2 hours).

I only see our email exchange from April 17th, nothing in the spam! Could you try re-sending? :]

 - Charlie

Hi Pluto,

Physical dimensions are in inches. The Tool Diameter parameter is referring to the diameter of the curvature at the very tip of the tool that will be used to form the groove optics, as this determines how deep the tool should be pressed into the surface for the optimal groove profile. Depth Per Pass should always just be kept larger than the Groove Depth so that it only does one pass for forming grooves. The Inches Scale parameter indicates how large the hologram is, in inches. The Precision value determines how accurate the shape of the optics will be - how many line segments or circular arcs are used to describe the optic's shape in G-code coordinates.

Thanks for your purchase of Holocraft! :]

 - Charlie

Hi Pluto,

Glad to hear PixelCNC is doing what you hoped for! You can use the Profile Milling operation from the 2D/2.5D Milling operations category to cut around a shape that's on the canvas, or use a paths-layer as contour input to the operation. The "Simple Relief Cut-Out" tutorial will walk you though what goes into cutting a 3D shape and then cutting it out with the profile milling operation :]

Just as a heads up: we're having some server issues at the moment so the Content Library and automatic updates may be offline for a few days, until Monday at the latest but hopefully we'll resolve the issue sooner. We'll get it squared away ASAP.

Let me know if you have any other questions or need help with anything else!

 - Charlie

Thanks for the info Chris! :]

 - Charlie

Hi Nate,

If you are setting the machine origin to the top of the canvas, and zeroing out your machine's origin to the top of a workpiece, the tool should never travel higher than the Safe Z rapid height from the top of the workpiece. The only thing that would make it travel higher than the Safe Z height from the top of the workpiece is if the machine is actually being zeroed out below the top surface of the workpiece. Where you see the toolpaths relative to where you set the canvas origin is where they will be relative to where your machine is zeroed out. There's also the possibility that some kind of work offset is being applied by your controller and needs to be cleared/zeroed but you'll need to figure out what those may be for your specific machine.

Don't forget to re-generate operations' toolpaths after making any changes to the canvas origin! That can cause some unexpected placement of cuts if they're not generated for where the machine origin is currently set to. This is something we're looking to change soon as a number of people have found the need to adjust where the machine origin is after creating operations and generating toolpaths but where the machine origin is placed relative to the canvas is "baked" into toolpaths when they're generated - which isn't necessary and we should only be applying the origin when exporting G-code instead.

Keep me posted!

 - Charlie

Hi Nate,

You can set where your machine will be zeroed out relative to the canvas volume from the Canvas Properties panel. Any changes to the origin requires recalculating any toolpaths that have already been generated - at least for now but we're planning on changing things so that the origin can be freely moved without recalculating toolpaths or simulation heightmaps. We're just about to release v1.80b soon which includes the ability to set the machine origin outside of the canvas volume as well so that you will not need to create a canvas that's large enough to include the machine origin within its volume.

If you move the machine origin to the top of the canvas then you will want to zero your machine on the top of your work piece, in most cases.

Be sure to do a dry run above your workpiece (zero your machine up in the air) to make sure that it will go through the correct motions when it's actually cutting, just to be safe!

 - Charlie

Hi Chris, I was just working on a reply. I should have it sent pretty quick here :]

Hi Chris,

I just recently re-worked the cutpath sorting for the Parallel Carving operation and discovered a bug that could cause an undesirable link move between two cutpaths. I think that might be what you're seeing here but it's hard to be sure. If you can send a project file over to the support email address I can take a look and see.

Thanks!

 - Charlie

Hi Chris,

You can make a custom post that includes a feed command in its RapidBlock definition. This will result in outputting whatever feed rate is used by the operation the rapid is occurring for, or you can just hard-code a feed rate directly into your custom post.

So if you want the rapid to use the operation's feed rate, then  change the RapidBlock definition to:

RapidBlock "[CNC_SEQUENCE][CNC_GCODE][CNC_X][CNC_Y][CNC_Z][CNC_FEED][EndOfBlock]"

Or, if you want to hard-code a feed rate, you can just put it directly in the definition.

RapidBlock "[CNC_SEQUENCE][CNC_GCODE][CNC_X][CNC_Y][CNC_Z]F100[EndOfBlock]"

If you're already using a custom post, you can just make these changes to that post. If you are using an existing PixelCNC post then be sure to make these changes to a copy to make the changes to, and use the copy, otherwise your changes will be overwritten by an automatic update.

Let me know how it goes!

 - Charlie

Hi Chris,

I started working on a parametric wood grain system as a simulation appearance option for PixelCNC projects:











I plan to include a few presets that resemble some wood grains and colorations. Do you think this might do the job for you?

 - Charlie

Hi Chris,

Unfortunately there is not yet a means of setting any kind of texture on the canvas/simulation rendering, but I could add it to the todo list! I don't think it would be too difficult to add that functionality. Do you have any suggestions for default included textures? I imagine this would be something accessed via Canvas Appearance and Simulation Appearance where the colors/curves are.

 - Charlie

Thanks for the update Chris!

Hi Joe,

PixelCNC projects store the tools definitions in them, so any changes to your tool library won't affect them. This is so that users can share project files without requiring that they already have the tools defined in their library. The tool library is just a list of pre-defined tools so that users don't have to keep redefining the same tools for new projects, but the project doesn't rely on the library retaining those tools, they are effectively copied to the project.

Hope that helps!

 - Charlie

Thanks for sharing! I'll make sure there's a Snapmaker post in the next update that goes out that includes these changes. Let me know if there's anything else you find that could use changing in the post to improve it at all so it can be included with the post that goes out with the update. :)

 - Charlie

Hi cdibbs,

It looks like the Snapmaker controller is pretty much your basic vanilla Mach3 style G-code setup. I'd suggest trying the Mach3 or the GRBL post processors for milling stuff. Try a dry-run with the tool zeroed out above your actual cutting area and see if it looks like it's traversing toolpaths the way they should be. The Easel post is non-modal for coordinates, where it includes a value for X Y and Z with every command block, which some controllers prefer, so it might be worth testing that one out too if the Mach3/GRBL posts don't work out.

Make a small canvas with a thin Z size and then create a basic tool definition and then from the 3D Contouring operations category create a Parallel Carving operation. Generate a toolpath that cuts to the bottom of the canvas, and has a big cut stepover, and export G-code for that.

Here's a test project you can use to export G-code for to see what works for your controller: https://cdn.shopify.com/s/files/1/0308/9658/6890/files/3x3_Test_Project.pnc?v=17...

If the Mach3, GRBL, and Easel posts don't work properly you can reply to this thread or send us an email at support@deftware.org :]

https://itch.io/docs/buying/already-bought

Hi Pat,

No worries, helping people make stuff happen with PixelCNC is all part of the job! ;)

So the canvas Z size is just the maximum potential depth cuts can be generated down to, but if there is content in the canvas volume that is higher than the bottom of the canvas then cuts will only be able to go down to that content with the 3D and 2.5D operation types. So if you want to cut some shapes into the workpiece they will need to be as deep was you want to cut when using a 3D or 2.5D operation. The canvas' Z size is the depth limit you'll be able to have shapes go, and why it's the Max Depth limit (unless the tool's length limits it first, and Ignore Tool Lengths isn't enabled).

With the 2D milling operations the canvas is only used to generate a 2D contour to generate cuts from, regardless of how shallow/deep that contour is generated at, and cuts will always go down to Max Depth.


I believe the reason you're seeing the cuts being offset way into the digits with the 2D offset milling operation is because of your tool definition. It automatically offsets the contour that cuts will be generated inside of by half of the cutter's diameter, where the diameter is the widest part of the flutes (typically the shank diameter for most tapered cutters). We might change this so that it only offsets cuts by the diameter of the cutter at Max Depth, rather than the full width of the cutter.

The 2.5D milling operations properly accommodate for the cutter's geometry at each cutting depth, so with a tapered cutter you will see cuts progress more toward the middle of pockets the deeper it cuts, as it's not able to keep the tool inside the boundary of the shape without moving it away from the edges of the shape at each successive cutting plane, like this:



This is what happens when I generate a 2D offset toolpath with a big fat wide-angled tapered cutter, the cuts must be moved inward to accomodate the full diameter of the cutter:

So if it only cuts that top layer it will never reach the full diameter of the cutter, which is what you're seeing. You can fix this by creating a tool definition that only has a diameter for the depth you plan to cut, but I think I'll be changing it so that it automatically only uses the Max Depth the cutter will go to determine how far to offset the contour for a given tool.


I think the best way to go is make sure that your digits are actually 0.5mm deep and use the 2.5D milling operation instead, to ensure that the tool is always cutting out to the edges for each cutting depth. You can see the depth of your canvas at any point by putting your cursor over the bottom of one of the digits and looking at the XYZ cursor position on the status bar, it will give you a readout of the coordinate (relative to the canvas origin) of the point on the canvas surface that the cursor is pointing to, like this:


This is with the canvas Z size set to 1 inch and the machine origin is at the bottom of the canvas, so with my ampersand being 0.1" deep the canvas surface only varies between 0.9" and 1.0" (from the Z origin at the bottom).

You *might* need to make your digits slightly deeper than 0.5mm, as there can also be a bit of contouring depth precision variance that results in the very bottom of a pocket not getting contoured even though it appears to be down to the Max Depth specified, because numerically it will looks like it's 0.000001mm above -0.5mm, due to floating-point rounding errors that can occur. We did add a tiny Z offset to a few operations' toolpath generation algorithm to mitigate this so you might be fine just making sure your digits are actually 0.5mm deep from the top of the canvas and calculating a 2.5D Offset Milling toolpath with a 0.5mm max depth.

Hope that helps!

 - Charlie