Тема: Как определить любую точку 3DSolid.

Нужно определить любую точку на Solid'е
Пробую так

 ads_name adsSelSet;
AcDbObjectId entId;
AcDbObject *pEnt;
ads_name ename;
int i,ii;
long length;
AcGePoint3d pt;
if (RTNORM != acedSSGet( NULL, NULL, NULL, NULL, adsSelSet ))
        {
        acutPrintf( "\nкоманда отменена\n" );
            acedPostCommandPrompt();
            return;
        }
acedSSLength(adsSelSet, &length);
for (i = 0; i < length; i++)
{
        acedSSName(adsSelSet, i, ename);
        acdbGetObjectId(entId, ename);
        acdbOpenObject(pEnt, entId, AcDb::kForRead);
        AcDbSolid* face = (AcDbSolid*)pEnt;
        AcGePoint3d pt;
    ASSERT(solid != NULL);
    for (ii=0;i<4;i++) {
        if (face->getPointAt(ii, pt) == Acad::eOk)
        {face->getPointAt(ii, pt);
.....
        }
pEnt->close;
} 

но acad вылетает с ошибкой. Подскажите, что делаю неправильно.

Re: Как определить любую точку 3DSolid.

> sergey
Смотри сюда очень внимательно:

for ([b]ii[/b]=0;[b]i[/b]<4;[b]i[/b]++) {

Re: Как определить любую точку 3DSolid.

P.S.: И вообще речь идет о Solid (AcDbSolid) или 3DSolid (AcDb3dSolid)? Вопрос существенный...

Re: Как определить любую точку 3DSolid.

Смотри сюда очень внимательно:
for (ii=0;i<4;i++) {

Об это знаю.
Идет о AcDb3dSolid. Здесь наверное и есть ошибка.

Re: Как определить любую точку 3DSolid.

sergey пишет:

Здесь наверное и есть ошибка.

Это вопрос или утверждение? Если вопрос, то да. Ошибка именно из-за этого, т.к. после

AcDbSolid* face = (AcDbSolid*)pEnt;

face будет равен NULL, ну и дальше все ясно...

Re: Как определить любую точку 3DSolid.

А как тогда узнать точки у 3dsolid'a?

Re: Как определить любую точку 3DSolid.

> sergey
А какие точки ты собираешься узнавать у 3dSolid'а? Какие точки, например, есть у шара или у тора? Вот поверхность ты теоретически узнать можешь. Смотри в сторону BREP.

Re: Как определить любую точку 3DSolid.

Ну например точки привязки или grippoint.
С grippoint бился - нечего не выходит:(.