File tree Expand file tree Collapse file tree
extensions/pyRevitTools.extension/pyRevit.tab/Selection.panel/select.stack/Filter.pulldown/Keep Editable.pushbutton Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ title :
2+ en_us : Keep Editable
3+ fr_fr : Conserver les éditables
4+ ru : Удержать редактируемые
5+ chinese_s : 保留可编辑图元
6+ es_es : Mantener editables
7+ de_de : Nur bearbeitbare Elemente in aktueller Auswahl belassen
8+ pt_br : Manter Editáveis
9+ tooltip :
10+ en_us : >-
11+ Keeps only editable elements (unclaimed or owned by current user) in current
12+ selection. If nothing is selected, pick a region to filter from.
13+ fr_fr : >-
14+ Conserve uniquement les éléments éditables (non réclamés ou appartenant à
15+ l'utilisateur actuel) dans la sélection actuelle. Si rien n'est sélectionné,
16+ délimitez une zone à filtrer.
17+ ru : >-
18+ Удерживает только редактируемые элементы (незаявленные или принадлежащие
19+ текущему пользователю) в текущем выделении. Если ничего не выбрано, выберите
20+ область для фильтрации.
21+ chinese_s : >-
22+ 在当前选择中仅保留可编辑图元(未申请或由当前用户拥有)。若未选择任何内容,则框选区域进行过滤。
23+ es_es : >-
24+ Mantiene solo los elementos editables (no reclamados o del usuario actual) en
25+ la selección actual. Si no hay nada seleccionado, delimite una región para
26+ filtrar.
27+ de_de : >-
28+ Die aktuelle Elementauswahl wird so vermindert, dass nur bearbeitbare Elemente
29+ (nicht beanspruchte oder dem aktuellen Benutzer gehörende) in der Auswahl
30+ verbleiben. Wenn nichts ausgewählt ist, kann ein Bereich zum Filtern gewählt
31+ werden.
32+ pt_br : >-
33+ Mantém apenas os elementos editáveis (não reivindicados ou do usuário atual)
34+ na seleção atual. Se nada estiver selecionado, selecione uma região para
35+ filtrar.
Original file line number Diff line number Diff line change 1+ """Keep only editable elements in current selection.
2+
3+ If nothing is selected, pick a region to filter editable elements from.
4+ Works in both workshared and non-workshared documents.
5+ """
6+ from pyrevit import revit
7+ from pyrevit import DB , UI
8+
9+ doc = revit .doc
10+
11+
12+ def is_editable (el ):
13+ if not doc .IsWorkshared :
14+ return True
15+ try :
16+ status = DB .WorksharingUtils .GetCheckoutStatus (doc , el .Id )
17+ return status in (
18+ DB .CheckoutStatus .NotOwned ,
19+ DB .CheckoutStatus .OwnedByCurrentUser ,
20+ )
21+ except Exception :
22+ return True
23+
24+
25+ class EditableSelectionFilter (UI .Selection .ISelectionFilter ):
26+ def AllowElement (self , element ):
27+ return is_editable (element )
28+
29+ def AllowReference (self , reference , point ):
30+ return False
31+
32+
33+ selection = list (revit .get_selection ())
34+ if selection :
35+ editable = [el for el in selection if is_editable (el )]
36+ revit .get_selection ().set_to (editable )
37+ else :
38+ try :
39+ elements = revit .pick_rectangle (pick_filter = EditableSelectionFilter ())
40+ revit .get_selection ().set_to (elements )
41+ except Exception :
42+ pass
You can’t perform that action at this time.
0 commit comments