• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Отрисовка вида в локальной системе координат

Автор _Andrew_, 09.01.04, 10:42:30

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

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

_Andrew_

Проблема такая: открываю документ, в котором имеется Вид1 с активной ЛСК. Библиотека в этом Виде должна рисовать с учетом этой ЛСК. Но, все рисуется в абсолютной СК ! Вопроса два: 1.Это так и должно быть? 2.Могу ли я с средствами API получить коодинаты начала ЛСК?

Alik

Попробуй
ksViewParam - Получить параметры вида.
ksSheetToView - Пересчитать точку из системы координат листа в CK текущего вида.

_Andrew_

К сожалению, не проходит это все. В первом случае, при получении параметров Вида для всех разумных типов параметров объекта (SHEET_ALLPARAM   и VIEW_LAYER_STATE) точка привязки вида, как я понимаю - ЛСК, возвращается нулевая - (0,0). Масштаб тоже равен нулю (что бы это значило?) !!! Хотя при отрисовке учитывается верно. А для второго случая нужно определять точку либо вручную, либо поиском по атрибуту, который, значит, тоже нужно устанавливать вручную, отсюда - много лишних телодвижений (буквально), а хотелось бы этого избежать.

Alik

Если знаешь номер вида, то делаешь его текущим и рисуешь в нем:
//-----------------------------------------------------------
  OpenView(0);
  LineSeg(0,0,10,10,1);

  OpenView(1);
  LineSeg(0,0,10,10,1);
//-----------------------------------------------------------

Если нужно получить параметры текущего вида, в нашем случае координаты привязки вида, то:
//-----------------------------------------------------------
var
   iLayer   : reference;
   pLayer   : reference;
   razm : ViewParam;
begin
  iLayer := CreateIterator ( VIEW_OBJ    , 0 );
  if ( iLayer>0 ) then
  begin
    pLayer := MoveIterator ( iLayer, ’F’ );
    if ( pLayer   0 ) then
    begin
      repeat
        begin
          GetObjParam( pLayer, Addr(razm), sizeof(razm), ALLPARAM );
          if razm.state = 3 then // если текущий вид
            ShowMessage(’Координата X=’+FloatToStr(razm.x)+#13#10+’Координата Y=’+FloatToStr(razm.y));
        end;
        pLayer := MoveIterator ( iLayer, ’N’ );
      until  ( pLayer=0 );
    end;
  end;
//-----------------------------------------------------------