Array along non-linear path
-
Hi everybody,
I am designing a football stadium with round corners and putting the seats into them is giving me a hard time.
Let me illustrate my problem with a picture:
So each seat has a width of 0.5m. Along the "a" lines it's a simple task using the array tool since I have full control over the length of that lines.
However, in the corners of the stadium the length of the "b" line varies, such that I need to put in the maximum number of seats without them overlapping and have some space between them. In the case of the pictures that is 5 seats with 0.075m between them.
Again, along a straigth line this is not a problem in principle with the array tool, but it is a hell lot of work for a complete stadium. So any idea, how I could possibly copy my seat components along a "connected" path with the array tool such that it will maximise the number of seats on each section without the seats overlapping?
I tried the copy along path plugin, but I couldn't make it work, since I understand you only have control about the distance between two seats. Since I do not know the space between seats, this can't be used along the "b" lines.
Any advice very much appreciated!
Thanks, Markus -
This may help. It's about dynamic components.
Youtube Video -
You might have a look at Chris Fullmer's Component Stringer or PathCopy.
-
Thx! Need to learn how to use dynamic components. Not sure if it will safe me any work on my current problem, but will probably be very useful for other purposes
The Component Stringer and PathCopy don't solve this one unfortunately ...
-
Since you know each chair is .5, dividing the respective B lines by .5 will tell you how many can fit. Then actually divide the B lines by that number. This will give you the centres of each chair. Use Component stringer to place the chair at those points.
You would probably find it easiest to make blocks of seating, just like they do in real life, and use the various blocks as components to populate the whole stadium.
-
And why not use the normal Move/Copy tool "/" ?
You draw the first and last seat on a line then type "/" and the numbers of seats wanted!Just type again a number if result don't satisfy you!
(no need to redraw anything) -
@unknownuser said:
And why not use the normal Move/Copy tool "/" ?
You draw the first and last seat on a line then type "/" and the numbers of seats wanted!Just type again a number if result don't satisfy you!
(no need to redraw anything)Yap, this is what I have done before. And that is just annoying work to do, because I have like 90 rows and 15 lines in each stadium, so I'd need to do that 1350 times
-
@box said:
Since you know each chair is .5, dividing the respective B lines by .5 will tell you how many can fit. Then actually divide the B lines by that number. This will give you the centres of each chair. Use Component stringer to place the chair at those points.
You would probably find it easiest to make blocks of seating, just like they do in real life, and use the various blocks as components to populate the whole stadium.
Well, by doing that I would still need to measure the length of that lines first, wouldn't I?. That won't save me much work, as I would then be faster by the method Pilou mentioned
The second hint I do not really understand. I do have blocks in my stadium and I only model 1/4 of the stadium anyway, since this is enough to complete it afterwards by making this 1/4 a component. However, each block is different, because the shape of the stadium bowl is not symmetric or should I say "regular". So each block has its own seating pattern unfortunately ..
-
Click on the line with entity window open and it tells you the length of the line.
It's in metres, your seat is half a metre which means two per metre plus one if the line is over .5
Eg; line is 36.75m number of seats that will fit 73, line is 36.49m number of seats that will fit 72As to making blocks. Make sections of seats in the same way the manufacturer would. Runs of 10 and 5 etc, so you can just throw together whole sections and not individual seats.
So line is 54.87m that's 10x10 + 1x5 + 2x2
-
This what you want? Rotate the chair any direction and scale it to the right any length.
You don't list in your profile if you have the Pro version this is a dynamic component.
-
"because I have like 90 rows and 15 lines in each stadium, so I'd need to do that 1350 times"
I am quasi sure that you have some symmetry?
And you can make some copy / past ! -
@futurepast said:
This what you want? Rotate the chair any direction and scale it to the right any length.
You don't list in your profile if you have the Pro version this is a dynamic component.Well, I think that could work, but does not save me any time ... the Copy + ""-method is equally fast/slow ...
Anyway, thx for the effort!
@Pilou: Yap, for sure I only model 1/4 of the whole stadium and then copy & past
This is what the stadium looks like without seats in them yet:
-
Multiple straight lines and repetition of blocks.
Would take very little time to populate it with seats.
If you filled it with seats it would also slow the model down. -
@futurepast said:
This what you want? Rotate the chair any direction and scale it to the right any length.
You don't list in your profile if you have the Pro version this is a dynamic component.(fwiw- suFree can use dynamic components.. just can't create them unless you have the pro version)
i think it should be more like this:
**pretty sure the spacing formula could be refined to something more simple but this is the first gobut you'll see in the .skp that the block starts and ends at exact points then the gap is populated accordingly.. it could maybe use an if/then statement to set a minimum spacing if desired..
this should&could be a distribute plugin imo.. select the component then click on the start and end points.. 1001bit almost does it with one of it's linear array options but not quite..**
-
@unknownuser said:
@futurepast said:
This what you want? Rotate the chair any direction and scale it to the right any length.
You don't list in your profile if you have the Pro version this is a dynamic component.(fwiw- suFree can use dynamic components.. just can't create them unless you have the pro version)
i think it should be more like this:
[attachment=1:2y5hmse8]<!-- ia1 -->DC_distribute.skp<!-- ia1 -->[/attachment:2y5hmse8]
[attachment=0:2y5hmse8]<!-- ia0 -->Screen Shot 2013-09-05 at 11.02.26 PM.png<!-- ia0 -->[/attachment:2y5hmse8]
**pretty sure the spacing formula could be refined to something more simple but this is the first gobut you'll see in the .skp that the block starts and ends at exact points then the gap is populated accordingly.. it could maybe use an if/then statement to set a minimum spacing if desired..
this should&could be a distribute plugin imo.. select the component then click on the start and end points.. 1001bit almost does it with one of it's linear array options but not quite..**
Except that the spacing you have gets narrower with the greater distribution, and I thought he wanted repetition on spacing, with the row ends being the adjustment. As in, start at the center and scale out to both ends, leaving the remainder as the row ends.
-
@futurepast said:
Except that the spacing you have gets narrower with the greater distribution, and I thought he wanted repetition on spacing, with the row ends being the adjustment. As in, start at the center and scale out to both ends, leaving the remainder as the row ends.
hmm.. yeah, maybe.. not really sure as i've never dealt with stadium seating layouts.. i just assumed the row ends formed a straight line when going up a column.
but it seems to make sense from a manufacturing point of view to have the spacing remain consistent.. your version of the DC could be updated to where it centers the array upon scaling the length.. that will save a few extra steps of moving it in place after scaling.
i guess it depends on whether or not liverpudlian wants to use a DC for this or not (though it's definitely going to be the quickest way imo)
-
@unknownuser said:
@futurepast said:
Except that the spacing you have gets narrower with the greater distribution, and I thought he wanted repetition on spacing, with the row ends being the adjustment. As in, start at the center and scale out to both ends, leaving the remainder as the row ends.
but it seems to make sense from a manufacturing point of view to have the spacing remain consistent..
Erm, actually I want the spacing between seats to be varible, with the first and last seat exactly on the start and end of the row (as indicated by the image in my opening post) ... otherwise one gets ugly looking "kinks" in the stands like this:
I prefer the solution with variable spacing in each row, as this will look smoother in a stadium like this:
-
Jeff, you got it
-
Will be interesting to see how this goes or if SU can handle all those seats.
Find it hard to believe people crowd into those nosebleed tiers to watch that crap. But of course they do. Everyone to his or her own. Not that I've never enjoyed being at a game myself.
-
@pbacot said:
Will be interesting to see how this goes or if SU can handle all those seats.
hmm.. i don't think i want to be the one that finds out
here's a low-poly dynamic chair (120 faces).. i'm not sure if this is a real style design but i guess it would have to be done similarly in order to get variable seat spacing.. after doing a small sample, you might want to consider making it even more low poly..
how to use:
in doing the example, i encountered one situation where the DC would no longer update.. i had to save the file at that point then relaunch sketchup in order to get the DCs working again..
there's a guide point in the seat which can be used as a reference to rotate the seat into an upright position..
good luck
Advertisement