i have created a script to place and connect a fabrication part over another fabrication. script throwing an error message as can see in the image. My script is also below. anybody can help me to identify the error in the script?
duct offset.dyn (54.1 KB)
# Enable Python support and load DesignScript library
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 math
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *
from Autodesk.Revit.DB import FabricationService
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
uidoc = uiapp.ActiveUIDocument
levelid = doc.ActiveView.GenLevel.Id
servicebutton = IN[0]
length = IN[1]
host = UnwrapElement(IN[2])
TransactionManager.Instance.EnsureInTransaction(doc)
fabricationpart = FabricationPart.Create(doc, servicebutton, 0 , levelid)
TransactionManager.Instance.TransactionTaskDone()
def dtor(value):
r = UnitUtils.Convert(value, DisplayUnitType.DUT_DEGREES_AND_MINUTES, DisplayUnitType.DUT_RADIANS)
return r
def GetPrimaryConnector(el):
cm = el.ConnectorManager
for i in cm.Connectors:
info = i.GetMEPConnectorInfo()
if (info.IsPrimary):
return i
def GetSecondaryConnector(el):
cm = el.ConnectorManager
for i in cm.Connectors:
info = i.GetMEPConnectorInfo()
if (info.IsSecondary):
return i
lengthoption = fabricationpart.LookupParameter("Length Option")
lengthoption.Set("Value")
lengthParam = fabricationpart.LookupParameter("Length")
lengthParam.Set(length)
doc.Regenerate()
pc = GetPrimaryConnector(fabricationpart)
sc = GetSecondaryConnector(fabricationpart)
host_pc = GetPrimaryConnector(host)
host_sc = GetSecondaryConnector(host)
if host_sc.Shape == ConnectorProfileType.Rectangular:
pc.Height = host_sc.Height
pc.Width = host_sc.Width
else:
pass
doc.Regenerate()
FabricationPart.AlignPartByConnectors(doc, pc, host_sc, dtor(0))
doc.Regenerate()
FabricationPart.ConnectAndCouple(doc, sc, host_sc)
doc.Regenerate()
OUT = 0