Тема: Координаты начала и конца отрезка.

Подскажите пожалуйста как определить координаты начала и конца отрезка, и если можно примерчик)Заранее благодарен.

Re: Координаты начала и конца отрезка.

где-то так

AcDbObjectId objId;
AcDbEntity * pEnt;
ads_name ent;
ads_point pn;
AcGePoint3d pStart, pEnd;
if(acedEntSel(_T("\nУкажите ОТРЕЗОК: "),ent,pn) != RTNORM) return;
if(acdbGetAdsName(ent,objId) != Acad::eOk)return;
if(acdbOpenObject(pEnt, objId, AcDb::kForRead) != Acad::eOk)return;
AcDbLine * pLine = AcDbLine::cast(pEnt);
pEnt->close();
if (pLine == NULL) acedAlert(_T("Это не отрезок"));
pLine->getStartPoint(pStart); // начало
pLine->getEndPoint(pEnd); // конец

Re: Координаты начала и конца отрезка.

> Николай
Только pEnt->close() нужно перенести в конец!

Re: Координаты начала и конца отрезка.

Спасибо большое! Очень помог!

Re: Координаты начала и конца отрезка.

> Александр Ривилис
Да, действительно, обшибся
Так работает лучше.
И, кстати, даже с закрытым pEnt

...
pEnt->close();
if (pLine == NULL)
{
  acedAlert(_T("Это не отрезок"));
  return;
}
pLine->getStartPoint(pStart); // начало
pLine->getEndPoint(pEnd); // конец

Re: Координаты начала и конца отрезка.

> Николай
Это тебе очень крупно повезло! AcDbLine::cast() возвращает или 0 или переданный адрес. Соответственно ты дальше пытаешься считывать информацию из закрытого примитива. sad Так делать не следует.

Re: Координаты начала и конца отрезка.

> Александр Ривилис
так а я и не считываю если pLine == NULL :)

Re: Координаты начала и конца отрезка.

Пасиб, щас буду править smile

Re: Координаты начала и конца отрезка.

Все зароботало, спасибо.