Dynamic Block with Multiple Arrays and Stretch

Dynamic Block with Multiple Arrays and Stretch

J_Metcalfe
Explorer Explorer
878 Views
2 Replies
Message 1 of 3

Dynamic Block with Multiple Arrays and Stretch

J_Metcalfe
Explorer
Explorer

So I'm making this very simple dynamic block with a rectangle and a repeating pattern that I'd like to be able to stretch. The pattern consists of three lines (2mm long each) that each have their own array. I've set a constraint so that you can only stretch the block in 2mm increments but for some reason the pattern itself only repeats every 6mm. I don't understand why this happens when each line has its own separate array. I'd like it to work so that the block doesn't need to be in increments of 6, i.e the block could be 20mm long and the pattern would repeat 3 & 1/3 times. Also, I can't seem to get the outer rectangle to sit above the internal lines once the block has been stretched.

 

I've attached a file for the block and any help fixing these issues would be much appreciated, thank you.

0 Likes
Accepted solutions (1)
879 Views
2 Replies
Replies (2)
Message 2 of 3

Libbya
Mentor
Mentor
Accepted solution

An array action creates the first new object when the associated parameter is equal to 2X the column offset.  It creates the second new object when the associated parameter is equal to 3X the column offset, etc...  When you know that, then it is obvious that having any number of different array actions with the same column offset associated with the same linear parameter will always result in all of the objects arraying at the same parameter values.

 

If you want the objects to array at different values then you need to either change the column offset or the length of the associated parameter.  The solution to your block is to create two additional chained linear parameters (the main parameter will work for one of the arrays), turn off their grips, make their starting lengths appropriate for when you want their new arrayed objects to appear, and stretch them all with a stretch action that is associated with the main linear parameter.  See attached.

 

It is also probably worth mentioning that you added an increment (not a constraint) to the main linear parameter.  Constraints are something else and there are none in your block. 

 

Being unable 'to get the outer rectangle to sit above the internal lines' is a draworder issue.  Newly created objects will be drawn to the front of objects that already exist.  When arraying objects, the array creates new objects, so they will be drawn to the front of other objects.  Luckily, if an array action arrays more than one object and those objects have a specific draworder relative to each other, then the new objects created by the array will respect the same draworder relative to each other.  To get the display correct for the outer rectangle, I broke it up into pieces, set their draworder correctly, and arrayed them along with the thick polyline objects.  

Message 3 of 3

J_Metcalfe
Explorer
Explorer

Thank you very much for your answer and clear explanation, I've learnt a lot about dynamic blocks! I've had a go at replicating your process and I managed to get the same results so I think I have a better understanding of it now.

 

0 Likes