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

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

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

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

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

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

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

Использование итератора для выделения дуг окружности

Автор Mihonius, 27.04.13, 13:25:40

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

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

Mihonius

Добрый день!
Написал следующую процедуру, для перебора и пока только подсветки дуг окружности, ошибок компилятор не выдает, но ничего и не делает, было замечено что pObj равен нулю, а pAttr не ноль и Iter не ноль, в чем может быть причина?

procedure IteratorArc;
var
     Iter : ksIterator;
     pObj, pAttr: Reference;
begin
  Iter := ksIterator(ikompas.GetIterator);
   if iter = nil then
      exit;
  Iter.ksCreateIterator(ARC_OBJ, 0); // Создаю итератор для дуг окружности
  begin
    pAttr := iter.ksMoveAttrIterator( 'F', pObj );  // перемещение на первый
    while ( pAttr <> 0 ) and ( idoc.ksExistObj(pObj) <> 0 ) do
    begin
      idoc.ksLightObj( pObj, 1 ); // подсветка
      pAttr := iter.ksMoveAttrIterator( 'N', pObj ); // перемещение на следующий
    end;
     iter.ksDeleteIterator();
  end;
end;

Функцию Вы не ту использовали, Вам нужен указатель на объект, а не на атрибут.
pObj := iter.ksMoveIterator( 'F' );  // перемещение на первый
    while ( idoc.ksExistObj(pObj) <> 0 ) do
...
pObj := iter.ksMoveIterator( 'N' ); // перемещение на следующий
+ Благодарностей: 1

Mihonius

точно, вот слепой, видать устал уже ) Спасибо!

Mihonius

Подскажите как ограничить зону в которой проводиться итерация? есть зона где не нужно перебирать!

Какую, зону?
Вы этой строкой  Iter.ksCreateIterator(ARC_OBJ, 0); // Создаю итератор для дуг окружности, уже ограничились только перебором дуг.


Mihonius

Уже вышел из положения. Суть итератора была для комплексного построения размеров радиусов. Но есть радиуса на круге катания которые мне не нужно образмеривать, переставил местами построение круга катания и построения размеров всех радиусов. Все работает спасибо!