ObjectARX, AutoCAD. Среда программирования библиотеки C++


         

Реализация функций OSNAP


Вы будете должны перегрузить getOsnapPoints () функция, если Вы хотите, чтобы ваш заказной объект поддержал объектные поспешные режимы. AutoCAD вызывает эту функцию, чтобы приобрести уместные поспешные пункты{*точки*} для текущего режима. Если Вы не хотите, чтобы ваш объект поддержал поспешные пункты{*точки*} для специфического режима, Вы можете отфильтровывать поспешные режимы, Вы поддерживаете и возвращаете eOk для другие; AutoCAD запросит пользователя выбирать снова. Если множественные объектные поспешные режимы активны, эта функция называется однажды для каждого объектного поспешного режима.

ОБРАТИТЕ ВНИМАНИЕ, что  перекрестный объектный поспешный режим обработан по-другому от getOsnapPoints (). Это использует AcDbEntity:: intersectWith (), не getOsnapPoints ().

Следующие показы, как AsdkPoly класс осуществляет getOsnapPoints () функция:

Acad::ErrorStatus

AsdkPoly::getOsnapPoints(

AcDb::OsnapMode osnapMode,

int gsSelectionMark,

const AcGePoint3d& pickPoint,

const AcGePoint3d& lastPoint,

const AcGeMatrix3d& viewXform,

AcGePoint3dArray& snapPoints,

AcDbIntArray& /*geomIds*/) const

{

assertReadEnabled();

Acad::ErrorStatus es = Acad::eOk;

if (gsSelectionMark == 0)

return Acad::eOk;

if ( osnapMode != AcDb::kOsModeEnd

&& osnapMode != AcDb::kOsModeMid

&& osnapMode != AcDb::kOsModeNear

&& osnapMode != AcDb::kOsModePerp

&& osnapMode != AcDb::kOsModeCen

&& osnapMode != AcDb::kOsModeIns)

{

return Acad::eOk;

}

// First, check to see if the gsSelection marker is the

// text geometry. If so, handle center and insertion

// modes, then return. No need to go into perp, mid, etc.

//

AcGePoint3d center;

getCenter(center);

if (gsSelectionMark == (mNumSides + 1)) {

if (osnapMode == AcDb::kOsModeIns)

snapPoints.append(center);

else if (osnapMode == AcDb::kOsModeCen)

snapPoints.append(center);

return es;

}

int startIndex = gsSelectionMark - 1;

AcGePoint3dArray vertexArray;



Содержание  Назад  Вперед