Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Deftware

304
Posts
10
Topics
55
Followers
10
Following
A member registered May 30, 2015 · View creator page →

Creator of

Recent community posts

Hi Joe,

The Position Offset allows you to move where along the entire path's length that it positions the raster or text layer. A circular path has a node that acts as both the beginning and end of the path, which means that wherever that node lies is sort of a boundary that an Along Paths won't be able to cross. I realized this a while ago and haven't thought about different solutions yet. For now you'll just have to rotate the paths-layer so that the boundary node is on the opposite side of it from where you want your raster/text to be mapped to.

I think the simplest thing to do is just make it so that the 0.0->1.0 value range goes farther with continuous/looping paths, so that the raster/text can be seamlessly mapped around the entire path. I'll have to take a look and see what needs to be done.

 - Charlie

Ah, yes the size is in the layer's space because it can be oriented at any arbitrary angle, not just 90 degree increments. It wouldn't make sense if it was rotated at say 45 degrees - then which axis would you scale it on? Keeping the scaling relative to the layer allows for these arbitrary rotations.

You could always create a new blank raster-layer below the rotated image's layer and merge down, so that the rotated image is merged with the unrotated blank layer. The new raster-layer will then have the rotated layer natively oriented in the default canvas space, where the canvas XY axes are the same as the layer's.

- Charlie

So PixelCNC automatically scales a loaded image to fill the canvas while retaining its aspect ratio. So if your image is square (width and height are the same) then the layer will be scaled to the smallest canvas dimension, either X or Y. In the case of a canvas that's 24"x48" that would mean that a square image would be scaled to 24"x24".

I'm not sure I follow what you mean about the orientation and resizing. :P

 - Charlie

Alright!

The best I can think of is to copy the canvas to a raster-layer and put that raster-layer on its own layer group for operation's to toolpath off of - set up the canvas size to contain all of your tiles and then duplicate the raster-layer across it. You can use the raster-editing function for 2D tiling to automatically have it replace the contents of the layer with multiples of itself. The caveat is that generating toolpaths will be slower doing it this way - actually toolpathing off all of the tiles simultaneously. Size the raster-layer to the whole canvas (which should be sized multiples of the layer's size) and then use the same multiples for your cols/rows in the 2D tiling function.

Ideally, there would just be an option in the Export G-Code dialog to automatically tile the exported G-code by a specified number of rows/cols and at a set spacing in X and Y between the tiles. I think I could hammer that out pretty quick, in just a day or two. I'll add it to the todo list and see if I can't get it in there for the next update. Then you can just design and toolpath one tile and have the G-code export with copies at each tile's offset position - no toolpathing off all of the tiles at the same time.

Just make sure that your canvas resolution is high enough for holding all of the heightmap pixels at a decent quality level - particularly if you're going to use the raster 2D tiling function.

There might be a utility somewhere out there for automatically tiling an existing G-code program. At least, it wouldn't be something difficult for someone to do - they'd just have to insert some work offsets and repeat the code.

 - Charlie

Glad to hear it! :)

Hi Joe,

Right now the only way to "remove" a tool from the library is to just overwrite it with another tool definition by saving to the slot you wish to overwrite. There's not a way to blank out a tool library slot though.

I do think that for someone who uses PixelCNC the way you do it might be better to just use the new feature for loading tools from the library from the operation parameters interface. You don't need to have any tools defined for a project to create an operation anymore - though PixelCNC will still popup a messagebox about it, but it will still let you create a new operation and assumes you will be loading tools via the new "Load From Library" button that shows on operations' Tool parameter.

 - Charlie

Good catch! I just dug up the old archive for the code that went to v1.0 and yes, the command is never registered with the others but the functionality for it also might not work even if you include it in a bitfile because it sorta just bleeds over into findradius. I'll try to set aside some time in June to go over everything and release a new version of Bitphoria with all the crazy new stuff that's been added since v1.0. Maybe I'll even fire up the master server again and see if we can't track down that long standing server crash bug that always eventually seemed to happen.

Anyway, I'd suggest just using findradius with a big radius for the interim - it should behave virtually the same though it will be a tad slower because it is doing some spatial indexing and distance checks so I'd recommend against having it constantly called by dozens of entities at the same time.

Glad someone is fiddling around with Bitphoria!

 - Charlie

Yeah, it's far from ideal - v1.61b will make it much easier :)

