Cześć, miło mi widzieć Cię na mojej stronie. Jeśli szukasz narzędzi, które pomogą Ci w codziennej pracy architekta, inżyniera czy projektanta to dobrze trafiłeś/łaś. Poniżej znajdują się najnowsze wpisy. Jeśli szukasz czegoś konkretnego można to zrobić za pomocą wyszukiwarki lub po kategoriach postów. Jeśli chcesz dowiedzieć się czegoś więcej na mój temat to zapraszam do zakładki "o mnie". Skorzystałeś z moich rozwiązań? Możesz mi się odwdzięczyć stawiając wirtualną kawę za pomocą przycisku "Buy me a coffe"
Cześć, miło mi widzieć Cię na mojej stronie. Jeśli szukasz narzędzi, które pomogą Ci w codziennej pracy architekta, inżyniera czy projektanta to dobrze trafiłeś/łaś. Poniżej znajdują się najnowsze wpisy. Jeśli szukasz czegoś konkretnego można to zrobić za pomocą wyszukiwarki lub po kategoriach postów. Jeśli chcesz dowiedzieć się czegoś więcej na mój temat to zapraszam do zakładki "o mnie". Skorzystałeś z moich rozwiązań? Możesz mi się odwdzięczyć stawiając wirtualną kawę za pomocą przycisku "Buy me a coffe"
Kolejna z funkcji, jaką zapewnia moja nakładka do revita PYLAB. Umożliwia dzięki kilku kliknięciom umieścić izolację na wielu elementach w systemach rurowych.
Program powstał aby usprawnić pracę dla projektantów instalacji sanitarnych, aby umożliwić wstawianie izolacji na wielu elementach jednocześnie z uwzględnieniem grubości izolacji. 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
Ważne! Program w obecnej wersji działa na modelach z ustawieniem jednostek [mm]
Program działa w następującej kolejności:
Wybierasz takie elementy jak rury, kształtki itp.
Musisz wybrać rodzaj izolacji
Program prosi o podanie grubości izolacji dla każdego z elementów. Każde z zapytań dotyczy osobnego elementu. Jego nazwa i rozmiar zawiera się w nazwie:
Zapytanie o grubość izolacji dla danego elementu
Program generuje listę elementów z jakimi wchodził w interakcje. Dzięki zestawieniu można zidentyfikować na jakich elementach, a na jakich wystąpił błąd. Taka sytuacja może zajść w momencie, gdy dany element posiada już izolację lub izolacja podana przez użytkownika wynosi 0.
Program zwraca wyniki. Jak widać pierwszy i ostatni element posiada już izolację. Drugi element wstawił się poprawnie.
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,dbfrom rpw.ui.forms import TextInputfrom Autodesk.Revit.UI.Selection import*from Autodesk.Revit.DB import*from pyrevit import DB, formsdoc = revit.docuidoc = revit.uidoc## Class and defclassCustomISelectionFilter(ISelectionFilter):def__init__(self,nom_categorie):self.nom_categorie = nom_categoriedefAllowElement(self,e):if e.Category.Name inself.nom_categorie:# if self.nom_categorie.Contains(e.Category.Name):#if e.Category.Name == self.nom_categorie:returnTrueelse:returnFalsedefAllowReference(self,ref,point):return truedefPargetstr(element,name):return(element.GetParameters(name))[0].AsValueString()defParget(element,name):return(element.GetParameters(name))[0].AsString()## Picking elementswith forms.WarningBar(title="Pick elements in model[pipes/pipe fittings"): collector = uidoc.Selection.PickObjects(ObjectType.Element,CustomISelectionFilter("Pipes Pipe Fittings"))filter1=ElementCategoryFilter(BuiltInCategory.OST_PipeInsulations)ins_list=FilteredElementCollector(doc).OfClass(ElementType).WherePasses(filter1).ToElements()ins_list_pins=[Element.Name.GetValue(i)for i in ins_list]rops = forms.CommandSwitchWindow.show(ins_list_pins,message='Select Option',recognize_access_key=False)# print(rops)choosen_ins=ins_list[ins_list_pins.index(rops)]# print(choosen_ins)## Get types of elements to ask for insulation thicknesselements=[]elements_type=[]dict={}for i in collector: el=doc.GetElement(i.ElementId) elements.append(el) elements_type.append(el.Name) element_parameters=[]for p in el.Parameters: element_parameters.append(p.Definition.Name)# print("=======")# print(el.Category)# print(el.Category.Name)# print(el.Parameters)try:if el.Category.Name=="Pipes":dict.update({Pargetstr(el,"Family and Type")+""+str(el.Diameter*304.8):0})else:dict.update({Pargetstr(el,"Family and Type")+""+Parget(el,"Overall Size"):0})exceptExceptionas e:print(e)del element_parameters[:]# print(element_parameters)# print(elements)# print(elements_type)# print(dict)## Ask for insulation thicknessfor key indict: t=forms.ask_for_string(prompt='Select Insulation Thickness for {}'.format(key),title="Insulation")dict.update({key:t})# print(dict)transaction =Transaction(doc,'Transaction')transaction.Start()## Set insulation to pipesprint("Results:")for el in elements:try:if el.Category.Name=="Pipes": t=float(dict[Pargetstr(el,"Family and Type")+""+str(el.Diameter*304.8)])/304.8 Plumbing.PipeInsulation.Create(doc,el.Id,choosen_ins.Id,t)print("=====")print(Pargetstr(el,"Family and Type")+""+str(el.Diameter*304.8)+" Id: "+str(el.Id))print("Insulation thicknes: {}").format(t*304.8)else: t=float(dict[Pargetstr(el,"Family and Type")+""+Parget(el,"Overall Size")])/304.8 Plumbing.PipeInsulation.Create(doc,el.Id,choosen_ins.Id,t)print("=====")print(Pargetstr(el,"Family and Type")+""+Parget(el,"Overall Size")+" Id: "+str(el.Id))print("Insulation thicknes: {}").format(t*304.8)exceptExceptionas e:print("=====")print(e)print("Error Element Id {}".format(el.Id))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.