Повторный вызов update для iview

Автор Maxxx, 13.08.13, 14:21:38

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Maxxx

Добрый день.
Такая проблемма. создаю вид. устанавливаю ему параметры. делаю update. затем нужно поменять его координаты. Присваиваю их. Делаю повторный update - не срабатывает. Может кто в курсе - в чем дело?

   iv:=iViewMng.Views.Add(vt_Standart);
    if iv = nil then Exit;


    assView := iv as IAssociationView;
    if assView = nil then Exit;

    assView.SourceFileName := iDOC3D.PathName;
    assView.ProjectionName:='#спереди';   
    assView.Update;

    assView.X := 500;
    assView.Y := 500;

assView.Update; - не срабатывает.

Если убрать предыдущий update - все работает.

Можно попробовать так, хотя можно сразу нужные координаты поставить.
assView := iv as IAssociationView;
if assView = nil then Exit;
assView.SourceFileName := iDOC3D.PathName;
assView.ProjectionName:='#спереди';   
assView.Update;
iV.X := 500;
iV.Y := 500;
iV.Update;

Maxxx

В том то и дело что я сразу не могу поставить (или может заблуждаюсь)... Задумка следующая - вставляю вид - делаю ассоциативным - смотрю его габариты - подгоняю масштаб - размещаю на листе. т.е. первый update нужен для того чтоб вид отрисовался и я смог получить его габариты...
просто вид iv.update тоже пробовал - результат тот же

Скорее всего ещё перед первым вызовом Update нужно вставить ссылку на опорный вид assView.BaseView:=iV; , а затем уже оперировать опорным видом iV, потому, что масштаб и точки привязки находятся у него.

Maxxx

BaseView - Свойство используется при создании проекционного вида.
Это ж ссылка на вид, с которого создается проекционный...

Иногда после первого update при работе с видами помогает PumpWaitingMessages, чтобы гарантировать полную его отработку.

Maxxx

Сделал проще - перед вторым update сделал снова assView.ProjectionName:='#спереди';   и все отработало)