Тема: обрезка контура по контуру

Столкнулся с интересной проблемой. Есть несколько контуров. один тз них полялиния (замкнутая), остальные - штриховка. Так вот, обрезаю штриховку по полилинии.
Нахожу ads_name полилинии, штриховки, проверяю, если точка штриховки не лежит в контуре полилинии, то передаю ее как точку для обрезки.
Но результат получается веселый. В коммандной строке пишется
Перевернутый:           %s
_ucs Сп&ереди

и естественно, ничего не обрезается.
А вот собственно и фрагмент кода

...
  ads_name entTrim, contur;
  for (z = 0; z< idArray.length(); z++) // бегу по массиву ID обрезаемых контуров
  {
     AcDbEntity * pTrimEnt;
    ads_point ap;
    AcGePoint3dArray pts;
    AcDbIntArray a1, a2;
    int x = 0;
//ONCE_MORE:
    acdbGetAdsName(entTrim, newContId); // это контур по которому происходит обрезка
    acdbGetAdsName(contur, idHatch); // а это обрезаемый контур
    if (acdbOpenObject(pTrimEnt, idArray.at(z), AcDb::kForRead) == Acad::eOk)
    {
       pts.setLogicalLength(0);
       a1.setLogicalLength(0); a2.setLogicalLength(0);
       pTrimEnt->getGripPoints(pts,a1,a2);
       pTrimEnt->close();
       for (x = 0; x < pts.length(); x++)
       {
           // если точка не находится в или на контуре, то
           {
               ap[X] = pts.at(x).x;
               ap[Y] = pts.at(x).y;
               ap[Z] = 0.0f;
               ads_transToUCS(ap,ap); // перевожу координаты в UCS
               acedCommand(RTSTR, "_TRIM", RTENAME, entTrim, RTSTR, "", RTLB, RTENAME, contur, RTPOINT, ap, RTLE, RTSTR, "", 0);
               break;
    // goto ONCE_MORE;
            }
        }
     }
  }
...

И сразу хотелось бы узнать, преобразуется ли контур штриховки после обрезки, так как может быть ситуация, когда шириховка пересекает контур в нескольких сторонах? Это для ONCE_MORE. То есть нашли точку, по которой можно обрезать, обрезали. И вот тут наверно нужно перечитать грипсы еще раз? Или я не прав?

Re: обрезка контура по контуру

По поводу _ucs Сп&ереди я поторопился. Это просто я поворачиваю оси в первоначальное положение.

Re: обрезка контура по контуру

Задавай умные вопросы, получай умные ответы :).
Кстати отвечу наверно сам. Все начитает работать, если точку ap взять не та контуре а внутри него, и RTPOINT заменить на RT3DPOINT. Но все равно, хорошего мало. Режется не всегда. Значит, чтоб не мудрствовать прийдется искать алгоритм контура пересечения в математике.

Re: обрезка контура по контуру

> Николай
Значит, чтоб не мудрствовать прийдется искать алгоритм контура пересечения в математике
Наконец-то! :)

Re: обрезка контура по контуру

посмотрел я математику и стало грустно :)
Но выход нашелся. И кстати в акаде. Есть такой класс AcDbRegion. Делаю два региона, ищу их пересечение функцией booleanOper и все :)