WRONG. SketchUp purposely did NOT implement CAD-like geometric layers.
Did you not read what I wrote above ?
Did you not read the SketchUp Online User Guide’s page on it’s layers (ie, Controlling Visibility with Layers,) that contains a huge warning box at the top, especially for users coming from the world of geometric CAD layers ?
But someone, in the SketchUp development team, had the “brilliant” idea that the SketchUp interface could lie to the user and pretend like it has geometric layers, and none would be the wiser. Ie, the following dialog box is a complete LIE, from the window caption on down. Nothing is ever moved out of or into any geometric collection. All that is ever done, is to change “layer” property attributes that point at a SketchUp layer object (which are not layers in any geometric sense.)
Unfortunately, this has proven to have been an unwise decision. It causes immense confusion especially for users coming from CAD, (and also 2D image editing,) or those that still need a workflow that moves back and forth between SKP and CAD.
Thanks for everyone’s help. Layers actually do work as I would expect for my drawing needs/style. I normally draw on layer zero and group everything as I design. From what I understand the main issue with layers is if you dont have grouped objects you can manipulate objects in a hidden layer that are “stuck” to the object you are editing in another layer. That is not something I really run into as everything is grouped.
In my case where I was getting confused was this.
Here is a cabinet. As you can see its on the correct layer.
Your wording sounds to me like you may still have some confusion about SU’s layers.
In particular, when entities are nested inside a group or component, their visibility is governed by an outside to inside search order over their associated layers..
So, for example, if you have a cabinet group associated with the “cabinets” layer with nested door components associated with the “doors” layer:
when the cabinets layer is marked hidden, all of the cabinet, including the doors will be hidden, regardless of the visibility setting of the doors layer.SU stops at the outermost container associated with a hidden layer and doesn’t even look at the layers for the nested contents.
when the cabinets layer is marked visible and the doors layer is marked hidden, all of the cabinet except the doors will be displayed. Contents nested inside the doors won’t be visible regardless of what layer they associate with.
There is no reason why nested groups or components need to associate with the same layer as their parent. For nested groups or components there can be legitimate semantic reasons to associate nested groups with a different layer. For example, you might want to show the cabinet carcass interior with the doors out of the way. Or you might want two views, one with the doors open and another with them closed. Associating nested groups with various layers makes these things possible.
The reason that nested primitive edges and faces should be kept associated with layer0 is that choosing different layers does not isolate them from interaction with other primitives. Fiercely confusing things can happen when primitives interact with other ones that you can’t see, the worst case possibly being when a face ends up associated with a different layer than its edges.
Finally, when you exploded the cabinet you encountered a “feature” that many of us consider to be a bug (or at least a bad design decision): the explode operation re-associates all of a group or component’s nested contents with the layer from the container. The most serious aspect making this a bug is that it affects primitive edges and faces in the group, not just nested groups or components. Thus, it causes primitives to become associated with layers other than layer0. But even if primitives were excluded, explode’s relayering risks violating model semantics. Did exploding a cabinet cause its doors to become cabinets? Certainly not in a literal sense, but maybe what you wanted if you are using the cabinets layer to determine visibility of all of the cabinets in a kitchen design separately from the walls, floor, and appliances.
I understand how the layers nest. That works in our favor. Would be a hassle if you had to shut down the other layers within each time you wanted to turn something off.
But my original issue really revolved around having a ridiculous amount of layers after inserting items from the 3D warehouse. I have a house drawing with layers for framing, doors, trim, drywall, floor sheeting, carpet, siding, exterior trim, appliances, etc. Probably 20 or 30 layers that I do want.
After inserting 3D warehouse items I was picking up dozens of detail layers within that component. I am not building the cabinets and dont care about drawer slides, bumpers, hinges, etc. So I want all of those things on a layer called kitchen cabinet for no other reason than I dont want to scroll through 100 layers.
I was struggling getting all those things to the correct layer. But it turned out that the sub groups showing up as layer 0 when selected was confusing me. Thanks for detailed response.
This is a not uncommon problem with items imported from the 3dWarehouse (or from elsewhere): Layers (usually unwanted) come with them!
This is why, when I’m about to use a model from the 3dW, I’ll bring it into a new, blank file to take a closer look before I use it in a model. Generally, if the imported model has layers other than layer0, I’ll delete all other layers (choosing the option to reassign geometry to layer0), save the model locally as a component, then use my local copy in my model.
As an infrequent contributor to the 3dW, I make it a point to leave everything in layer0 with rare exceptions:
Text, Guidelines, and Dimensions: Here, I’ll put them in their own layer(s), but I try to make the layer names ones that nobody else uses (sjd_text, sjd_guides, sjd_dimensions).
I have at least one model in the warehouse where I have “guide” geometry (specifically a bounding box for the common maximum dimensions for Tiny Houses on Wheels which, if exceeded, require either a trip permit and/or a commercial driver’s license to legally tow). Since this represents a building constraint and NOT actual geometry, it is critical to be able to turn visibility on/off - which is much easier to do with a layer than with hide/unhide. Here, my layer name will be something like “sjd_bounding_box_towing”
I’m using the component in the warehouse to communicate a concept - not an actual model! As an example, I did this to illustrate a concept of “negative space” in a component which I’d like to see added to SketchUp. (3D Warehouse – warning! Somehow the warehouse preview got a viewpoint inside the model! If you preview with the viewer in the warehouse, keep zooming out until you see it’s full extent!)
By making the layer names ones that nobody else will likely use, I make it easier for the end user to reassign them to a layer of THEIR choice, turn their visibility off, or just delete them.
For me the stuff is just to add vision and not that important. Its not worth drawing a refrigerator (to me) so plopping something in seemed easy enough. If its a detailed part it can bring a lot of baggage I dont need.
I did this in my work shop and ended up with a 90 MB workshop file that is hard to work with !
There have been many feature requests for SketchUp to implement a hierarchical layers system and corresponding expand/collapse capabilities in the layers window. That would make it much easier to deal with models having a large number of layers and to organize layers for better semantics. So far Trimble has not acted on any of these requests. The closest thing is the Layers Panel extension (available from the Extension Warehouse). But be forewarned: the author found it extremely difficult to make that extension work correctly and eventually abandoned support due to too many remaining issues. If you install it, it may work fine but if you have issues you are on your own.
To paraphrase a Winston Churchill quote, “SketchUp is the worst 3D modelling program there is, except for all the other 3D modelling programs.”
After many years of occasional SketchUp use for simple to moderately complex home design, construction, and woodworking projects, spaced just far enough apart so I forget most of the things I had learned in the last project, there have been many times when I have been sorely tempted to just abandon the entire effort for a pencil and paper. Although it can be breathtakingly fun and simple to use for some functions (once you know how), in my opinion, SketchUp has a terrible implementation of the ‘Layers’ concept compared to other 2D and 3D programs I have used.
Like many others here, I found out the hard way just how layers work (and don’t work) in SketchUp. It is so different from the standard hierarchical models used in Illustrator, CorelDraw, and it seems most other graphics programs, that the developers probably should have come up with a different name for it. I like DaveR’s suggestion of ‘cloaking’.
In any list of ‘Things you really need to understand before using SketchUp’, the layers implementation should be near the top. Thanks to all in this group for taking the time to help the rest of us with understanding these concepts!
Layers in SketchUp are in my experience almost identical to layers in CAD applications like AutoCad. The difference is that edges in SketchUp interact, whereas in traditional CAD things stay separate regardless of layers. Then, this interaction thing is quite common in BIM applications where, for instance, walls form connections, again, irrespective whether the application has layers or not.
They are not identical, and cannot be identical, because in SketchUp they are not geometric collections.
I think you could insert the word “act”, as in “act almost identical”, and that would be a valid subjective viewpoint (even though I and others, subjectively disagree in a most fanatical manner.)
I don’t know what you mean by this. A layer in AutoCad is just an attribute of an object. You can see it, for instance, by taking a look at the contents of a DXF file. The objects “belonging” to a layer “behave” just like objects belonging to a different one. There is no “deeper understanding” between them.
Seems to me the key question is whether there is any way you can access all of the objects associated with a given layer via the layer itself vs by looking at every object in the model and testing what layer it references. That is, does a reverse path from the layer to the objects exist, or only the forward path from the objects to the layer? In SketchUp there is only the forward path; layers have no record of what objects are using them. I’m not an AutoCAD user so I don’t know about it’s layers. @Anssi?
I this sense AutoCad is identical. Of course, just like in SketchUp, the database of objects can be searched in different ways. In SketchUp, you haven’t got the option, without a plugin, to right-click a layer in the Layers tray and get an option to select all objects on that layer, or select an object and get SketchUp to select all objects on the same layer, but until AutoCad got the Quick Select window some time ago (OK, maybe 12 years or so) it was the same, you had to write an AutoLisp macro of your own (I still sometimes use mine, as it has less mouse clicks).
All I know is that before I understood the “Everything gets drawn on Layer 0” rule, I would start losing geometry. I would pick the layer I wanted the object to be on (obviously wrong), draw it, hide it for some reason or another and then find it completely lost. Other drawing instability was also creeping in. This was due to the aforementioned using layers as in CorelDraw or Illustrator in which I had much more experience. After Dave’s advice, I finally got it and do all the drawing on Layer 0, group or make a component upon drawing the first face, and then after getting it how I want it, place it on a “Cloaking Layer” so I can selectively get it out of the way with using “hide or unhide”, but even that function is much more stable when placing the object properly in the first place. This was an essential discussion.
there are two other sketchup extensions that I use very often: the “unhide all entities” plugin and the “hide/unhide all edges” plugin. They make an excellent combination. Both have always worked in all versions, including Sketchup 2017. Problem with hiding entities in a group or component, is that you cannot unhide them later, unless you are back inside the exact level where you hid them. These plugins take care of that.
Danrathbun you are just making things confusing. Layers is a good enough term as the geometry is placed into it own virtual space. Layers of 3D space. I can use them to stack geometry just like photoshop. It’s just that no one has point this out.
The initial problem was that the guy had groups inside of group and had some geometry assigned to a layer first then grouped it and assigned it to other layer then was wondering why things where disappearing.