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

Пересечение точек


IntersectWith () функция возвращает пункты{*точки*}, где примитив пересекает другой примитив в рисунке. Входные значения для этой функции - примитив и перекрестный тип, который может быть один из следующего:

§

kOnBothOperands (никакой примитив расширен{*продлен*})

§         kExtendThis

§         kExtendArg

§         kExtendBoth

Например, предположите, что рисунок содержит три строки, показанные в следующей иллюстрации. Line1 - "это" и line3 - примитив параметра. Если перекрестный тип - kExtendThis, пункт{*точка*} возвращен как пункт{*точка*}, где line1 ("это") пересек бы line3, если line1 были расширены{*продлены*}. Если перекрестный тип - kExtendArgument, и line2 - примитив параметра, никакие данные не возвращены, потому что, даже если это было расширено{*продлено*}, line2 не будет пересекать line1. Если перекрестный тип - kExtendBoth, и line2 - примитив параметра, пункт{*точка*} B возвращен. Если перекрестный тип - kExtendNone, и line2 - примитив параметра, никакие данные не возвращены.

IntersectWith () функция - перезагруженная функция с двумя формами.

Вторая форма берет дополнительный параметр, который является самолетом проектирования для определения очевидного пересечения двух примитивов. Они - сигнатуры для intersectWith () функция:

virtual Acad::ErrorStatus

AcDbEntity::intersectWith(

const AcDbEntity* ent,

AcDb::Intersect intType,



AcGePoint3dArray& points,

int thisGsMarker = 0,

int otherGsMarker = 0) const;

virtual Acad::ErrorStatus

AcDbEntity::intersectWith(

const AcDbEntity* ent,

AcDb::Intersect intType,

const AcGePlane& projPlane,

AcGePoint3dArray& points,

int thisGsMarker = 0,

int otherGsMarker = 0) const;

Возвращенные пункты{*точки*} - всегда на примитиве ("this"). Поэтому, в случаях{*делах*} очевидного пересечения, пересеченные пункты{*точки*} проектируются назад к примитиву прежде, чем они возвращены.

Обе версии intersectWith () функция позволяют Вам снабжать необязательные GS маркеры, чтобы оптимизировать выполнение{*работу*} для этой функции. Если intersectWith примитива () функция осуществила использование GS маркеров, то поставляющий{*снабжающий*} GS маркеры может ограничивать перекрестную область и ускорять испытание.

Например, в следующем рисунке, если пользователь выбирает, одна строка многоугольника, проходящего в GS маркере для той строки устраняет потребность проверить другие пять строк многоугольника.



Содержание раздела