STROYKA

Текущее время: 24 окт 2017, 13:33

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: 19 июн 2015, 10:11 
Не в сети
VIP
Аватар пользователя

Зарегистрирован: 24 май 2010, 01:44
Сообщений: 627
Откуда: Россия Москва
Спасибо. Вот с индексами как к масивам к ним обращаться не пробовал. Реализовал функцию чуть сложней, попробую все-таки переписать с сылками на группу. Может быстрей будет. Спасибо


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 янв 2016, 23:45 
Не в сети

Зарегистрирован: 22 июн 2010, 12:45
Сообщений: 17
Знатоки подскажите, не получается у меня понять.
Можно ли вообще войдя в группу применить метод pushpull? по типу как .add_face; add_circle

типа beem_group.entities.otv1_face.pushpull s

В группу Балка добавляю фейс - отв1.(отверстие) и хочу его выдавить.
Или же надо создать отдельно группу отв1 и вычитать её из группы Балка?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 янв 2016, 00:03 
Не в сети
VIP

Зарегистрирован: 24 апр 2010, 20:43
Сообщений: 373
Конечно же можно

Выглядит это так например

ents = group.entities

ents.each{|face| face.pushpull s if face.is_a? Sketchup::Face and .......(определение вашего лица например) .. face.area == 10}


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 янв 2016, 00:07 
Не в сети
VIP

Зарегистрирован: 24 апр 2010, 20:43
Сообщений: 373
Можно ещё при построении запомнить нужный ID лица и тогда с поиском нужного лица будет ещё проще

ID - это вообще класная штука


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 янв 2016, 00:29 
Не в сети

Зарегистрирован: 22 июн 2010, 12:45
Сообщений: 17
А если я буду знать имя например:

otv1 = beem.entities.add_circle [k,b/2-s/2,h-a], [0,1,0], d_otv/2
otv1_face = beem.entities.add_face otv1


но что-то не работает.
следующая строка кода, где идёт трансформация группы beem выдаёт ошибку reference to deleted Group

А как запомнить ID лица, если например я на лице рисую круг, и образуется лицо внутри круга....о нём ничего не знаю, поэтому и как-бы добавляю сам лицо.
Раньше выбирал последний добавленный объект:

otv1 = $ents.add_circle [0,b/2,t_lop], [0,0,1], d_otv/2
otv1_face = $ents[-1]

сейчас не сработало внутри группы.

Я только осваиваю API Скетча.

И по какому критерию мне искать фейс, который получился при добавлении окружности, если я о нём ничего не знаю кроме центра.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 янв 2016, 00:38 
Не в сети
VIP

Зарегистрирован: 24 апр 2010, 20:43
Сообщений: 373
1. вышли кусочек кода - я посмотрю

2 Вот более правильно
ents = beem.entities
otv1 = ents.add_circle [k,b/2-s/2,h-a], [0,1,0], d_otv/2
otv1_face = ents.add_face otv1


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 янв 2016, 00:47 
Не в сети

Зарегистрирован: 22 июн 2010, 12:45
Сообщений: 17
section_face = $ents.add_face pts
section_face.pushpull lb
beem_group = $ents.add_group section_face.all_connected

#отверстия
otv1 = beem_group.entities.add_circle [k,b/2-s/2,h-a], [0,1,0], d_otv/2
otv1_face = beem_group.entities.add_face otv1

???????? здесь нужно выдавить фейс образованный окружностью otv1 внутри группы beem_group на толщину s ?????
beem_group.transform! local_axes


...более правильно - имеется ввиду сокращение? (это я понимаю, пока у меня говнокод на костылях, но местами работает :-)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 янв 2016, 00:59 
Не в сети
VIP

Зарегистрирован: 24 апр 2010, 20:43
Сообщений: 373
Вот так на мой взгляд будет правильно и должно работать

beem_group =$ents.add_group
ents =beem_group.entities

section_face = ents.add_face pts
section_face.pushpull lb

otv1 = ents.add_circle [k,b/2-s/2,h-a], [0,1,0], d_otv/2
otv1_face = ents.add_face otv1
otv1_face.pushpull s

beem_group.transform! local_axes


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 янв 2016, 22:03 
Не в сети

Зарегистрирован: 22 июн 2010, 12:45
Сообщений: 17

beem_group =$ents.add_group
ents =beem_group.entities
section_face = ents.add_face pts
section_face.pushpull lb

otv1 = ents.add_circle [m,-s/2,-a], [0,1,0], d_otv/2
otv1_face = ents.add_face otv1
otv1_face.pushpull s

Так сделал....всё работает, добавляет в группу окружность и выдавливает её, но только если эта геометрия отверстия не попадает, либо частично попадает на тело балки полученное section_face.pushpull lb.

Если попадает выдаёт ошибку:
Error: #<NoMethodError: undefined method `pushpull' for nil:NilClass>

А замысел был выдавить в стенке балки отверстие: otv1_face.pushpull(s, false)

Как-то не просеку как pushpull внутри группы работает. Или otv1 не пересеклось с балкой и не образовало фейс.
otv1_face- это же мной созданное лицо.

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

