Перейти к содержанию
Форум мебельщиков

SketchUp - Создание плагина в Notepad++


nuget

Рекомендуемые сообщения

Привет,

Данная тема для тех, кто желает научиться писать собственные плагины для приложения SketchUp.

 

Инструмент разработки

В качестве инструмента разработки на платформе Windows, можно использовать IDE (например: Aptana, NetBeans, RubyMine), но я предпочел Notepad++. Самый простой вариант (без инсталляции приложения), можно просто скачать Notepad++ zip package, и распаковать (например, на рабочий стол). Далее необходимо добавить в настройках приложения (меню: Settins / Preferences..) поддержку языка Ruby (см. Preferences_Language_Menu.PNG). В данном случае, будет работать только подсветка языка Ruby, поддержка IntelliSense возможна только в области переменных.

 

Каталог загрузки плагинов

Корневой каталог загрузки плагинов по умолчанию, является Plugins (полный путь: "C:\Users\User_Name\AppData\Roaming\SketchUp\SketchUp 2015\SketchUp\Plugins"). Как правило, плагин состоит из загрузочного файла, расположенного в корневом каталоге, и подкаталог с исполняемыми файлами и ресурсами. Пример hello cube , демонстрирует, как можно создать простейший плагин в обычном текстовом редакторе. Для удобства, вы можете создать отдельный каталог Plugins, где будут располагаться предварительные версии плагинов, например:

 

SketchUp

- Plugins

-- Plugin_1

--- test

--- test.rb

-- Plugin_2

-- Plugin_n

 

В данном случае, каталог Plugin_1 представляет собой директорию проекта, на тот случай если появится необходимость перехода на IDE. Далее, добавим путь в настройках Notepad++ на каталог Plugins по умолчанию (см. Preferences_Default_Directory.PNG). 

 

Создание загрузочного файла

Запустите приложение Notepad++. Далее, сохраните файл (см. npp_SaveAs.PNG) под именем (test.rb), и добавьте следующий код:

# Source manifest

require 'sketchup.rb'
require 'extensions.rb'

module Sketchup    
  module Extensions      
    module Test        
      # Plugin information        
      PLUGIN_ID       = 'Test'.freeze        
      PLUGIN_NAME     = 'Test'.freeze        
      PLUGIN_VERSION  = '1.0.0'.freeze  

      # Resource paths        
      FILENAMESPACE = File.basename(__FILE__, '.*')        
      PATH_ROOT     = File.dirname(__FILE__).freeze        
      PATH          = File.join(PATH_ROOT, FILENAMESPACE).freeze        
      PATH_ICONS    = File.join(PATH, 'icons').freeze  

      # Extension loader        
      unless file_loaded?(__FILE__)          
        loader = File.join( PATH, 'loader.rb' )          
        ex = SketchupExtension.new(PLUGIN_NAME, loader)          
        ex.description = 'Test plugin Hello World!'          
        ex.version     = PLUGIN_VERSION          
        ex.copyright   = 'Copyright © 2015'          
        ex.creator     = 'SketchUp'          
        Sketchup.register_extension(ex, true)        
      end      
    end    
  end  
end

Сохраните файл. Данный файл, будет загружен на момент запуска SketchUp в первую очередь. Далее, метод file_loaded?(__FILE__) передаст управление файлу ресурсов (loader.rb), который расположен в каталоге ресурсов "test". Важно, что бы загрузочный файл и каталог ресурсов имел одинаковое наименование.

 

Создание файла ресурсов

Создайте новый файл (см. npp_SaveAs2.PNG) и сохраните под именем (loader.rb) в предварительно созданный каталог "test", и добавьте следующий код:

# Loader Extension
# Add Menu

plugins_menu = UI.menu('Plugins')
item = plugins_menu.add_item('Test') { UI.messagebox('Hello World!') }

Сохраните файл. 

 

Запуск плагина

Копируйте содержимое директории "Plugin_1" в каталог загрузки плагинов. Запустите приложение SketchUp, и выполните плагин "test" (меню: "Extensions / test", см. su_test_run.PNG)

 

Дополнительные ресурсы

Основной справочник - SketchUp API.