Ah, the only way it appears is to copy the text-layer to a raster-layer with Mirror X/Y enabled (or rotated 180deg) and then create a new raster-layer to merge that down onto. Then you would use that with Along Paths.

so:

  1. Copy to Raster-Layer the text-layer
  2. Enable Mirror X/Y options on the raster-layer
  3. Create a new blank raster-layer below it
  4. Merge mirrored layer down onto blank layer
  5. Use result with Along Paths

A bit more convoluted than I'd like. I'll make sure that both the Mirror options affect Along Paths as well as including a Flip Axis option on the Along Paths so that there are multiple ways to go about it.

 - Charlie

Hi Joe,

The Along Paths function currently only maps layers along the direction the path is created with - and I'm just now seeing that the Mirror X/Y options haven't been included in how it uses a layer either. I'll make sure v1.61b includes the ability to flip the mapping direction on there. I think just an option next to the X/Y Axis mapping direction to flip it would be good. I thought that copying to a raster-layer while the text has Mirror X/Y enabled would create a layer that's 180 flipped and you could use that but that's not the case either. Looks like an impossibility with v1.60b. Dang!

Thanks for catching that one. I'm just working on finishing up a few things and aim to have v1.61b out during the weekend.

 - Charlie

(1 edit)

Hi Joe,

Yeah, for now you just have to make a circle raster-layer to mask the canvas. Super early on before the first release there was a plan to support cylindrical canvas shapes but so much has been built onto everything since then that I'm thinking it's just going to stay the way it is with the canvas being a rectangular shape. After this next release of v1.61b soon the focus will be on the new content library system where users can add content from an online public library where users can share shapes and designs as paths-layers and raster-layers. There will be a base library of shapes like squares, rectangles, circles, stars, arrows, etc... which will make it easy to add these things to a project for whatever purpose, including masking off a canvas for a round project.

To put text on a curve you would create a paths-layer, draw out the curve you want - I prefer to use the curve as the centerline for the text, but you can draw a curve and have it be for the bottom or top of the text. Then set the paths-layer with the curve you want to use as the layer beneath the text-layer you want to conform to it by re-ordering the layers within the canvas layers list. While the text-layer is selected you then use the Text Along Paths function, under Layer Actions on the left side of the screen.

A pretty thorough explanation of how to use the Text/Raster Along Path(s) function can be seen in the PixelCNC Tutorial #03 video here: 

(EDIT: The Along Paths function explanation begins at the 13:00 minute mark)

Let me know if you have any other questions about the Along Paths function :)

 - Charlie

It's had people come and go over the years. I think once I do a real advertisement push (which I haven't done at all yet) then it will be really popping, though by that point I plan to have a whole different forum setup just for the new site. :)

The Tool Library was the product of someone requesting a way to re-use tool definitions in the first place. A lot of changes and new features are the result of user feedback, the more the merrier! I can't promise that every idea or suggestion will make it into PixelCNC but users will have ideas for things I never would've considered - and there's a lot of value to be had from that.

I'll try to add in the ability to directly choose tools for an operation from the library dialog for the next update. Then you will always be able to go back to the Project Tools mode and edit the tool definition if need be, or otherwise use the Project Tools mode to populate the library and update definitions the way it is now.

 - Charlie

Hi Joe,

The Project Tools list is a separate thing from the Tool Library so that if the project is loaded on another computer running PixelCNC the correct tool definitions are present, without requiring a an identical tool library. The library can be re-arranged to change which tools are in your top 10. Would you like it if the Load Library to List showed the library and let you apply sorting to determine which tools are loaded? The main reason PixelCNC limits a project to ten tool definitions is because there's also a limit of 10 operations per project which means the project couldn't use more than 10 tools.

Both limits may change in the future but it will require a bit of a revamp of the whole project file format, which isn't out of the question but not on the near-term list of things to do.

I think a good idea would be to instead allow selecting tools directly from the Tool Library for an operation, and have it automatically place it in the project's tool list where there's an empty tool index, or an index that's not being used by any operations, if it hasn't already been added to the Project Tools list already.

Let me know what you think :)

 - Charlie

Hi Joe,

The canvas and layers default to having their Z-fill set to the bottom, and then layer blend modes default to Maximum. This makes it easy to fill up the canvas with content for relief/emboss style carving projects. For V-carvings and engravings things need to be reversed, Z-Fills raised to the top of the canvas/layers, the layers inverted, and blend mode set to minimum. I've been thinking about how to make it easier to get from one project style to the other without requiring the user to do so many steps. Maybe when they click "New Project" from the File menu it prompts the user what style project they want to make to establish what the defaults for the canvas and layers should be. It's something I'm still weighing options about.

