Are Groups or Sketchup-like components feasible in Blender?

Apart from testing it myself, I've seen a few posts here and there, including from Sketchup users like me, sort of circle around this topic but never ask this question directly.

How can I overcome these problems in DupliGroups or Collection Instances?

1. moving its origin seems to require moving to World origin (and using up a layer for clarity) <=> linked meshes have their own local origin which I can move data around in Edit Mode (easy enough)

2. It is impractical to link up DupliGroup data to previously created meshes because the origin mismatch as above, and the mesh data that remains in it and needs to be deleted somehow

3. Linked meshes don't have the above two problems (can be 'blocked in' and then detailed up all at once) but I can't add objects to them, only faces. Say I'd like to add handles as linked meshes, because handles are used elsewhere in the model too.

How feasible would it be to make a linked object type with deeper hierarchy?

Say an object that would look at its children and simply make every other instance have the same children. It would also mean dragging and dropping in outliner would be the simplest way to manage it by the looks of it.

• I see, I really should have asked two questions since one is a use question while the other a programming question. Feb 20 '16 at 11:00

The Dupligroups or Collection Instance workflow in Blender are indeed a bit unorthodox, and somewhat different from other applications (like so many other things in Blender), but not any less capable.

TL,DR

The gist of it is that in Blender group definition and group usage are two separate and distinct procedures all together. This means you can't directly edit an instance of a group/collection, nor can you generally define a group directly from its constituting parts at target location.

Explanation

Dupligroups or (Collection Instances for 2.8+) are a way of creating bundles of independent objects that are grouped together and can then be deployed as a single object or stored as a library for later reuse. In most ways similar to AutoCAD Blocks, Sketchup Components, or 3DsMax Groups.

Unlike most other programs however, group definition and group use are completely separate in Blender, that means you define a group with a set of included objects but they aren't 'converted' into an instance of that group, nor is a group directly created from them at present location. They always remain as a separate editable "originals" you can go back to to modify, but never directly use nor actively participate in your actual scene.

In much the same way an instance of that group is generally an independent object chosen specifically as duplicator that generally has no other geometric data or geometry associated with. The group/collection instance is also not editable, merely a dummy used to mirror what was defined above.

Suggested Workflow

1. In a work file (or even a separate 'library' file if you wish to reuse them later or in different files or across projects) I usually create a new separate scene exclusively for "group definition" where I create your "group originals". In 2.8+ with the advent of Collections, you can simply create a separate "master collection" (called "Instances" for example) inside which you will place all your "originals" and define your groups or components. In your particular case that would be where you would place the window frames.

1. Those objects can then be grouped (with Ctrl+G for 2.7# or moved into individual sub-collections with M) and they can belong to several distinct groups/collections at once even (say one same window with a handle other with hinges and all possible combinations).

2. Each group/collection has by default it's own origin at the scene's center (coordinate $$0,0,0$$) but this can be adjusted to accommodate several group definitions in the same scene but keep their individual origins in a convenient place relative to their participating objects. If you go to the Properties Window > Object Tab > Groups (Collections for 2.8+) you can set a different origin for each group (use the option Set offset from Cursor for easier adjustment).

1. You can also create nested groups, or groups instances inside groups if you wish to have several modular reusable components that are repeated and combined often in different ways.

Group instances are generally used from an Empty type of object by default that doesn't have any mesh data or geometry of it's own. Only exception is if you want to create a non renderable dummy geometry as helper object for snapping or correctly placing the dupligroup in a scene. For 2.8 this is mandatory, instancing from other object types has been deprecated.

1. Select all newly added objects you want to add to an existing group, then Shit-select an object already in the desired group, making sure both remain selected, but the object already in the group remains the active one.
2. Then press Ctrl + L > Groups to match the groups from active to all selected objects.

By keeping group definition and group use separate you gain some and you loose some.

• You can't edit instances in place.

• You can't really add an object to a group directly through it's instance, you always have to go back to the original and do it there; changes propagate automatically to all instances.

• You do avoid trouble with object offsets, since they were safely preserved and well defined at source.

• Editing in cluttered scenes can be made easier by separating the two actions.

• Same objects can participate in any number of groups/collections saving some resources.

• Creating groups with similar features or variations is made more modular and less repetitive.

• Thanks! 1) How do you deal with geometry data after using a "dummy geometry for snapping"? Just leave it in but set to not renderable? 2) How do you nest dupligroups? I tried selecting a group in 3dview along with a new single object, then Ctrl+G, but that gives me just another non-hierarchical group (so the new group is a direct 'parent' of all of the items, not nested) Feb 20 '16 at 11:13
• Aha! Re. nesting: I was selecting the green outlined objects, not a group instance; and it seems in order to do it, you have to instantiate the group that's going to be nested -> add objects -> group new objects with the instance of old group. Therefore, you cannot make a nested group working just on master objects - correct? This means there are going to be duplicates (masters and group instances) in the location where you are preparing your nested group - correct? Feb 20 '16 at 11:39
• For "dummy geometry for snapping" I generally like to model it regularly then select all press X for delete and choose "Faces only" option that will leave edges and vertex to snap to but no actual renderable geometry. You can also extrude single vertex that will create a "edges-only" wireframe-like mesh for snapping purposes. Feb 20 '16 at 20:08
• For true nested groups you are probably better making them out of group instances instead of original objects, (although both methods can have advantages of its own) since updating the child-group masters will also upgrade them inside all "nested group" instances propagating changes automatically. You can break any group instance into it's sub objects at any time anyway by pressing Shift+Ctrl+A to "Make duplicates real" if you wish to break any relationship of groups Feb 20 '16 at 20:14
• Can you explain how you do the latter - a nested group without having to create an intermediate instance? I wasn't able to to it, and 1 step less in the process it always nice. Specifically I wasn't able to do it, because there is no way to select a group as one piece in the viewport, instead I appear to select the group's constituents individually and the resulting 'supergroup' is not nested at all. Cheers again! Feb 23 '16 at 9:08