Showing posts with label iМонастырь. Show all posts
Showing posts with label iМонастырь. Show all posts

Monday, June 13, 2011

ARSA-класс. R-12. Введение в работу с API

Здравствуйте. Это курс по программе Autodesk RSA, она же "Робот", раздел R-12: "По ту сторону интерфейса". Больше о программе курса можно почитать в силлабусе.

Для этого занятия вам понадобится: установленный Robot Structural Analysis 2010 (ссылка на дистрибутив), некоторое знание этой программы, минимальный опыт программирования, SDK из дистрибутива RSA 2010 (ссылка) и файл примера, который мы будем разбирать (ссылка).

API, или " программный интерфейс" - это инструмент автоматизации работы с программами. Это - набор функций, через которые программа может управляться написанной специально для этого другой программой. Наличие API - несомненное преимущество любого инженерного инструмента, потому что мы вкладываем в наш инструмент душу и труд, и, получив некий опыт и навыки, хотим, чтобы программа выполняла рутинные действия автоматически и экономила нам время для чего-то более интересного.

Для начала нам нужно выбрать инструменты и запастись справочной литературой. Часть нужной нам литературы и примеров идёт в комплекте к дистрибутиву RSA 2010. Их можно взять или из ссылки на архив в начале поста, или из дистрибутива Робота (когда вы распакуете файл установки Robot 2010, в директории дистрибутива будет папка /SDK).

capture_06132011_013442.png

В папке есть почти всё необходимое: справка по API на английском в формате HTML и PDF, а также примеры работы с API в формате XLS.

На текущем этапе всё, что нам нужно знать для работы с API - это названия свойств, методов объектов и прочей кухни, через которую можно брать информацию о расчетной модели из программы или, наоборот, давать программе информацию и заставлять её выполнять действия. Совокупность этих свойств и методов называется "объектной моделью", Robot Object Model, или попросту RobotOM. Указанные выше справочные файлы как раз в основном описывают, какие объекты есть в объектной модели и как ими пользоваться.

Теперь перейдем к инструменту, с помощью которого мы будем программировать RSA. Поскольку мы будем использовать язык VBA, подойдёт тот инструмент, который у вас уже наверняка есть - встроенный в Excel редактор Visual Basic. Распакуйте архив с уроком, откройте файл примера XLS в своём Экселе и перейдите в редактор нажатием <Alt+F11>.

Среда для экспериментов над API Робота у нас есть. Проверим, имеем ли мы доступ к объектной модели. Щёлкнем меню "Tools->References..." и проверим, подключена ли ссылка на Robot Object Model:

capture_06132011_231943.png

Если не подключена, щёлкните "Browse..." и укажите файл robotom.tlb, который расположен в месте, куда вы установили RSA 2010, это где-то в районе "C:\Program Files (x86)\Autodesk\Autodesk Robot Structural Analysis 2010\SYSTEM\EXE\". Всё, теперь мы имеем доступ к объектной модели Робота.

Вернёмся в наш редактор и откроем Module1 (посмотрите в левой колонке на скриншоте). Перед вами откроется подпрограмма R1201_TestTimeHistory, которая делает то же, что делает кнопка преобразования акселерограммы в спектр при определении спектрального анализа в Роботе. Вот такая кнопка:

Для тех, кто ещё не работал со спектральным анализом в Роботе, просто поясню, что с помощью этой функции можно открыть запись акселерограммы и преобразовать её в спектр ответа, для которого можно затем провести спектральный анализ. Это довольно продвинутая функция. Давайте посмотрим, как замечательно справляется с этой задачей наша тестовая подпрограмма. Проанализируем её построчно.

Поставьте курсор внутрь подпрограммы и нажмите F8, начнется пошаговая отладка программы. Желтым подсвечивается инструкция, которую VBA собирается выполнить. Нажимайте F8 всякий раз, чтобы перейти к следующей инструкции. Пройдите всю программу и следите за комментариями.



'Объявляем переменную, содержащую объектную модель Робота
'Объявление нужно для того, чтобы были видны компоненты модели по Ctrl+Пробел
Dim Robot As New RobotApplication

'Начало пробной подпрограммы
Sub R1201_TestTimeHistory()

' Установить связь с Роботом
Set Robot = CreateObject("Robot.Application")
' Создать новый пустой проект, если он ещё не открыт
If Not Robot.Project.IsActive Or Robot.Project.Type <> I_PT_FRAME_3D Then
Robot.Project.New I_PT_FRAME_3D
End If

Как вы могли заметить, программа задумалась на этих инструкциях из-за того, что загружался Робот (если он ещё не запущен).

'Сделать Робот видимым, просто так
Robot.Visible = True



'Объявления переменных для удобства работы
'Спектр ответа
Dim RSpectrum As RobotSpectralAnalysisSpectrum
'Набор точек акселерограммы
Dim THCollection As IRobotTimeHistoryPointsCollection
'Нагружение
Dim LoadCase As RobotSimpleCase
'Набор точек, описывающий график спектра ответа
Dim PointCollection As RobotSpectralAnalysisPointsCollection




Вот здесь начинается собственно работа.

'Загружаем в список функций акселерограммы из файла AAM.thf
Robot.Project.Structure.Cases.TimeHistoryFunctions.AddFromFile ActiveWorkbook.Path & "\AAM.thf"
'Забираем в переменную THCollection одну из функций
Set THCollection = Robot.Project.Structure.Cases.TimeHistoryFunctions.Get(1)


Эти инструкции считали из файла AAM.thf все акселерограммы и первую из них отправили в THCollection

