Create SystemTypes, how?

Hello,

I want to create for each class in the document a SystemType…
i am not sure, wether i handle it well, my code so far

import clr

clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
#from Autodesk.Revit.DB.Structure import *
#from Autodesk.Revit.DB.Mechanical import *
#from Autodesk.Revit.DB.Electrical import *
#from Autodesk.Revit.DB.Plumbing import *
import System

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


tGroup = TransactionGroup(doc, "Create and Set MEP-Systems")
tGroup.Start()

#t1 = Transaction(doc, "UndefinedSystemClassification")

#t1.Start()
#_undefinedSystemClassification = MEPSystemClassification.UndefinedSystemClassification
#_uSC = Mechanical.MechanicalSystemType.Create(doc, _undefinedSystemClassification, "UndefinedSystemClassification")
#t1.Commit()

t2 = Transaction(doc, "ReturnAir")

t2.Start()
_returnAir = MEPSystemClassification.ReturnAir
_rA = Mechanical.MechanicalSystemType.Create(doc, _returnAir, "ReturnAir")
t2.Commit()

t3 = Transaction(doc, "SupplyAir")

t3.Start()
_supplyAir = MEPSystemClassification.SupplyAir
_rA = Mechanical.MechanicalSystemType.Create(doc, _returnAir, "SupplyAir")
t3.Commit()

_exhaustAir = MEPSystemClassification.ExhaustAir

_dataCircuit = MEPSystemClassification.DataCircuit

_powerCircuit = MEPSystemClassification.PowerCircuit

_supplyHydronic = MEPSystemClassification.SupplyHydronic

_returnHydronic = MEPSystemClassification.ReturnHydronic

_telephone = MEPSystemClassification.Telephone

_security = MEPSystemClassification.Security

_fireAlarm = MEPSystemClassification.FireAlarm

_nurseCall = MEPSystemClassification.NurseCall

tGroup.Commit()

OUT = [_undefinedSystemClassification,_returnAir,_supplyAir,_exhaustAir,_dataCircuit,_powerCircuit,_supplyHydronic,_returnHydronic,_telephone,_security,_fireAlarm,_nurseCall]

will there one day a autocomplete ? like in PyCharm f.e.?

with the look up - i was not realy sure to find the correct SystemType…

KR

Andreas

You will have to import the Mechanical namespace to access the classes and methods
add import Autodesk.Revit.DB.Mechanical to your imports and after this you can access the classes via Mechanical.<ClassName>

2 Likes

@Mike.Buttery ,

i tested but it does not work

import clr
import System
import sys

clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *
from Autodesk.Revit.DB.Mechanical import *
from Autodesk.Revit.DB.Electrical import *
from Autodesk.Revit.DB.Plumbing 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


tGroup = TransactionGroup(doc, "Create and Set MEP-Systems")
tGroup.Start()

#t1 = Transaction(doc, "UndefinedSystemClassification")

#t1.Start()
#_undefinedSystemClassification = MEPSystemClassification.UndefinedSystemClassification
#_uSC = Mechanical.MechanicalSystemType.Create(doc, _undefinedSystemClassification, "UndefinedSystemClassification")
#t1.Commit()

#t2 = Transaction(doc, "ReturnAir")

#t2.Start()
#_returnAir = MEPSystemClassification.ReturnAir
#_rA = Mechanical.MechanicalSystemType.Create(doc, _returnAir, "ReturnAir")
#t2.Commit()

#t3 = Transaction(doc, "SupplyAir")

#t3.Start()
#_supplyAir = MEPSystemClassification.SupplyAir
#_rA = Mechanical.MechanicalSystemType.Create(doc, _returnAir, "SupplyAir")
#t3.Commit()

_exhaustAir = MEPSystemClassification.ExhaustAir

_dataCircuit = MEPSystemClassification.DataCircuit


#t6 = Transaction(doc, "PowerCircut")

#t6.Start()
#_powerCircuit = MEPSystemClassification.PowerCircuit
#_pC = Electrical.ElectricalSystemType.Create(doc, _powerCircuit, "PowerCircuit")
#t6.Commit()


t7 = Transaction(doc, "PowerCircut")

t7.Start()
_supplyHydronic = MEPSystemClassification.SupplyHydronic
_sH = Plumbing.PlumbingSystemType.Create(doc, _supplyHydronic, "SupplyHydronic")
t7.Commit()

_returnHydronic = MEPSystemClassification.ReturnHydronic

_telephone = MEPSystemClassification.Telephone

_security = MEPSystemClassification.Security

_fireAlarm = MEPSystemClassification.FireAlarm

_nurseCall = MEPSystemClassification.NurseCall

tGroup.Commit()

OUT = [_undefinedSystemClassification,_returnAir,_supplyAir,_exhaustAir,_dataCircuit,_powerCircuit,_supplyHydronic,_returnHydronic,_telephone,_security,_fireAlarm,_nurseCall]

KR

Andreas

Hi @Draxl_Andreas

Here’s some corrected code

see my notes below in this code for explanationsn # NOTE :

import clr
import System
import sys

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

# NOTE : NAMESPACE CONFLICTS
# NOTE : DO NOT IMPORT ALL from Autodesk.Revit.UI NAMESPACE
#clr.AddReference('RevitAPIUI')
#from Autodesk.Revit.UI import *

# NOTE : NOT NECESSARY TO LOAD ASSEMBLY SYSTEM WITH IRONPYTHON OR PYTHONNET IT'S LOADED BY DEFAULT
#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


tGroup = TransactionGroup(doc, "Create and Set MEP-Systems")
tGroup.Start()

# NOTE : THIS NOT POSSIBLLE TO CREATE AN UndefinedSystemClassification FOR MechanicalSystemType
# t1 = Transaction(doc, "UndefinedSystemClassification")
# 
# t1.Start()
# _undefinedSystemClassification = MEPSystemClassification.UndefinedSystemClassification
# _uSC = Mechanical.MechanicalSystemType.Create(doc, _undefinedSystemClassification, "UndefinedSystemClassification")
# t1.Commit()

t2 = Transaction(doc, "ReturnAir")

t2.Start()
_returnAir = MEPSystemClassification.ReturnAir
_rA = Mechanical.MechanicalSystemType.Create(doc, _returnAir, "ReturnAir")
t2.Commit()

t3 = Transaction(doc, "SupplyAir")

t3.Start()
_supplyAir = MEPSystemClassification.SupplyAir
_rA = Mechanical.MechanicalSystemType.Create(doc, _supplyAir, "SupplyAir")
t3.Commit()

# NOTE : THIS NOT POSSIBLLE TO CREATE AN NEW ELECTRICAL SYSTEM TYPE IN REVIT
#t6 = Transaction(doc, "PowerCircut")

#t6.Start()
#_powerCircuit = MEPSystemClassification.PowerCircuit
#_pC = Electrical.ElectricalSystemType.Create(doc, _powerCircuit, "PowerCircuit")
#t6.Commit()


tGroup.Commit()

OUT = 0
2 Likes

Your code has imported every class from the Plumbing namespace with import * but not the namespace itself

1 Like