Создать плагин для sketchup
Порядок выполнения
Откроем SketchUp и выберем шаблон Simple Template - Meters.
Выберем инструмент фигуры и нарисуем на земле квадрат по форме дома.
Теперь, выдавим его с помощью инструмента выдавить/вдавить (push/pull).
Сделаем стены. Для этого используем инструмент Сдвиг (Offset).
Повторим операцию ещё раз.
Образовалась довольно узкая рамка, которую можно использовать для создания стен. На этом этапе стоит добавить все запланированные перегородки.
Лишние линии убираются инструментом Ластик (Erase).
Прорежем двери и окна. Для начала по периметру дома создадим направляющую линию. Последней линией контур не замыкаем, иначе образуется новая плоскость.
Нарисуем на стене квадрат и выделим его.
Нажимая Ctrl+C и Ctrl+V, копируем его по стене, привязывая к линии.
После копирования окон лишнии линии стираем.
С помощью инструмента Вдавить/выдавить вдавливаем окно до состояния "На грани" (On Face).
Теперь, инструмент запомнил глубину и можно вырезать окна двойным кликом.
Вырежем дверь похожим образом.
Используем инструмент "Ведёрко" (Paint Bucket) для наложения текстур. Выберем подходящую текстуру и зальём пол с фундаментом.
Аналогично поступим со стенами.
Чтобы наложить текстуру на замкнутый контур, нажмём Shift, чтобы наложить на все плоскости, имеющие такую же текстуру — Ctrl.
Текстура на стену легла не идеально. Перейдём в свиток Текстура-Позиция, и перетягивая красный ползунок мы изменим позицию текстуры, а зелёным — её размер.
Сейчас текстура этой стены отличается от остальных стен. Используем клик левой кнопки мыши по этой стене с зажатым Alt на инструменте "Ведёрко", чтобы запомнить настройки текстуры на этой стене.
И красим инструментом "Ведёрко" остальные стены.
Перейдем к созданию крыши. Для этого нужно заблокировать данный участок от редактирования, чтобы ничего не испортить. Выделим дом и вызовем свиток меню "Сгруппировать".
На одном из торцов дома создадим плоскость для крыши.
Попрошу заметить, что мы вышли из группы кликом по пустому месту на экране. Если плоскость маленькая, её можно увеличить инструментом "Растянуть" (Scale).
Рисуем на плоскости очертания крыши. Лишние линии можно стереть.
Инструметом Выдавить/вдавить придаём объем.
Используем "Сдвиг" на крыше, чтобы добавить объёма.
И вдавим плоскость немного внутрь.
Окрасим всё подходящими текстурами и удалим человека. Домик готов для импорта в Unity!
В настройках импорта в Unity надо выставить галочку Generate Colliders, а во вкладке Material – Use External Materials.
При этом, импортируются все материалы и создадутся папки.
Теперь, у вас есть своя собственная модель дома, для использования в играх!
Google SketchUp — программа для быстрого создания и редактирования трёхмерной графики. Удобство и простоту SketchUp оценят, как начинающие работу с трёхмерным моделированием, так и профессионалы.
Но не все знают, что SketchUp обладает мощным API, с помощью которого можно создавать модули, добавляя в программу новый функционал. В этом посте я попытаюсь объяснить общие принципы архитектуры SketchUp и процесс разработки плагина. Перед написанием нового велосипеда плагина стоит поискать на сайте Sketchucation уже готовые реализации с необходимой для Вас функциональностью. Найдя подходящий плагин с открытым исходным кодом, можно реализовать требуемый функционал, оставив основную часть кода нетронутой. Например, плагин делает какие-то расчеты и построения, а вы только изменяете их применение или визуализацию.
Плагины для SketchUp пишутся на языке Ruby.
На Google Code представлена официальная документация по разработке. Она состоит из 3 разделов: Introduction, Quick Reference и Object Reference.
1) Introduction – вводный раздел, в котором показан пример создания простого плагина.
2) Quick Reference – справочный раздел по классам, методам.
3) Object Reference – справочный раздел по объектной модели SketchUp. Объектная иерархия очень удобно разбита по группам, что позволяет быстро искать необходимые для написания кода классы.
Пример разработки плагина я возьму из собственной практики. Для удобства работы требовался дополнительный функционал, отсутствующий в SketchUp. Задача состояла в быстром и удобном определении размеров объекта (ширина, высота, толщина). Готовый плагин с данной функциональностью был найден — GetDimensions, но у него был большой минус: он показывал размеры в MessageBox’e, который необходимо было постоянно закрывать, что создавало определенное неудобство. Я решил исследовать его код и изменить вывод результата.
Код плагина GetDimensions:
require 'sketchup.rb'
def get_dimensions
model = Sketchup.active_model
mname = model.title
Sketchup::set_status_text(( "GET COMPONENT DIMENSIONS. " ), SB_PROMPT)
Sketchup::set_status_text( " " , SB_VCB_LABEL)
Sketchup::set_status_text( " " , SB_VCB_VALUE)
boundingBox = model.selection[0].bounds
dims = [ boundingBox.height,
boundingBox.width,
boundingBox.depth ]
dims.sort!
UI.messagebox( "Thickness: " + dims[0].to_s + "\nWidth: " + dims[1].to_s + "\nLength: " + dims[2].to_s)
end
if ( not file_loaded?( "GetDimensions.rb" ) )
add_separator_to_menu( "Plugins" )
UI.menu( "Plugins" ).add_item( "Get Dimensions" ) < get_dimensions >
end
* This source code was highlighted with Source Code Highlighter .
Код состоит из логики плагина ( get_dimensions ), добавления пункта меню (Plugins -> Get Dimensions) и загрузка самого файла плагина в систему (GetDimensions.rb).
Для установки, плагин необходимо скопировать в директорию “C:\Program Files\Google\Google SketchUp\Plugins\”, а программа автоматически подгрузит все скрипты из этой папки при запуске.
Главным объектом, хранящим в себе структуру рисунка, является model .
В данном плагине берется первый выделенный объект и его размеры. Размеры сортируются в порядке возрастания и показываются в MessageBox’е, а в панели состояния отображается название плагина.
Панель состояния меня сразу заинтересовала, и я решил перенести в нее вывод полученных размеров.
После небольшой модификации плагина мне удалось этого достичь:
def get_dimensions
model = Sketchup.active_model
entities = model.entities
boundingBox = model.selection[0].bounds
dims = [ boundingBox.height,
boundingBox.width,
boundingBox.depth ]
dims.sort!
Sketchup::set_status_text(( "Thickness: " + dims[0].to_s + ". Width: " + dims[1].to_s + ". Length: " + dims[2].to_s ), SB_PROMPT)
end
* This source code was highlighted with Source Code Highlighter .
После выбора элемента, с помощью инструмента Select, выбираем в меню команду Get Dimensions. В результате на панели состояния будут отображаться размеры выбранного элемента. Для более удобного вызова команды следует назначить горячую клавишу.
Следующим шагом было сделать так, чтобы размеры автоматически показывались при выделении объекта. В голову пришло два варианта: сделать свой инструмент, который бы выделял элементы как инструмент Select, но при этом показывал внизу размеры, либо модифицировать инструмент Select, что бы он при выделении показывал размеры объекта.
После поиска по Object Reference, родилась идея реализации второго способа.
Как оказалось, с помощью Observer Classes -> SelectionObserver можно подписаться на события инструмента Select.
После модификации логика плагина была разнесена на два файла:
Dimensions_load.rb
require 'sketchup.rb'
require 'Dimensions/GetDimensions.rb'
$PluginMenuName = "Tools"
$DimensionsMenuName = "Dimensions Tool"
$GetDimensionsMenuItem = "Get Dimensions"
$AutoDisplayMenuItem = "Auto Display Dimensions"
if (not file_loaded?( "dimensions_load.rb" ))
pluginMenu = UI.menu($PluginMenuName)
dimensions = Dimensions. new
pluginMenu.add_separator
getDimensionsSubMenu = pluginMenu.add_submenu($DimensionsMenuName)<>
getDimensionsSubMenu.add_item($GetDimensionsMenuItem)
autoDisplayItem = getDimensionsSubMenu.add_item($AutoDisplayMenuItem)
getDimensionsSubMenu.set_validation_proc(autoDisplayItem)
end
* This source code was highlighted with Source Code Highlighter .
GetDimensions.rb
def onSelectionBulkChange(selection)
get_dimensions(selection)
end
def get_selection_dimensions
get_dimensions(Sketchup.active_model.selection)
end
def get_dimensions(selection)
boundingBox = selection[0].bounds
dims = [ boundingBox.height,
boundingBox.width,
boundingBox.depth ]
dims.sort!
Sketchup::set_status_text(( "Thickness: " + dims[0].to_s + ". Width: " + dims[1].to_s + ". Length: " + dims[2].to_s ), SB_PROMPT)
end
def connect_observer
if (@usedObserver) then
return remove_observer
else
return add_observer
end
end
def add_observer
@usedObserver = true
Sketchup.active_model.selection.add_observer self
return MF_CHECKED
end
def remove_observer
@usedObserver = false
Sketchup.active_model.selection.remove_observer self
return MF_UNCHECKED
end
def menu_checked
if (@usedObserver) then
return MF_CHECKED
else
return MF_UNCHECKED
end
end
end
* This source code was highlighted with Source Code Highlighter .
Рассмотрим код подробнее.
Для того, чтобы иметь возможность перехватывать события инструмента Select, необходимо наследоваться от класса SelectionObserver , переопределить у себя метод onSelectionBulkChange(selection) , который будет вызываться при выделении объектов, и подписаться на события с помощью Sketchup.active_model.selection.add_observer .
Плагин был перемещен в меню Tool -> Dimensions Tool, которое содержит два подпункта: Get Dimensions и Auto Display Dimensions.
Как я уже говорил ранее, задача плагина сводилась к отображению параметров объекта автоматически при его выделении. Т.к. дополнительный функционал не всегда нужен, решено было сделать его отключаемым. Auto Display Dimensions — позволяет включать его в нужный момент, а Get Dimensions – вызов плагина по запросу — был оставлен для большей гибкости использования.
Как видите, модернизирование существующего плагина намного проще, чем писание его с нуля. Кстати, я впервые писал код на Ruby, но благодаря большому опыту программирования, понять синтаксис не составило труда.
Работать в Sketch легко. Многие знают, как использовать базовые функции. Но не все работают с плагинами, которые расширяют возможности программы. Я расскажу о 7 полезных дополнениях, которые помогают оптимизировать трудозатраты и автоматизировать некоторые задачи.
Небольшой хинт: большинство плагинов, про которые идет речь, доступны в Sketch Toolbox. Это отдельная небольшая программа с поиском и возможностью быстрого удаления/установки плагинов.
1. Sketch export assets
Начнем с экспорта иконок. Sketch обладает неплохим инструментом для экспорта, но размер (1x, 2x, 3x) в нём нужно настраивать дополнительно, что каждый раз отнимает время. Этот плагин нужен, чтобы за пару кликов выгрузить иконки с группировкой по плотности экрана и с нужным названием папок.
2. Craft by Invision
Плагин, который может синхронизироваться с invision, вставлять реальные данные из определенной веб-страницы, папки или JSON файла, а также дублировать данные с погрузкой из источника первого блока. Содержит библиотеку своих элементов.
3. Runner
Это как Spotlight, но для Sketch. Он ищет артборды, объекты и команды программы по названию. Запускает плагины, создает файлы и применяет стили.
4. RenameIt
Плагин, который позволяет переименовывать несколько объектов одновременно. Это могут быть иконки, символы, артборды. Чтобы название не было одним и тем же для всех файлов, можно добавить статический префикс (например, название объекта) и динамический (например, 1,2,3 / A,B,C).
А также есть функция поиска и замены символов в названиях.
5. Sketch Measure
Генерация спецификации для разработчиков в один клик. Помимо спецификации с размерами, цветами и стилями элементов там есть функционал нарезки иконок, если они заранее будут отмечены как «make exportable».
6. Sketch Focus
Комментирование и запись задач непосредственно в Sketch упрощает поиск нужного артборда и экономит время для перехода из программы в программу.
7. Sketch-Quick-Presentation
Автоматизации создания презентации макетов / карты экранов. Нужно просто выделить артборды в списке, выбрать плагин и нажать сгенерировать с заголовками или без (заголовки будут взяты из названия артборда).
Я использую эти плагины почти каждый день. И они помогают с организацией правильного workflow и влияют на скорость работы в Sketch.
Если вы знаете ещё какие-то интересные плагины, пишите в комментариях.
Функции:
Параметризованный файл конфигурации
Ядро Profile Builder - это возможность создавать интеллектуальные растяжки с использованием параметризованных профилей, которые мы называем «членами профиля»). Контур может быть любой формы, даже ломаной линией.
С PB3 мы можем создавать умные формы, включая рамы, трубы, перила, крыши, стены и фундаменты, которые можно расширять до бесконечных возможностей!
Создавать и сохранять собственные файлы конфигурации
Файл конфигурации можно сохранить в локальной библиотеке, включая пользовательское имя, направление (привязка, смещение, поворот), размер, материал и слой. Просто нарисуйте лицо в модели и добавьте его как новый профиль, чтобы создать новый профиль. После сохранения файла конфигурации вы можете загрузить его и повторно использовать в будущих проектах.
Параметрическая сборка, объединяющая файлы конфигурации и компоненты
Представьте себе моделирование сложных перил, многослойных стен, заборов, стен, лестниц за секунды! Profile Builder Assembler позволяет создавать и сохранять полностью настраиваемые параметрические интеллектуальные компоненты. Вы будете поражены всем, что вы делаете со сборками в Profile Builder!
Не хотите создавать свои собственные компоненты? Нет проблем! Просто загрузите библиотеку 3D-моделей из множества готовых компонентов и настройте ее, чтобы создать самостоятельно!
Создание сборки в один клик
С функцией «автоматической сборки» можно легко создать множество различных компонентов одним нажатием кнопки. Просто создайте собранные детали, выберите их и нажмите «Автосборка»!
Создайте файл конфигурации по любому пути - файл конфигурации останется в правильном направлении
Что касается собственного «инструмента отслеживания пути» SketchUp, одна из самых больших жалоб при использовании - это то, как направление контура вращается вдоль сложного пути. Profile Builder может обработать любой путь, который вы ему укажете, и всегда поддерживать ожидаемое направление профиля.
LeetCode 595. Big Countries
LeetCode 595. Big Countries тема There is a table World A country is big if it has an area of bigger than 3 million square km or a population of more than 25 million. Write a SQL solution to output bi.
Profile Builder (плагин параметрического моделирования SketChup) v3.0.5 последняя версия
Profile BuilderЭто очень практичный плагин для параметрического моделирования SketChup, этот плагин можно назвать одним из плагинов, которые su должен установить, с его помощью мы можем быстро моделировать в SketChup, не только это, ваша модель будет более интеллектуальной. И может адаптироваться к изменениям и корректировкам дизайна.
Разработка плагина SketchUP
Укажите источник перепечатки статьи author by Nicaicai
TIDB Двоичного Источник чтение Чтение статья (7) Drainer сервер Введение
Автор: Хуан Jiahao В предыдущей статье вводится насос сервер, давайте познакомимся реализация Drainer сервера, главная роль Drainer сервера, чтобы получить Двоичный от каждого сервера насоса, и анализ.
Переключатель Kotlin
В Котлине нет оператора коммутатора, и это DESI. Способ Джавы: Котлин написание: .
SketchUp
Учебные материалы для школы программирования. Часть 7
Предыдущие уроки можно найти здесь:
На прошлом уроке мы затронули тему самостоятельного создания объектов для игр. В т.ч. была упомянута программа SketchUp, которую мы часто использовали, для создания простых строений.
Сегодня, мы создадим здание и перенесем его в Unity. Хочу обратить ваше внимание на то, что для импорта готового здания, необходимо, чтобы SketchUp стоял на том же ПК. Без программы Unity не сможет импортировать модель.
Сеть Внимания пирамиды для сегментации сегментации
Сеть Внимания пирамиды для сегментации сегментации Эта статья предлагает сковороду, предлагая функцию модуля привлечения пирамиды (FPA) и Global Module Atterty Upsample (GAU), вводящий очаговый ключ д.
Интеллектуальная рекомендация
Исследование вторичной разработки SketchUp (2) Поместите плагин, написанный вами, в строку меню.
Когда я впервые встретил SketchUp Ruby Code Editor после того,
Но это неполный Плагины,
Вам нужно открыть его, когда вы его используете Ruby Code Editor ,
Вставьте код нашей сферы для выполнения.
Что на этот раз нашицели Да:
Поместите наш плагин сферы в строку меню SketchUP;
И его можно использовать каждый раз при запуске Sketchup.
Давайте сначала посмотрим на эффект под мишенью!
1. Добавить меню
Давайте разберемся в наших идеях,
Теперь доступен код для рисования сферы,
Теперь нам нужна строка меню, чтобы разместить наш плагин,
Как управлять SketchUp, чтобы добавить нашу собственную строку меню?
Вы можете увидеть после казни extensions Добавить в следующий Наше собственное меню ,
Поскольку SketchUpНе положено Мы создаем новое меню, но можем добавить к существующему менюПодменю,
Мы можем выбрать, в какое меню добавляется строка меню.
Те, кто использует китайскую версию, могут обратиться к таблице ниже, чтобы выбрать английское название соответствующего меню.
Файл (F) | Изменить (E) | Посмотреть (V) | Камера © | Рисунок® | Инструменты (T) | Окно (W) | Расширение | Помощь (H) |
---|---|---|---|---|---|---|---|---|
File | Edit | View | Camea | Draw | Tools | Window | Extensions | Help |
2. Введите код для рисования сферы.
Строка меню есть, следующий шаг - поместить в нее код для рисования сферы!
Чтобы мы добились щелчка extensions > Нарисуйте сферу ,
Можно создать сферу радиусом 5 мм.
3. Управляйте размером сферы.
Но это не может точно контролировать сферуразмер,
Нужно добавить интерактивный интерфейс, ввести радиус сферы, которую нам нужно нарисовать.
4. Полный код
Наконец, опубликуйте полный код:
Хорошо, теперь это выглядит отлично!
Вы можете напрямую использовать созданный вами плагин в своей будущей работе.
Подождите, после перезапуска SketchUp я обнаружил только что добавленное менюБольше не надо ?
Это потому, что в приведенном выше руководстве
Наша собственная строка меню запущена в SketchUpпосле того Загружено,
Так что просто сохраните полный код выше как .rb файл,
Установленный как плагин, можно использовать постоянно.
(Будете ли вы устанавливать плагины? Сначала рекомендуется следующий метод А.)
Установите плагин методом:
А. Будут ли наши .rb Поместите файл прямо в sketchup Plugins Под папкой
Б. Устанавливаем через менеджер расширений, выбираем тот, который мы сохранили .rb файл
Зная, что вы рисуете картинки и у вас нет времени учить код,
Вот несколько быстрых руководств,
Давайте взглянем на несколько модулей и категорий, предоставленных вторичной разработкой SketchUp (я тоже не понимаю ~)
Главный модуль
1、 Geom : Чтобы инкапсулировать точечную и линейную обработку, основное внимание уделяется оценке данных и упрощению нашего кода;
2、 Layout : Этот модуль представляет собой новый API в Sketchup 2018 для программирования LayOut;
3、 Sketchup : Последний модуль содержит все аспекты, необходимые для вторичной разработки SketchUp, такие как: анимация, кривые, камеры, материалы, объекты, компоненты и т. Д .;
4、 UI : Модуль пользовательского интерфейса, включая настраиваемые элементы управления стилем интерфейса SketchUp, такие как всплывающие окна, создание рабочих панелей инструментов, отображение собственных уведомлений и т. Д.
Главная категория
1、 Array : Array в SketchUp является расширением исходного класса Ruby Array.
2、 LanguageHandler : SketchUp позволяет упростить локализацию на разные языки.
3、 Length : Класс, предназначенный для обработки длины, и расчетная длина сохраняется в дюймах в качестве единицы измерения.
4、 Numeric : Класс, специально используемый для преобразования единиц измерения, например футов в метры, сантиметры и т. Д.
5、 String : Получить длину строки (всего один метод: to_l)
6、 SketchupExtension : Инкапсулирует методы создания расширений SketchUp и работы с ними.
Разместите еще немного учебных материалов
Практика работы с регулярными выражениями
Читайте также: