Тема: пересечение прямых.

С помощью intersectWith() находится пересечение 2-х прямых, которые могут и не пересекаться. Как определить пересекаются они или нет?
Или так  другими словами : как реализовать цикл который работает до тех пор пока прямые пересекаются??
Может есть функция которая false/true выдает?
Надеюсь хорошо обьяснил.

Re: пересечение прямых.

Подумай над параметром типа AcDb::Intersect метода intersectWith().

Re: пересечение прямых.

> giena
Объяснил плохо. Что такое прямые? Это воображаемые линии или примитивы AutoCAD. Если примитивы AutoCAD, то это прямые (XLINE) или отрезки (LINE) или еще что-то? И причем здесь цикл?

Re: пересечение прямых.

прямые - LINE. Есть цикл, при каждом проходе которого строятся 2 прямые. Его нужно выполнять до тех пор , пока эти прямые пересекаются. Цикл то понятно While(), но какое логическое условие должно быть у него быть? Вот функция нахождения пересечений

AcGePoint3dArray Get_intersection_point (AcDbObjectId id1,AcDbObjectId id2)
 {
     int i;
     AcGePoint3d point;
     AcGePoint3dArray points;
     AcDbEntity* pent1 = NULL;
     AcDbEntity* pent2 = NULL;
     acdbOpenAcDbEntity(pent1,id1,AcDb::kForRead);
     acdbOpenAcDbEntity(pent2,id2,AcDb::kForRead);
     pent1 -> intersectWith( pent2,AcDb::kOnBothOperands,points);
     pent1->close();
     pent2->close();
     return points;
  }

В цикле создаются 2 прямые ( функции их создания как в примерах в документации), по определенному закону.
Если и сейчас непонятно то я не умею изложить свои мысли :).

Re: пересечение прямых.

giena пишет:

Если и сейчас непонятно то я не умею изложить свои мысли :).

Увы, но это похоже на правду...
Тебя интересует вопрос пересекаются прямые или нет? Тут не нужен никакой цикл. Как правильно тебе написал Glusha достаточно использовать AcDb::kExtendBoth вместо AcDb::kOnBothOperands и ты сразу узнаешь пересекаются ли прямые или нет по длине массива, который возвращает Get_intersection_point - если 1, то пересечение есть.
P.S.: Совершенно непонятно зачем нужно добавлять отрезки к базе чертежа (это видно по тому, что ты их в своей функции "открываешь") если проверить их пересечение можно и без этого.