Значение AcDb:: Видимость может быть или kInvisible или kVisible.
Acad::ErrorStatus
AcDbEntity::setVisibility(AcDb::Visibility newVal);
AcDb::Visibility
AcDbEntity::visibility() const;
Уровень Примитива
Все примитивы имеют связанный уровень. База данных всегда содержит по крайней мере один уровень (уровень 0). Как с linetypes, Вы можете определить уровень для примитива. Если Вы не определяете уровень, заданное по умолчанию значение уровня базы данных используется для нового примитива.
Каждый уровень также связал свойства, которые включают замораживающийся / таял, вкл\выкл, блокируемый / разблокир, цвет, linetype, и область просмотра (см. главу 7, “ Контейнерные Объекты ”). Когда цвет примитива или linetype - BYLAYER, значение свойства уровня используется для примитива.
Если значение уровня определено для примитива, текущее значение уровня базы данных игнорируется.
Следующие функции дают возможность Вам установить уровень для примитива, или по имени или объектом ID:
Acad::ErrorStatus
AcDbEntity::setLayer(const char* newVal);
Acad::ErrorStatus
AcDbEntity::setLayer(AcDbObjectId newVal);
Эта функция возвращает название{*имя*} текущего уровня примитива:
char* AcDbEntity::layer() const;
Эта функция возвращает объект ID для текущего уровня (объект типа AcDbLayerTableRecord):
AcDbObjectId AcDbEntity::layerId() const;
Общие функции Примитива
Примитивы также имеют множество общих{*обычных*} функций, прежде всего предназначенных для использования в соответствии с AutoCAD. Этот раздел обеспечивает общий фон{*подготовку*} при использовании некоторых из этих функций. Для примеров осуществления функций для новых классов, см. главу 13, “ Происходящий от AcDbEntity. ”
Общие{*обычные*} функции примитива включают следующее:
- intersectWith () используется в вырезке, простираться, филе, chamfer, перерыве, и возражать поспешные операции Intersection transformBy () используется, чтобы пройти в преобразованной матрице, которая перемещает, масштабирует, или вращает пункты{*точки*} в объекте getTransformedCopy () создает копию объекта и применяет преобразование к этому getOsnapPoints () возвращает поспешные пункты{*точки*} и вид поспешных пунктов{*точек*} getGripPoints () возвращает пункты{*точки*} власти{*захвата*}, которые являются надмножеством пунктов{*точек*} протяжения getStretchPoints () значения по умолчанию к getGripPoints () и обычно имеют то же самое выполнение moveStretchPointsAt () используется командой STRETCH AutoCAD, чтобы переместить указанные пункты точки и значения по умолчанию к transformBy () moveGripPointsAt () используется редактированием власти{*захвата*} AutoCAD, чтобы переместить указанные точки и значения по умолчанию к transformBy () worldDraw () создает представление-независимое геометрическое представление примитива viewportDraw () создает представление геометрического объекта иждивенца представления примитива draw () стоит в очереди примитив и сбрасывает на диск графическую очередь так, чтобы примитив и что - нибудь еще в очереди были оттянуты list() используется командой LIST AutoCAD и производит acutPrintf () инструкции getGeomExtents () возвращает пункты{*точки*} угла поля, которое включает трехмерные степени вашего примитива explode() расчленяет примитив в набор более простых элементов getSubentPathsAtGsMarker () возвращает пути подпримитива, которые передают данному GS маркер (см. “ GS Маркеры и Подпримитивы ” на странице 109) getGsMarkersAtSubentPath () возвращает GS маркер, который соответствует данному пути подпримитива subentPtr () возвращает указатель, соответствующий данному пути подпримитива highlight () высвечивает указанный подпримитив (см. “ GS Маркеры и Под-примитивы ” на странице 109)
Объектные точки привязки
Объекты могут определить некоторые характерные пункты{*точки*} для них, типа среднего пункта{*точки*}, midpoint, или оконечной точки. Когда AutoCAD приобретает пункты{*точки*} и находится в режиме Object Snap, это вызывает getOsnapPoints () функция, чтобы приобрести уместные поспешные пункты{*точки*} для указанного режима Object Snap. Следующая таблица перечисляет возможные режимы Object Snap.
Объектные режимы Snap
Mode | Description |
kOsModeEnd | Endpoint |
kOsModeMid | Midpoint |
kOsModeCen | Center |
kOsModeNode | Node |
kOsModeQuad | Quadrant |
kOsModeIns | Insertion |
kOsModePerp | Perpendicular |
kOsModeTan | Tangent |
kOsModeNear | Nearest |
Сигнатура для AcDbEntity:: getOsnapPoints ()
virtual Acad::ErrorStatus
AcDbEntity::getOsnapPoints(
AcDb::OsnapMode osnapMode,
int gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
GeomIds параметр в настоящее время не используется. Перекрестная объектная изюминка не использует эту функцию.
Функции преобразования
AcDbEntity класс обеспечивает две функции преобразования:
virtual Acad::ErrorStatus
AcDbEntity::transformBy(const AcGeMatrix3d& xform);
virtual Acad::ErrorStatus
AcDbEntity::getTransformedCopy(const AcGeMatrix3d& xform,
AcDbEntity*& ent) const;
TransformBy () функция изменяет примитив, используя указанную матрицу.
В AutoCAD, это называется перемещением власти{*захвата*}, вращать, масштабировать, и отражать режимы. В некоторых случаях{*делах*}, однако, применяя преобразование требует, чтобы новый примитив был создан. В таких случаях{*делах*}, getTransformedCopy () функция используется так, чтобы заканчивающийся примитив мог быть образец различного класса чем первоначальный примитив.
Когда Вы взрываете блочную ссылку{*справочники*}, которая неоднородно масштабировалась, getTransformedCopy () функция - обратился к примитивам в блочной ссылке{*справочниках*}, чтобы создать новые примитивы (см. “ Взрывающиеся Примитивы ” на странице 123).
Пересечение точек
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 маркере для той строки устраняет потребность проверить другие пять строк многоугольника.
GS Маркеры и Подпримитивы
Чтобы тянуть{*рисовать*} себя, каждый примитив делает запросы к графическим примитивам типа ломаных линий, кругов, и дуг, содержащихся в AcGi библиотеке. Любой класс, полученный из AcDbEntity может связывать систему графики (GS) маркер с векторами дисплея, которые это использует, чтобы тянуть{*рисовать*} себя. Каждый подкласс примитива управляет, где это вставляет его GS маркеры. Когда пользователь выбирает примитив, GS маркер используется, чтобы выделить, которая часть примитива была выбрана.
Solids полученный из AcDb3dSolid составлены из вершины, граней, и лиц.
Каждый из этих элементов может быть идентифицирован GS маркером. Создатель класса примитива решает, где GS маркеры должны быть вставлены, в зависимости от того, что является наиболее естественным для примитива. Поле, например, создает GS маркер для каждой строки, имел обыкновение тянуть{*рисовать*} поле. Цилиндр создает три GS маркеры — один для его вершины, основания, и вне лиц.
Примитив составлен из подпримитивов следующего типа: вершина, край, или лицо. В настоящее время, единственные примитивы, которые поддерживают подпримитивы - тела, области{*регионы*}, solids, и mlines. Используйте getSubentPathsAtGsMarker () функция, чтобы получить пути к подпримитивам, которые связаны с частностью GS маркер.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |


