# 1.3. Первая кнопка

[![image.png](https://wiki.marksdigital.ru/uploads/images/gallery/2024-09/scaled-1680-/oY1image.png)](https://wiki.marksdigital.ru/uploads/images/gallery/2024-09/oY1image.png)

<span class="p1 pcustom">Сегодня мы с вами создадим свою вкладку, свою панель и свою кнопку в пару кликов. </span>  
<span class="p1 pcustom">Все это благодаря pyRevit (дальше "<span class="strong_highlighting_custom p1 highlighting">пай</span>").</span>

#### 1.3.1. В начале была папка.

<span class="p1 pcustom">Добавить пользовательское расширение в пай легко. </span>  
<span class="p1 pcustom">Нужно лишь создать правильную структуру папок остальное на себя возьмет сам плагин.</span>

<span class="p1 pcustom">Для начала предлагаю выбрать какую-то папку, куда мы будем в последствие добавлять все нами написанные кнопки.</span>

---

<span class="p1 pcustom">Если мы говорим о разработке плагинов внутри компании, хорошей практикой будет расположить ее в общедоступном месте. После чего, все желающие могут подключится к директории и использовать скрипты.</span>

---

<span class="p1 pcustom">Для статьи я выберу папку просто на рабочем столе: </span>  
<span class="p1 pcustom strong_highlighting_custom highlighting">C:\\Users\\chttm\\OneDrive\\Рабочий стол\\TEST\\</span>

<span class="p1 pcustom">Открываем папку TEST идем по пунктам:</span>

#### 1.3.2. ".extension"

<span class="p1 pcustom">Нам нужна папка с окончанием <span class="low_highlighting_custom p1 highlighting">.extension</span>.</span>

<span class="p1 pcustom">Это сообщит pyRevit, что у нас внутри есть структура папок расширений.</span>

<span class="p1 pcustom">Создаем папку с именем "<span class="low_highlighting_custom p1 highlighting">МоеРасширение.extension</span>".</span>

---

<span class="p1 pcustom">💡<span class="low_highlighting_custom p1 highlighting">.extension</span> - специальное окончание в имени папки, так пай будет понимать, что это расширение.</span>  
<span class="p1 pcustom">💡<span class="low_highlighting_custom p1 highlighting">МоеРасширение</span> - произвольное имя, оно не будет фигурировать в самом ревите.</span>

---

#### 1.3.3. ".tab"

<span class="p1 pcustom">Внутри МоеРасширение.extension создадим папку "<span class="low_highlighting_custom p1 highlighting">МояВкладка.tab</span>".</span>

---

<span class="p1 pcustom">💡<span class="low_highlighting_custom p1 highlighting">.tab</span> - специальное окончание, которое укажет паю, что эту папку надо рассматривать как вкладу ревита</span>  
<span class="p1 pcustom">💡“<span class="low_highlighting_custom p1 highlighting">МояВкладка</span>” - имя вкладки. Оно отобразится в ревите.</span>

---

<span class="p1 pcustom">Это в Revit называется "<span class="strong_highlighting_custom p1 highlighting">Вкладки</span>".</span>

[![Это вкладки](https://wiki.marksdigital.ru/uploads/images/gallery/2024-09/scaled-1680-/jdqimage.png)](https://wiki.marksdigital.ru/uploads/images/gallery/2024-09/jdqimage.png)

#### 1.3.4 ".panel"

<span class="p1 pcustom">Перейдем в “<span class="low_highlighting_custom p1 highlighting">МояВкладка.tab</span>” и создадим папку <span class="low_highlighting_custom p1 highlighting">МояПанель1.panel</span></span>

---

<span class="p1 pcustom">💡<span class="low_highlighting_custom p1 highlighting">.panel</span> - специальное окончание, которое укажет паю, что содержимое этой папки надо поместить на отдельную панель.</span>  
<span class="p1 pcustom">💡<span class="low_highlighting_custom p1 highlighting">МояПанель1</span> - имя панели.</span>

---

<span class="p1 pcustom">Это "<span class="strong_highlighting_custom p1 highlighting">Панели</span>".</span>

[![image.png](https://wiki.marksdigital.ru/uploads/images/gallery/2024-09/scaled-1680-/DuBimage.png)](https://wiki.marksdigital.ru/uploads/images/gallery/2024-09/DuBimage.png)

#### 1.3.5. ".pushbutton"

<span class="p1 pcustom">Наконец, нам нужно создать кнопки.</span>

<span class="p1 pcustom">Перейдем в папку <span class="low_highlighting_custom p1 highlighting">МояПанель1.panel</span> и создадим папку "<span class="low_highlighting_custom p1 highlighting">МояПростоКнопка.pushbutton</span>".</span>

---

<span class="p1 pcustom">💡<span class="low_highlighting_custom p1 highlighting">.pushbutton</span> - специальное окончание, которое укажет паю, что эта папка должна стать кнопкой.</span>  
<span class="p1 pcustom">💡"<span class="low_highlighting_custom p1 highlighting">МояПростоКнопка</span>" - имя кнопки, если нет иного указания имени.</span>

---

<span class="p1 pcustom">Это "<span class="strong_highlighting_custom p1 highlighting">Кнопки</span>".</span>

[  
![image.png](https://wiki.marksdigital.ru/uploads/images/gallery/2024-09/scaled-1680-/Gc7image.png)](https://wiki.marksdigital.ru/uploads/images/gallery/2024-09/Gc7image.png)

<span class="p1 pcustom">Внутри этой папки должны находится:</span>

- <span class="p1 pcustom">"<span class="low_highlighting_custom p1 highlighting">script.py</span>" - скрипт.</span>

---

<span class="p1 pcustom">💡Мы можем называть наши скрипты как угодно, лишь бы в конце стоял <span class="low_highlighting_custom p1 highlighting">script.py</span>.</span>  
<span class="p1 pcustom">💡Например: <span class="low_highlighting_custom p1 highlighting">Supernatural\_script.py</span></span>

---

- <span class="p1 pcustom"><span class="low_highlighting_custom p1 highlighting">icon.png</span> - иконка. </span>

---

<span class="p1 pcustom">💡Не обязательный файл.</span>  
<span class="p1 pcustom">💡Максимальный размер <span class="low_highlighting_custom p1 highlighting">96x96</span> пикселей.</span>

---

- <span class="p1 pcustom"><span class="low_highlighting_custom p1 highlighting">bundle.yam</span>l - файл метаданных. [Тут подробнее](https://pyrevitlabs.notion.site/Bundle-Metadata-9fa4911c14fa49c48e715421400f1427)</span>

---

<span class="p1 pcustom">💡Не обязательный файл.</span>  
<span class="p1 pcustom">💡Удобный способ задать имя, контекст, описание, автора и многое другое для кнопки.</span>

---

[![image.png](https://wiki.marksdigital.ru/uploads/images/gallery/2024-09/scaled-1680-/BVuimage.png)](https://wiki.marksdigital.ru/uploads/images/gallery/2024-09/BVuimage.png)

<span class="p1 pcustom">У нас получится такая структуру папок:</span>

<span class="p1 pcustom">- МоеРасширение.extension</span>

<span class="p1 pcustom">- - МояВкладка.tab</span>

<span class="p1 pcustom">- - - МояПанель1.panel</span>

<span class="p1 pcustom">- - - - МояПростоКнопка.pushbutton</span>

<span class="p1 pcustom">- - - - - script.py</span>

<span class="p1 pcustom">- - - - - icon.png</span>

[![image.png](https://wiki.marksdigital.ru/uploads/images/gallery/2024-09/scaled-1680-/s9rimage.png)](https://wiki.marksdigital.ru/uploads/images/gallery/2024-09/s9rimage.png)

<p class="callout success"><span class="p1 pcustom">Поздравляю вас, первая кнопка создана.</span></p>

<span class="p1 pcustom">Теперь подключим наше расширение к Revit.</span>