Informacje ogólne
Chcemy utworzyć narzędzie, które utworzy nieliniowe podpory węzłowe na aktualnie wybranych w programie węzłach. Aby to zrobić, wymagane są następujące kluczowe elementy:
- Pobierz aktualnie wybrane węzły
- Tworzenie podpór węzłowych
- Utworzyć i przydzielić nieliniowość
- Uruchamianie narzędzia w programie
Punkty te należy teraz wyjaśnić. Wymaga to znajomości poprzednich części tej serii artykułów, które nie zostaną ponownie opisane. Dostępny kod źródłowy zawiera jednak komentarze dokumentujące wspomniane elementy, na przykład otrzymanie konstrukcji.
Uzyskaj aktualnie wybrany węzeł
Wybrane elementy można edytować za pomocą interfejsu COM, korzystając ze znanych już funkcji, takich jak IModelData.GetNodes dla węzłów. Aby jednak zwrócić tylko wybrane elementy, należy najpierw przełączyć do edytowania bieżącego wyboru, wprowadzając IModelData.EnableSelections. Jeżeli dla opcji EnableSelections ustawiona jest wartość True, moduł IModelData.GetNodes zwraca tylko wybrane elementy. Oto konkretny przykład:
'Uzyskaj wybrane węzły.iModDat.EnableSelections Prawda 'pracować tylko z wybranym obiektemDim węzły () As RFEM5.Nodenodes = iModDat.GetNodesiModDat.EnableSelections Fałsz 'ponownie pracować ze wszystkimi obiektami
Po uzyskaniu wybranych węzłów EnableSelections jest ponownie resetowana do wartości false, ponieważ często może to powodować błędy. Ponieważ podpora węzłowa wymaga do definicji listy węzłów w postaci ciągu, jest ona udostępniana jednocześnie:
'Utworzyć listę węzłów.Dim nodeList As Łańcuch znakówDim iAsDługiJeżeli chcesz zadać krótkie pytanie techniczne, i = 0 ToUBound (węzły, 1)węzełLista = węzełLista i węzły (i). „,”Następny i
Tworzenie podpór węzłowych
Nieliniowość lub wykres, w konkretnym przypadku, jest osobnym elementem. Może on zostać przydzielony do podpory węzłowej tylko wtedy, gdy jest już dostępna w systemie. Dlatego konieczne jest najpierw utworzenie podpory węzłowej, zgodnie z zasadami wyjaśnionymi w poprzednich artykułach:
'Utworzyć podpory węzłowe.Dim nodSup As RFEM5.NodalSupportnodSup.No = 100nodSup.IsColumn = FałsznodSup.IsValid = PrawdanodSup.nodeList = nodeListnodSup.ReferenceSystem = GlobalSystemType
nodSup.RestraintConstantX = 0,01nodSup.RestraintConstantY = 0,01nodSup.RestraintConstantZ = 0,01
nodSup.SupportConstantX = -1nodSup.SupportConstantY = -1nodSup.SupportConstantZ = -1
'Zdefiniować nieliniowość.nodSup.SupportNonlinearityZ = WorkingDiagramType
iModDat.PrepareModificationiModDat.SetNodalSupport nodSupiModDat.FinishModification
Jak widać w kodzie, WorkingDiagramType jest określone jako nieliniowość w globalnym kierunku z.
Tworzenie i przydzielanie podpory nieliniowej
Po przygotowaniu obsługi węzła dla nieliniowości WorkingDiagramType, należy ją teraz utworzyć:
'Utworzyć nieliniowość.Dim nldgrm As RFEM5 Wykres nieliniowości
nldgrm.ForceType = StiffnessDiagramForceType.NoneStiffnessForcenldgrm.PositiveZoneType = DiagramAfterLastStepType.StopDiagramTypenldgrm.Symmetric = Prawda
'Utworzyć wykres.ReDim nldgrm.PositiveZone (3, 1)nldgrm.PositiveZone (0, 0) = 0 #nldgrm.PositiveZone (0, 1) = 0 #
nldgrm.PositiveZone (1, 0) = 0,01nldgrm.PositiveZone (1, 1) = 100
nldgrm.PositiveZone (2, 0) = 0,03nldgrm.PositiveZone (2, 1) = 200
nldgrm.PositiveZone (3, 0) = 0,05nldgrm.PositiveZone (3, 1) = 300
Wykres składa się z dwuwymiarowej tablicy. Pierwszy wymiar odnosi się do zbioru danych, a drugi do elementów zbioru danych. W tym przypadku pierwszym elementem w zbiorze danych jest przemieszczenie w m, a drugim elementem jest siła w N. Dlatego w powyższym przykładzie utworzono cztery zbiory danych, w których na przykład trzeci punkt wykresu w tym miejscu wynosi 30 mm i 0,2 kN. Ta nieliniowość zostanie teraz przypisana do istniejącej podpory. Aby to zrobić, konieczne jest uzyskanie interfejsu dla podpory węzłowej, a następnie dla nieliniowości:
'Przypisać nieliniowość.Dim iNodSup As RFEM5.INodalSupportUstawić iNodSup = iModDat.GetNodalSupport (100, ItemAt.AtNo)Dim iNldiag As RFEM5. Wykres liniowościUstawić iNldiag = iNodSup.GetNonlinearity (AlongAxisZ)
iModDat.PrepareModificationiNldiag.SetData nldgrmiModDat.FinishModification
W tym przypadku nieliniowość przebiega wzdłuż osi Z, dlatego w przypadku uzyskania nieliniowości należy wybrać AlongAxisZ. Nieliniowość jest przydzielana w znanym bloku Modyfikacja.
Uruchamianie narzędzia w programie
Z programem RFEM można zintegrować programy zewnętrzne. W tym celu w ścieżce programu należy zmodyfikować plik RFEM.ini. W przeciwieństwie do programowania w C# i VB, w którym tworzony jest plik wykonywalny, VBA wymaga programu Excel do zaimplementowania narzędzia. Excel może zostać przydzielony przez argument podczas otwierania pliku, który ma zostać otwarty. Informacja ta pojawia się w wierszu polecenia (plik Excel znajduje się w obszarze C: \ temp, a program Excel jest zainstalowany w wersji 32-bitowej):
"C: \ Program Files (x86) \ Microsoft Office \ Office15 \ EXCEL.EXE" C: \ temp \ table1.xlsm
W ten sposób zostanie otwarty program Excel z żądanym plikiem. Aby mieć pewność, że program RFEM otworzy zewnętrzny program tylko bez dodatkowych argumentów (w tym przypadku za nazwą pliku EXCEL.EXE), konieczne jest wcześniejsze utworzenie pliku wsadowego w systemie Windows. Ten prosty plik tekstowy z rozszerzeniem ".bat" jest traktowany przez system Windows jako plik wykonywalny EXE. Z tego względu za pomocą edytora można utworzyć plik TXT, który zawiera nowe rozszerzenie „.bat”. W oknie Eksploratora Windows należy najpierw ustawić opcję wyświetlania rozszerzenia pliku. Ten plik wsadowy (zwany dalej EXCEL-Tool.bat) musi zawierać następujący wpis:
"C: \ Program Files (x86) \ Microsoft Office \ Office15 \ EXCEL.EXE" C: \ temp \ table1.xlsm
To polecenie odpowiada tak, jak zostało wprowadzone w wierszu polecenia.
Po utworzeniu ten plik wykonywalny można wprowadzić w programie RFEM.ini jako narzędzie zewnętrzne. Program RFEM.ini znajduje się w ścieżce programu programu RFEM (domyślna ścieżka w programie RFEM 5.07 64-bit: C: \ Program Files \ Dlubal \ RFEM 5.07). W tym miejscu należy dodać następujące wpisy:
ModułNazwa2 = Narzędzie EXCEL
ModuleExeName2 = "c: \ temp \ EXCEL-Tool.bat"
Moduł Opis2 = Nieliniowe zwolnienie pręta
Oczywiście plik wsadowy EXCEL-Tool.bat i makra table1.xlsm również muszą być przechowywane w C:/temp/.
W celu automatycznego uruchomienia makra należy uruchomić podprogram w podprogramie wykonywanym automatycznie przez program Excel podczas otwierania pliku. Podprogram ten ma nazwę Workbook_Open i musi być przechowywany w skoroszycie.
Teraz musimy zamknąć program Excel po pomyślnym uruchomieniu. Jeżeli wystąpi błąd lub program RFEM nie otworzy się, makro można edytować. W tym celu zintegrowane jest rozróżnienie przypadku. Pełny szkic jest następujący:
Prywatne SubWorkbook_Open ()
'Program obsługi błędów uruchomił program RFEM.W przypadku błędu Idź do e
'Pobierany jest interfejs z programem RFEM.Dim iApp AsRFEM5.AplikacjaUstawić iApp = GetObject (, „RFEM5.Aplikacja”)
e: 'w przypadku błędu wyświetlany jest komunikat "RFEM nie otwarty"If Err.Number <> 0 WięcMsgBox „Program RFEM nie otwarty”,, Err.Source Zakończ SubKoniec If
'Program obsługi błędów.W przypadku błędu Idź do F
'Licencja COM i dostęp do programu są zablokowane.iApp.LockLicense
'Uzyskaj interfejs dla aktywnego modelu.Dim iModel As RFEM5.modelIf iApp.GetModelCount> 0 WięcUstaw iModel = iApp.GetActiveModelElse'Błąd wyświetlania, gdy modeli nie jest dostępnych.Err.Raise vbObjectError, "LoadModel ()",„iApp.GetModelCount <1”End If
„Miejsce na własny kod źródłowy.
f: „Błąd przechwytywania z kodu źródłowego.Jeżeli numer błędu <> 0 wtedyMsgBox Err.Description,, Err.Source'Licencja COM została odblokowana, dostęp do programu jest ponownie możliwy.iModel.GetApplication.UnlockLicenseNarzędzie to umożliwia otwieranie programu Excel w przypadku wystąpienia błędu. Exit SubEnd If
'Licencja COM została odblokowana, ponownie możliwy dostęp do programuiModel.GetApplication.UnlockLicense„Po pomyślnym zastosowaniu narzędzie zamyka program Excel.Aplikacja.Zatrzymać
End Sub
W tej chwili brakuje tylko odniesienia do utworzonego wcześniej podprogramu, który znajduje się w sekcji „Miejsce na własny kod źródłowy”. Pełny kod źródłowy jest dostępny pod linkiem.
Podsumowanie
W tym artykule dotyczącym tworzenia nieliniowej podpory węzłowej opisano zastosowanie nowego modułu zewnętrznego i tym samym jest on uzupełnieniem poprzednich rozdziałów z tej serii artykułów. Integracja z plikami wykonywalnymi jest mniej problematyczna, ponieważ zazwyczaj są tworzone w programach Visual Studio i VB lub C #. Z tego powodu opisano tutaj bardziej złożony proces z Excelem.