Тема: обрезка контура по контуру
Столкнулся с интересной проблемой. Есть несколько контуров. один тз них полялиния (замкнутая), остальные - штриховка. Так вот, обрезаю штриховку по полилинии.
Нахожу 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. То есть нашли точку, по которой можно обрезать, обрезали. И вот тут наверно нужно перечитать грипсы еще раз? Или я не прав?