Keep me posted!

 - Charlie

It sounds like you had some properties that were non-default on your layers that were interfering, but if you have default parameters on your layers Z-fill and invert then it's the quick and easy way to create a canvas where the text are pockets instead of islands when creating a new project from scratch. I'd suggest trying it again and make sure everything is set properly because it's important to have an understanding how/why things work the way they do.

  • Canvas Z-Fill to top of canvas
  • Layer's Z-Fill to bottom (default for new layers)
  • Layer's Invert disabled (default for new layers)
  • Layer's Remove Bottom disabled (default for new layers)
  • Layer's Blend mode set to Subtractive

The text-layers are "white on black" for their heightmaps and all that needs to happen is they are subtractively combined with a canvas that has a Z-fill to the top of the canvas. You could also use the Difference blending mode but it can be a little less intuitive when manipulating layers with different Z origins and Z sizes, but it will be functionally the same if your canvas Z-fill is to the top of your canvas and your layers occupy the full depth or height of your canvas (Z origin is at bottom of canvas and Z size is same as canvas).

I'm wrapping up a fix and updating the User Guide and aim to have v1.58b out by the end of the day :)

 - Charlie

Hi Joe,

You need to change how your layers are blending together for the medial-axis carve. Just change your canvas' Z-Fill in the Canvas Properties to the top of the canvas and then change the blend mode for all of your text-layers from the default "Maximum" to "Subtractive". Everything is a height value and it's mathematically adding all of the layers up using the chosen blend mode for each layer.

As for vertical spacing: I have been trying to figure a painless way to integrate multi-line text editing in there but there are some obstacles to overcome but that's been the plan for now, so that you don't need to use multiple text-layers for multi-line text. I'll keep working on that after the new update goes out soon :)

 - Charlie

Hi Ravenclaw,

You can tell PixelCNC to create new projects with metric units under the Config menu in CNC/CAM Settings, toward the top. It will not change an existing/open project from one units to the other and only affects what new projects will be created with :)

 - Charlie

I'd like to see that SVG if you don't mind shooting it over at support@deftware.org

The internal rasterizer that takes an SVG and generates a raster-layer from it might be doing something that we can change, or at least look out for when parsing and rasterizing the vector image.

I'm curious how the Shapes From Paths differs from the raster-layer when directly creating one from the SVG file.

Feel free to send over the SVG and I can take a look and let you know what the situation is with it :)

 - Charlie

Hi Joe,

The medial-axis carve will only cut as deep as the flute length of a V-bit, and only as deep as the corner radius of a ballnose cutter.

Make sure your canvas Z size is deep enough to accommodate the depth of the cuts that are needed - along with the layer's Z size, unless you modify your contour Z to stay within the layer.

For example:


The V-bit is a 90deg 1/2" diameter and has a flute length of 0.25", so that's as deep as it will go. The canvas + layer Z size is 0.25" to accommodate the full flute length of the V-bit.

Hope that helps!

 - Charlie

Yes the price will be going up to $250 once the beta version is released on the new site. Existing users always receive updates free of charge so the best time to get your copy is ASAP if you want to save $30.

You will receive a product key from the new site once I port the latest customers over just before the launch, so keep an eye out for your key in the near future if you do purchase PixelCNC from the current website.

Thanks for the offer to help with the web side of things, I'll keep you in mind ;)

 - Charlie

Hi ClarkJeff,

Glad to hear PixelCNC looks like it's the tool for the type of job you're aiming to be able to do. It just so happens that today I've been working on getting the first beta version all packaged up for release and the new website launched. I was hoping to get everything up today but ran into a few snags so tomorrow is looking like the more realistic possibility. The unforeseen snags always seem to be popping up though so it wouldn't be out of the realm of possibility for the beta launch to take another two or even three days. Most of the time that's passed since the last update went out in August has been spent on getting the new website setup to finally move off of itch.io. After that's done there will be updates at a more regular interval again :)

 - Charlie

Hi Joe,

I'm having a hard time understanding what you're trying to explain. The G-code export isn't affected by the canvas dimensions, not directly. The canvas dimensions only affect the size of the area that toolpaths can be generated within. The canvas origin affects where the machine zero will be expected to be by G-code that's exported for toolpaths - that's the only thing that directly affects where G-code coordinates are output relative to.

 - Charlie

