PyRevit – PYLAB – Id elementów

,

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:

revit elements id

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.

Python
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.

Sprawdź również:

Paweł Kińczyk
Paweł Kińczyk
Artykuły: 90

Newsletter

Chcesz być na bieżąco? Zapisz się do newslettera!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *