0
$\begingroup$

I want to add 2 separate mesh cubes to each face of an octagon to represent a window and panel beneath the window. I considered adding the meshes to one face of the octagon, selecting the octagon and two new meshes and rotating all 45 degrees on the Z axis and then adding 2 more mesh cubes and rotate again until all 8 sides have been 'populated' with the two mesh cubes. Is there an easier method such as selecting all 8 faces of the octagon and then adding the 2 new meshes which populates every face?

$\endgroup$

2 Answers 2

3
$\begingroup$

The best for this kind of object is probably to work with an Array modifier:

Create your octagonal cylinder, only keep one face, create an empty at the same location as the origin of the cylinder:

enter image description here

Give your cylinder an Array modifier, Count > 8, enable Object Offset, choose the empty as Object, rotate the empty 45° on Z:

enter image description here

Now whatever you'll do on your object will be replicated x8:

enter image description here

$\endgroup$
2
  • $\begingroup$ John, you should consider accepting an answer, or if you've another issue please ask in the comments part of the answer(s). $\endgroup$
    – lemon
    May 6, 2023 at 12:30
  • $\begingroup$ How do I accept both answers as they both have their merits and I could use either? I also did ask a further question (below). $\endgroup$ May 7, 2023 at 2:07
2
$\begingroup$

The solution from @moonboots is probably the best to do it like that right from the start. Another possible way when you already have the octagon and two cubes representing the window and panel:

  1. Switch the Transform Pivot Point to 3D Cursor. In your example file this enough, because the origin (and center) of the octagon as well as the cursor are at the world's center. If the octagon is placed somewhere else, select it, then Shift+S > Cursor to Selected.

    change pivot point

  2. Select both cubes which you want to place around the octagon and go into top view by pressing Numpad 7.

    Duplicate them as "linked duplicates" by using Alt+D (instead of normal duplicates with Shift+D).

    Do not yet confirm the duplication but instead press R to start rotating the duplicate and enter 45 to rotate by 45°, then confirm the action with LMB or Return.

    linked duplicate and rotate

  3. Since you did the duplication and rotation in a single action, you can now simply repeat it by pressing Shift+R 6 times until you have the cubes on all 8 sides.

    repeat last action

  4. Because you have made linked duplicates of the cubes, you can now change their meshes in Edit Mode and the changes will be applied to all duplicates as well since they share the same object data.

    shared object data

    And this also applies for changing the materials on one of the duplicates, the others will get the same materials too.

    shared material data

$\endgroup$
11
  • 1
    $\begingroup$ Thanks moonboots and Gordon. Both solutions are great. I think I will go with Gordon's solution but may start again as my octagon is 'indeveloped' and so I could start again. Maybe I will try each one for the exercises and to learn more. I had NO idea that an array could be used as I tried but didn't know about " enable Object Offset, choose the empty as Object". BTW I think it is time I contributed financially here. $\endgroup$ May 4, 2023 at 22:03
  • $\begingroup$ @JohnArnold You should definitely try moonboots' solution as well, even if only for exercise, because with the Object Offset you can really do interesting things. An empty is always good as the target object since it will not be rendered, but you can use others as well. The great thing is, it is not only the rotation per count which can be set by this, also the translation and scale, for example to have the duplicates getting smaller or larger per step. $\endgroup$ May 5, 2023 at 6:52
  • 1
    $\begingroup$ @JohnArnold And it does not matter if you transform the target object (the empty) or the arrayed object or both, the offset per count will always be calculated as (target object - arrayed object) for location and rotation and (target object / arrayed object) for scaling. $\endgroup$ May 5, 2023 at 6:54
  • 1
    $\begingroup$ @JohnArnold An Empty is not a mesh object like a cube. In the Add menu which you get with Shift+A you have a lot of different object types like Mesh, Curve, Camera, Light etc., and one of these object types is Empty, with different shapes. For example Plain Axes, Sphere, Cube and more but the shape is just the visual appearance to indicate where the empty is, it has no effect on the array method or anything, it has no mesh or geometry of any kind - it is "empty" and only holds location, rotation and scale information in a point in space. It does not get rendered either. $\endgroup$ May 6, 2023 at 0:51
  • 1
    $\begingroup$ Yes a comment some time later but just to advise I had need to add a post complete with light fitting at each of the 4 corners of a (new) octagonal deck and used your method which worked brilliantly. I also needed to add a metal framed glass balustrade to the 8 sides of the same octagon deck and your method once again was a 'breeze' to use. Thanks again. $\endgroup$ Jun 9, 2023 at 22:55

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .