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"
Kopiowanie parametrów w programie revit w zakresie jednego parametru to czasochłonne zajęcie. Dzięki funkcji kopiowania parametrów w mojej nakładce PYLAB będziesz mógł bez problemu przepisać wartość dowolnego parametrów dla wszystkich elementów wybranej kategorii.
Program do kopiowania parametrów dla wielu elementów ma za zadanie przyspieszyć proces parametryzacji modelu revit. Dzięki temu nie ma potrzeby przepisywania wartości ręcznie. Kiedy możesz tego skorzystać?
Przygotowywanie modelu do wydania według założeń BEP. Wielu inwestorów wymaga, aby istotne dane znajdowały się w specjalnie utworzonych parametrach.
Przy przekazywaniu danych dla innych branż. Sugestywnie nazwany parametr zmniejszy ryzyko pomyłki.
Kiedy tworzymy zestawienie i chcielibyśmy zedytować niektóre nieedytowalne parametry. Jeśli przepiszemy je do własnego parametru będziemy mogli je zmienić.
Działanie programu
W pierwszej kolejności program pyta nas o wskazanie elementu. Względem jego kategorii program wybierze wszystkie elementy w modelu.
Następnie program poprosi nas o zaznaczenie parametru do skopiowania. Lista ułożona jest alfabetycznie. Dzięki temu możliwe jest szybkie znalezienie interesującej nas zmiennej.
W ostatnim kroku program filtruje parametry do jakich możemy przepisać wybraną wartość. Jeśli utworzymy własny parametr o tym samym rodzaju co kopiowany wariant to znajdziemy go w tej liście.
Po ostatnim wyborze program przepisze wartości we wszystkich elementach. Na koniec procesu otrzymamy zestawienie elementów jakie zostały przepisane / lub nie. O błędach również się dowiemy.
Film z działania programu
Kod programu – kopiowanie parametrów revit
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
Copyright(C)2022 Paweł Kińczyk## Importsimport sysfrom rpw import revit as rvfrom pyrevit import formsfrom pyrevit import outputfrom Autodesk.Revit.UI.Selection import*from Autodesk.Revit.DB import*## Revit docdoc = rv.docuidoc = rv.uidoc## Class and defdefPargetstr(element,name):return(element.GetParameters(name))[0].AsValueString()## Pick family of choosen elementtry:with forms.WarningBar(title="Pick element in model, program will get his category"): collector = uidoc.Selection.PickObject(ObjectType.Element)exceptExceptionas e:print("Nothing was picked") sys.exit(1)collector=collector.ElementIdcollector=doc.GetElement(collector)collector_cat_id=collector.Category.Idpicked_el=collectortype=collector.GetType()collector=FilteredElementCollector(doc).OfClass(type).WhereElementIsNotElementType().ToElements()## Get the elements of the same Family and Typeelements=[]for i in collector:ifPargetstr(i,"Family and Type")==Pargetstr(picked_el,"Family and Type"): elements.append(i)else:pass## Get parametersparameters={}parameters_editable={}for i in elements[0].Parameters: parameters.update({i.Definition.Name:i})## Take parameter to be copiedparameters_list=sorted(parameters.keys())selected_option_a = forms.CommandSwitchWindow.show( parameters_list,message='Take parameter to be copied:',recognize_access_key=False)## Collecting parameters by storage typetry:for i in elements[0].Parameters:if i.IsReadOnly ==Falseand i.StorageType == StorageType.String and i.Definition.Name != selected_option_a: parameters_editable.update({i.Definition.Name:i})elif i.IsReadOnly ==Falseand parameters[selected_option_a].StorageType == i.StorageType and i.Definition.Name != selected_option_a and i.CanBeAssociatedWithGlobalParameters()==True: parameters_editable.update({i.Definition.Name:i})else:passexceptKeyErroras e:print("You don't pick element") sys.exit(1)## Choose parameter to overwrite valueparameters_list_editable=sorted(parameters_editable.keys())selected_option_b = forms.CommandSwitchWindow.show( parameters_list_editable,message='Take parameter to set:',recognize_access_key=False)## Choose parameter to overwrite valueoutput = output.get_output()output.print_html('<font size="6"><strong>Results:</strong></font>')t =Transaction(doc,"Override parameter - PYLAB")t.Start()for i in elements:try: parameter_a = i.LookupParameter(selected_option_a) parameter_b = i.LookupParameter(selected_option_b)if parameter_a.StorageType == StorageType.String and parameter_b.StorageType == StorageType.String: parameter_b_overr=parameter_a.AsString() parameter_b.Set(parameter_b_overr)print("Element Id: "+str(i.Id))print("Overritten value: "+str(parameter_b_overr))print("="*6)elif parameter_a.StorageType == StorageType.Double and parameter_b.StorageType == StorageType.Double: parameter_b_overr=parameter_a.AsDouble() parameter_b.Set(parameter_b_overr)print("Element Id: "+str(i.Id))print("Overritten value: "+str(parameter_b_overr))print("="*6)elif parameter_a.StorageType == StorageType.Integer and parameter_b.StorageType == StorageType.Integer: parameter_b_overr=parameter_a.AsInteger() parameter_b.Set(parameter_b_overr)print("Element Id: "+str(i.Id))print("Overritten value: "+str(parameter_b_overr))print("="*6)else: parameter_b_overr=parameter_a.AsValueString() parameter_b.Set(parameter_b_overr)print("Element Id: "+str(i.Id))print("Overritten value: "+str(parameter_b_overr))print("="*6)exceptTypeErroras e:print("Error: \n Element don't have this value")print("Element Id: "+str(i.Id))print("="*6)exceptExceptionas e:print("Element Id: "+str(i.Id))print("Error message: "+str(e))print("="*6)t.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.
Ta strona korzysta z ciasteczek aby świadczyć usługi na najwyższym poziomie. Dalsze korzystanie ze strony oznacza, że zgadzasz się na ich użycie.ZgodaPolityka prywatności