36 pierwszy krok w stronę systemu otwartego
Transkrypt
36 pierwszy krok w stronę systemu otwartego
PIERWSZY
KROK W STRONÊ SYSTEMU OTWARTEGO
e wrzeniu firma RoboBAT wprowadzi³a na rynek wersjê 13. programu Robot97. Wersja ta zawiera wiele
nowoci. Najwa¿niejsz¹ z nich jest wprowadzona do programu technologia COM umo¿liwiaj¹ca tworzenie w³asnych aplikacji wspó³pracuj¹cych z Robotem97. Technologia COM otwiera przed u¿ytkownikami
programu zupe³nie nowe mo¿liwoci:
± mo¿na tworzyæ w³asne aplikacje generuj¹ce w Robocie97 geometriê modeli konstrukcji i obci¹¿enia;
± mo¿na w aplikacjach zewnêtrznych tworzyæ dokumentacjê danych i rezultatów obliczeñ;
± mo¿na rozbudowywaæ program o aplikacje wykonuj¹ce obliczenia i analizy normowe przy wykorzystaniu
rezultatów uzyskanych w Robocie97;
± mo¿na tworzyæ samodzielnie po³¹czenie z innymi programami (np. rysuj¹cymi).
To tylko kilka mo¿liwoci. Wiele zale¿y od inwencji u¿ytkownika. Producent daje tylko narzêdzie, które mo¿na
wykorzystaæ na wiele sposobów.
W wersji 13.0 po raz pierwszy pojawi³a siê technologia COM i dlatego, jej mo¿liwoci s¹ ograniczone tylko
do konstrukcji prêtowych. A wiêc co program udostêpnia swoim u¿ytkownikom?
Aplikacja zewnêtrzna mo¿e przekazaæ do programu
nastêpuj¹ce dane:
± numery i wspó³rzêdne wêz³ów;
± po³o¿enie i numery elementów;
± materia³ dla ka¿dego elementu (mo¿e to byæ materia³ z biblioteki Robota, lub materia³ zdefiniowany poprzez jego parametry w aplikacji zewnêtrznej);
± przekroje dla ka¿dego elementu (przekroje z bazy
Robota, lub definiowane w aplikacji);
± zwolnienia wêz³ów;
± podpory;
± obci¹¿enia wêz³owe;
± obci¹¿enia elementowe.
Z poziomu aplikacji zewnêtrznej mo¿na równie¿:
± uruchomiæ program Robot97;
± wybraæ tryb pracy;
± wczytaæ model z pliku lub za¿¹daæ generacji modelu na podstawie danych przekazanych z aplikacji;
± wczytaæ model parametryczny z pliku, przy czym
wartoci parametrów mog¹ byæ podane w aplikacji;
± uruchomiæ obliczenia;
± zbudowaæ w³asne tabele danych lub rezultatów
(z komponentów dostêpnych w Robocie97);
± w³¹czaæ lub wy³¹czaæ filtry;
± uruchamiaæ drukowanie dokumentacji stworzonej z poziomu aplikacji.
Do aplikacji zewnêtrznej mo¿na pobraæ:
± numery i wspó³rzêdne wêz³ów;
± po³o¿enie i numery elementów;
± materia³ dla ka¿dego elementu;
± przekroje dla ka¿dego elementu;
36
± zwolnienia wêz³ów;
± podpory;
± obci¹¿enia wêz³owe;
± obci¹¿enia elementowe;
± si³y wewnêtrzne w elementach;
± przemieszczenia wêz³ów;
± reakcje.
JAK TO WYGL¥DA W PRAKTYCE
Aby móc korzystaæ z mo¿liwoci robotowego COM-a,
nale¿y najpierw poinformowaæ system operacyjny o jego
istnieniu, czyli zarejestrowaæ go. W tym celu wystarczy
uruchomiæ aplikacjê Robot97 Rejestracja Komponentów znajduj¹c¹ siê w grupie Robot Structural Office
13.0. Oczywicie wczeniej nale¿y zainstalowaæ sam
program Robot97 wer.13.0.
Poni¿ej prezentujê prost¹ aplikacjê zewnêtrzn¹ utworzon¹ w arkuszu kalkulacyjnym programu Microsoft
Excel.
Jej zadaniem jest generacja uproszczonego schematu geometrycznego modelu trzonu s³upa energetycznego (jak równie¿ masztów o przekroju trójk¹tnym).
Aby taka aplikacja dzia³a³a poprawnie, nale¿y wskazaæ cie¿kê dostêpu do biblioteki obiektów Robota97
znajduj¹cej siê w pliku robotom.tlb. Jak to zrobiæ?
W Excelu (lub innym programie, w którym bêdziemy
pisali aplikacjê) nale¿y wywo³aæ edytor Visual Basica
i wywo³aæ polecenie NARZÊDZIAàODWO£ANIA, a nastêpnie, korzystaj¹c z opcji PRZEGL¥DAJ, wskazaæ po³o¿enie
pliku robotom.tlb (cie¿ka dostêpu w katalogu Robota97 ma postaæ: Robot97\System\Exe\robotom.tlb).
Po wczytaniu arkusza do programu Excel ekran ma
postaæ jak na rys. 1.
Arkusz zawiera rysunek opisuj¹cy poszczególne
zmienne, trzy pola wprowadzania danych (liczba poziomów, wysokoæ ca³kowita, szerokoæ podstawy) oraz
opcjê generacji modelu.
Dim Robot As RobotApplication
«deklaracja obiektu typu APLIKACJA ROBOTA
Sub
Dim
Dim
Dim
Dim
Gener_Click()
n As Long
b As Double
h As Double
dxy As Double
n = Range("C22").Value
b = Range("C23").Value
h = Range("C24").Value
If Robot Is Nothing Then
Set Robot = CreateObject("Robot.Application")
Robot.Visible = True
Robot.Project.New I_PT_FRAME_3D
End If
Rys. 1
Rysunek oczywicie jest elementem pomocniczym
u³atwiaj¹cym wprowadzanie w³asnych wartoci danych.
Pola danych s¹ zdefiniowane jak w zwyk³ym arkuszu, natomiast ca³y dostêp do Robota, kryje siê w przycisku GENERACJA. W momencie naciniêcia go uruchamia siê krótka aplikacja napisana w VBA-Visual Basic
for Applications (polecenie NARZÊDZIAàMAKROàEDYTOR VISUAL BASIC). Kod tej aplikacji znajduje siê w tabeli
obok (wersjê z komentarzami znajdziesz na CD-ROM-ie).
Powy¿sza aplikacja obarczona jest b³êdem: nie zosta³ wprowadzony fragment kodu, który zamiast ostatnich najwy¿szych trzech wêz³ów o identycznych wspó³rzêdnych wprowadza tylko jeden wêze³. Zrobione to
zosta³o specjalnie, aby pokazaæ, ¿e w miarê mo¿liwoci
mo¿na upraszczaæ kod aplikacji, korzystaj¹c z tego, ¿e
Robot97 wyposa¿ony jest w opcjê automatycznej korekcji konstrukcji. Dziêki temu takie trzy wêz³y le¿¹ce
w tym samym punkcie przestrzeni mo¿na automatycznie
zast¹piæ pojedynczym wêz³em.
Aplikacja uruchamia Robota97, a nastêpnie dokonuje generacji modelu. I tutaj dwie wa¿ne uwagi:
± Je¿eli Robot zosta³ uruchomiony przez aplikacjê,
to nie nale¿y koñczyæ jego pracy poprzez zamkniêcie Robota, tylko poprzez zamkniêcie aplikacji.
± W takiej sytuacji (uruchomienie przez aplikacjê)
bêdzie równie¿ utrudniona normalna praca z Robotem (np. otwieranie okienek). Dlaczego? Za³o¿enie twórców programu by³o nastêpuj¹ce:
je¿eli Robot97 jest uruchamiany przez aplikacjê
zewnêtrzn¹, to ma pracowaæ tylko jako solver obliczeniowy, czyli pobraæ dane, obliczyæ rezultaty,
wydrukowaæ dokumentacjê lub zwróciæ wartoci
rezultatów do aplikacji. A wszystko to ma byæ sterowane z poziomu aplikacji, a nie z poziomu Robota97. Aby przyspieszyæ proces obliczeniowy
w tym trybie pracy, wszystkie procedury odwie¿ania okien i ekranu maj¹ najni¿szy priorytet, czyli
dopiero gdy procesor komputera nie ma zupe³nie
nic do zrobienia, zajmuje siê aktualizacj¹ obrazu.
Dziêki temu kilkadziesi¹t razy przyspieszono obróbkê danych przekazanych Robotowi z zewn¹trz.
Oczywicie, je¿eli aplikacja przekaza³a dane do Robota, który by³ uruchomiony ju¿ wczeniej, problem ten
nie istnieje i mo¿na normalnie pracowaæ w programie.
Dim
Dim
Dim
Dim
Dim
Dim
nods As Object
nod As Object
elems As Object
ele As Object
nNr As Long
eNr As Long
Set nods = Robot.Project.Structure.Nodes
For i = 1 To n + 1
dxy = 1# - (i - 1#) / n
zCur = (i - 1#) * (h / n)
nNr = i * 100
xCur = b * Sin(90# * 3.1415 / 180#) * dxy
yCur = b * Cos(90# * 3.1415 / 180#) * dxy
nods.Create nNr + 1, xCur, yCur, zCur
xCur = b * Sin(210# * 3.1415 / 180#) * dxy
yCur = b * Cos(210# * 3.1415 / 180#) * dxy
nods.Create nNr + 2, xCur, yCur, zCur
xCur = b * Sin(330# * 3.1415 / 180#) * dxy
yCur = b * Cos(330# * 3.1415 / 180#) * dxy
nods.Create nNr + 3, xCur, yCur, zCur
Next i
Set elems = Robot.Project.Structure.Bars
For i = 1 To n
nNr = i * 100
eNr = i * 100
elems.Create eNr + 1, nNr + 1, nNr + 2
elems.Create eNr + 2, nNr + 2, nNr + 3
elems.Create eNr + 3, nNr + 3, nNr + 1
elems.Create eNr + 10, nNr + 1, nNr + 101
elems.Create eNr + 11, nNr + 2, nNr + 102
elems.Create eNr + 12, nNr + 3, nNr + 103
Next i
Robot.Project.ViewMngr.Refresh
End Sub
Wróæmy do naszego przyk³adu. W arkuszu kalkulacyjnym poda³em wartoci:
iloæ kondygnacji
= 6;
wysokoæ ca³kowita
= 12 m;
szerokoæ podstawy
= 3 m;
a nastêpnie nacisn¹³em przycisk GENERACJA. Po chwili
ekran programu Excel zosta³ przes³oniêty ekranem Robota97 (rys. 2). Poniewa¿ mój Robot ma ustawiony domylny widok konstrukcji jako p³aski w p³aszczynie XZ,
wiêc aby obejrzeæ model w przestrzeni, skorzysta³em
z polecenia widoku 3D i dodatkowo w³¹czy³em wizualizacjê numerów wêz³ów i elementów (rys. 3).
37
Mam nadziejê, ¿e ten krótki artyku³ chocia¿ trochê
przybli¿y³ czytelnikom nowe mo¿liwoci, jakie otwieraj¹
siê przed u¿ytkownikami programu Robot97. A twórcy
programu zapowiadaj¹, ¿e w nastêpnej wersji tytu³owy
pierwszy krok zmieni siê w krok siedmiomilowy. Zob a c z y m y. . .
PS. W najbli¿szym czasie postaramy siê umieciæ przyk³adowe aplikacje na naszym serwerze www.robobat.com.pl
Rys. 2.
Powy¿sza aplikacja zosta³a napisana w rodowisku
Excela, ale mo¿e to byæ równie dobrze Word czy ka¿dy
inny program, w którym mo¿na pisaæ w³asne aplikacje.
Pod warunkiem, ¿e program ten potrafi korzystaæ z zasobów systemu Microsoft Windows 95/98/NT na poziomie technologii COM. Oczywicie je¿eli kto ma dostêp
do kompilatorów jêzyka Basic lub C, to nie musi korzystaæ ze rodowiska Microsoft Office. Mo¿e pójæ jeszcze
dalej i skompilowaæ aplikacjê, tworz¹c swój w³asny program wspó³pracuj¹cy z Robotem97.
Rys. 3.
Dariusz Kasznia
[email protected]
38