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ā¦