'Задаем переменную спектра
Set RSpectrum = Robot.CmpntFactory.Create(I_CT_SPECTRAL_ANALYSIS_SPECTRUM)
'Эта функция преобразует акселерограмму в спектр
'Диапазон от 0.02с до 2с, в графике спектра будет 10 точек, демпфирование 5%
RSpectrum.AddFromTimeHistory PointCollection, 0.02, 2, 10, 0.05

В этом месте мы ознакомимся, как редактор помогает нам освоиться в объектной модели Робота.
После объявления переменной начните новую
строку и напишите буквы TH, после этого нажмите <Ctrl+Пробел>:

Теперь нажмите точку, чтобы дописать название переменной - и автозаполнение покажет,
какие команды доступны для переменной THCollection. Очень удобно.

'Сохраним в файл по месту

RSpectrum.SaveToFile ActiveWorkbook.Path & "\AAM.SPE"

'Отпускаем Робот
Set Robot = Nothing
End Sub

Теперь в файле AAM.spe содержится спектр, сгенерированный RSA в процессе выполнения нашей подпрограммы. Как видим, ничего принципиально сложного в работе с API нет.

Итак, в этом занятии мы получили первое представление о том, как выглядит работа с API RSA. В следующих занятиях модуля R-12 "По ту сторону интерфейса" мы разберёмся, какие навыки позволяют эффективно программировать RSA через его API и увидим, как много полезного даст нам это крутое умение.

Задача по материалам класса: модифицировать программу так, чтобы для преобразования использовался не первый график из AAM.thf, а отдельно записанная единичная акселерограмма AAM.ths (есть в материалах).

***

Всегда рад комментариям и критике. Моя цель - понять, как в курсе передать максимум знания и отнять меньше всего времени. Может, слишком много воды или наоборот, всё сжато и ни черта не понятно? Есть ошибки в материале или, может, вы знаете, как сделать лучше? Если у вас что-то не клеится, спрашивайте.



Sunday, June 12, 2011

Классы по RSA: техподдержка Autodesk, ошибка 5000 и wiki-идеи

Вообще-то я люблю ту техподдержку, которую Автодеск делает для Робота. Счастье, что Автодеск не имеет к ней никакого отношения, а обслуживают Робот те же поляки из RoboBAT, которые его раньше разрабатывали и продавали (ну, строго говоря, именно те, кто разрабатывал ядро решателя, уже многие давно не там, но это всё мелочи). Но проколы случаются и у неё, конечно.

Как я уже писал, сейчас происходит некоторый разбор полётов по "ошибке 5000", которая представляет собой сбой решателя RSA, одновремнно в техподдержке и на форуме Автодеска. А началось всё с того, что при разборе этой ошибки на схеме с включенным мультипоточным решателем и динамикой был получен вот такой ответ техподдержки:

"error 5000 appears while calculating seismic with multithreaded solver. So in case of running full model please set SparseM or Automatic solver".
То есть "ошибка 5000 появляется при расчёте на сейсмику с МТ-решателем. Поэтому с полной моделью используйте разреженный или автоматический решатель".

Ну, мы люди тёмные, верим на слово, не работает - значит не работает. Как написали, так и делаем. Но я, конечно, затаил обиду на поломанный решатель и при удобном случае помянул эту ошибку на английском форуме RSA.

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

Вот как важно, оказывается, быть несносным и злопамятным к Автодеску. Тогда нам откроются все сокрытые секреты и тайны.

А теперь конструктивная информация

Секция R-7: Решатель II. Для борьбы с ошибкой решателя (кроме переключения решателя на другой тип) нужно:

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

P.s. Знаете, что нам нужно? Нам нужна FEA-энциклопедия на движке wiki по конкретным программам, включающая в себя и все разделы встроенной справки. Чтобы, упоминая каждую конкретную функцию программы, можно было бы сослаться на страницу с описанием этой функции (например, я мог бы сослаться на то, как открыть программу в "режиме ремонта", если бы было куда). Причем она должна принадлежать сообществу, потому что в wikihelp Автодеска ещё не скоро о CAE вспомнят.

Звали когда-то на StructuralPedia, может, всё-таки завести там русский раздел?

Thursday, June 9, 2011

ARSA-класс: объявление и учебная программа

Класс "Техники анализа в Autodesk Robot". R0: объявление и оглавление

Начинаю наброски курса по Роботу и одновременно - эксперимент в удаленном образовании и создании базы знаний. Я очень прошу тех, кто этим интересуется, задавать вопросы любого рода, потому что это дело должно быть двусторонним. Что-то знаю я, что-то знает читатель.

Для начала определимся со структурой. Сюда курс будет выкладываться в виде не связанных постов, систематизированных тегами. Теги такие:

R-0. Общая и административная информация, как, например, этот пост.

R-1. Интерфейс и работа в пространстве. Материалы: готовая тестовая модель, которую можно рассматривать.

R-2. Организация I (основы). Группы, подконструкции. Настройки. Общая информация о таблицах в Роботе.

R-3. Организация II (сложности). Эффективные наработки организации модели, настроек и файлов.

R-4. Препроцессор I (основы). Ввод элементов, свойств, нагрузок.

R-5. Препроцессор II (сложности). Техники работы с препроцессором.

R-6. Решатель I. Базовые сведения.

R-7. Решатель II. Техники работы.

R-8. Постпроцессор I. Результаты и как их читать. Усилия, напряжения. Отчеты и таблицы.

R-9. Постпроцессор II. Техники работы с результатами.

R-10. Динамический анализ I. "Дорожная карта" выбора параметров, формы, спектральный метод.

R-11. Динамический анализ II. Временной анализ.

R-12. По ту сторону интерфейса. API.

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