Kalkulator wentylacji mechanicznej

,

Dzięki tej funkcji z mojej nakładki dobieranie nawiewników i wywiewników nie będzie już topornym procesem. Program możesz dopasować pod swoje potrzeby i preferencje. Więcej zobaczysz w moim filmie podlinkowanym poniżej.

Spis treści artykułu “Kalkulator wentylacji mechanicznej”:

ustawienia kalkulator wentylacji mechanicznej
Ikona funkcji z icons8.com/icon/

Revit kalkulator wentylacji mechanicznej – założenia programu

Program umożliwia ustawienie własnych preferencji doboru nawiewników i wywiewników w programie Revit. Na bazie podanych preferencji możesz następnie umieszczać elementy bezpośrednio w modelu. Kiedy z tego skorzystasz?

  1. Dobierasz urządzenia wentylacyjne jak nawiewniki i wywiewniki

Instrukcję jak pobrać moją nakładkę możesz znaleźć tutaj.

Działanie programu

Szerzej działanie programu opisuję w swoim filmie. Tutaj jedynie zamieszczę podstawowe informacje dotyczące funkcji wchodzących w skład kalkulatora.

Air terminal calculator settings

Za pomocą tej funkcji możesz dodać lub usunąć preferencję doboru danego terminalu wentylacyjnego. Program zawiera osobne preferencje dla systemu nawiewnego i wywiewnego. Szczegółowy opis wprowadzania włąsnych preferencji znajduje się w filmie poniżej.

kalkulator wentylacji mechanicznej

Air terminal calculator (supply lub return)

Gdy wprowadzimy własne preferencje będziemy mogli w pełni korzystać z kalkulatora. Wystarczy wybrać interesujące nas urządzenia i wprowadzić przepływ powietrza. Program zwróci nam proponowane urządzenia na bazie naszych ustawień.

kalkulator nawiewników revit

Film z działania programu

Kod programu – Revit kalkulator wentylacji mechanicznej

Poniżej znajduje się kod jednej z funkcji (Air terminal calculator(supply)). Po więcej zapraszam na mojego GitHubie, gdzie na bieżąco pojawiać się będą nowe wersje nakładki.

Python
Copyright (C) 2023 Paweł Kińczyk
## Imports

from Autodesk.Revit.UI.Selection import *
from Autodesk.Revit.DB import *
from pyrevit import forms, script
from rpw import revit
import json
import os


doc = revit.doc
uidoc = revit.uidoc


class CustomISelectionFilter(ISelectionFilter):
    def __init__(self, nom_categorie):
        self.nom_categorie = nom_categorie

    def AllowElement(self, e):
        if e.Category.Name in self.nom_categorie:
            # if self.nom_categorie.Contains(e.Category.Name):
            # if e.Category.Name == self.nom_categorie:
            return True
        else:
            return False

    def AllowReference(self, ref, point):
        return True


def pick_objects(title="Pick", filter=""):
    with forms.WarningBar(title=title):
        return uidoc.Selection.PickObjects(ObjectType.Element, CustomISelectionFilter(filter))


def open_json(name_of_file="", open_method="r"):
    with open(name_of_file, open_method) as file:
        data = json.load(file)
        return data


# Pick air terminal
try:
    air_terminal = pick_objects(
        title="Pick supply air terminal", filter="Air Terminals")
except:
    forms.alert(title="Program Error",
                msg="You didn't pick any air terminal", exitscript=True)

# Write air flow
try:
    air_flow = forms.ask_for_string(
        prompt="Write air supply", title="Air terminal air flow")
    air_flow = int(air_flow)
except:
    forms.alert(title="Program Error",
                msg="You didn't write anything", exitscript=True)

# Get air terminal sizes
os.chdir(os.path.dirname(os.path.abspath(__file__)))
try:
    dqj_list = open_json("air_terminals_supply_settings.json", "r")
except:
    forms.alert(title="Program Error",
                msg="Didn't find settings", exitscript=True)

# Search for prefer family
correct_dqj = []
for dqj in dqj_list:
    dqj_min = int(dqj[0][0:4:])
    dqj_max = int(dqj[0][5:9:])
    if air_flow > dqj_min and air_flow < dqj_max:
        air_flow_avaible = ("{}-{}".format(dqj_min, dqj_max))
        new_dqj = tuple([air_flow_avaible])+tuple(dqj[1])
        correct_dqj.append(new_dqj)

try:
    selected_dqj = forms.SelectFromList.show(
        correct_dqj, title="Select air terminal which you want to pick", multiselect=False, button_name='Select DQJ', width=800)
    selected_dqj_size = selected_dqj[1]
except:
    forms.alert(title="Program Error",
                msg="You didn't pick any type", exitscript=True)    

transaction = Transaction(doc, 'Air terminal calculator - PYLAB')
transaction.Start()

# Change to new type
try:
    for element in air_terminal:
        element = doc.GetElement(element)

        if isinstance(element, FamilyInstance):
            family_instance = element
        else:
            family_instance = None


        types = family_instance.Symbol.GetSimilarTypes()
        for i in types:
            if selected_dqj_size in Element.Name.GetValue(doc.GetElement(i)):
                element.ChangeTypeId(i)
except Exception as e:
    forms.alert(title="Program Error", msg=e, exitscript=True)

transaction.Commit()

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: 80

Dodaj komentarz

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