Шпаргалка это то, куда можно подглядеть, когда забыл правильное решение. Сюда буду складывать Python код для Dynamo и Revit Python Shell.
Вывод окна «Hello world»
import clr
clr.AddReference(‘RevitAPI’)
clr.AddReference(‘RevitAPIUI’)
from Autodesk.Revit.DB import *
app = __revit__.Application
doc = __revit__.ActiveUIDocument.Document
t = Transaction(doc,’Проект’)
t.Start()
TaskDialog.Show(«Название окна»,»Hello world»)
t.Commit()
#__window__.Close()
Открыть папку
import subprocess
subprocess.Popen(‘explorer «G:BIM»‘)
Открыть файл
import os
os.startfile(«G:BIMTSN_BIM_стандарт.pdf»)
Закрыть файл Revit без сохранения
from System.Diagnostics import Process
p = Process.GetCurrentProcess()
p.Kill()
Создать чертежный вид
from Autodesk.Revit.DB import Transaction, Element
from Autodesk.Revit.DB import FilteredElementCollector
from Autodesk.Revit.DB import ViewFamilyType, ViewDrafting, Element
from Autodesk.Revit.DB import ViewFamily
uidoc = __revit__.ActiveUIDocument
doc = uidoc.Document
t = Transaction(doc, ‘Create Drafting View’)
t.Start()
def get_drafting_type_id():
viewfamily_types = FilteredElementCollector(doc).OfClass(ViewFamilyType)
for i in viewfamily_types:
if i.ViewFamily == ViewFamily.Drafting:
return i.Id
drafting_type_id = get_drafting_type_id()
drafting_view = ViewDrafting.Create(doc, drafting_type_id)
t.Commit()
Перевод списка чисел в список строк
list=[]
list.append(str(int(i)))
Удалить null из списка
OUT = [x for x in IN[0] if x]
Расплющить список
lst = [(1,2), (1,3), (1,4), (1,5), (1,6)]
OUT = [e for l in lst for e in l]
Транспонирование списка
OUT = [[k[i] for k in IN[0]] for i in range(len(IN[0][0]))]
Число в строку
OUT = [str(int(i)) for i in IN[0]]
Cтрока в число
OUT = [float(i) for i in IN[0]]
Переименование названий параметров в редакторе семейств
import clr
clr.AddReference(«RevitServices»)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
clr.AddReference(«RevitAPI»)
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference(«RevitNodes»)
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
search = IN[0]
replace = IN[1]
FamilyMan = doc.FamilyManager
types = FamilyMan.Types
typenames = []
TransactionManager.Instance.EnsureInTransaction(doc)
for type in types:
FamilyMan.CurrentType = type
typename = FamilyMan.CurrentType.Name
if search in typename:
newname = typename.replace(search, replace)
typenames.append(newname)
FamilyMan.RenameCurrentType(newname)
else:
typenames.append(typename)
TransactionManager.Instance.TransactionTaskDone()
OUT = typenames
Получить элементы из марок
import clr
clr.AddReference(«RevitAPI»)
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference(«RevitServices»)
import RevitServices
from RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocument
tags = UnwrapElement(IN[0])
OUT = [doc.GetElement(i.TaggedLocalElementId) for i in tags]