I'd like to see how that goes!

Hi Joe,

Yes, the maximum depth of an operation will only be able to go as deep as the canvas' Z size. I see what you're saying, you're effectively modeling the workpiece in your canvas to accommodate the cut-out. If you're not doing a cut-out (e.g. just engraving or v-carving into a workpiece that's already the shape it needs to be) then it's a good idea to set your canvas Z size only to the deepest you need your cuts to go. If you need them to go through the workpiece then set it as thick as that at least, if not a little more as room for error to make sure it cuts all the way through :)

 - Charlie

For anyone who comes across this thread in the future, Joe was running into a bug that exists in v1.53a that prevented PixelCNC from showing an error if a toolpath fails to generate. This was since fixed for the upcoming v1.55b release. The issue was that he was not setting a Contour Z that intersected the contents of his canvas, which occupy only a section of the full canvas Z size being used. It's a good idea to only make your canvas Z size as thick as you want your deepest cuts to be and keep your canvas contents ranging the full thickness of the canvas, at least in most situations, and not leaving a portion of the bottom section of the canvas solid or a large portion of the top of the canvas empty, particularly when using operations that employ a Contour Z level.


Here's a GIF showing how the Contour Z level affects the toolpaths that are generated by the Profile Milling operation. The Pocket Milling and Medial-Axis Carving operations also rely on the user specifying a waterline contour level for PixelCNC to trace for generating toolpaths from. If the contouring Z plane is set lower or higher than the contents of the canvas then no contours will be produced and no toolpaths generated. Something for everyone to keep in mind and be aware of :)

 - Charlie

Hi Joe,

Could you email a log file that contains the stall to support@deftware.org? Also, if you could paste a screenshot of your profile milling operation's parameters here - or to the email, I'd like to take a look at that as well if you don't mind.

 - Charlie

Hi Joe,

I did some experiments to try to get the Profile Milling operation to stall out. I'm sure it's just a parameter that's set to something it's not happy with. I am able to cause it to stall out when Contour Z is set to the bottom of the canvas, 0%, which technically shouldn't produce any contours and error out. I'm not sure what I changed in v1.55b but it's not an issue on there - it just generates a blank toolpath and shows an error about it, but v1.53a definitely gets stuck calculating when contour Z isn't set to somewhere between the top/bottom of the canvas volume.

It's important that the operations which require the user set a contouring Z plane have it set to something that does produce a contour which includes the Profile Milling, Pocket Milling, and Medial-Axis Carving operations, otherwise they will either fail to generate a toolpath due to not having any contours at the set Z-plane or it can generate something undesirable.

 - Charlie

Oh,  I almost forgot: you could also try using the Horizontal Milling's finishing feature - set the Stepover to zero and your Cut Depth to a small increment, and then your Min Finishing Angle to ~60 degrees or so so that it leaves low grades alone and focuses on more vertical wall areas. v1.53a does however generate cuts around the inside walls of the canvas, which are not useful with projects like this, but they can be disabled in the upcoming beta release that should only take another week or two tops. I think this is what you're looking for (except the cuts that it produces around the edges). For now I'd suggest using the largest Cut Depth you can get away with to reduce the time wasted by the inside wall cuts v1.53a generates.

 - Charlie

Hi Joe,

I think the best thing is to use a tapered cutter and use a profile milling to cleanup the text edge - making sure to not cut down into the background.

When you say "like a V-bit profile" do you mean a draft angle on the text? Or just a chamfered edge on the top? You should be able to use the profiling operation on there to get a chamfered edge pretty easily. The only issues I've fixed since v1.53a with the profile milling operation are when a Cut Width is used and duplicate cuts can be generated as well as the tabbing functionality that wasn't working right with metric projects. You can also use the Min Depth parameter to ensure that your parallel roughing/finishing operation(s) only cut below where you want a chamfer. Set it to just down to the top of your background layer, a tad above it perhaps, as long as it's below where you want your clean text edge to be. Then come in with a tapered cutter or v-bit and profile the text deep enough and at an offset that produces the edge you're looking for.

Let me know how it goes!

 - Charlie

Hi Joe,

Thanks for the feedback. I was thinking something similar - where you could define layer "groups" that act like their own separate canvases and then for each operation you would specify which layer group to use to generate toolpaths from rather than just using the canvas in its state at the moment when you calculate the operation's toolpath. A layer would be able to belong to more than one group, etc.. It's something I've been kicking around and will keep it in mind :)

 - Charlie

