# ConnectAndCouple method is not working

**URL:** <https://forum.dynamobim.com/t/connectandcouple-method-is-not-working/78901>\
**Category:** Developers\
**Tags:** revit, python, fabrication\
**Created:** [July 21, 2022, 5:59am UTC](https://forum.dynamobim.com/t/connectandcouple-method-is-not-working/78901 "2022-07-21T05:59:12Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![SHIBUJOSE](https://avatars.discourse-cdn.com/v4/letter/s/c77e96/32.png) [@SHIBUJOSE](https://forum.dynamobim.com/u/SHIBUJOSE)\
**Post date:** [July 21, 2022, 5:59am UTC](https://forum.dynamobim.com/t/connectandcouple-method-is-not-working/78901/1 "2022-07-21T05:59:12Z")

</div>

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?

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/a/d/ad7c57fed9e924e06f4dbd1c7dfeafc420916b4d.jpeg)  
[duct offset.dyn](https://forum.dynamobim.com/uploads/short-url/uQQ4NAKIWlxjlqNGmglunsXiDDu.dyn) (54.1 KB)

---

<div class="post-metadata">

**Author:** ![SHIBUJOSE](https://avatars.discourse-cdn.com/v4/letter/s/c77e96/32.png) [@SHIBUJOSE](https://forum.dynamobim.com/u/SHIBUJOSE)\
**Post date:** [July 21, 2022, 6:10am UTC](https://forum.dynamobim.com/t/connectandcouple-method-is-not-working/78901/2 "2022-07-21T06:10:13Z")

</div>

```auto
# 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

```
