I m trying to add calculated Dimension.Below values.
Like shown in the picture below (this is what im trying to automate, its done by hand here to show what im trying to achieve)
Thanks for your reply! I think its a bit less simple then that
It should look at every single sigment. Sorry if i suggested wrong. The python code might need to be adjusted
In my example X = 60 and Y = 12.
The amount of X needs to be calculated.
Output can either be:
Amount X (dimension devidable by X)
Amount X + Y (dimension -Y devidable by X)
Amount X - Y (dimension +Y devidable by X)
if not devidable by any of those:
invalid (if none of the above applies)
It sounds like a version of a brick dimension checker…
Here’s mine, it’s based on a module of 112.5 and it adds a suffix and overrides colour in view according to the outcome… hopefully you’ll get the idea.
I don’t believe this is possible for multi segment dimensions.
Hope that helps,
Mark
Edit: Here’s my WIP auto dimension graph which creates individual dimensions for use… The only snag is that it’s not picking up intermediate wall dimensions yet…
I think it must be possible to write calculated values to, i just dont know how yet.
Im looking in to your graph right now, i dont understand it fully yet though.
I dont need rounded values btw.
Just excact values, either:
Amount X
Amount X +Y
Amount X -Y
If not devidable like above then Value Below should be “Invalid”
Its hard to calculate i think because it needs to calculate all options per dimension
I dont realy understand the code blocks in your graph. Im kind of new to that
Thanks for your help so far! i ll try and get it solved, i m glad i could help you
If anyone else got any idea’s how to solve this problem, any input is welcome!
if its not a whole number in any of those 3 options, it should be invallid.
Its counting bricks. parts of bricks are not wanted.
So basicly X = brick, Y = seam
options are z bricks, z bricks - seam, z bricks + seam. if its none of those it should write invalid.
if the user notices the invalid, he is automaticly triggered the wall needs to change. because its actualy an invalid length.
Thx again
EDIT: Maybe this could be done alot easyer, or better. If anyone knows how also let me know
Something else… after i did all this, how do i keep the link with the actual dimension, to place the calculated value where it belongs?
new.append(‘Invalid’) ? how do i addapt this python in my graph?
import clr
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
dims = UnwrapElement(IN[0])
A = IN[1]
B = IN[2]
TransactionManager.Instance.EnsureInTransaction(doc)
for i in dims :
if i.Value >= 0 :
i.Below = "NEED HELP HERE"
else :
for j in i.Segments :
j.Below = "NEED HELP HERE"
TransactionManager.Instance.TransactionTaskDone()
#no Output is needed
I try to keep stuff in dynamo nodes, i find it easier to work out, even if I end up with loads of nodes…
This should work for you, it’s hard for me to test completely without a full Rvt with loads of dims… I’m sure there are much more efficient ways of doing it, but it should get you going.
If you want the python to work with a list of dimensions, one way is to make it a custom node. Otherwise perhaps someone will have some time to edit the Python for you…
I agree with you that this is something that Python would do very efficiently, if you can run each value against if, elif, elif, else you would avoid the difficulty i’m having keeping the ‘keys’ from the initial order to the end to allow the original list order to be restored.
If I have some more time I’ll try to look at it.
Node to Code can be done like this…
Right click in the workspace when you’ve got a few nodes selected…