пятница, 12 августа 2016 г.

Погружение в Sketchup для конструкторского проектирования


Как я написал в предудущем посте, я повторно обратился к Sketchup, когда осознал, что Archicad не сможет мне помочь, когда я займусь конструкторским детальным проектированием. Со Sketchup я был знаком давно, но из-за того что в свое время пропустил его возможность по иерархической декомпозиции модели на группы/компоненты, я не видел в нем потенциала для применения к конструкторскому проектированию. После того, как я осознал этот потенциал, я сделал следующее погружение в Sketchup и в этом посте опишу чему я научился из важного. 

Но начну с того, что я ранее делал не правильно в Sketchup.

На начальном этапе освоения Sketchup в качестве примера я моделировал дачу родителей жены. В тот момент Sketchup мне очень понравился. Все эти вытягивания позволяли очень быстро получать нужную модель. Но проблемы возникали, когда нужно было что-то изменить. На тот момент все элементы модели "прилипали" к друг другу.  В результате невозможно было взять какую-нибудь доску, убрать и заменить ее на другую. Моя модель представляла из себя цельного осьминога, у которого можно было заменить шупальцы только отпилив их и пририсовав новые. 

Еще год назад, когда я строил туалет я использовал Sketchup подобным образом. Вот модель каркаса туалета, которую я тогда построил (см. отчет). Модель не содержала ни одной группы или компонента. Поэтому тоже была слабо управляемой и все элементы в ней прилипли друг к другу. В этой модели нельзя взять и передвинуть стойку, потому, что она "прилипла" к своему окружению. Эта модель - это единое неделимое целое. Если что-то нужно было изменить, приходилось использовать инструмент Push/Pull для изменения путем вытягивания.




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

На данную возможность мне указала  наша подруга этой весной, которая занимается дизайном интерьеров. В поисках инструмента для конструкторского проектирования я нашел такую возможность в Solidworks и решил продемонстрировать ей какие открываются горизонты при наличии возможности иерархической декомпозиции модели. Но был поставлен на место и просвящен о такой возможности в Sketchup. Был, конечно, очень удивлен.

После этого моделировать в Sketchup стало гораздо легче. Сейчас, когда проектирую окосячку/окна/перекрытия для мастерской моя модель представляет из себя понятную иерархию элементов и очень мне нравится своей управляемостью.



Я еще напишу о том, как я сейчас организую модель в Sketchup, тут тоже есть варианты и тонкости.

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

Чтобы было совсем понятно, что именно произошло, приведу скриншот структуры модели, изображенного выше каркаса туалета. Как я и писал, она представляет из себя одно неделимое целое :)



Вдохновившись новыми возможностями по иерархической организации модели я сделал следующее погружение в Sketchup. Ведь мало создать иерархическую модель, необходимо еще уметь ее использовать для решения своих задач.

Мои задачи, которые модель в Sketchup должна помогать решать :
- подсчитывать количество деталей разного типа
- раскраивать детали (линейные и листовые) из заготовок и позволять подсчитывать количество материалов для закупки

Вот что я освоил в процессе последнего погружения
- динамические компоненты
- автоматизация отчетности через API из Ruby
- классификация элементов модели для получения BIM
- иерархическая организация слоев с помощью Layers Plugin
- раскладка деталей по заготовкам

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

Динамические компоненты. Для полноценного повторного использования наработок, необходимо уметь настраивать компоненты с помощью параметров, а не перечерчивать каждый раз заново. Такая возможность есть в Sketchup и называется динамические компоненты. Я осваивал ее на окосячке. После того, как я создал динамический компонент Окосячка, я легко получил окосячки для всех проемов мастерской, задав необходимые параметры. Например, для окосячки я задал ширину/высоту рамы окна и различные зазоры и автоматически получил наружную ширину/высоту окосячки.


Соответственно в модели я получил готовые компоненты нужных размеров, вычисленные одинаковым образом непосредственно в модели. Изначально я все это делал в Excel, а потом строил в Sketchup. С динамическими компонентами Excel стал не нужен.

