Автоматический подсчет розеток и выключателей в SketchUp с помощью Ruby-скрипта
Если вы занимаетесь моделированием в SketchUp, особенно проектами с электрикой, то наверняка сталкивались с необходимостью подсчитывать розетки, выключатели и другие элементы. Ручной подсчет — это утомительно, особенно в больших моделях. Сегодня я расскажу, как автоматизировать этот процесс с помощью простого Ruby-скрипта, который работает прямо в консоли SketchUp
Этот скрипт полностью совместим с плагином Crafteelectric Tools, предназначенным для расстановки электрических элементов.
Либо вы можете использовать свои динамические компоненты с условием, что имена будут даваться определенным образом: имя розетки должно начинаться с "EM" и содержать в себе группу с именем "3D", касание которой скрипт и ищет для подсчета рамок.
Как запустить скрипт
Откройте SketchUp и загрузите вашу модель, созданную или дополненную с помощью Crafteelectric Tools.
Перейдите в меню "Window" > "Ruby Console" (или "Окно" > "Консоль Ruby" в русской версии).
Скопируйте и вставьте весь скрипт в консоль, затем нажмите Enter.
Скрипт обработает модель и выведет результаты в консоль.
m=Sketchup.active_model
def b(g,t)
bb=Geom::BoundingBox.new
8.times{|i|bb.add(g.bounds.corner(i).transform(t))}
bb
end
def c(e,p,p_t=IDENTITY,r=[])
e.each{|x|
if x.is_a?(Sketchup::ComponentInstance) && x.definition.name.start_with?(p)
r<<(p=="EM" ? [x, p_t*x.transformation] : x)
elsif x.is_a?(Sketchup::Group) || x.is_a?(Sketchup::ComponentInstance)
c((x.respond_to?(:entities) ? x.entities : x.definition.entities), p, p_t*x.transformation, r)
end
}
r
end
em=c(m.entities,"EM")
puts"Найдено EM-компонентов: #{em.size}"
p=em.combination(2).select{|(a,a_t),(b,b_t)|
ga=a.definition.entities.find{|x|x.is_a?(Sketchup::Group)&&x.name=="3D"}
gb=b.definition.entities.find{|x|x.is_a?(Sketchup::Group)&&x.name=="3D"}
ga && gb && b(ga,a_t).intersect(b(gb,b_t)).valid?
}
require'set'
g=[]
v=Set.new
adj=Hash.new{|h,k|h[k]=[]}
p.each{|a,b| adj[a[0]]<<b[0]; adj[b[0]]<<a[0]}
def d(n,a,v,g)
return if v.include?(n)
v<<n
g<<n
a[n].each{|x| d(x,a,v,g)}
end
em.each{|c,_| next if v.include?(c); x=[]; d(c,adj,v,x); g<<x}
class Array;def tally_by;each_with_object(Hash.new(0)){|i,h|h[yield(i)]+=1};end;end
fc=g.tally_by(&:size)
emc=em.tally_by{|c,_|c.definition.name[/^EM[^#]*/]}
ek=c(m.entities,"EK")
ekc=ek.tally_by{|c|c.definition.name[/^EK[^#]*/]}
eo=c(m.entities,"EO")
eoc=eo.tally_by{|c|c.definition.name[/^EO[^#]*/]}
puts"\n Количество рамок:", fc.sort.map{|s,c|" - Рамок на #{s}: #{c}"}
puts"\n Количество EM-компонентов:", emc.sort.map{|n,c|" - #{n}: #{c}"}
puts"\n Количество EK-коробок:", ekc.sort.map{|n,c|" - #{n}: #{c}"}
puts"\n Количество EO-компонентов:", eoc.sort.map{|n,c|" - #{n}: #{c}"}
Что делает скрипт
Поиск компонентов: Cканирует модель на наличие компонентов с префиксами "EM", "EK", "EO".
Группировка рамок: Для "EM" проверяет пересечения bounding box групп "3D" внутри компонентов, чтобы определить, какие элементы образуют рамки (например, одиночные, двойные и т.д.).
Подсчет: Выводит общее количество найденных "EM", а также детальную информацию по типам и размерам рамок, числу коробок "EK" и элементов "EO".
Найдено EM-компонентов: 15
Количество рамок:
- Рамок на 1: 5
- Рамок на 2: 3
- Рамок на 3: 2
Количество EM-компонентов:
- EM Розетка: 8
- EM Выключатель: 7
Количество EK-коробок:
- EK Коробка: 10
Количество EO-компонентов:
- EO Модуль: 4
В будущих обновлениях планируется улучшенная версия подсчета с более наглядным представлением данных. Реализовать это в текущем скрипте не могу, так как из скрипта нельзя получить доступ к плагину, что ограничивает дополнительные возможности.
23.02.1993 - Создан язык программирования Ruby [вехи_истории]
Японский программист Юкихиро Мацумото (Matz) начал разработку языка программирования Ruby, который позже стал одним из самых популярных скриптовых языков. Его цель заключалась в создании удобного, элегантного и продуктивного языка, который сочетал бы мощь Perl и объектно-ориентированный подход Smalltalk, но при этом был простым и интуитивно понятным.
Его популярность резко выросла в 2000-х благодаря веб-фреймворку Ruby on Rails, который упростил создание веб-приложений. Ruby ценится за лаконичный синтаксис, гибкость и философию минимального удивления (Principle of Least Surprise), что делает его любимым инструментом разработчиков.
Получил долгожданную корочку
Искренне понравилось, сколько литературы удалось собрать за время обучения в университете, помимо учебно-методического материала. И здорово, что удалось сменить профессию с производственного логиста на fullstack-разработчика Ruby on Rails + Vue.js еще во время учебы. Получился прикольный дипломный проект.
ТОП-25 курсов по Ruby + онлайн-обучение Ruby on Rails
Если вы хотите начать работать в сфере программирования, то вам помогут курсы по Ruby. Это высокоуровневый язык, который широко используется для создания веб-приложений и автоматизации процессов, а также он известен своей простотой и эффективностью. Независимо от уровня подготовки, обучение позволит каждому желающему стать уверенным разработчиком и зарабатывать около 120 000 рублей в месяц.
Вместе с экспертами Kursfinder я рассмотрела около 50 предложений от топовых школ, чтобы выбрать 25 лучших программ, включая бесплатные. Полный список актуальных курсов по Ruby вы найдете в нашем каталоге.
ТОП-10 лучших курсов курсы Ruby в 2024 году
Программы по Ruby:
Ruby: Основы языка от Хекслет — лучшие дополнительные материалы.
Ruby Developer от ITVDN — лучшие практические задания.
Ruby: Составные данные от Хекслет — лучший курс по созданию сложных типов данных.
Ruby разработчик от TeachMeSkills — лучшие проекты в портфолио.
СИКП на Ruby от Хекслет — лучшая программа по СИКП.
Программы по Ruby on Rails:
Ruby и Ruby on Rails от OTUS.ru — лучшее обучение для опытных.
Ruby on Rails с нуля от Хороший программист — лучший вариант для обучения с нуля.
Ruby: Полный Rails от Хекслет — лучшие дополнительные программы.
Безопасность приложений на Ruby on Rails от Thinknetica — лучшее обучение в кратчайшие сроки
Основы разработки на Ruby on Rails от Хекслет — лучший бюджетный вариант.
Курсы Ruby подойдут выпускникам IT-специальностей, практикующим специалистам, тем, кто уже программирует и хочет расширить свои знания и навыки, а также новичкам.
Онлайн-курсы Ruby
1. Ruby: Основы языка | Хекслет
В процессе обучения вы познакомитесь с экосистемой, ключевыми возможностями, объектно-ориентированным программированием. В результате вы научитесь использовать и определять функции и анализировать ошибки. Подойдет тем, кто уже имеет опыт в кодинге и хочет освоить новый язык.
Стоимость: 3 900 рублей в месяц
Длительность: 51 час
Формат обучения: онлайн, теоретические материалы, тестирования, упражнения, практические задания
Сертификат: нет
Преимущества:
бессрочный доступ к теории;
гибкий график обучения;
полезные дополнительные материалы;
хорошая обратная связь;
помощь и поддержка наставника в случае затруднений;
отлаженная техническая поддержка;
доступ к остальным программам за счет ежемесячной подписки.
Недостатки:
нет сертификата.
Программа обучения:
Основы языка
Особенности языка
Функция
Основные условные конструкции
Альтернативные условные конструкции
Типы данных
2. Ruby Developer | ITVDN
Сайт предлагает обучение основам разработки, в том числе изучение самого языка, фреймворка RoR и других технологий. Подходит как новичкам, так и для опытным специалистам. В программу входит более двух десятков видеоуроков, доступ к учебным материалам, интерактивные вебинары, консультации с менторами и возможность получить сертификат по окончании обучения.
Стоимость: 59,99 долларов в месяц
Длительность: 25 видеокурсов
Формат обучения: онлайн, видеолекции, вебинары, тестирования
Сертификат: сертификат и диплом
Преимущества:
бесплатный вводный урок;
доступно скачивание учебных материалов;
отличная обратная связь от тренера;
доступ к новым программам по подписке;
консультации с наставником;
временные метки для быстрого перехода к теме;
опорный конспект и информативные презентации.
Недостатки:
ограниченный доступ к программе.
Программа обучения по запросу
3. Ruby: Составные данные| Хекслет
Вы научитесь создавать код, который легко читать и понимать, создавать удобные абстракции и скрывать внутреннюю реализацию. Также вы узнаете о концепциях создания сложных типов данных из простых и о парадигме декларативного программирования. Подходит новичкам, которые хотят освоить основы на данном языке.
Стоимость: 3 900 рублей в месяц
Длительность: 9 часов
Формат обучения: онлайн, теоретические материалы, видеоуроки, тестирования, упражнения, практические задания
Сертификат: нет
Преимущества:
доступ к теории навсегда;
обучение в своем темпе;
полезные дополнительные статьи и видео от команды Хекслета;
отличная обратная связь;
хорошая техническая поддержка;
помощь наставника на протяжении всего обучения.
Недостатки:
не предусмотрен сертификат;
самостоятельное изучение материала.
Программа обучения:
Проектирование примитивной графической библиотеки
Точки в нашей графической библиотеке
Моделирование предметной области
Барьеры абстракции
Рациональные числа
4. Ruby разработчик | TeachMeSkills
В обучение входит изучение языка, его экосистемы и принципов программирования. Вы научитесь разрабатывать приложения на RoR, работать с базами данных и серверами. В процессе вы также создадите реальный проект для своего портфолио. Преподаватели — специалисты, которые будут помогать на протяжении всего обучения. Помощь в трудоустройстве оказывают опытные HR-менеджеры.
Стоимость: 970 долларов
Длительность: 5 месяцев
Формат обучения: онлайн, живые занятия с преподавателем в Zoom, домашние занятия
Сертификат: портфолио и диплом на английском языке
Преимущества:
есть рассрочка и скидка;
практикующие IT специалисты с большим опытом;
бесплатная консультация;
помощь с трудоустройством;
много проектов для портфолио;
запись уроков;
подробная обратная связь по домашним заданиям.
Недостатки:
преподаватель не всегда быстро отвечает на вопросы.
Программа обучения:
Программирование
Ruby и RubyOnRails
Обзор модулей Ruby
Принципы написания хорошего кода
Работа с интернетом и сетью
Принципы работы интернета
Модель OSI и протокол TCP/IP
Протоколы HTTP и его методы
5. СИКП на Ruby | Хекслет
Программа предназначена для изучения языка и структурного подхода к компьютерным программам (SICP). В процессе обучения вы поймете идеи составных данных и парадигму декларативного программирования. Также научитесь создавать удобные абстракции, изолировать разные части программы и определять границы между слоями приложения.
Стоимость: 3 900 рублей в месяц
Длительность: около 9 часов
Формат обучения: онлайн, теоретические материалы, видеоуроки, тестирования, практические задания
Сертификат: нет
Преимущества:
гибкий график обучения;
отличная обратная связь;
бессрочный доступ к теории;
удобная платформа;
доступ к остальным программам по подписке;
высокий рейтинг учеников;
подписку можно отменить в любой момент.
Недостатки:
практически полностью самостоятельный формат обучения;
не предусмотрен сертификат.
Программа обучения:
Введение
Точки
Пары
Моделирование
Барьеры абстракции
Реализация пар
Рациональные числа
Еще 4 дополнительных курсов Ruby
Дополнительные ресурсы также помогут вам определиться с выбором.
Ruby on Rails от Thinknetica. Программа подходит начинающим. В процессе обучения вы получите практические навыки и опыт работы с популярными инструментами и технологиями, такими как Git, GitHub, VirtualBox, PostgreSQL, MySQL, SQLite. Также вы научитесь работать с командной строкой Linux.
Learn Ruby от codecadamy. Школа предлагает обучение основам языка и созданию нескольких веб-приложений с использованием фреймворка RoR. В стоимость включен сертификат, практика на удобной платформе и помощь с составлением портфолио. Обучение подходит новичкам, уроки проходят на английском языке.
Автоматизация тестирования на Ruby от Thinknetica. Вы узнаете, зачем, когда и какое тестирование следует автоматизировать, а также познакомитесь с основными фреймворками и библиотеками для автоматизации тестирования. Вы научитесь писать юнит-тесты для программ и библиотек в вариантах minitest и RSpec, а также автоматизировать функциональное тестирование веб-приложений с помощью таких инструментов, как Selenium, CDP, Capybara и других.
Объектно-ориентированный дизайн в Ruby от Thinknetica. На уроках вы изучите принципы объектно-ориентированного программирования (ООП) и их реализацию в языке, а также сравните их с другими кодами программирования.
Онлайн-курсы Ruby on Rails
Сайт предлагает обучение основам языка и фреймворка RoR. В ходе программы рассматриваются актуальные технологии стека, работа с Docker, тестирование, разработка MVP, стартапы и подготовка к собеседованиям в крупные компании на позицию Ruby-разработчика. Подходит разработчикам с опытом работы от одного года, которые желают изучить язык и фреймворк для коммерческого и личного применения при разработке приложений.
Стоимость: известна после уточнения у консультанта
Длительность: 5 месяцев
Формат обучения: онлайн, интерактивные вебинары, домашние задания
Сертификат: выпускной проект
Преимущества:
опытные преподаватели;
возможность корпоративного обучения;
хорошая обратная связь по домашним заданиям;
чат в Telegram для обмена опытом;
полезные дополнительные материалы;
бессрочный доступ к программе.
Недостатки:
не указана стоимость обучения.
Программа обучения:
Условные операторы, циклы, функции и процедуры
Объектная модель в Ruby
Модули и миксины
Исключения и их обработка
Работа с блоками и процедурами
Модели и работа с БД
Роутинг и контроллеры
Обзор и подключение популярных gems
Написание тестов
Разработка административной панели
Работа с состояние объекта
2. Ruby on Rails с нуля | Хороший программист
Обучение предназначено для тех, кто хочет освоить основы программирования и создания веб-приложений с использованием фреймворка RoR. В процессе вы получите глубокие знания и навыки для успешной карьеры веб-разработчика. Обучение проходит следующим образом: вы изучаете основы и пишете простые коды, затем переходите к упражнениям для закрепления материала. В конце вы выполняете несколько проектов для своего портфолио.
Стоимость: известна после уточнения у консультанта
Длительность: 4,5 месяца
Формат обучения: онлайн, видеоуроки, вебинары, практические и домашние задания
Сертификат: портфолио
Преимущества:
бесплатная консультация;
ежедневное общение с преподавателями;
помощь с трудоустройством;
таймкоды в видео для удобства;
код программ к урокам, чтобы было удобнее повторять за учителями;
конспект с удобной навигацией, картинками и вставками кода;
проверка и обратная связь по домашним заданиям;
разбор дополнительных тем на вебинарах;
бессрочный доступ к материалам;
поддержка после окончания обучения.
Недостатки:
выполнение практических заданий занимает много времени.
Программа обучения:
Основы руби, ветвление, циклы
Консоль, чтение файлов, методы
Основы ООП, классы, RubyGems
Регулярные выражения, IDE, Git
Хэши, кодстайл, наследование
Параметры ARGV
Базы данных, дебагер, сеть
Ubuntu, установка Ruby on Rails, основы HTML
Тестирование rails-приложений, TDD
VPS, настройка DNS, деплой rails-приложений
Авторизация, отложенные задачи, ActionCable
Поиск работы на Ruby on Rails
3. Ruby: Полный Rails | Хекслет
Программа предназначена для тех, кто хочет изучить особенности RoR. В процессе обучения вы познакомитесь с иерархией контроллеров, API, Jbuilder, стримингом, тестированием кода, который выполняет внешние запросы, и другими инструментами и технологиями. Подойдет продвинутым программистам, которые желают расширить свои знания о фреймворке.
Стоимость: 3 900 рублей в месяц
Длительность: 30 часов
Формат обучения: онлайн, теоретические материалы, видеоуроки,
Сертификат: нет
Преимущества:
дополнительные полезные материалы;
бессрочный доступ к теории;
доступ к остальным программам платформы;
гибкий график обучения;
помощь с возникшими вопросами.
Недостатки:
не предусмотрен сертификат;
самостоятельный формат обучения.
Программа обучения:
Знакомимся с программным интерфейсом приложения
Учимся использовать сериализацию данных
Знакомимся со стримингом
Учимся тестировать код, выполняющий внешние запросы
Знакомимся с задачами
Учимся использовать кеширование
Знакомимся с энжинами
4. Безопасность приложений на Ruby on Rails | Thinknetica
Программа состоит из трех вебинаров. После прохождения уроков вы ознакомитесь с принципами устранения проблем и организационными мерами и научитесь решать проблемы с безопасностью. В рамках обучения рассматриваются следующие темы: несанкционированное использование приложения, выполнение действий от имени пользователей и многое другое. Для начала обучения необходим опыт разработки на RoR и навыки работы с командной строкой в Linux.
Стоимость: 3 900 рублей
Длительность: 1 неделя
Формат обучения: онлайн, вебинары, практические задания
Сертификат: нет
Преимущества:
поддержка в чате;
ответы на вопросы от преподавателя;
разбор основных ошибок;
опытные учителя.
Недостатки:
нет сертификата.
Программа обучения:
Информационная безопасность приложения
Решаем проблемы несанкционированного использования приложения:
Получение закрытых данных
Session fixation
Dynamic code execution
Password salting
Редиректы
5. Основы разработки на Ruby on Rails | Хекслет
Курс Ruby on Rails предназначен для изучения основ работы с фреймворком. Вы познакомитесь с роутингом, контроллерами, шаблонизаторами, моделями и связями между ними. В результате научитесь создавать полноценные сайты с CRUD-действиями, писать тесты, работать с базой данных через ActiveRecord и миграции. Подойдет тем, кто уже знаком с основами языка и протокола HTTP, а также работал с базами данных.
Стоимость: 3 900 рублей
Длительность: 52 часа
Формат обучения: онлайн, теоретические материалы, тестирования, упражнения, практические задания
Сертификат: нет
Преимущества:
бессрочный доступ к теории;
гибкий график обучения;
полезные дополнительные материалы;
хорошая обратная связь;
помощь и поддержка наставника в случае затруднений;
отлаженная техническая поддержка;
доступ к остальным программам за счет ежемесячной подписки.
Недостатки:
нет сертификата.
Программа обучения:
Знакомимся с целями и задачами курса
Изучаем Rack — интерфейс для разработки веб-приложений на Ruby
Изучаем структуру Rails проекта и учимся создавать новый проект
Изучаем создание статических страниц
Знакомимся с моделью – слоем приложения, отвечающим за связь с предметной областью
Учимся тестировать свое приложение
Учимся конфигурировать приложение на Rails
Учимся создавать CRUD для сущности
Еще 3 дополнительных курсов Ruby on Rails
Курсы Ruby on Rails — это возможность изучить язык программирования и популярный фреймворк для веб-разработки Rails. Они подходят тем, кто хочет создавать мощные и масштабируемые веб-приложения с использованием готовых решений и библиотек.
Разработчик Ruby on Rails Junior от ITMO. Вы изучите RoR, основы программирования на фреймворке, объектно-ориентированное программирование, типы данных, управление потоком исполнения, встроенные методы и функции. Также вы установите и настроите Ruby и Rails, поймете структуру приложения, модели, контроллеры и представления, работу с маршрутами, MVC-архитектуру.
Ruby on Rails: Tutorial от Learn Enough. Сайт предлагает обучение веб-разработке на профессиональном уровне с использованием языка и фреймворка RoR. После оплаты вы получаете доступ ко всем программам на платформе. Обучение проходит в формате теоретических материалов, тестирований и практических заданий. Вы изучаете основы языка, и пишете программы.
Разработчик на Ruby on Rails от Хекслет. Это онлайн-обучение, которое поможет вам освоить язык, фреймворк Rails, базы данных и другие технологии. Вы научитесь создавать безопасные и производительные программы, работать с HTML, CSS, JavaScript и другими инструментами. Опытные наставники будут помогать вам на протяжении всего обучения.
Бесплатные курсы Ruby
Бесплатное обучение Ruby — это отличная возможность для начинающих программистов познакомиться с этим популярным языком и фреймворком RoR.
1. Ruby on Rails от Крым Диджитал
Уроки предназначены для новичков в области IT. От студентов требуется минимальный технический бэкграунд, логическое мышление и желание стать специалистом в данной сфере. В процессе вы изучите фреймворк RoR и создадите свое небольшое приложение.
Основные характеристики:
длительность — два месяца;
18 занятий с практикой;
шанс пройти стажировку и трудоустроиться в Крым Диджитал.
2. Ruby on Rails от Академия IT
Вы изучите основы объектно-ориентированного программирования, синтаксис языка, работу с базами данных, а также особенности использования фреймворка Rails. В конце вы сможете создать свое первое веб-приложение на RoR. Также у вас будет возможность трудоустроиться в международную IT-компанию.
Основные характеристики:
шесть полноценных видеоуроков;
введение в язык программирования.
3. Введение в Ruby от Hexlet
Учебный центр предлагает изучить основы языка, его ключевые возможности и экосистему. Вы познакомитесь с объектно-ориентированным программированием и метапрограммированием. В бесплатной части данной программы доступна теория для введения в базу языка.
Основные характеристики:
33 теоретических урока;
основы языка.
4. Курс Ruby: онлайн обучение руби с нуля от code-basics
В ходе обучения вы изучите основы языка, синтаксис, переменные, условные операторы, строки и классы. Также вы научитесь работать с ошибками и отладкой кода, создавать свои первые программы и применять полученные знания на практике. В конце каждого модуля есть тесты для проверки усвоенного материала.
Основные характеристики:
32 урока с практикой;
длительность — восемь часов;
подходит новичкам.
5. Бесплатный курс по программированию на Ruby от Ruby Rush
Программа охватывает основы языка, работу с переменными, условными операторами, циклами, функциями и методами. Также рассматриваются вопросы объектно-ориентированного программирования и работа с файлами и каталогами. Обучение подходит начинающим программистам.
Основные характеристики:
видеоуроки;
практические задания;
обратная связь.
6. Ruby on Rails от ТЕХИНФОРМ
Бесплатные уроки по RoR в Уфе проводятся на базе УГАТУ (Уфимского государственного авиационного технического университета). Цель программ — научить слушателей основам создания качественных веб-приложений на данном языке.
Основные характеристики:
длительность — 12 занятий по два академических часа;
необходимы базовые знания основ объектно-ориентированного программирования, а также HTML/CSS/JavaScript.
7. Изучение Ruby для начинающих от Гоша Дударь
В этом плейлисте вы найдете уроки по изучению очень популярного и мощного языка программирования. В ходе обучения вы изучите базовый синтаксис, а также различные сложные операции.
Основные характеристики:
более 10 видеоуроков для подробного ознакомления;
подходит начинающим программистам;
введение в базу языка.
8. Ruby от Alexander Batashov
Вы полностью пройдете изучение данного языка, с самого нуля и до разработки своего собственного приложения. Вы будете использовать новый синтаксис и сравнивать его с новым. Обучение рассчитано на новичков и тех, кто хочет улучшить понимание и более глубоко разобраться с языком.
Основные характеристики:
более 40 видеоуроков;
ориентация на практику.
Заключение
Курсы Ruby предоставляют отличную возможность для разработчиков с разным опытом освоить мощные инструменты и технологии, которые востребованы в современном мире веб-разработки. Изучение Ruby и Ruby on Rails не только открывает двери к более продуктивной и быстрой разработке, но и позволяет стать частью большого и активного сообщества профессионалов. Выбирая подходящие курсы Ruby, вы сможете достигнуть своих профессиональных целей и улучшить навыки для успешной карьеры в IT
Улучшенный скрипт подсчета линий в Sketchup
Как работал старый скрипт
Чтобы он сработал линии необходимо поместить в группу с именем вида 1РОЗ4, 4ОСВ2, 1КОН1 и тому подобное. То есть (цифры)(любые буквы)(цифры).
Пример:
Есть у нас две линии 1РОЗ1 и 1РОЗ2 каждая по 25 метров
При подсчете скрипт выдавал общую длину кабелей с словом РОЗ к примеру 50 метров.
И это означало что для всех групп РОЗ (розетки) необходимо купить кабель 3х2.5 в количестве 50 м
Но иногда возникала необходимость посчитать для одного и того же индекса разные марки кабелей.
Например КОН (кондиционер) может быть подключен к линии 3х1.5 или 3х2.5 или 5х2.5, а скрипт все равно считал его как один кабель
Как работает новый скрипт
Новый скрипт работаем с именами типа 5РОЗ1 -- 3х2.5
То есть также как и раньше:
5 — номер помещения,
РОЗ — розетки,
1 — номер розеточной группы в комнате)
И после двойного тире указываем марку кабеля или любое другое свое определение.
Еще из отличий это увеличение точности, старый скрипт считал с точностью до метра, Теперь считаем с точностью до сантиметра.
Ruby Script SketchUp
model = Sketchup.active_model
group_name_pattern = /^[1-9][0-9]?([А-Яа-яA-Za-z]+)[1-9][0-9]?(\s.*)?$/
group_lengths = Hash.new(0.0)
matching_groups = Hash.new { |hash, key| hash[key] = [] }
second_part_lengths = Hash.new(0.0)
scale = 0.0254
def process_group(group, group_name_pattern, group_lengths, matching_groups, second_part_lengths, scale)
group_name = group.name
match = group_name.match(group_name_pattern)
if match
letter = match[1]
edges = group.entities.grep(Sketchup::Edge)
total_length_mm = edges.reduce(0.0) { |sum, edge| sum + edge.length * scale }
group_lengths[letter] += total_length_mm
matching_groups[letter] << group
second_part = match[2].to_s.strip
if !second_part.empty?
second_part_lengths[second_part] += total_length_mm
end
end
group.entities.each do |entity|
if entity.is_a?(Sketchup::Group)
process_group(entity, group_name_pattern, group_lengths, matching_groups, second_part_lengths, scale)
end
end
end
root_groups = model.entities.grep(Sketchup::Group)
root_groups.each do |group|
process_group(group, group_name_pattern, group_lengths, matching_groups, second_part_lengths, scale)
end
group_lengths.each do |letter, total_length_mm|
if total_length_mm > 0.0
total_length_meters = total_length_mm
puts "Трассы с буквами #{letter}, Общая длина линий: #{total_length_meters.round(2)} м"
matching_groups[letter].each do |group|
group_name = group.name
edges = group.entities.grep(Sketchup::Edge)
total_length_mm = edges.reduce(0.0) { |sum, edge| sum + edge.length * scale }
total_length_meters = total_length_mm
puts " #{group_name}, Длина линий: #{total_length_meters.round(2)} м"
end
end
end
second_part_lengths.each do |second_part, total_length_mm|
total_length_meters = total_length_mm
cleaned_second_part = second_part.sub(/^--\s*/, '') # Удаляем два тире в начале второй части имени
puts "Общая длина линий для '#{cleaned_second_part}': #{total_length_meters.round(2)} м"
end
Теперь считать большие объемы стало еще легче и точнее.
Еще пример проекта умного дома.
Весь материал считается с первого раза со всеми запасами и уместился в одну закупку. Всего 1.09 км кабеля







96 отдельный групп. 75 линий приходит на щит.
Ruby. Король языков
Ruby - это язык программирования, который известен своей простотой и элегантностью. Он позволяет писать код, который легко читать и понимать. Одна из ключевых особенностей Ruby - это его философия "программирование для людей, а не для компьютеров". Это означает, что Ruby стремится делать код читаемым и интуитивно понятным, даже для тех, кто не является профессиональным программистом.
Отличительные черты Ruby:
1. Простота и читаемость: Ruby разработан так, чтобы его код был легко понятен человеку. Он использует естественный язык и четкие конструкции, что делает его идеальным выбором для новичков.
2. Объектно-ориентированное программирование: Ruby полностью объектно-ориентированный язык, что означает, что все в Ruby является объектом. Это обеспечивает гибкость и удобство в разработке программ.
3. Динамическая типизация: В Ruby типы переменных определяются автоматически во время выполнения программы. Это делает код более гибким, но также требует более внимательного тестирования.
4. Ruby on Rails: Ruby наиболее известен благодаря фреймворку веб-разработки Ruby on Rails. Он обеспечивает быструю и эффективную разработку веб-приложений за счет использования принципов соглашения перед конфигурацией (Convention over Configuration) и принципов проектирования Model-View-Controller (MVC).
5. Активное сообщество: Ruby имеет широкое и активное сообщество разработчиков, которые поддерживают и развивают язык, делая его более мощным и удобным для использования.
В целом, Ruby - отличный выбор для начинающих программистов благодаря своей простоте и удобству в использовании, а также для опытных разработчиков, благодаря своей мощности и гибкости.