На картинке - варианты расположения отверстия, при которых не выдаёт ошибок


Вложения:
beem.png
beem.png [ 16.68 KiB | Просмотров: 6612 ]
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 янв 2016, 22:18 
Не в сети

Зарегистрирован: 22 июн 2010, 12:45
Сообщений: 17
:s001: Получилось.

sahi СПАСИБО за помощь.

Может не слишком элегантно, но старым способом вышло.
Вот так:
beem_group =$ents.add_group
ents =beem_group.entities

section_face = ents.add_face pts
section_face.pushpull lb

otv1 = ents.add_circle [m,-s/2,-a], [0,1,0], d_otv/2

otv1_face =ents[-1]
otv1_face.pushpull(-s, false)


Неистово ликую :s019: Как-то по счастливому стечению обстоятельств последняя созданная геометрия при добавлении окружности на фейс, это часть фейса внутри окружности, впрочем это логично вроде.


Вложения:
beem.png
beem.png [ 11.45 KiB | Просмотров: 6609 ]
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 янв 2016, 23:07 
Не в сети
VIP

Зарегистрирован: 24 апр 2010, 20:43
Сообщений: 373
я что то не совсем понял - почему то он поподает на пересечения то нет

otv1_face =ents[-1] - этот вариант ненадёжен - это последний элемент в ents - это может быть и лицо и край

Ну раз получилось ну и славненько - удачи в написании


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 янв 2016, 23:16 
Не в сети

Зарегистрирован: 22 июн 2010, 12:45
Сообщений: 17
просто я экспериментировал с расположением отверстия, оно задаётся пользователем.
Это 2 варианта когда он рисует геометрию, а если окружность полностью на теле балки - Ошибка.

Что ненадёжный вариант это я тоже понимаю, но уже второй раз в похожей ситуации работает стабильно.
Видимо есть какая-то закономерность. В других построениях может и не работать.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 янв 2016, 23:24 
Не в сети
VIP

Зарегистрирован: 24 апр 2010, 20:43
Сообщений: 373
REDS писал(а):
Это 2 варианта когда он рисует геометрию, а если окружность полностью на теле балки - Ошибка..

Я с этим тоже сталкивалься - в скрипте "Круг от края"

Варианты как я это обошел
1 вариант это рисование не cicle а entities.add_ngon - с этим вариантом работает стабильно

2 вариант это рисовать cicle в ещё одной группе - а затем её разгруппировывать


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 15 май 2017, 00:30 
Не в сети
Новичок

Зарегистрирован: 21 янв 2017, 22:09
Сообщений: 29
Учусь прикручивать кнопку к простому плагину.
Вставляю в конце скрипта (до последнего end) типовой блок для кнопки (см. ниже), заполнив названия команд и картинок.

toolbar = UI::Toolbar.new("для меню")
cmd = UI::Command.new("название") { команда }
cmd.small_icon = "ICONS/маленькая иконка.png"
cmd.large_icon = "ICONS/большая иконка.png"
cmd.tooltip = "всплывающая подсказка"
cmd.status_bar_text = "сообщение в статусбаре"
cmd.menu_text = "для меню"
toolbar = toolbar.add_item cmd

Папку с картинкой по указанному в блоке пути положил (как положено в "Plugins").
В итоге: кнопка с моей картинкой появляется, но не работает.
Объясните как правильно сделать задуманное?

Ниже прикреплю два архива:
1. Подопытный плагин.
2. Исходный плагин.


Вложения:
Комментарий к файлу: Подопытный плагин
tt_flatten_remake_v1.0.1.zip [2.41 KiB]
Скачиваний: 18
Комментарий к файлу: Исходный плагин
tt_flatten_v1.0.1.zip [2.22 KiB]
Скачиваний: 17
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 15 май 2017, 14:04 
Не в сети
VIP

Зарегистрирован: 03 май 2010, 11:02
Сообщений: 1442
Откуда: Питер
Как то давно sahi советовал делать так, я попробовал прикрутить иконку к плагину latticeMaker и всё получилось

mydir = File.dirname(__FILE__) # это наша директория где лежит наш скрипт
icon = File.join(mydir, "images", "lattice.png") # это путь до нашей иконки и название самого файла иконки
toolbar = UI::Toolbar.new("latticeMaker") # это мы создали toolbar
cmd = UI::Command.new("latticeMaker") { latticeMaker} # это мы задаём команду нашей иконки
cmd.large_icon = icon # большая иконка
cmd.small_icon = icon # маленькая иконка
cmd.tooltip = "latticeMaker" # текст который будет выводиться при наведении на иконку мышки
cmd.status_bar_text = "lattice" # текст который будет выводиться в SketchUp окне снизу слева
toolbar.add_item(cmd) # добовляем нашу иконку к тоолбару

Вложение:
latticeMaker_v1.6.rar [8.47 KiB]
Скачиваний: 16


Если у Вас получится прикрутить кнопку к плагину flatten будет хорошо, я им часто пользуюсь


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB