Często w swojej pracy musisz komunikować się z innymi poprzez zrzuty ekranu w modelu? Po wysłaniu danego miejsca masz problem ze znalezieniem omawianego elementu? Dzięki mojemu rozszerzeniu do PyRevita -> PyLab wygenerujesz Id elementów w modelu jak i tych podlinkowanych!
Spis treści:
- Potrzeba łatwej komunikacji na modelach
- Działanie programu
- Film instruktażowy
- Kod programu
- Sprawdź również

Potrzeba łatwej komunikacji na modelach
Program powstał aby usprawnić komunikację na różnych modelach. Niestety obecnie w revicie możliwe jest sprawdzenie Id elementów znajdujących się jedynie w otworzonym modelu natomiast nakładki umożliwiają otrzymywanie Id wyłącznie podlinkowanych obiektów. Tego typu podział utrudnia komunikację poprzez np. wiadomości mailowe. Użytkownik musi wówczas generować Id osobno. Dzięki funkcji „Ids” wszystko znajduje się w jednym miejscu! Jeśli nie masz jeszcze nakładki to zachęcam do jej pobrania. Całą instrukcję znajdziesz w moim wpisie PYLAB – Revit nakładka sanitarna.
Działanie programu
Program w kolejności pozwala wybrać elementy znajdujące się w modelu, a następnie elementy znajdujące się w podlinkowanych modelach revitowych. Następnie po wyborze elementów program zwraca następujące informacje:
- Czy element znajduje się w modelu czy jest podlinkowany
- Id elementu
- Rodzinę i typ elementu
Dzięki tym informacjom wyszukanie omawianych elementów w poszczególnym modelach jest łatwe i nie wymaga potrzeby wykorzystywania kilku poleceń. Dodatkowo informacja dotycząca rodziny i typu ułatwia orientację chociażby w przypadku omawiania kolizji.
Film instruktażowy
Kod programu
Poniżej znajduje się kod programu z pierwszej wersji nakładki. Po więcej zapraszam na mojego GitHubie, gdzie na bieżąco pojawiać się będą nowe wersje nakładki.
from rpw import revit
from Autodesk.Revit.UI.Selection import *
from pyrevit import forms
doc = revit.doc
uidoc = revit.uidoc
def Pargetstr(element, name):
return (element.GetParameters(name))[0].AsValueString()
## Pick model elements
try:
with forms.WarningBar(title="Pick elements in model"):
collector = uidoc.Selection.PickObjects(ObjectType.Element)
except Exception as e:
pass
# print(e)
## Pick linked elements
try:
with forms.WarningBar(title="Pick elements in linked model"):
collector_link = uidoc.Selection.PickObjects(ObjectType.LinkedElement)
except Exception as e:
pass
# print(e)
## Print Ids
try:
for i in collector:
print("====")
print("Model element "+str(i.ElementId))
el=doc.GetElement(i.ElementId)
print((Pargetstr(el, "Family and Type")))
except:
print("No picked elements")
try:
for i in collector_link:
print("====")
el=doc.GetElement(i.ElementId)
linkdoc=el.GetLinkDocument()
el=linkdoc.GetElement(i.LinkedElementId)
print("Linked element "+str(i.ElementId))
print((Pargetstr(el, "Family and Type")))
except Exception as e:
# print(e)
print("No picked linked elements")Wszelkie nieprawidłowości w działaniu programu jakie występują podczas korzystania proszę zgłaszać na moich kontach społecznościowych, albo koncie GitHub.
