Community

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