38

Улучшенный скрипт подсчета линий в 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

Теперь считать большие объемы стало еще легче и точнее.

Проект большого дома в SketchUp

Проект большого дома в SketchUp

Еще пример проекта умного дома.

Весь материал считается с первого раза со всеми запасами и уместился в одну закупку. Всего 1.09 км кабеля

96 отдельный групп. 75 линий приходит на щит.

Лига электриков

6K поста26.1K подписчик

Правила сообщества

Запрещён оффтоп, нарушение основных правил пикабу

0
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Вы обсчитались, или не чего-то не понимаете.

На кухне нет 25 розеток на отдельных автоматах.

показать ответы
0
Автор поста оценил этот комментарий

нахуя такой бешенный переразход меди.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Где именно?

показать ответы
0
Автор поста оценил этот комментарий

Программист которого ожидает в следующем году ремонт квартиры )). Вот вычертил в скетчап проект квартиры. Пытаюсь запроектировать и понять что получится сделать

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Можем бартером помочь друг другу)

Я вам проект)

А у меня все плохо с программированием)

показать ответы
0
Автор поста оценил этот комментарий

Почему то думал только у элементов Group Edge итд есть аттрибуты в корневой модели да в самый раз. Спасибо. Этого достаточно думаю будет key value за глаза можно json само собой но пока сойдет и тупо значения

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Вы программист увлеченный электрикой? или электрик, интересующийся программированием? ))

показать ответы
0
Автор поста оценил этот комментарий

Смотрю сейчас в апи есть ли какой то вариант хранилища настроек справочников итд можно наверное и разные шаблоны закладывать как кому удобно

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Sketchup::Model#set_attribute ?
Или использование JSON, YAML: Для хранения более сложных данных

показать ответы
0
Автор поста оценил этот комментарий

Применил ваш скрипт завернул в расширение немного добавил своих фишек с просчетом типа прокладки кабеля расчет сколько в штробе бетон , сколько в кирпиче итд https://github.com/lvm444/skpelectrics/blob/main/README.md

Пока не работает загрузка из rbz файла еще разбираюсь

Можно скопировать таблицу и вставить в гугл таблицу

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

В имени "9РОЗ1 -- Ввг 3х2,5" Уже содержится тип кабеля, номер помещения и номер группы в этой комнате.

Не совсем понимаю для чего другая информация?

Кабель также подписываю у щита, или имя коробки "9РОЗ1"

показать ответы
0
Автор поста оценил этот комментарий

В нем намного дольше делать

0
Конно, людно, оружно
Автор поста оценил этот комментарий

ТС, неужели ничего лучше чем Скетчап до сих пор не придумали? Блин, там проектировать проводку просто боль.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я не знаю другого инструмента, который умеет то же самое что и sketchup.

В чем именно проблема проектирования у вас?

Проводка? Проще чем в автокаде.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества