Тема: getSpline()

для AcDbCurve есть метод getSpline, который создает сплайн наиболее приближенный к кривой. Почему для AcDbCircle,AcDbArc можно создать сплайны, а для AcDbLine, например, нельзя? они же ведь все наследники AcDbCurve.

Re: getSpline()

Это то, что я тебе и писал. Для каких-то классов наследников AcDbCurve реализация определенных методов может неработать. Баг это или фича - это сложный вопрос.

Re: getSpline()

Проверь кстати код возврата. Не Acad::eNotImplemented ли случайно.

Re: getSpline()

исходя из этого

ads_name ent1;
    ads_point pt1;
    AcDbObjectId entId1;
    AcDbEntity* pEnt1;
    
    acedEntSel(_T("\nУкажите объект "), ent1, pt1);
    acdbGetObjectId(entId1, ent1);
    acdbOpenAcDbEntity(pEnt1, entId1, AcDb::kForRead);
    AcDbCurve *pCurv = AcDbCurve::cast(pEnt1);
    AcDbSpline *pSpline;
    pEnt1->close();
    if (pCurv->getSpline(pSpline)!=Acad::eNotImplemented) acutPrintf(_T("\n код возврата не eNotImplemented "));
    else acutPrintf(_T("\nкод возврата eNotImplemented"));

нет. хотя и Acad::eOk тоже не возвращает :(.

Re: getSpline()

А что возвращает?

Re: getSpline()

в случае с АсDbLine ничего из перечисленного в описании в документации :)). Вариантов 2 либо я че-то направильно накодил, либо фича такая :))

Re: getSpline()

> giena
Я же не спрашиваю что перечислено в документации. Я спрашиваю какой код возврата.

Re: getSpline()

возвращаемое значение 2. если я вас правильно понял...

Re: getSpline()

> giena
2 это Acad::eNotApplicable, т.е. "неприменимо".