Suggestion for improvement on Layers - Shared Components

When I posted this message A Practical example using the new Layers function - Box Creation! , I was using layers to help me organize and select the components of a piece that would be used to create separate toolpath files (like top of the lid, underside of the lid, bottom of the box). I found this to be a great use of layers and can really see the benefit of the feature. Hats off to @robgrz !

I’d like to suggest an improvement: Adding the ability to SHARE a component across multiple layers (as opposed to MOVE). The component would be defined only once, but could be SHARED with another layer. Therefore, changes to that component would be reflected in all Shared layers simultaneously, but the layer functions (particularly, SELECT) would work from any of the layers with which the component is shared.

Here’s the problem I’m trying to solve:

What I found, as I worked in the design, is that some layers needed to share components, such as the outside boundary of the box, and that both would be needed when laying out the toolpaths for the different parts. In order to make that happen in my design, I had to copy a few objects in place and then move them to a second layer.

The issue with this practice, is maintenance of the design file. Any changes made to the original/copied component in one layer will also need to be made to the complementary component of the other layer or the layers will get out of synch with each other. However, depending on how many of these there are, how long it’s been since you created the copy, and how good your memory is, you may or may not remember that there’s a copy in another layer. Additionally, your change will have to match exactly - and that’s not easy to do in two or more layers. Trying to edit the objects from multiple layers at the same time kind of defeats the purpose of the layers in the first place! Sharing a component between layers resolves the issue neatly.

Are there other solutions? I’m sure there are.

Is this something that might be considered?

Thanks.

  • Gary

If I were to describe this as “some objects are always on all layers”, it helps my understanding of how it might work. Almost like a template layer or similar onto which one can place objects that will then be more easily visible during design work/tool path creation. Editing such objects then meet the ask of ‘not duplicating them’ and thus keeping the design in control. Should a variation of one of these objects be needed or desirable, it can then be copied to a non-template layer.

@AndyC The issue is, I don’t want ALL components in all layers…because the whole point of the layers is to help organize your components visually - and to help in selecting components.

The idea here is that the components that show on a layer are only those that were created within the layer, moved to the layer, or SHARED with the layer.

I feel that this supports the purpose of the layers very well.

1 Like

@robgrz Hey Rob…quick question will help me formulate this request better:

With your implementation of the Layers, is the layer an attribute of the component (i.e., a single field value on each of the component records)
or
Is the Layer an object of its own, that contains pointers to the components that have been assigned to it (i.e., a collection of references to components that are owned elsewhere in the design)?

Thanks,

  • Gary

The way Vectric Vcarve Desktop (and other Vectric products) does that is that within a toolpath you can select different layers and associate them to that toolpath. You can also select different vectors, like open, closed, circles for the same reason.

Is that what you want?

@CrookedWoodTex I think that’s a very helpful feature (selecting different layers when creating a toolpath), but I don’t think t’s really the same thing.

The problem I’m trying to solve is that there are some elements of a design (I’ve been calling them components), that are logically part of more than one layer of a design. I’m trying to avoid making copies of that element because then you create the maintenance problem of having to keep the two copies in synch when you change size or shape of that element.

It happens that toolpath creation is the first reason I came across to have an element shared - but it’s not the only one. You might want it for reference in a design for another reason. I happened to organize my layers by elements for toolpaths, but your reasoning for using layers to organize your design may be different and will determine how you would use sharing, as well.

I’ve been using the example of the outline of a box…For example, let’s say shaped like a cat.


I would create at least two layers, one for the body of the box (it’s pocket, it’s shape), one for the text and shape of the lid.
In this case, the outer line (in red) is the boundary of the box.

The text of the box is obviously going to be on the layer for the top of the lid. I’m also going to want the boundary line. The body of the box is going to have the inner offset lines (so I can pocket the box), but it’s ALSO going to want the boundary line, so I can contour the outside and cut the bottom of the box.

Since both layers need that line, with current solution, I need to copy the boundary line from the first layer, and move it to the other layer. From that moment on, any modification of the box (size or shape) will require making that exact same change on both layers. Which is error-prone and time-consuming.

