Dynamic "chevron" component. Dynamic panel made of diagonal planks

Hi, sketchup user for some years now, but fairly new with dynamic components.
I’m trying to make a dynamic panel, composed of various small planks, the planks are all copies of the same one, they vary in size (slightly) and number, according to the panel size itself. Now, if the planks are vertical (or horizontal), it’s an easy job, I mean, it took a lot to me to figure it out by myself, but yes, it requires just few attributes.

Here’s what I did:
panel.skp (48.1 KB)

But now I would like to do the same, but with diagonal planks instead.
There’re several problems I don’t know how to solve, I’m starting to think they’re unresolvable in Sketchup, actually.


  • ho to fill corners, where the copied planks are too long to fill? Can you dynamically resize copies? It doesn’t seem to be possible, so, if it isn’t, how can you work around the issue?
  • How to not loose inclination when the panel is stretched? I would like to always have the same degrees no matter what.
  • And how to have always a vertical or horizontal cut at the end of the planks? Can you make dynamic cuts? I look around and the answer on this one seems “no!”, but maybe…

As a context, I’m trying to do dynamic doors and windows, the windows being vertical, and the doors being diagonal. As for the windows I already made one, you can find it here. It is elaborate, but it does what it should do (everything is in Italian, 'cause I’m italian).
For the doors, instead, I would like to do something similar to this (but with nails, the more it looks medieval, the better):

It is possible, however the amount of work makes it impractical. I believe the best solution is to use a material with a hidden scale tile so that the material is not stretched.
This is a concept introduced by @TIG,

I took the “Modern Siding”, use the texture edit to set diagonal, did a reasonable attempt of taking a sample to make a unique material. Then applied it to a fixed swatch and the component. So creates a scale-able DC that retains the original scale. You could find a material more suited to your needs.

It has be noticed that this does not work predictably for DC internal copies, the scaling goes out of sync. So use for in components and their external copies (assures uniqueness).

tile test.skp (113.4 KB)

1 Like

Hi, thank you for the answer, that’s definitely an interesting trick, something I was looking for, actually.
You say it is possible, even though impractical, I would still like to know, even just for knowledge’ sake. Can you explain it to me? If you have the time.
Thank you.

Okay, will do about 30mins a day and see how it compares, so first the board or slat
looking at the worst case, the board needs to be divided in to seven parts, this is to account for the possible small returns.

the infills can be moved to opposite side when required

I normally make each part a “solid” and a group, groups when contained do behave provided they are unique, they have the advantage of not leaving a residue when out-shelled or exploded. The concept is to allow for this outer-shelling so that one can apply material without the patch quilt look, reduce the DC size and protect your property intelligence when sharing.

the model is made of simple known sizes, with in this case a known base cut of 50mm, and top cut of 60mm. No rotation, The object is at rest with no scale (size) changes, every part is in sync.
name all the groups with some care, open the attributes, then create the relationship formulas to match the grey values, do not force or change the shape.
Once you think you have it sorted, test it with a change in the parent, then go back to the rest position to fix or continuing editing. Although you could edit in a changed state, it is much safer to return to a rest position, then with experience can be more daring, but note when doing work on any child its best to have both its parent visible in the attribute and option dialog and avoid attaching rotation until absolutely required.
attached the stage I am at, half hour up, the first method using material was completed in that time, got lots more to do…
slat stage1.skp (42.3 KB)
some formulas worked out, but will need updating next time for each scenario

see you tomorrow

1 Like

Thank you, thank you! That’s a real piece of work.
I see you’re using a lot of function I never even considered, so I’m learning a lot of new things.

I have a couple of questions about infills’ behaviour, but I would wait, I suppose in the half an hour you dedicated to this (again, thank you), you weren’t able to sort a lot of things out. I would probably use (well, more try to) the “IF” function to dynamically change position, but maybe you have a better idea.

I also didn’t get this part:

Basically I don’t understand what do you mean when you say residue, how materials work in this case, and how this would protect your property intelligence. Please, feel free to redirect me to other conversations, you already doing so much for me.

And for the 4th time thank, and please, don’t feel obliged, do it if you want and do have the time, I would understand if you don’t.

When you create a component, then delete it (an instance) the definition is still retained in the file, so if you create a component of seven parts, each a component, then copy it say 20 times, then there is a redraw it will produce 140 unique components. This may be acceptable, but if that component is copied then the excess baggage starts to mount up. Whereas groups do not retain a definition in the model. Dynamic components, especially those that have internal copies, get large in file and memory use very quickly. So I recommend a technique that will simplify the component after use, that can be reinstated if further amendment required, which has the advantage when sharing a file of hiding some of your intellectual work, in that you share the simplified version rather than the master piece.
Continuing on, you correctly suggested the use of conditional statements to move the “infill”, have added a few more amendments to the slat, so able to use it at any pitch
Reasonably okay with this now, but may still amend to account for smaller slat corner pieces, this may require some placement of the bits that are not used, so they are swallowed up when outer-shelled.
The next stage is to plan (set out) the panel, this is done initially with guide lines, for reference whist we build, you may not require them, but helps to visualize what we need to do. So basically count the numbers before the change and after… so ends the stage 2 (half hour, not counting this text)
Material will applied to the parent, so after the outer-shell, should be in sync
slat stage2.skp (74.0 KB)


Had to reinsert the slat into the panel, so as not to scale the panel size, started the copies across top and down one side, bottom to figure next, Allow for some angle change, currently works 0.1 to 45 degs.
its getting more complicated. Notice how big the file size is becoming due to the internal copies. This is certainly a candidate for the simplification process. I would imagine it will be close to 1Mb in the finish with a size of 100kB after conversion…

slat stage3.skp (486.5 KB)


Oh, hi, I was answering. I’ll watch this new stage.
As always, many thanks.

Goodness, this is magic to me, really a next level, next to the next one, or something.
I did play a little with the angle myself, and I had already noticed that you can change it without much problem, when between a certain range.
As for now, I’m really curious how you would solve the bottom part, I can’t foresee it.

Not quite there yet, still working on the bottom corner.

slat stage4.skp (782.4 KB)


slat stage5.skp (820.3 KB)

1 Like

I took a break from this, then had another go and got it to work for 45 degs, need to figure the rest, Decided the code is too spaghetti like…
So will make some changes
However like you to play around with the current stage, change its overall size, slat size… you will notice how quickly the file increases, mainly filled with old component definitions.
So to combat this will change the copy component to a group.(this may have some consequences)
Could have done this from start, but wanted to show how impractical these DCs become.

slat stage6.skp (749.5 KB)

1 Like

This is a “finished” version of the above stages, without the change to group or modifications that this DC should have.
slat.skp (737.1 KB)

you will notice that the Bounding Box is larger than the object, this is due to the rotation of the slat sub components. This effects the ability to scale the object to an external value, like if i try to specify say 2m,1m the object after a redraw is slightly less. If the use was mainly from the DC values or scaling by dragging, okay, but I believe this is the same issues Ash, @aroberts is experiencing with DC altering slightly upon redraw. Help
I guess this means a rebuild where the axis/ objects are all retain within the bounding box!! anyway at least the concept and main calculations are sorted.


A work around, could be, set a hidden boundary to the correct size, then add an option to pull the slats well within the object bounding box, then release them after the scale.
I figure a rebuild would require an extra four groups to the slat, will do the workaround first then maybe the rebuild

1 Like