3311x
001806
2023-07-19

Tutorial Webservice i API w C#

Nasza usługa sieciowa oferuje użytkownikom możliwość komunikacji z programami RFEM 6 i RSTAB 9 za pomocą różnych języków programowania. Funkcje wysokiego poziomu (HLF) firmy Dlubal umożliwiają rozszerzenie i uproszczenie funkcjonalności WebService. Zgodnie z RFEM 6 i RSTAB 9, korzystanie z naszego webservice sprawia, że praca inżyniera jest łatwiejsza i szybsza. Wypróbuj teraz! Ten samouczek pokazuje, jak korzystać z biblioteki C #na prostym przykładzie.

Biblioteka HLF dla C#oferuje wiele przydatnych funkcji do tworzenia konstrukcji w programach RFEM i RSTAB, z których niektóre zostaną wykorzystane w poniższym przykładzie.

Aby wprowadzić w życie zaprogramowaną normę, konieczne jest wcześniejsze połączenie się z programem. Jeden z dostępnych portów należy określić jako adres. Domyślny adres programu RFEM/RSTAB to http://localhost:8081 . W razie potrzeby można to zmodyfikować w opcjach programu.

W kolejnym kroku można tworzyć różne obiekty, takie jak węzły, linie i pręty za pomocą funkcji dostępnych w bibliotece C#. Biblioteka zawiera klasy dla wszystkich dostępnych obiektów. Na podstawie parametrów można definiować i określać właściwości obiektów'. Liczba parametrów może się różnić w zależności od przypadku użycia.

Poniżej pokazano, w jaki sposób można definiować obiekty na przykładzie węzła:

  1. code.csharp#

węzeł nowywęzeł = nowy ()
{

  1. no = nodeId,
  2. współrzędne = new vector_3d () { x = xVector, y = 0.0, z = 0.0},
  3. typ_układu_współrzędnych = typ_układu_współrzędnych_węzła.COORDINATE_SYSTEM_CARTESIAN,
  4. typ_systemu_współrzędnychSpecified = true,
  5. komentarz = "węzeł dla belki"

};

  1. /kod#

W ten sam sposób definiuje się linie, powierzchnie i inne obiekty. Należy pamiętać, że odpowiedni atrybut „Określony” musi być zdefiniowany i ustawiony na „prawda” dla niektórych atrybutów.

Przykład praktyczny

Ten przykład pokazuje, jak utworzyć belkę ciągłą ze stałym obciążeniem liniowym. Liczbę przęseł, rozpiętość belki oraz wielkość obciążenia liniowego można ustawić zgodnie z danymi wprowadzonymi przez użytkownika.

Najpierw wymagane zmienne są definiowane przez użytkownika w konsoli. Program sprawdza, czy dane wprowadzone przez użytkownika są kompatybilne z typem danych odpowiedniej zmiennej. Jeżeli wpis jest nieprawidłowy lub pusty, w konsoli pojawi się komunikat o błędzie. Podczas programowania zwrócono uwagę na to, aby miejsca dziesiętne mogły być wprowadzane zarówno za pomocą notacji przecinkowej, jak i przecinkowej, w celu zminimalizowania podatności na błędy podczas wprowadzania.

Połączenie z RFEM/RSTAB

Poniższy kod próbuje nawiązać połączenie z programem RFEM/RSTAB w ramach bloku try-catch:

  1. code.csharp#

var logger = LogManager.GetCurrentClassLogger();
stringCurrentDirectory = Directory.GetCurrentDirectory();
try
{

  1. application_information ApplicationInfo;
  1. try
  2. {
  3. //połącz z aplikacją RFEM6 lub RSTAB9
  4. application = new ApplicationClient(Binding, Address);
  5. }
  6. catch (Exception exception)
  7. {
  8. if (application != zero)
  9. {
  10. if (application.State != CommunicationState.Faulted)
  11. {
  12. application.Close();
  13. logger.Error(exception, "Coś się stało:" + extra.Message);
  14. }
  15. else
  16. {
  17. application.Abort();
  18. logger.Error(Exception, "Komunikacja z RFEM nie powiodła się:" + wyjątkowa.Message);
  19. }
  20. }
  21. Console.WriteLine(wyjątek.ToString ());
  22. }
  23. finally
  24. {
  25. ApplicationInfo = application.get_information();
  26. logger.Info("Nazwa: {0}, Version:{1}, Type: {2}, language: {3} ", ApplicationInfo.name, ApplicationInfo.version, ApplicationInfo.type, ApplicationInfo.language_name);
  27. Console.WriteLine("Name: {0}, Version:{1}, Type: {2}, language: {3} ", ApplicationInfo.name, ApplicationInfo.version, ApplicationInfo.type, ApplicationInfo.language_name);
  28. }

}

