Тема: Координаты начала и конца отрезка.
Подскажите пожалуйста как определить координаты начала и конца отрезка, и если можно примерчик)Заранее благодарен.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → Координаты начала и конца отрезка.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Подскажите пожалуйста как определить координаты начала и конца отрезка, и если можно примерчик)Заранее благодарен.
где-то так
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); // конец
> Николай
Только pEnt->close() нужно перенести в конец!
> Александр Ривилис
Да, действительно, обшибся
Так работает лучше.
И, кстати, даже с закрытым pEnt
... pEnt->close(); if (pLine == NULL) { acedAlert(_T("Это не отрезок")); return; } pLine->getStartPoint(pStart); // начало pLine->getEndPoint(pEnd); // конец
> Николай
Это тебе очень крупно повезло! AcDbLine::cast() возвращает или 0 или переданный адрес. Соответственно ты дальше пытаешься считывать информацию из закрытого примитива. Так делать не следует.
> Александр Ривилис
так а я и не считываю если pLine == NULL :)
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → ObjectARX → Координаты начала и конца отрезка.
Форум работает на PunBB, при поддержке Informer Technologies, Inc