AddWireType

Hi everyone,
I try to add some WireType, i find part of code but an error occur for Add ligne
Dynamo 2.16 Revit 2023.1
Daniel OLIVES

import clr

clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

clr.AddReference('System')
from System.Collections.Generic import List

clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
 
import System

from Autodesk.Revit.DB.Mechanical import *
from Autodesk.Revit.DB.Plumbing import *

TransactionManager.Instance.EnsureInTransaction(doc)
import clr
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Electrical import *

doc = DocumentManager.Instance.CurrentDBDocument
elecSettings = ElectricalSetting.GetElectricalSettings(doc)

wireMaterial=FilteredElementCollector(doc).OfClass(WireMaterialType).FirstElement()
wireType=FilteredElementCollector(doc).OfClass(WireType).FirstElement()
TempRatingTyp=FilteredElementCollector(doc).OfClass(TemperatureRatingType).FirstElement()
InsulationTyp=FilteredElementCollector(doc).OfClass(InsulationType).FirstElement()

WireConduitTypes = elecSettings.WireConduitTypes

wts = [x for x in doc.Settings.ElectricalSetting.WireMaterialTypes][0]

sizes = [x.WireSizes for x in wts.TemperatureRatings]
for s in sizes:
    for x in s:
        size = x

for t in WireConduitTypes:
    WireConduitTyp = t

TransactionManager.Instance.EnsureInTransaction(doc)
#elecSettings.AddWireMaterialType("Test", wts)
#elecSettings.AddVoltageType("Test", 230, 210, 240)
AddWireType = elecSettings.AddWireType("Cable", wireMaterial, TempRatingTyp, InsulationTyp, size , 2, True, NeutralMode.UnbalancedCurrent, WireConduitTyp)
#result.append(AddwireType.ToDSType(False).Name)

TransactionManager.Instance.TransactionTaskDone()

What’s the error?

Hi,
to avoid size issues, you can try to create/duplicate an existing WireType then change the properties

import clr
import sys
import System
from System.Collections.Generic import List

clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Electrical import *

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
doc = DocumentManager.Instance.CurrentDBDocument
elecSettings = ElectricalSetting.GetElectricalSettings(doc)

wireMaterial=FilteredElementCollector(doc).OfClass(WireMaterialType).FirstElement()
wireType=FilteredElementCollector(doc).OfClass(WireType).FirstElement()
WireConduitTypes = elecSettings.WireConduitTypes

TransactionManager.Instance.EnsureInTransaction(doc)
# make copy of wireType
new_WireType = elecSettings.AddWireType("Cable_Copy9", 
									wireType.WireMaterial  , 
									wireType.TemperatureRating , 
									wireType.Insulation  , 
									wireType.MaxSize   , 
									wireType.NeutralMultiplier , 
									wireType.NeutralRequired  , 
									wireType.NeutralSize  , 
									wireType.Conduit  )
# set properties
new_WireType.NeutralSize = NeutralMode.UnbalancedCurrent
new_WireType.NeutralMultiplier = 2.0
new_WireType.WireMaterial = wireMaterial
new_WireType.Conduit = list(WireConduitTypes)[1]

TransactionManager.Instance.TransactionTaskDone()
OUT = new_WireType