Строим стены в SCAD++ в турбо режиме

Многим конструкторам приходится ковыряться с сеткой конечных элементов в SCAD++ именно внутри программы. Очень много удобных функций там есть, но очень бы хотелось иметь кнопочку, нажав на которую программа бы построила стену (КЭ оболочки) по аналогу. То есть уже по нарисованной стене рядом.

Обычно без кнопочки это происходит следующим образом:

  • Измеряются высоты конечных элементов с аналога (выписываются)

  • Выделяются узлы плиты, где должна быть новая стена.

  • Узлы копируются на выписанные расстояния.

  • Строится по этим узлам сетку внутренним инструментом (триангуляцией по выбранным узлам).

  • Задаёт нужную жесткость.

Не слишком ли много пунктов для одной стеночки?

Можно. А зачем?

Делали всегда так. Именно по пунктам будем делать. Это наша работа.

Но это не наш метод. То что повторяется больше 3х раз мы автоматизируем) Тем более SCAD++ предоставляет для этого очень удобное и подробное API.

Начнем

К чему сводится задача? К получению геометрии нашей новой стены. Тут начинается геометрия и тут же она заканчивается) Z- координаты мы будем получать с объекта -аналога X,Y- с выделенных пользователем узлов Жесткость из объекта -аналога Вот и вся математика в принципе. Но на деле это будет хороший помощник, так как действия приходится повторять много раз в новых постановках.

С чем его едят?

Так как пишу не для программистов, а для конструкторов, нужно пояснить что за зверь этот скрипт. На самом деле все очень просто. Для общения пользователя со SCAD++ разработчики сделали API. Это интерфейс через который мы можем общаться с программой. Дать определенные инструкции, которые он передаст SCAD++. В данном случае попросить программу по узлам с известными координатами построить сетку конечных элементов. Естественно просить нужно в определенном формате, который описан в документации. Чтобы было понятнее ниже приведу минимальный код-пример для наглядности.

Вот пример создания узла:

function Plugin_Execute(engine)
{
    // Получаем редактор модели
    var editor = engine.GetEditor();
    
    // Создаём один новый узел
    // NodeAdd(1) — добавляет 1 узел с нулевыми координатами
    var node_id = editor.NodeAdd(1);
    
    // Задаём координаты и имя узла
    var node_data = {
        Text: "Мой узел",
        x: 1.5,
        y: 2.0,
        z: 3.0
    };
    
    // Обновляем узел с полученным ID
    editor.NodeUpdate(node_id, node_data);
    
    // Готово — узел создан
}

Как видите, всё просто.

Это все что нужно для создания полноценного плагина, который будет работать у вас в SCAD++. При нажатии на кнопку будет создаваться узел в координатах [1.5, 2.0, 3.0]

Вот так выглядит описание методов NodeAdd и NodeUpdate в документации. Сам файл документации находится в папке с установленным SCAD++ и называется SCAD_Plugins.pdf

NodeAdd (QuantityNode)

QuantityNode: количество добавляемых узлов.

Возвращаемое значение: номер первого из добавленных узлов.

NodeUpdate (NumNode, Node)

NumNode: номер узла.

Node Text

  • x

  • y

  • z

То есть подробно расписано какие аргументы принимает метод и что возвращает. То есть просто листаем и ищем подходящий метод для нашей задачи.

Вернемся к нашим баранам стенам

Используя подобные кирпичики был сделан скрипт программы для построения стен. Скачать скрипт можно тут Copy_Wall_Elements.zip.

Архив нужно распаковать и распакованную папку Copy_Wall_Elements копировать сюда: C:ProgramDataSCAD SoftPluginsPreProcessor

Стеночка за 1 клик

Стеночка за 1 клик

После распаковки в SCAD++ перейдите в меню Вид->Панели инструментов->Расширения и поставьте галочку напротив Расширения

Появится панелька на которой будет синяя кнопочка с изображением стены КЭ. Это и есть кнопка вашего плагина. Далее необходимо выбрать элементы стены (аналога) и узлы новой стены. Нажимаем кнопочку и новая стенка готова.

Спасибо за внимание! Надеюсь, кому-то поможет стартануть)

Автор: Mozgunov

Источник

Оставить комментарий