PYTHON ШПАРГАЛКА

размещено в: BIM | 0

Шпаргалка это то, куда можно подглядеть, когда забыл правильное решение. Сюда буду складывать 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:\BIM\TSN_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]