Учебное пособие по Веб-сервис и API на C#

Техническая статья из области расчета конструкций и использования программ Dlubal Software

  • База знаний

Техническая статья

Эта статья была переведена Google Translator

Посмотреть исходный текст

Наш Веб-сервис позволяет пользователям взаимодействовать с RFEM 6 и RSTAB 9, используя различные языки программирования. Функции высокого уровня (HLF) Dlubal позволяют расширить и упростить функциональность Веб-сервиса. Использование нашего WebService в сочетании с RFEM 6 и RSTAB 9 облегчает и ускоряет работу инженеров. Проверьте это сейчас! В этом руководстве показано, как использовать библиотеку C #на простом примере.

Библиотека HLF для C #предоставляет множество полезных функций для создания конструкций в RFEM и RSTAB, некоторые из которых будут использованы в следующем примере.

Для реализации запрограммированного кода сначала требуется соединение с программой. Один из доступных портов должен быть указан как адрес. Адрес RFEM/RSTAB по умолчанию - http://localhost: 8081. При необходимости его можно изменить в настройках программы.

На следующем шаге можно создать различные объекты, такие как узлы, линии и стержни, с помощью функций, доступных в библиотеке C #. В библиотеке есть классы для всех доступных объектов. На основе параметров могут быть определены и указаны свойства объектов '. Количество параметров может варьироваться в зависимости от сценария использования. Далее показано, как можно определять объекты на примере узла:

        
узел newNode = new ()
{
    no = nodeId,
    координаты = new vector_3d () {x = xVector, y = 0.0, z = 0.0},
    COORDINATE_SYSTEM_CARTESIAN,
    Coordinate_system_typeSpecified = true,
    comment = "узел для балки"
};

        
    

Таким же образом определяются линии, поверхности и другие объекты. Обратите внимание, что для некоторых атрибутов должен быть определен соответствующий атрибут «Указанный», и для него должно быть задано значение «истина».

Практический пример

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

Подключение к RFEM/RSTAB

Следующий код пытается установить соединение с RFEM/RSTAB в блоке try-catch:

        
var logger = LogManager.GetCurrentClassLogger ();
строка CurrentDirectory = Directory.GetCurrentDirectory ();
try
{
    application_information ApplicationInfo;

    try
    {
        //подключаемся к приложению RFEM6 или RSTAB9
        application = new ApplicationClient (привязка, адрес);
    }
    catch (исключение)
    {
        если (приложение! = ноль)
        {
            if (application.State! = CommunicationState.Faaled)
            {
                application.Close ();
                logger.Error (exception, «Что-то случилось:» + exception.Message);
            }
            else
            {
                application.Abort ();
                logger.Error (исключение, «Ошибка связи с RFEM:» + exception.Message);
            }
        }
        Console.WriteLine (exception.ToString ());
    }
    finally
    {
        ApplicationInfo = application.get_information ();
        logger.Info ("Название: {0}, версия: {1}, тип: {2}, язык: {3} ", ApplicationInfo.name, ApplicationInfo.version, ApplicationInfo.type, ApplicationInfo.language_name);
        Console.WriteLine ("Название: {0}, версия: {1}, тип: {2}, язык: {3} ", ApplicationInfo.name, ApplicationInfo.version, ApplicationInfo.type, ApplicationInfo.language_name);
    }
}

строка modelName = "MyTestModel";
строка modelUrl = "";
ModelClient модель = новый ModelClient (привязка, новый адрес конечной точки (modelUrl));


        
    

Чтобы установить соединение, программа должна быть открыта до запуска кода. После успешного подключения информация о программе отображается в консоли, и в RFEM/RSTAB создается новая модель с пользовательским именем.

Определение основных объектов

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

        
материал материалБетон = новый материал
{
    нет = 1,
    name = "C20/25 | EN 1992-1-1: 2004/A1: 2014 »
};

section sectionRectangle = новый раздел
{
    нет = 1,
    материал = materialConcrete.no,
    materialSpecified = true,
    type = section_type.TYPE_PARAMETRIC_MASSIVE_I,
    typeSpecified = true,
    параметризации_тип = сечение_тип_параметризации.PARAMETRIC_MASSIVE_I__MASSIVE_RECTANGLE__R_M1,
    параметризация_типSpecified = true,
    name = "R_M1 0.5/1.0"
};

        
    

С помощью циклов создаются и организуются в списки различные объекты (узлы, линии, стержни). Узлы определяются в зависимости от заданного пользователем количества пролетов и передаются в список «lineDefinitionNodes». Список позже будет использован для создания линий на основе их узлов определения. При создании модели RSTAB список используется для определения стержней на основе их узлов определения. При использовании RFEM стержни определяются с помощью линий.

        
SortedList  nodes = новый SortedList  ();
int [] lineDefinitionNodes = новый int [spanNumber + 1];
int nodeId = 1;
двойной xVector = 0,0;

