Добрый день! Я добавляю новую кнопку в simulation и хочу связать ее с
нужным мне классом активного объекта. При этом этот класс ак.об.
не является корневым. Какой при этом необходимо написать код?
Заранее спасибо!
Павел — 16.10.09
Здравствуйте, Ярослав!
Чтобы при старте эксперимента отображался не корневой объект, а
один из вложенных, Вам необходимо удалить код
"getEngine().getPresentation().setPresentable( getEngine().getRoot() );" из кнопки, а в поле
"Действие при запуске" корневого активного объекта написать
следующую строчку кода:
getPresentation().setPresentable(имя_вложенного_объекта);
Ярослав — 18.10.09
Большое спасибо, Павел! Метод, который вы подсказали,
действительно действенный, но в том случае, если кнопка находится
в окне корневого объекта, тогда можно через вложенные обекты
обращаться к нужным нам классам др. акт.объектов. А если кнопка
находится именно в окне"Simulation" проекта, то как через нее
обратиться к классам акт.объеков? Версия Anylogic, в которой я
работаю, 6.4.1
В стандартных примерах Anylogic первоначально стоит кнопка
"запустить модель" код которой getState() == IDLE.........и т.д., в
результате выполнения которой мы попадаем на класс корневого
объекта. Если я добавляю свою кнопку, то как через нее обратиться
к нужному мне классу акт.объта?
Павел — 10.11.09
Ярослав, если я правильно понял Ваш вопрос, то Вы хотите, чтобы при
нажатие кнопки в окне Simulation, отображался не корневой объект, а
один из вложенных. Я прав? Если да, то тогда следует использовать
метод, описанный мною в предыдущем посте. Если нет, то, пожалуйста,
поясните более подробно что именно Вы хотите реализовать.
Илья — 18.12.09
Ярослав, для Вашего случая, думаю, нужно написать:
getPresentation().setPresentable( ((Main)getEngine().getRoot()).myClass );
Здесь корневой класс активного объекта называется Main. В этот
класс вложен объект myClass. По нажатию на кнопку будет показана
презентация именно этого объекта.
Ярослав — 08.03.10
Спасибо Илья и Павел, следуя вашим советам у меня все получилось!
Ренат — 04.10.10
Добрый День!
Работаю на AnyLogic University 6.5.0.
Создаю 2 класса активного объекта Main и Main2. Как из Simulation с корневым
классом модели Main запустить Main2 при нажатии на кнопку
методы
getPresentation().setPresentable( ((Main)getEngine().getRoot()).Main2 );
getPresentation().setPresentable(Main2);
не помогают. Подскажите как быть?
Заранее спасибо
Илья — 10.10.10
Ренат, Вы пытаетесь передать методу имя класса Main2, а нужно
передавать имя объекта этого класса.
Если объект класса Main2 присутствует на диаграмме корневого
объекта Main, то нужно написать первую строку, но заменить Main2 на имя
этого объекта, скажем, main2:
getPresentation().setPresentable( ((Main)getEngine().getRoot()).main2 );
Если же это не поможет, значит, Вы не добавили в корневой класс Main
объект класса Main2, и Вы не можете перейти к его презентации просто
потому, что в модели нет экземпляра данного класса.