Автоматизация отчетности через Ruby API. Пользовательская функциональность голого Sketchup по построению разных отчетов на основе модели достаточно ограничена. Среди плагинов я не нашел бесплатных, которые бы закрыли мои потребности по отчетам. Платные я особенно не пробовал, чтобы себя не дразнить. Зато я попробовал получать данные с использованием средств автоматизации Sketchup через Ruby API. В результате научился делать плагины для Sketchup и могу теперь генерировать любые отчеты, которые понадобятся.
Попробовать это можно, скачав стандартный пример плагина для построения отчетов и далее уже модифицировать его под свои задачи
https://www.sketchup.com/intl/en/developer/docs/tutorial_attrreporting

Классификация компонентов.
Без классификации компонентов модель представляет из себя иерархический набор компонентов/групп, отличных по размерам и форме, но не понятных для компьютера назначения. Для такого, чтобы модель стала похожа на BIM в Archicad необходимо иметь возможность классифицировать компоненты. То есть сказать, что этот компонент - это стена, а этот - это деталь из доски 50*150 и т.п. И в Sketchup есть такая возможность. По умолчанию, в Sketchup доступны для классификации стандартные типы, определенные в стандарте IFC. Но они не всегда и не всем удобны, плюс покрывают не все задачи.  Можно самому определять типы, на основе которых можно будет классифицировать компоненты модели. Правда определение новых типов делается не через пользовательский интерфейс а путем определения их в виде XML схемы в формате XSD. После того как типы в этом формате определены, их можно загрузить в Sketchup и использовать для классификации компонентов модели. Да кстати, для одного компонента можно использовать различные классификации. Ниже пример мной определенных типов для классификации компонентов по типам материалов.



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


Эти атрибуты доступны через Ruby API и могут использоваться для генерации различных отчетов.

Еще более удобно было бы работать с классификацией компонентов, если бы можно было создать набор дополнительных инструментов, которые при выборе создавали элементы сразу классифицированные по определенному типу (аля Архикад) . Тогда в Sketchup можно бы стало сразу создавать стены, перекрытия, балки, стойки, ...Под разные задачи это были бы разные панели инструментов. Все это можно сделать и не очень трудно с использованием Ruby API. Пока я ограничусь классификацией для построения отчетов.

Иерархические слои
В Sketchup есть замечательный бесплатный плагин Layers Panel. Он позволяет создавать иерархию слоев и удобным образом управлять слоями. Попробовав плагин один раз, дальше не понимаешь как дальше жить без него.
Вот пример части моих слоев для наружных вертикальных ограждений. С помощью иерархических слоев одним кликом можно показать/спрятать все наружные стены. А можно снять только внешний слой фасада и посмотреть как устроены направляющие под утепление.



Подсчет материалов и раскладка по заготовкам

Это специализированный вид отчетности, правда решающий две главные задачи при конструкторском проектировании. В Sketchup есть платный плагин Builder, который реализует данную функциональность. У плагина есть бесплатная версия с ограниченным количеством деталей (<50). В процессе последнего погружения в Sketchup я, наконец, разобрался как работает Builder. Правда, пока не знаю чем его заменить. Буду смотреть другие аналогичные плагины. Пока как вариант - генерировать состав деталей через API, а потом использовать внешнюю программу для автоматической раскладки деталей по заготовкам (нашел несколько бесплатных).

Главным результатом моего последнего погружения является информационная модель мастерской уровня конструкторского проектирования, которую я сейчас строю. Благодаря возможсностям иерархической декомпозиции модели и иерархичеким слоям, мне очень удобно с ней работать. Возможности по классификации компонентов и возможности построению кастомизированных отчетов через Ruby API вселяют надежду, что я смогу использовать модель по полной для подсчета необходимых материалов, с учетом раскладок.

1 комментарий:

  1. Добры день,Дмитрий! Очень интересно!!!!

    Просьба большая показать пример определения новых типов классификации и наборов атрибутов к ним путем создания и редактирования XML схемы в формате XSD.

    С уважением
    Сергей
    tavr82@gmail.com
























































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































    ОтветитьУдалить