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:
- code.csharp#
węzeł nowywęzeł = nowy ()
{
- no = nodeId,
- współrzędne = new vector_3d () { x = xVector, y = 0.0, z = 0.0},
- typ_układu_współrzędnych = typ_układu_współrzędnych_węzła.COORDINATE_SYSTEM_CARTESIAN,
- typ_systemu_współrzędnychSpecified = true,
- komentarz = "węzeł dla belki"
};
- /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:
- code.csharp#
var logger = LogManager.GetCurrentClassLogger();
stringCurrentDirectory = Directory.GetCurrentDirectory();
try
{
- application_information ApplicationInfo;
- try
- {
- //połącz z aplikacją RFEM6 lub RSTAB9
- application = new ApplicationClient(Binding, Address);
- }
- catch (Exception exception)
- {
- if (application != zero)
- {
- if (application.State != CommunicationState.Faulted)
- {
- application.Close();
- logger.Error(exception, "Coś się stało:" + extra.Message);
- }
- else
- {
- application.Abort();
- logger.Error(Exception, "Komunikacja z RFEM nie powiodła się:" + wyjątkowa.Message);
- }
- }
- Console.WriteLine(wyjątek.ToString ());
- }
- finally
- {
- ApplicationInfo = application.get_information();
- logger.Info("Nazwa: {0}, Version:{1}, Type: {2}, language: {3} ", ApplicationInfo.name, ApplicationInfo.version, ApplicationInfo.type, ApplicationInfo.language_name);
- Console.WriteLine("Name: {0}, Version:{1}, Type: {2}, language: {3} ", ApplicationInfo.name, ApplicationInfo.version, ApplicationInfo.type, ApplicationInfo.language_name);
- }
}
string modelName = "MyTestModel";
string modelUrl ="";
ModelClient model = new ModelClient(Binding, new EndpointAddress(modelUrl));
- /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.
- code.csharp#
materiał materiałBeton = nowy materiał
{
- nie = 1,
- nazwa = "C20/25 | EN 1992-1-1:2004/A1:2014"
};
przekrój prostokątny = nowy przekrój
{
- nie = 1,
- materiał = materialConcrete.no,
- materialSpecified = true,
- typ = typ_przekroju.TYPE_PARAMETRIC_MASSIVE_I,
- typeSpecified = true,
- parametrization_type =section_parametrization_type.PARAMETRIC_MASSIVE_I__MASSIVE_RECTANGLE__R_M1,
- parametrization_typeSpecified = true,
- nazwa = "R_M1 0,5/1,0"
};
- /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.
- code.sharp#
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