string modelName = "MyTestModel";
string modelUrl ="";
ModelClient model = new ModelClient(Binding, new EndpointAddress(modelUrl));

  1. /kod#

Aby nawiązać połączenie, program musi być otwarty przed uruchomieniem kodu. Po nawiązaniu połączenia informacje o programie są wyświetlane w konsoli, a w programie RFEM/RSTAB tworzony jest nowy model o nazwie zdefiniowanej przez użytkownika.

Definicja obiektów podstawowych

W kolejnym kroku można zdefiniować materiał i przekrój belki ciągłej. Ważne jest, aby opis odpowiadał nazwie zapisanej w bibliotece materiałów lub przekrojów programu RFEM.

  1. code.csharp#

materiał materiałBeton = nowy materiał
{

  1. nie = 1,
  2. nazwa = "C20/25 | EN 1992-1-1:2004/A1:2014"

};

przekrój prostokątny = nowy przekrój
{

  1. nie = 1,
  2. materiał = materialConcrete.no,
  3. materialSpecified = true,
  4. typ = typ_przekroju.TYPE_PARAMETRIC_MASSIVE_I,
  5. typeSpecified = true,
  6. parametrization_type =section_parametrization_type.PARAMETRIC_MASSIVE_I__MASSIVE_RECTANGLE__R_M1,
  7. parametrization_typeSpecified = true,
  8. nazwa = "R_M1 0,5/1,0"

};

  1. /kod#

Za pomocą pętli można tworzyć i porządkować różne obiekty (węzły, linie, pręty). Węzły są definiowane w zależności od zdefiniowanej przez użytkownika liczby przęseł i przenoszone do listy "lineDefinitionNodes". Lista ta zostanie później wykorzystana do utworzenia linii na podstawie ich węzłów definicji. Podczas tworzenia modelu w programie RSTAB lista służy do definiowania prętów na podstawie ich węzłów definicji. W programie RFEM pręty są definiowane za pomocą linii.

  1. code.sharp#

SortedList nodes = new SortedList();
int[] węzłyDefinicji_linii = new int[numer_pola + 1];
int nodeId = 1;
podwójny wektor x = 0.0;

for (int i = 0; i lines = new SortedList(); for (int i = 0; i nodeItem w węzłach) { model.set_node(nodeItem.Value); } foreach (KeyValuePair lineItem w liniach) { model.set_line(lineItem.Value); } foreach (KeyValuePair MemberItem w MemberItem) { model.set_member(memberItem.Value); } foreach (var nodalSupport in nodalSupports) { model.set_nodal_support(nodalSupport); } } catch (Exception exception) { model.cancel_modification(); logger.Error(Exception, "Coś się wydarzyło podczas tworzenia geometrii" + wyjątkowa.Message); throw; } finally { try { model.finish_modification(); } catch (Exception exception) { logger.Error(exception, "Coś poszło nie tak podczas kończenia modyfikacji geometrii\n" + wyjątek.Message + "\n"); model.reset (); } } #/kod# === Określanie obciążeń === Przypadki obciążeń, kombinacje obciążeń i sytuacje obliczeniowe są tworzone w podobny sposób, jak obiekty podstawowe, a następnie przenoszone do programu. Następnie można utworzyć obciążenie prętowe, które zostało wcześniej zdefiniowane przez użytkownika: #code.csharp# SortedList Member_loads = new SortedList (); int Member_load_id = 1; for (int i = 0; i

=== Uwagi końcowe === Poniższy przykład pokazuje zalety i łatwość obsługi biblioteki C#. Konstrukcję można szybko dostosować za pomocą danych wprowadzonych przez użytkownika, co pozwala zaoszczędzić czas podczas wprowadzania układów konstrukcyjnych w programie RFEM 6 i RSTAB 9. Biblioteka HLF dla C#oferuje również wiele innych funkcji, umożliwiających tworzenie złożonych układów.


Autor

Pani Göbel zapewnia wsparcie techniczne klientom firmy Dlubal Software.

Odnośniki


;