Hi Joe,

That's great stuff! Thanks for sharing. Glad to hear the Adjust Levels function was useful on the horse raster-layer. Let me know if there's anything you'd like to figure out how to do to design more stuff. I'm all ears ;)

 - Charlie

Oh, and the raster-layer height, or Z size, is just the distance between the bottom and top planes of the raster-layer. It does not include the Z origin of the layer. To calculate the height of a carve, assuming your canvas Z size is identical to your workpiece thickness, you should be able to just add the layer's Z origin to its Z size to get the Z of the top plane of the layer, which is equal to the distance from the bottom of the canvas to the top of the layer.

- Charlie

Hi Joe,

PixelCNC automatically stretches the contrast of an image to range from absolute black to full white to ensure that the raster-layer's contents actually occupy the Z area from the bottom of the layer to the top of the layer, rather than just a section of that range.

After that the only things left to determine how deep cuts will go is the canvas Z size and the layer's Z origin and Z size too. There's also the issue of a cutter not being small enough to fit into narrow areas. So for instance if I load this image into PixelCNC:

Canvas is one inch thick and my layer is set to an origin of 0.25" and a thickness of 0.5" this is the result:


For just the area of the raster-layer itself (ignoring the outer blank canvas margin that I could've used a Z-fill on but wanted to make the image clearer) the shallowest cuts will be 0.25" below the top of the canvas and the deepest cuts will be 0.75" below the top of the canvas, particularly the area around the skull where the cutter will be at max depth.

The only thing that would otherwise prevent cuts from actually reaching down to the bottom of the raster-layer is if your deepest parts are narrower than the cutter can actually reach, something like this:


In this image most of the shape is too narrow to accommodate the 1/4" cutter, except for a few spots on the left, preventing it from actually cutting down to the bottom of the raster-layer, which in this example is the same thickness as the canvas (0.25") and has a layer Z origin of zero so that it's resting on the bottom of the canvas.

Also, if you're using a Leave Stock amount that's going to offset the carve in 3D, not just horizontally, so if you have a 0.05" leave stock on a 0.25" canvas the deepest that cuts will be able to go is 0.2" below the top of the canvas surface.

Hope this helps. Let me know if I'm missing something - and maybe share a screenshot too if this doesn't help you figure it out.

 - Charlie

After doing some more digging it appears that the reliance on vcomp140.dll is entirely because of Holocraft's use of Freeimage library just for loading some images. Holocraft itself does not have this dependency which is why v2.2 works but does not have the texture based optic generation mode working yet. I could re-work the texture optic code to use internal image loading code, or a different library, that does not have the vcomp140.dll dependency and fix the issue. I'm not a fan of requiring users to install things they shouldn't need like the vcredist.exe and if I knew that it was a thing before I used Freeimage.dll I would've not used it at all!

I'm just about to finish launching the new website and am very busy with that but I'll figure something out for v2.4 to get off the vcomp140.dll dependency. I am very sorry for the inconvenience :P Feel free to share any holograms on this forum that you manage to create :)

 - Charlie

Oh no! Running vcredist installation as administrator might work. Give it a shot and let me know how it goes.

 - Charlie

Try downloading and installing vc_redist.x64.exe from here: https://www.microsoft.com/en-ca/download/details.aspx?id=48145

Let me know if that fixes the issue for you.

 - Charlie

Hi Joe,

The canvas is really just the volume within which cutpaths are generated within, which can be larger or smaller than your actual workpiece. You can think of it as just the size of your workpiece if that workflow is easiest for you but it doesn't have to be the size of the workpiece as long as you are aware of how it's just a volume of cuts and how that translates to the workpiece based on where you set your machine origin on both the canvas and on your workpiece.

 - Charlie

Hi Joe,

The canvas allows you to use a blank slate as your base - so that you can composite a project from scratch without requiring an image or model that comes from somewhere else that serves as most of the project's design. e.g. a project made of a bunch of individual smaller parts and some text rather than just one big image that covers the whole thing.

For instance, the signs my wife designed that we make for sale on Etsy are just an assembly of multiple parts she found and bought to use, different ornate pieces that she chose to use and where to use them. I took that idea and incorporated it into PixelCNC so that you could effectively do the exact same thing without using an external image editing program to do it.

You don't have to design projects in PixelCNC, and just load in a single image or a single model etc... but the option is there for users to streamline their workflow by eliminating the need for multiple tools ;)

 - Charlie