Репозиторий разработчиков SketchUp (https://github.com/SketchUp

Preferences_Language_Menu.PNG

Preferences_Default_Directory.PNG

npp_SaveAs.PNG

npp_SaveAs2.PNG

su_test_run.PNG

Ссылка на сообщение
Поделиться на другие сайты

nuget,

Еще раз спасибо, будем разбираться.

Очень полезная тема, учитывая ещё тот момент что именно по созданию плагинов для скетча очень мало инфы находится через всемогущие поисковики.

А на ваш взгляд вот что бы вы еще посоветовали начинающим для освоения руби - может какие то блиц уроки или изучить какую то литературу?

Ссылка на сообщение
Поделиться на другие сайты

А на ваш взгляд вот что бы вы еще посоветовали начинающим для освоения руби - может какие то блиц уроки или изучить какую то литературу?

В интернете много материалов, можете начать с этого (http://ru.wikibooks.org/wiki/Ruby).

Ссылка на сообщение
Поделиться на другие сайты

nuget,

И как по вашему утверждение лучше два новых платья сшить чем одно перешивать - применимо к написанию плагинов?

То есть если переделывать плагин то не проще его с нова написать? 

Ссылка на сообщение
Поделиться на другие сайты

То есть если переделывать плагин то не проще его с нова написать? 

Смотря что вы хотите переделать.

Ссылка на сообщение
Поделиться на другие сайты

Создал репозиторий на GitHub

Плагин переименован на "nReport"

Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...

Обновление плагина nReport

 

Сделано на базе исходного кода Attribute Reporting

Аналог стандартной функции "Generate Report...", с поддержкой контекстного меню. Так же как и стандартная функция, имеет не доработки в отношении формата данных, генерация отчетов с единицами измерения (Inches).

 

Репозиторий на GitHub

post-171009-0-13198300-1434837876_thumb.

post-171009-0-32900900-1434837882_thumb.

Ссылка на сообщение
Поделиться на другие сайты
  • 3 месяца спустя...

Обновление плагина nReport

 

Сделано на базе исходного кода Attribute Reporting

Аналог стандартной функции "Generate Report...", с поддержкой контекстного меню. Так же как и стандартная функция, имеет не доработки в отношении формата данных, генерация отчетов с единицами измерения (Inches).

 

Репозиторий на GitHub

Спасибо установил - работает. Но вот есть вопрос: что это за три файла (LICENSE, .gitignore,README.md) за что они отвечают и обязательно ли их устанавливать - ведь при установке требуется замена подобных файлов в папке Плагинов. Заранее спасибо и простите если вопрос глуп )

Ссылка на сообщение
Поделиться на другие сайты

Спасибо установил - работает. Но вот есть вопрос: что это за три файла (LICENSE, .gitignore,README.md) за что они отвечают и обязательно ли их устанавливать - ведь при установке требуется замена подобных файлов в папке Плагинов. Заранее спасибо и простите если вопрос глуп )

 

Файлы (LICENSE, .gitignore, README.md) имеют отношение к репозиторию на GitHub. Копировать нужно только файлы, имеющие отношение к плагину, которые расположены в директории (src). На самом деле, плагин еще не готов.

Изменено пользователем nuget
Ссылка на сообщение
Поделиться на другие сайты

Файлы (LICENSE, .gitignore, README.md) имеют отношение к репозиторию на GitHub. Копировать нужно только файлы, имеющие отношение к плагину, которые расположены в директории (src). На самом деле, плагин еще не готов.

что с ним не так? 

Ссылка на сообщение
Поделиться на другие сайты

что с ним не так? 

 

Нужно реализовать фильтрацию атрибутов. То есть, определить конфигурацию фильтра и добавить возможность сохранять данные для последующего использования. Основное отличие от стандартной функции экспорта данных SketchUp, возможность настраивать фильтр выгрузки.

Ссылка на сообщение
Поделиться на другие сайты

Нужно реализовать фильтрацию атрибутов. То есть, определить конфигурацию фильтра и добавить возможность сохранять данные для последующего использования. Основное отличие от стандартной функции экспорта данных SketchUp, возможность настраивать фильтр выгрузки.

а так  значит он работает как родной скетчаповский гератор рапорта без всяких заморочек? 

Ссылка на сообщение
Поделиться на другие сайты

а так  значит он работает как родной скетчаповский гератор рапорта без всяких заморочек? 

 

Да, так и есть. Основной скрипт генерации отчетов (attrreporter). Диалог (Fttribute Filter), представляет собой шаблон с полями атрибутов динамических компонентов (стандартные и атрибуты пользователя).

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...