для (int i = 0; i  lines = new SortedList  ();

для (int i = 0; i 
    

После создания всех базовых объектов определяются две различные узловые опоры. Узловая опора на первом узле должна быть закреплена, остальные опоры должны быть выполнены в виде роликов в направлении оси X. Каждый из узлов определения для различных типов опор сведен в отдельный список.

        
nodal_support support1 = new ()
{
    нет = 1,
    узлы = supportedNodes1.ToArray (),
    spring = new vector_3d () {x = double.PositiveInfinity, y = double.PositiveInfinity, z = double.PositiveInfinity},
    rotational_restraint = new vector_3d () {x = double.PositiveInfinity, y = 0.0, z = double.PositiveInfinity},
};

nodal_support support2 = new ()
{
    нет = 2,
    узлы = supportedNodes2.ToArray (),
    spring = new vector_3d () {x = 0.0, y = double.PositiveInfinity, z = double.PositiveInfinity},
    rotational_restraint = new vector_3d () {x = 0.0, y = 0.0, z = double.PositiveInfinity} (Ограничение вращения)
};

nodalSupports.Add (support1);
nodalSupports.Add (support2);

        
    

Передача объектов в RFEM

Чтобы созданные объекты стали доступными в RFEM/RSTAB, их необходимо сначала перенести в программу. Это делается между двумя функциями, то есть «model.begin_modification» и «model.end_modification», с помощью объектно-ориентированных функций библиотеки HLF. Циклы по каждому типу используются для передачи в программу всех объектов определенного типа.

        
try
{
    model.begin_modification («Геометрия»);
    model.set_material (материалБетон);
    model.set_section (sectionRectangle);

    foreach (KeyValuePair  nodeItem в узлах)
    {
        model.set_node (nodeItem.Value);
    }
    foreach (KeyValuePair  lineItem в строках)
    {
        model.set_line (lineItem.Value);
    }
    foreach (KeyValuePair  memberItem в элементах)
    {
       	model.set_member (memberItem.Value);
    }
    foreach (var nodalSupport в nodalSupports)
    {
        model.set_nodal_support (nodalSupport);
    }
}
catch (исключение)
{
    model.cancel_modification ();
    logger.Error (exception, «Что-то случилось при создании геометрии» + exception.Message);
    бросить;
}
finally
{
    try
    {
       	model.finish_modification ();
    }
    catch (исключение)
    {
        logger.Error (exception, «Что-то пошло не так при завершении модификации геометрии\n» + exception.Message + «\n»);
         model.reset ();
    }
}

        
    

Задание нагрузок

Загружения, сочетания нагрузок и расчетные ситуации создаются аналогично основным объектам и затем передаются в программу. Затем можно создать нагрузку на стержень, которая была ранее указана пользователем:

        
SortedList  member_loads = новый SortedList  ();
int member_load_id = 1;

для (int i = 0; i 
    

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

Расчет и выдача результатов

Все расчеты выполняются в программе RFEM с помощью функции model.calculate (all). После успешного расчета результаты в этом примере отображаются в консоли. Библиотека HLF для C #также позволяет экспортировать результаты в файлы XML или CSV. Наконец, можно использовать функцию model.save () для сохранения модели по пути к файлу, указанному в скобках:

        
//сохраняем модель перед закрытием
model.save (CurrentDirectory +@"\testmodels\");
application.close_model (0, истина);

        
    

Заключение

В показанном примере очевидны преимущества и простота использования библиотеки C #. Конструкцию можно быстро адаптировать с помощью пользовательских вводов, что позволяет сэкономить время при вводе конструктивных систем в RFEM 6 и RSTAB 9. Библиотека HLF для C #также предлагает множество других функций, позволяющих создавать сложные системы.

Автор

Dipl.-Ing. Rebecca Göbel

Dipl.-Ing. Rebecca Göbel

Разработка продуктов и служба поддержки

Г-жа Гёбель заботится о пользователях Dlubal в службе поддержки клиентов

Ключевые слова

Веб-сервис и API Rfem 6 RSTAB 9 Программы для расчёта конструкций Расчёт по методу конечных элементов BIM Программирование C#

Ссылки

Добавить комментарий...

Добавить комментарий...

  • Просмотры 1318x
  • Обновления 17. августа 2023

Контакты

Связаться с Dlubal

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

+49 9673 9203 0

[email protected]

Расчёт напряжений моделей лестниц в RFEM 6

Расчёт напряжений моделей лестниц в RFEM 6

Вебинар 21. декабря 2023 14:00 - 15:00 CET

Новости о RFEM 6 и RSTAB 9

Вебинар 25. января 2024 14:00 - 15:00 CET

Rfem 6 | Студенты | Основы расчёта стержней

Онлайн-обучение 10. апреля 2024 16:00 - 19:00 CEST

Rfem 6 | Студенты | Основы расчёта стержней

Онлайн-обучение 10. апреля 2024 16:00 - 19:00 CEST

RSECTION 1 | Студенты | Сопротивление материалов

Онлайн-обучение 17. апреля 2024 16:00 - 17:00 CEST

RSECTION 1 | Студенты | Основы сопротивления материалов

Онлайн-обучение 17. апреля 2024 16:00 - 17:00 CEST

Rfem 6 | Студенты | Ознакомление с МКЭ

Онлайн-обучение 24. апреля 2024 16:00 - 19:00 CEST

Rfem 6 | Студенты | Ознакомление с МКЭ

Онлайн-обучение 24. апреля 2024 16:00 - 19:00 CEST

Rfem 6 | Студенты | Основы расчёта деревянных конструкций

Онлайн-обучение 30. апреля 2024 16:00 - 17:00 CEST