Hi community,
i’m have been bonking my head on this one .
Below i have made a script that is meant to hide all sections on a overviewplan (floorplan) that are not on the same sheet. i also intend to hide the child view and only show parentviews.
Now the filtering to retrieve the views works fine in my opinion but i can’t make the ‘hidde’ happen.
On the forum i have found multiple post about the node View.HideElements but i can’t find this node in my 2021 (revit 2021.1.2) library (dynamo version 2.6.1.8850) or in revit 2022.1 (dynamo version 2.1.0.5740).
I also tried the archilab node (see screenshot above) but this one does not seems to do the trick.
Big thx in advance !!
Hi @AlexanderVandenbergh,
You should hide the section markers, not the section views themselves.
Use the View CropBox node to obtain the section markers elements.
@Alban_de_Chasteigner Great tip this made it work !
But i’m already looking for an optimalisation:
The GenuisLoci-node also creates the geometrie wich isn’t really necessary.
And this slows the script down alot.
I’ll mark your Answer as a solution and try to simplify the Loci node .
Also still wondering where the View.HideElements node form OTB version is hiding from me…
Hi @Konrad_K_Sobon,
I see on the forums that u have a solution for my simplification of the Genius Loci node.
But i’m a newbie at programming, i understand your script as is but i don’t really know how to translate it to work with lists of views.
Can u help me on this one?
def GetViewCropBoxElement(view):
doc = DocumentManager.Instance.CurrentDBDocument
TransactionManager.Instance.ForceCloseTransaction()
tGroup = TransactionGroup(doc, "Temp to find crop box element")
tGroup.Start()
trans1 = Transaction(doc, "Temp to find crop box element")
trans1.Start()
view.CropBoxVisible = False
trans1.Commit()
shownElems = FilteredElementCollector(doc, view.Id).ToElementIds()
trans1.Start()
view.CropBoxVisible = True
trans1.Commit()
cropBoxElement = FilteredElementCollector(doc, view.Id).Excluding(shownElems).FirstElement()
tGroup.RollBack()
return cropBoxElement
Is it as ‘simple’ as stating this before the rest of the script?
for each view in views
I also see allot of script where ‘things’ get Unwrapped , this so u get items within the lists themself?
Thx for your advice
Hi Alexander,
Another way to find the section marker :
import clr
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocument
views = UnwrapElement(IN[0]) if isinstance(IN[0],list) else [UnwrapElement(IN[0])]
def GetCropBox(view):
provider= ParameterValueProvider(ElementId(BuiltInParameter.ID_PARAM))
rule = FilterElementIdRule(provider, FilterNumericEquals(), view.Id )
filter= ElementParameterFilter(rule)
return doc.GetElement(FilteredElementCollector(doc).WherePasses(filter).ToElementIds().Find(lambda x: x.IntegerValue != view.Id.IntegerValue))
elem = []
for view in views:
elem.append(GetCropBox(view))
OUT = elem
2 Likes
Hi Alban,
This is the exact solution to a problem I’m having but I cant seem to get the script working?
Any help would be much appreciated.
Cheers
Hi,
Use the IronPython2.7 engine instead of the CPython3.
(DynamoIronPython2.7 package).
2 Likes
Thanks, very much a newbie when it comes to python.