Hello all!
I previously found a solution to extract the element type, and name from an import instance. I’m now trying to use that code as a definition, and it seems like it only loops through one of the items in the list. I tried doing another for loop for the cad import instances but I get an iteration over non-sequence of type error. I’m not 100% sure but it seems like I’m looping wrong. Here is a screenshot of my python and the information going into IN[1] is a true bool.
Thanks in advance!
# Made by Gavin Crump
# Free for use
# BIM Guru, www.bimguru.com.au
# Boilerplate text
import clr
import sys
sys.path.append('C:\Program Files (x86)\IronPython 2.7\Lib')
import System
from System import Array
from System.Collections.Generic import *
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference("RevitAPI")
clr.AddReference("RevitAPIUI")
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *
# Current doc/app/ui
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
uidoc = uiapp.ActiveUIDocument
def worksetCreator(element, eXworkset):
for i in element:
elemType = (doc.GetElement(i.GetTypeId()))
elemName = (Element.Name.__get__(elemType))
elemRName = elemName[:-4]
if elemRName not in eXworkset:
return i, elemType, elemRName
# Define list/unwrap list functions
# Preparing input from dynamo to revit
cad = FilteredElementCollector(doc).OfClass(ImportInstance).ToElements()
unWcad = UnwrapElement(cad)
pntCloudInt = UnwrapElement(FilteredElementCollector(doc).OfClass(PointCloudInstance).ToElements())
Navis = UnwrapElement(FilteredElementCollector(doc).OfClass(DirectShape).ToElements())
eXworkset = IN[0]
run = IN[1]
# Do some action in a Transaction
#TransactionManager.Instance.EnsureInTransaction(doc)
# your actions
#TransactionManager.Instance.TransactionTaskDone()
result = []
if run == True:
# try:
cadEle = (worksetCreator(unWcad, eXworkset))
result.append(cadEle)
# except:
# pntCloudEle = (worksetCreator(pntCloudInt, eXworkset))
# result.append(pntCloudEle)
# else:
# navisEle = (worksetCreator(Navis, eXworkset))
# result.append(navisEle)
# finally:
# result.append("WL")
else:
result.append("Workset Already Created")
# Output and Changing element to Dynamo for export
# <element>.ToDSType(True), #Not created in script, mark as Revit-owned
# <element>.ToDSType(False) #Created in script, mark as non-Revit-owned
OUT = result






