Dear all.
i hope to get some explanation not just the solution if someone was able to solve it.
the target is to be able to use the dynamic block (which is a mechanical support in my case) to be stretchable along the pipes (color red) with minimum value of 1000mm between the 2 supports, the problem i'm facing is that if i have a pipe with i.e. 2800mm length the third support will extend to outside of the pipes (multiple of 1000mm). i want to develop a block that puts two supports on each end and to divide (equidistantly) the remaining distance between those supports,
please see attached file for the example.
thanks a lot
Solved! Go to Solution.
Solved by j.palmeL29YX. Go to Solution.
Solved by j.palmeL29YX. Go to Solution.
Solved by j.palmeL29YX. Go to Solution.
Solved by j.palmeL29YX. Go to Solution.
Solved by mertkarademir. Go to Solution.
Solved by MMcCall402. Go to Solution.
Have a look at the attached block to see if it fits your needs.
Its an Arraypath inside a dynamic block. The length of the path a construction line with an Equal length constraint to another construction line with its length controlled by a Horizontal Constraint. The array divisions value is a User parameter that takes the horizontal constraint distance, divides it by 1000, rounds the result up and adds 1 to arrive at the correct number in the array without exceeding 1000 mm.
Dear MMcCall402
first thank you a lot for helping me with this issue
all is working perfectly just i need to make the width of the support flexible so i can drag and adjust it,
thanks for you effort
Regards
In an arraypath you can't dynamically change the item being arrayed. However, you can array multiple objects of different sizes and then choose which size is visible with a visibility state parameter. In the sample I posted there is a visibility state grip with 4 different sizes to choose from.
The visibility state selection could be done thru a linear parameter if that works better for you.
The array can be further adjusted with a couple of additional user parameters, one for the maximum distance between supports and another for a minimum distance before the second support appears. Right now the max is 1000 and there is no minimum.
I'm trying to make a dynamic block w/ phantom lines to use in some stair sections for the railing. I have the vertical posts arrayed at 48" but it doesn't add a line until I exceed 96". How can I make it so there is never a gap more than 48"? Whether the intermediate posts are centered or start from one side doesn't really matter. I just want to be able to select the start and endpoint regardless of the slope and have it add however many intermediate members. Please see file attached, thanks in advance!
There is a way to define array spacing on-the-fly inside a dynamic block:
The trick to setting up variable array column spacing is NOT use a dynamic block array parameter set.
But rather place an ARRAY object inside the dynamic block.
Then use an attrubute to link to the array object parameter to a formula using a another parameter
as the driver to set the desired value
In the attribute:
Insert field type OBJECT then select the ARRAY object
be sure to select the correct property you wish to adjust on the fly via an equation or formula
Copy the info that appears in the lower pane THEN
Change the filed type to a formula.
Use the object data you copied and define the formula to obtain the desired results.
See the attached example:
Best Regards
Tim C.
I really hope you see this reply as i have been trying to recreate your block for the past couple of weeks and i literally have no idea how it works!
Can you do a video or a step by step on how to do it please?
No matter what i try i can only get it to put in an extra unit (one at the start and end of array) can not figure out where or how you put in the user parameter.
I know it was a long time ago but your help would be very much appreciated.
I'm not able to do any screencasts during working hours, however I can do a few screen grabs if that helps and I'll take a guess at where you may be having a problem. There is a part of it that is sort of 'non-intuitive' where you need to type in the name of the user parameter as a value for the arraypath property. When you type in the name of the parameter into the array properties it will change to the current value of the user parameter rather than hold the name. Once its enter there seems to be no evidence as to where the value comes from. The red box in the image below comes from the user parameter "Spacing" in the dwg I attached in the prior post.
The value of the 'Spacing' user parameter comes from an expression, (ceil(d1/1000))+1 The expression uses the value of the d1 dimensional constraint parameter, divides it by 1000, rounds it to the next higher integer, and then adds 1 to arrive at the proper number of items to be in the array such that the distance between them never exceeds 1000 units.
soon as I saw your notification I searched the net and found what you meant and was able to duplicate your block!
thank you for this help!
I am in the UK and my day of work is about finished but i was wondering if you could point me in the right direction with the attached block?
The piers either side are using your array you have described however... ideally i also would like the bit in the middle to also do its own array and fill in the between but go no further than the last pier.
The plinth (dimensioned) can be no more than 900mm and the balustrade in between should be max 3 per plinth and equal spacing's.
is that a possibility all in one block or am i going to have to do the rest with different blocks?
the example above in the attachment is what i am trying to achieve if this is possible?
Thank you very much for the block, I was trying to get the same result but for a railing panel pickets, by code railing pickets cannot be more than 4" from edge to edge (not center to center) I going to see if I can get the same result you got. but if you can help me out here, I'll fully appreciate it.
Thank you in advance,
Bruno
Thank you Mark, I have a set of steel stairs for a school, wham I'm trying to make is a dynamic block which allow me insert post @ around 5 feet between centers, then another block to let me insert pickets between those posts with no mere of 4" clear between pickets, pickets can be 1/2" or 3/4". square or diameter, please see attached photo,
Thank you very much in advance for your help, it takes too much time figuring spaces for each railing.
Does this need to be a dynamic block? (are you going to use it over and over again?)
You could do this with a polyline thru the railing for alignment, draw in the first post and spindle, the ARRAYPATH those objects as two different arrays. You can then specify number of object in the array, that it should use the entire length of the polyline, and then keep an eye on the spacing it creates such that it doesn't exceed you maximum spacing.
Sorry for the delay, my silly day job keeps getting in the way.
The attached file has 2 blocks with it. One for the railing post and another for the spindles
The one for the posts has an Arraypath of the posts along a construction line. The length of the construction line is controlled my a linear constraint. A user variable has a formula calculates how many posts should be in the array by dividing the value of the linear constraint by 60 (inches), rounding it down to one integer, then adding 1. The arraypath uses this user parameter as its value for the number of objects in the array.
The Spindle block works in a similar manner except that one needs to account the there not being a spindle at the beginning or the end of array. (as there is a post there) Two user parameters calculate the values needed for the array path.
I was hoping to get enough time to combine these into one dynamic block but it was going to take a little more time to solve the issue of intermediate spindles coinciding with posts in the middle sections of the railing. This could be handles with a simple wipeout included with the post array. Not elegant but would get it done. In the meantime you could insert the two blocks, select them both and pull the grip(s) both at the same time.
Thanks Mark. This thread looks exactly like what I needed. I tried your method on my problem, but having trouble to imply it correctly. Can you please check my thread too if you have some free time? Thanks in advance
Here is the link to my thread: https://forums.autodesk.com/t5/dynamic-blocks-forum/stretch-and-array-problem/td-p/10209289
Hey Mark how you doing? Sorry to bother again, the formula you mentioned "A user variable has a formula calculates how many posts should be in the array by dividing the value of the linear constraint by 60 (inches), rounding it down to one integer, then adding 1. The arraypath uses this user parameter as its value for the number of objects in the array"
How can I edit it or make a new one, where is it located? Can you share that, and talk more about this formulas?
Thank you,
Bruno Falcon
Sorry for the delay. I'm embarking on a job switch and my last day is tomorrow.
Access to creating User Parameters is within the block editor. On the ribbon there is a Parameters Manager. It will show you all the parameters within the block. From there you can create and edit the User Parameters.
Can't find what you're looking for? Ask the community or share your knowledge.