Rather, I’d like to create the outline of the box, perhaps in the layer for the bottom of the box - and then select it, go to the LID Layer and click on SHARE Selected Item with this layer. That would make the same physical element part of both the bottom and top layer…so you could select it, hide it, view it with commands from either layer - but you would never need to copy it…and obviously, any changes or modifications to the element would not need to be done multiple times.

If layers are causing objects to be unavailable between layers, then one option is not to use layers at all. Just use toolpaths organized into groups.

(edit: layers are designed to totally separate items. If you don’t need to totally separate items, don’t put them in layers)

@Gerry Hi Gerry! Toolpath creation is just one example. I have another project with three components that share a pattern of through holes. They have to align perfectly on each of the three components. I want to SHARE those three holes throughout my design, so that I can guarantee they are in the exact same location and spacing in all three components.

With the current solution, I ended up having to copy the c2d and resave under each component, only keeping the holes. I was then forced to maintain my design to avoid moving the holes in any of the components. If I had had layers, I would have created all three components on one c2d and kept each component on its own layer. The holes would be SHARED across all three components, guaranteeing their integrity wrt location and size.

That’s just another example…I’m sure, as we begin to use the layers capability (which is really cool), we’ll think of more uses.

Hey Gary :slight_smile:

If you put the shared holes on their own layer (called holes), doesn’t that sort of get you where you need to be?

(edit: layers aren’t components… they are really just another type of group)

I suppose it could, except I would constantly have to make the holes layer visible whenever I dealt with one of the layers that had holes. In effect, I become the integrator. The onus is on me. How onerous that becomes depends on how many of these kinds of things I have in my design. Those holes ARE part of the layer logically…I’m trying to mirror what the design really calls for.

If the Layers are thought of as “views” on the components, the share layer concept (or “view on this layer”) concept becomes clear.

I want to stress that I’m not trying to ask Rob to jump through hoops here. Depending on how Layers are coded, this is either a complex or simple thing to do. That’s why I asked the question above. If the layers are containers that hold references to elements, this is a simple solution that would improve the feature…if the layer is an attribute of the element (meaning, there is a field as part of the element definition where you can place one and only one layer name), then it’s a rewrite - and probably not worth doing.

Making the layers visible to show the view that you are trying to work on is what layers are for. The task you describe is the correct and normal way of using layers. The holes are not part of the layer. The are part of the layer that holds the holes.

I feel that’s debatable…but I absolutely see your point. I wouid argue that the outline of the box is part of both the top and bottom layers of a box…but I suppose you could say that “box outline” is a layer…meh?

In describing this feature, I think the request might be better named “VIEW ON THIS LAYER”…it’s the same thing, but the vernacular might be more appropriate. Again, it depends on how this is coded in CC…if the layer OWNS a design element, then I see where your organization might be better…if a layer CONTAINS a design element, then I would say it doesn’t.

In Vectric software, the focus is on the toolpath. The layer is either selected to be calculated with that toolpath or not.

The point here is that you can have whatever is appropriate for that toolpath on any layer that you want to select.

I don’t know much about CC, but in Vectric there are no “components” as there would be in a programming language. There are only vectors that are assigned to your choice of layers.

Its up to you how granulated you make your design. Of course, you could make every vector on a different layer or whole groups of vectors on a single layer.

Again, the focus is on the toolpath and getting it to cut what you want, with the tool that you want, etc. etc. etc.

Yeah…sorry about that. My vernacular comes from too many years as a software developer.

I share this past - 38 years in my case :slight_smile:

In general, if you have shared items, put them on a layer called “Shared” and keep it visible, and maybe lock it.

This actually makes things simpler. You don’t accidentally move a shared item that is on a different hidden layer. You don’t accidentally delete shared items since they aren’t actually on the layer.

Yeah…I like it. If a Share or View feature is not introduced, I’ll likely end up doing it the way you’re suggesting…and perhaps that’s even better…I’m open to trying it and seeing how it works…but I still think it would be a valuable feature